Functions and Variables for augmented_lagrangian
================================================

 -- Function: augmented_lagrangian_method (FOM, XX, C, YY)
 -- Function: augmented_lagrangian_method (FOM, XX, C, YY, optional_args)

     Returns an approximate minimum of the expression FOM with respect to the variables XX, holding the constraints C equal to zero. YY is a list of initial guesses for XX. The method employed is the augmented Lagrangian method (see Refs [1] and [2]).

     optional_args represents additional arguments, specified as SYMBOL = VALUE. The optional arguments recognized are:

     niter
          Number of iterations of the augmented Lagrangian algorithm

     lbfgs_tolerance
          Tolerance supplied to LBFGS

     iprint
          IPRINT parameter (a list of two integers which controls verbosity) supplied to LBFGS

     %lambda
          Initial value of %lambda to be used for calculating the augmented Lagrangian

     This implementation minimizes the augmented Lagrangian by applying the limited-memory BFGS (LBFGS) algorithm, which is a quasi-Newton algorithm.

     load(augmented_lagrangian) loads this function.

     See also lbfgs.

     References:

     [1] http://www-fp.mcs.anl.gov/otc/Guide/OptWeb/continuous/constrained/nonlinearcon/auglag.html

     [2] http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf

     Example:

          (%i1) load (lbfgs);
          (%o1)     /maxima/share/lbfgs/lbfgs.mac
          (%i2) load (augmented_lagrangian);
          (%o2)
             /maxima/share/contrib/augmented_lagrangian.mac
          (%i3) FOM: x^2 + 2*y^2;
                                         2    2
          (%o3)                       2 y  + x
          (%i4) xx: [x, y];
          (%o4)                        [x, y]
          (%i5) C: [x + y - 1];
          (%o5)                      [y + x - 1]
          (%i6) yy: [1, 1];
          (%o6)                        [1, 1]
          (%i7) augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
          (%o7) [[x = 0.66665984108002, y = 0.33334027245545],
                                           %lambda = [- 1.333337940892525]]