(maxima.info)Functions and Variables for augmented_lagrangian
41.1 Functions and Variables for augmented_lagrangian
=====================================================
-- Function: augmented_lagrangian_method
augmented_lagrangian_method (<FOM>, <xx>, <C>, <yy>)
augmented_lagrangian_method (<FOM>, <xx>, <C>, <yy>,
optional_args)
augmented_lagrangian_method ([<FOM>, <grad>], <xx>, <C>, <yy>)
augmented_lagrangian_method ([<FOM>, <grad>], <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]).
<grad>, if present, is the gradient of <FOM> with respect to <xx>,
represented as a list of expressions, one for each variable in
<xx>. If not present, the gradient is constructed automatically.
<FOM> and each element of <grad>, if present, must be ordinary
expressions, not names of functions or lambda expressions.
'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 Note: lbfgs-pkg
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>
Examples:
(%i1) load ("lbfgs");
(%o1) /home/gunter/src/maxima-code/share/lbfgs/lbfgs.mac
(%i2) load ("augmented_lagrangian");
(%o2) /home/gunter/src/maxima-code/share/contrib/augmented_lagra\
ngian.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.666659841080023, y = 0.333340272455448],
%lambda = [- 1.333337940892518]]
Same example as before, but this time the gradient is supplied as
an argument.
(%i1) load ("lbfgs")$
(%i2) load ("augmented_lagrangian")$
(%i3) FOM: x^2 + 2*y^2;
2 2
(%o3) 2 y + x
(%i4) xx: [x, y];
(%o4) [x, y]
(%i5) grad : [2*x, 4*y];
(%o5) [2 x, 4 y]
(%i6) C: [x + y - 1];
(%o6) [y + x - 1]
(%i7) yy: [1, 1];
(%o7) [1, 1]
(%i8) augmented_lagrangian_method ([FOM, grad], xx, C, yy,
iprint = [-1, 0]);
(%o8) [[x = 0.6666598410800247, y = 0.3333402724554464],
%lambda = [- 1.333337940892525]]
automatically generated by info2www version 1.2.2.9