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.

AugmentedLagrangianOptimizer

Overview

AugmentedLagrangianOptimizer combines penalty terms with Lagrange multipliers to improve convergence and conditioning on constrained nonlinear problems.

Open In Colab

Key Concepts

  • AugmentedLagrangianState extends penalty state with equality and inequality multipliers.

  • augmentedLagrangianFunction builds the constrained objective used in each outer iteration.

  • Multiplier updates are done by dual-ascent style steps.

  • Penalty parameters are adapted based on violation reduction.

Mathematical Formulation

Augmented Lagrangian combines multipliers and penalties:

LA(x,λ)=12f(x)2λeqTh(x)+μeq2h(x)2λineqTg(x)+μineq2g(x)2.\mathcal{L}_A(x,\lambda)=\frac{1}{2}\|f(x)\|^2 -\lambda_{eq}^T h(x)+\frac{\mu_{eq}}{2}\|h(x)\|^2 -\lambda_{ineq}^T g(x)+\frac{\mu_{ineq}}{2}\|g(x)_-\|^2.

The solver alternates between primal minimization (in xx) and dual-ascent updates (in multipliers), with adaptive penalty updates.

Key User API

  • AugmentedLagrangianOptimizer(problem, initialValues, params)

  • optimize()

  • progress()

  • augmentedLagrangianFunction(state, epsilon) (advanced inspection)

  • AugmentedLagrangianParams: dual step sizes and penalty-adaptation settings

Concise C++ Example

#include <gtsam/constrained/AugmentedLagrangianOptimizer.h>

using namespace gtsam;

auto params = std::make_shared<AugmentedLagrangianParams>();
params->verbose = true;

AugmentedLagrangianOptimizer optimizer(problem, init_values, params);
Values results = optimizer.optimize();