Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ConstrainedOptimizer

Overview

ConstrainedOptimizer is the abstract solver interface for constrained nonlinear optimization and tracks progress with dedicated parameter and state classes.

Open In Colab

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:

minx12f(x)2  s.t.  h(x)=0,  g(x)0.\min_x \frac{1}{2}\|f(x)\|^2\;\text{s.t.}\;h(x)=0,\;g(x)\le 0.

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, verbosity

  • ConstrainedOptimizerState: 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();