NLOP is an open-source C++ template library for non-linear optimization.
I developed this project mainly because of my interest in convex optimization. I hope this will be useful for other convex optimization researchers for learning and teaching.
- Thanks to the template programming, users can customize the data type to trade-off between speed and precision
- Autodiff function is provided, users don't have to give Jacobian formula manually
- Line search methods can be combined with step search method flexibly
- Users can enable log to have the optimization process information saved in an txt file, so that they can be used for visualization (a python script example is provided)
mkdir build
cd build
cmake ..
make -j4
./RosenbrockExample
- Hooke & Jeeves's method
- steepest descent method
- conjuate gradient method
- Momentum
- Nesterov Momentum
- Adagrad
- RMSPro
- AdaDelta
- Adam
- Newton's method
- DFP
- BFGS
- Levenberg-Marquardt method
- Golden section method
- Fibonacci method
- Dichotomous method
- Armijo method
- Goldstein method
- Wolfe-Powell method
Please use Github issues to report bugs. If you have any question or advice, please feel free to contact Shuang Guo.