C++ interface library for connecting to nonlinear optimization solvers
Light-weight C++ Interface to Nonlinear Programming Solvers
$ #include <ifopt/problem.h>
using namespace ifopt;
Problem nlp;
nlp.AddVariableSet(std::make_shared<MyVariables>());
nlp.AddConstraintSet(std::make_shared<MyConstraints>());$ 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 { }
};$ class MyConstraint : public ConstraintSet {
public:
void FillJacobianBlock(std::string var_set, Jacobian& jac) const override { }
void FillConstraints(Eigen::VectorXd& g) const override { }
};$ IpoptSolver solver;
solver.Solve(nlp);
std::cout << nlp.GetOptimalCost() << std::endl;$ auto solution = nlp.GetVariableValues();
std::cout << "x = " << solution.at("my_variables").transpose() << std::endl;