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. It uses the BCL update policy inspired by Conn, Gould, and Toint by default, while retaining the earlier Aggressive policy as an explicit option.

Open In Colab

Key Concepts

  • AugmentedLagrangianState stores equality and nonnegative inequality multipliers plus stationarity, generalized-feasibility, primal-feasibility, and complementarity diagnostics.

  • augmentedLagrangianFunction builds a fixed-multiplier subproblem with exact Powell--Hestenes--Rockafellar (PHR) terms for scalar inequalities.

  • BCL is the default. It accepts a multiplier update only when generalized feasibility meets its current target; otherwise it increases the common direct penalty.

  • Aggressive remains available as an explicit option and updates multipliers after every solved subproblem.

Mathematical Formulation

For whitened equalities h(x)=0h(x)=0, whitened scalar inequalities gi(x)0g_i(x)\leq0, direct penalties ρe,ρi>0\rho_e,\rho_i>0, and nonnegative inequality multipliers, the fixed-parameter objective is:

LA(x,λ)=12f(x)2+λeTh(x)+ρe2h(x)2+imax(0,λi+ρigi(x))2λi22ρi.\mathcal{L}_A(x,\lambda)=\frac{1}{2}\|f(x)\|^2 +\lambda_e^T h(x)+\frac{\rho_e}{2}\|h(x)\|^2 +\sum_i\frac{\max(0,\lambda_i+\rho_i g_i(x))^2-\lambda_i^2}{2\rho_i}.

The projected inequality residual qi=max(gi,λi/ρi)q_i=\max(g_i,-\lambda_i/\rho_i) gives λi+=max(0,λi+ρigi)=λi+ρiqi\lambda_i^+=\max(0,\lambda_i+\rho_i g_i)=\lambda_i+\rho_i q_i. BCL uses the full augmented-Lagrangian gradient infinity norm for inner stationarity and max(h,q)\max(\|h\|_\infty,\|q\|_\infty) for generalized feasibility.

The BCL policy follows the update schedule of Conn, Gould, and Toint Algorithm 1 as closely as possible, but it is not entirely faithful: unconstrained LM replaces their projected bound-constrained inner solver, and direct PHR inequalities replace their bounded slack formulation. Their convergence proof therefore does not apply here.

Key User API

  • AugmentedLagrangianOptimizer(problem, initialValues, params)

  • optimize()

  • progress()

  • augmentedLagrangianFunction(state, epsilon) (advanced inspection; epsilon is retained for source compatibility)

  • AugmentedLagrangianParams: updatePolicy, Aggressive controls, and flat BCL schedule parameters

Concise C++ Example

#include <gtsam/constrained/AugmentedLagrangianOptimizer.h>

using namespace gtsam;

auto params = std::make_shared<AugmentedLagrangianParams>();
// BCL is the default update policy.
params->verbose = true;

AugmentedLagrangianOptimizer optimizer(problem, init_values, params);
Values results = optimizer.optimize();
References
  1. Conn, A. R., Gould, N. I. M., & Toint, P. (1991). A Globally Convergent Augmented Lagrangian Algorithm for Optimization with General Constraints and Simple Bounds. SIAM Journal on Numerical Analysis, 28(2), 545–572. 10.1137/0728030