Skip to main content
`Ctrl`+`K`

# TAOADMM

Alternating direction method of multipliers method for solving linear problems with constraints. in a \( \min_x f(x) + g(z)\) s.t. \(Ax+Bz=c\). This algorithm employs two sub Tao solvers, of which type can be specified by the user. User need to provide ObjectiveAndGradient routine, and/or HessianRoutine for both subsolvers. Hessians can be given boolean flag determining whether they change with respect to a input vector. This can be set via `TaoADMMSet{Misfit,Regularizer}HessianChangeStatus()`. Second subsolver does support `TAOSHELL`. It should be noted that L1-norm is used for objective value for `TAOSHELL` type. There is option to set regularizer option, and currently soft-threshold is implemented. For spectral penalty update, currently there are basic option and adaptive option. Constraint is set at Ax+Bz=c, and A and B can be set with `TaoADMMSet{Misfit,Regularizer}ConstraintJacobian()`. c can be set with `TaoADMMSetConstraintVectorRHS()`. The user can also provide regularizer weight for second subsolver. [XFY+17]

## Options Database Keys

- -tao_admm_regularizer_coefficient - regularizer constant (default 1.e-6)

- -tao_admm_spectral_penalty - Constant for Augmented Lagrangian term (default 1.)

- -tao_admm_relaxation_parameter - relaxation parameter for Z update (default 1.)

- -tao_admm_tolerance_update_factor - ADMM dynamic tolerance update factor (default 1.e-12)

- -tao_admm_spectral_penalty_update_factor - ADMM spectral penalty update curvature safeguard value (default 0.2)

- -tao_admm_minimum_spectral_penalty - Set ADMM minimum spectral penalty (default 0)

- -tao_admm_dual_update - Lagrangian dual update policy (“basic”,”adaptive”,”adaptive-relaxed”) (default “basic”)

- -tao_admm_regularizer_type - ADMM regularizer update rule (“user”,”soft-threshold”) (default “soft-threshold”)

## References

[XFY+17]

Zheng Xu, Mario AT Figueiredo, Xiaoming Yuan, Christoph Studer, and Tom Goldstein. Adaptive relaxed ADMM: convergence theory and practical implementation. In Proceedings of the IEEE conference on computer vision and pattern recognition, 7389–7398. 2017.

## See Also

`TaoADMMSetMisfitHessianChangeStatus()`, `TaoADMMSetRegHessianChangeStatus()`, `TaoADMMGetSpectralPenalty()`, `TaoADMMGetMisfitSubsolver()`, `TaoADMMGetRegularizationSubsolver()`, `TaoADMMSetConstraintVectorRHS()`, `TaoADMMSetMinimumSpectralPenalty()`, `TaoADMMSetRegularizerCoefficient()`, `TaoADMMGetRegularizerCoefficient()`, `TaoADMMSetRegularizerConstraintJacobian()`, `TaoADMMSetMisfitConstraintJacobian()`, `TaoADMMSetMisfitObjectiveAndGradientRoutine()`, `TaoADMMSetMisfitHessianRoutine()`, `TaoADMMSetRegularizerObjectiveAndGradientRoutine()`, `TaoADMMSetRegularizerHessianRoutine()`, `TaoGetADMMParentTao()`, `TaoADMMGetDualVector()`, `TaoADMMSetRegularizerType()`, `TaoADMMGetRegularizerType()`, `TaoADMMSetUpdateType()`, `TaoADMMGetUpdateType()`

## Level

beginner

## Location

src/tao/constrained/impls/admm/admm.c

## Examples

src/tao/constrained/tutorials/tomographyADMM.c

Index of all Tao routines
Table of Contents for all manual pages
Index of all manual pages