Correct BFGS update#26
Closed
timothy-nunn wants to merge 1 commit intomainfrom
Closed
Conversation
Collaborator
Author
|
As @mkovari has pointed out, the Having looked through the mathematics of the BFGS update equation, its possible PyVMCON implements it incorrectly and is not calculating the update matrices correctly. We should verify the shapes of the intermediate update matrices to ensure parity with NEA implementation VMCON. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I believe that the BFGS update of the Lagrangian function Hessian in PyVMCON is incorrect. If the revision of the
Bmatrix were incorrect, this could explain the "Workspace allocation error" being observed in ukaea/PROCESS#3619 (which was happening becauseBwas not positive definite and hence the quadratic programming problem failed because it was non-convex, the error would now have a different message because of #21).Crane report
The Crane report states the update of the

Bmatrix occurs as follows:It should be noted there is a typo in the second term that was identified during PyVMCON's development and it should read$\frac{\gamma\gamma^T}{\xi^T\gamma}$ . (In some other places the denominator is $\gamma^T\xi$ but that does not change the result.)
Powell
Powell's paper agrees with the Crane report (as the Crane report is a summary of Powell's paper) except for the second term is correct.
BFGS Update
The BFGS wiki states that the update occurs as follows:

Note that this disagrees with both Powell's paper and the Crane report in that the second terms denominator (the first term in the other two papers) reads$B\xi\xi^TB^T$ : the final
Bis transposed.When I update PyVMCON to reflect this, none of the unit tests fail but it does allow the skipped PROCESS file to converge (albeit after 177 iterations).