ifopt

C++ interface library for connecting to nonlinear optimization solvers

brewmacoslinux
Try with needOr install directly
Source

About

Light-weight C++ Interface to Nonlinear Programming Solvers

Examples

set up optimization problem with constraints in C++$ #include <ifopt/problem.h> using namespace ifopt; Problem nlp; nlp.AddVariableSet(std::make_shared<MyVariables>()); nlp.AddConstraintSet(std::make_shared<MyConstraints>());
define objective function for nonlinear solver$ class MyCost : public Cost { public: void FillJacobianBlock(std::string var_set, Jacobian& jac) const override { } void FillQuadraticBlock(std::string var_set, std::vector<T>& vals) const override { } };
add equality and inequality constraints to optimization$ class MyConstraint : public ConstraintSet { public: void FillJacobianBlock(std::string var_set, Jacobian& jac) const override { } void FillConstraints(Eigen::VectorXd& g) const override { } };
solve nonlinear programming problem with IPOPT$ IpoptSolver solver; solver.Solve(nlp); std::cout << nlp.GetOptimalCost() << std::endl;
extract optimized variables from solved problem$ auto solution = nlp.GetVariableValues(); std::cout << "x = " << solution.at("my_variables").transpose() << std::endl;