proxsuite-nlp
proxsuite-nlp copied to clipboard
Add BFGS
Start of work to add the Broyden–Fletcher–Goldfarb–Shanno algorithm. For now, it is a class that estimates an (inverse) Hessian from iterates and the corresponding gradients at these iterates. An optimizer can be built around it.
It implements the BFGS update rule (eqn 6.17 p. 140) to estimate the inverse Hessian and the DFP update rule (eqn 6.13 p.139) from Nocedal and Wright, Numerical Optimization, 2nd edition, which have a similar structure.
For now, the BFGSStrategy works on Euclidian space. As a first step, I checked it therefore on the ur5-ik example and compared it against an identity hessian.
As a next step, BFGSStrategy should be extended to work on Riemannian manifolds. Then, other examples like camera-pose-optimization could be solved.
Let's schedule some time after Nov. 15th to work on this again @fabinsch.
@fabinsch @jorisv before merging this, we need
- to rebase on devel
- add an error when someone uses the algorithm on a non-Euclidean manifold