2
* Definitions for augmented_lagrangian::
5
@node Definitions for augmented_lagrangian, , augmented_lagrangian, augmented_lagrangian
6
@section Definitions for augmented_lagrangian
9
@defvr {Option variable} niter
12
Number of iterations for @code{augmented_lagrangian_method}.
16
@deffn {Function} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{constraints}, @var{yy})
17
Augmented Lagrangian method for constrained optimization.
18
@var{FOM} is the figure of merit expression,
19
@var{xx} is a list of variables over which to minimize,
20
@var{constraints} is a list of expressions to be held equal to zero, and
21
@var{yy} is a list of initial guesses for @var{xx}.
23
At present this code minimizes the augmented Lagrangian by
24
solving for a stationary point of its gradient.
25
That's pretty weak, and the code could be improved by plugging in
26
a conjugate gradient or quasi-Newton minimization algorithm.
30
http://www-fp.mcs.anl.gov/otc/Guide/OptWeb/continuous/constrained/nonlinearcon/auglag.html
34
http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf
37
Package @code{mnewton} (to solve grad @math{L = 0}) has to be loaded before calling @code{augmented_lagrangian_method}.
43
(%i2) load("augmented_lagrangian")$
45
(%i3) FOM: x^2 + 2*y^2;
54
(%i7) augmented_lagrangian_method (FOM, xx, C, yy);
55
(%o7) [0.6478349834, 0.3239174917]
58
To use this function write first @code{load("mnewton")} and @code{load("augmented_lagrangian")}.
59
See also @code{niter}.