/ALM_general_fixpoint

Augmented Lagrange Method under fixed point arithmetics

Primary LanguageMATLAB

*** This file explain the code structure in this folder ***

*** The code is developed to implement ALM to solve a general convex problem ***

*** Algorithm Overview ***

The algorithm is implemented under double floating point data and arithmetics (default setting in the Matlab 2015a on this machine)

Given problem: min f(x) s.t. Ax = b, x \in X

Build Augmented Lagrangian function: 

L_\rho(x, \lambda) = f(x) + <\lambda, Ax-b> + \rho/2 * \|Ax - b\|^2

Then given initial multiplier \lambda_0, iteratively implement following steps:

	Step 1: x_k = argmin_{x \in X} L_\rho(x, \lambda_k)

	Step 2: \lambda_{k+1} = \lambda_{k} + \rho*(Ax_k - b)

Until \|Ax_k - b\| is smaller than some user-specific threshold \epsilon

*** Code structure ***

* init_problem.m *
— specify the problem type
- create the problem data in a data struct in the workspace
- solve the problem using standard methods, according to problem type

* init_param_ALM.m *
- specify the algorithm parameter
- assign variable space
- specify how to solve the inner problem
- create a param and a var structs in the workspace

* inner_closeform.m *
- solve inner problem using closed form solution
- check problem specification, if not solvable in closed form, send an alert
- if solvable, output the solution according to problem types

* inner_GPM.m *
- solve the inner problem using GPM (with fixed step size)
- specify how to terminate the problem: 1. by progress at each iteration 2. by specific number of iteration (even goes with 1, still need to assign a max iter number)
- calculate step size according to problem type and data
- assign variable space
- run GPM algorithms
- need to call functions: calc_grad, calc_proj;
- calculate the ergodic average

* outer_update(no .m file) *
- check stopping criteria, for example, \|Ax_k - b\| < \epsilon
- if not stopped, update the multiplier (without projection)

* makeplot.m*