Skip to content
This repository was archived by the owner on Jun 2, 2025. It is now read-only.

Add BFGS #92

Merged
merged 18 commits into from
Feb 28, 2025
Merged

Add BFGS #92

merged 18 commits into from
Feb 28, 2025

Conversation

fabinsch
Copy link
Collaborator

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.

Copy link
Member

@jcarpent jcarpent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work in progress @fabinsch.
I made some minor comments related to the coding style ;)

@fabinsch
Copy link
Collaborator Author

fabinsch commented Jun 3, 2024

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.

@ManifoldFR
Copy link
Member

ManifoldFR commented Oct 29, 2024

Let's schedule some time after Nov. 15th to work on this again @fabinsch.

@ManifoldFR
Copy link
Member

@fabinsch @jorisv before merging this, we need

  • to rebase on devel
  • add an error when someone uses the algorithm on a non-Euclidean manifold

fabinsch and others added 6 commits February 28, 2025 11:40
- a class to estimate (inverse) Hessian from iterates + grad
Co-authored-by: Justin Carpentier <[email protected]>
- proof of concept to show that bfgs is working within the proxnlp solver to estimate hessians
- solve the ur5-ik task with BFGS (86iters) and compare against exact hessian (19iters) and identity hessian (345iters)
@fabinsch fabinsch marked this pull request as ready for review February 28, 2025 11:57
Copy link
Member

@ManifoldFR ManifoldFR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent work @fabinsch, we just need to change a couple of things here.

@fabinsch fabinsch requested a review from jorisv February 28, 2025 14:52
ManifoldFR
ManifoldFR previously approved these changes Feb 28, 2025
- directly use input to `update` method
ManifoldFR
ManifoldFR previously approved these changes Feb 28, 2025
jorisv
jorisv previously approved these changes Feb 28, 2025
Co-authored-by: Joris Vaillant <[email protected]>
@fabinsch fabinsch dismissed stale reviews from jorisv and ManifoldFR via b28e377 February 28, 2025 16:34
@ManifoldFR ManifoldFR merged commit aab4c8c into Simple-Robotics:devel Feb 28, 2025
17 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants