Skip to main content

augmented_lagrangian

Function augmented_lagrangian 

Source
pub fn augmented_lagrangian<F, G, C, DC>(
    f: F,
    grad_f: G,
    constraints: &[C],
    grad_constraints: &[DC],
    x0: Vec<f64>,
    rho0: f64,
    outer_iter: usize,
    inner_iter: usize,
    tol: f64,
) -> OptResult
where F: Fn(&[f64]) -> f64, G: Fn(&[f64]) -> Vec<f64>, C: Fn(&[f64]) -> f64, DC: Fn(&[f64]) -> Vec<f64>,
Expand description

Augmented Lagrangian method for equality-constrained minimisation.

Minimises f(x) subject to c_i(x) = 0 for each constraint in constraints.

Strategy: alternates between unconstrained minimisation of the augmented Lagrangian L_ρ(x,λ) = f(x) + Σ λ_i c_i(x) + (ρ/2) Σ c_i(x)² and a dual update λ_i ← λ_i + ρ * c_i(x).

Each unconstrained sub-problem is solved with a few steps of gradient descent (a full sub-solver can be plugged in via inner_iter).