Overview¶
ConstrainedOptimizer is the abstract solver interface for constrained nonlinear optimization and tracks progress with dedicated parameter and state classes.
Key Concepts¶
ConstrainedOptimizerParams defines stopping tolerances, verbosity, and iteration limits.
ConstrainedOptimizerState tracks iteration number, values, cost, and constraint violations.
Derived optimizers implement optimize and typically solve a sequence of unconstrained subproblems.
Mathematical Formulation¶
ConstrainedOptimizer is the outer-loop interface for solving:
Concrete solvers repeatedly solve unconstrained subproblems and stop when cost and violation metrics meet absolute/relative tolerances.
Key User API¶
optimize()(implemented by derived solvers)ConstrainedOptimizerParams:maxIterations, tolerance settings, verbosityConstrainedOptimizerState:values,cost,eqConstraintViolation,ineqConstraintViolation,violation()
Concise C++ Example¶
#include <gtsam/constrained/ConstrainedOptimizer.h>
#include <gtsam/constrained/PenaltyOptimizer.h>
using namespace gtsam;
auto params = std::make_shared<PenaltyOptimizerParams>();
params->maxIterations = 30;
params->absoluteViolationTolerance = 1e-6;
PenaltyOptimizer solver(problem, initialValues, params);
Values result = solver.optimize();