TaoALMM#
Augmented Lagrangian multiplier method for solving nonlinear optimization problems with general constraints.
Options Database Keys#
-tao_almm_mu_init
- initial penalty parameter (default: 10.)-tao_almm_mu_factor
- increase factor for the penalty parameter (default: 100.)-tao_almm_mu_max
- maximum safeguard for penalty parameter updates (default: 1.e20)-tao_almm_mu_power_good
- exponential for penalty parameter when multiplier update is accepted (default: 0.9)-tao_almm_mu_power_bad
- exponential for penalty parameter when multiplier update is rejected (default: 0.1)-tao_almm_ye_min
- minimum safeguard for equality multiplier updates (default: -1.e20)-tao_almm_ye_max
- maximum safeguard for equality multiplier updates (default: 1.e20)-tao_almm_yi_min
- minimum safeguard for inequality multiplier updates (default: -1.e20)-tao_almm_yi_max
- maximum safeguard for inequality multiplier updates (default: 1.e20)-tao_almm_type <classic,phr> - change formulation of the augmented Lagrangian merit function for the subproblem (default: classic)
Notes#
This method converts a constrained problem into a sequence of unconstrained problems via the augmented Lagrangian merit function. Bound constraints are pushed down to the subproblem without any modifications.
Two formulations are offered for the subproblem: canonical Hestenes-Powell augmented Lagrangian with slack variables for inequality constraints, and a slack-less Powell-Hestenes-Rockafellar (PHR) formulation utilizing a pointwise max() penalty on inequality constraints. The canonical augmented Lagrangian formulation typically converges faster for most problems. However, PHR may be desirable for problems featuring a large number of inequality constraints because it avoids inflating the size of the subproblem with slack variables.
The subproblem is solved using a nested first-order TAO solver. The user can retrieve a pointer to the subsolver via TaoALMMGetSubsolver() or pass command line arguments to it using the “-tao_almm_subsolver_” prefix. Currently, TaoALMM does not support second-order methods for the subproblem. It is also highly recommended that the subsolver chosen by the user utilize a trust-region strategy for globalization (default: TAOBQNKTR) especially if the outer problem features bound constraints.
while unconverged
solve argmin_x L(x) s.t. l <= x <= u
if ||c|| <= y_tol
if ||c|| <= c_tol && ||Lgrad|| <= g_tol:
problem converged, return solution
else
constraints sufficiently improved
update multipliers and tighten tolerances
endif
else
constraints did not improve
update penalty and loosen tolerances
endif
endwhile
See Also#
TaoALMMGetType()
, TaoALMMSetType()
, TaoALMMSetSubsolver()
, TaoALMMGetSubsolver()
,
TaoALMMGetMultipliers()
, TaoALMMSetMultipliers()
, TaoALMMGetPrimalIS()
, TaoALMMGetDualIS()
Level#
beginner
Location#
src/tao/constrained/impls/almm/almm.c
Index of all Tao routines
Table of Contents for all manual pages
Index of all manual pages