Overview¶
PenaltyOptimizer solves constrained problems by iteratively minimizing a merit function that adds weighted penalty terms for equality and inequality violations.
Key Concepts¶
PenaltyOptimizerParams controls initial penalty weights and update rates.
meritFunction builds the cost-plus-penalty nonlinear factor graph for each outer iteration.
Each outer iteration solves an unconstrained nonlinear problem, then increases penalties as needed.
progress stores per-iteration diagnostic information.
Mathematical Formulation¶
Penalty method solves a sequence of unconstrained problems:
As outer iterations proceed, penalty weights increase to enforce feasibility more strongly.
Key User API¶
PenaltyOptimizer(problem, initialValues, params)optimize()progress()PenaltyOptimizerParams:initialMuEq,initialMuIneq, increase rates,ineqConstraintPenaltyFunction,lmParams
Concise C++ Example¶
#include <gtsam/constrained/PenaltyOptimizer.h>
using namespace gtsam;
auto params = std::make_shared<PenaltyOptimizerParams>();
params->verbose = true;
params->initialMuEq = 1.0;
params->initialMuIneq = 1.0;
PenaltyOptimizer optimizer(problem, init_values, params);
Values results = optimizer.optimize();