This is an implementation of the BFGS algorithm for a very specific problem, with very specific requirements. You should not expect it to solve a general optimization problem.
In Python, scipy
has a nice function called minimize
. It does exactly what I want, but most equivalents in C++ are bloated large-scale solvers such as Ceres or dlib.
Furthermore, minimize
uses a Fortran subroutine to perform line search.
The goal of this solver is to reproduce the behaviour of minimize
with Eigen as the only dependency, and maybe no dependency if I manage to make it faster for my use-case.
Ideally aiming for very fast results on low dimensional, non-convex, differentiable functions. Dimension of input vector should very rarely exceed ~15. Using test functions from BenchmarkFcns.
To check function and solver appearance, make plot fun=FUNCTION_FILE path=PATH_FILE