#16 · Primary category: Optimization & Heuristic Algorithms
ifopt
An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt)
Project last updated:11/03/25
GitHub Stars
866
Forks
161
Contributors
18
License
BSD-3-Clause
Why we included this project
Hand-coding a nonlinear program directly against Ipopt or Snopt's C API means tracking variable indices yourself and assembling Jacobians from raw pointers, a common source of subtle bugs. ifopt puts a compact Eigen-based layer in front of those solvers: you define variables, costs, and constraints as separate classes, and the library builds the full problem and its derivative blocks from them. That organization pays off in robotics and trajectory optimization, where the same constraints get reused across many formulations and you do not want to redo index bookkeeping each time. The model description is solver-independent, so moving between Ipopt and Snopt is a backend swap rather than a rewrite. At roughly two thousand lines, it is small enough to read through and adapt, which matters for teams embedding native optimization into a larger C++ or ROS codebase.
Articles for this project
No articles for this project yet.
To suggest a topic or contribute an article, contact us.
Related projects in this category
scikit-opt
Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differential Evolution and TSP(Traveling salesman)
ceres-solver
A large scale non-linear optimization library
FLAML
A fast library for AutoML and tuning. Join our Discord: https://discord.gg/Cppx2vSPVP.
sunfish
Sunfish: a Python Chess Engine in 111 lines of code
POT
POT : Python Optimal Transport