1 @c English version: 2011-06-11
3 * Funciones y variables para augmented_lagrangian::
6 @node Funciones y variables para augmented_lagrangian, , augmented_lagrangian, augmented_lagrangian
7 @section Funciones y variables para augmented_lagrangian
10 @deffn {Función} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{C}, @var{yy})
11 @deffnx {Función} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{C}, @var{yy}, optional_args)
12 @deffnx {Función} augmented_lagrangian_method ([@var{FOM}, @var{grad}], @var{xx}, @var{C}, @var{yy})
13 @deffnx {Función} augmented_lagrangian_method ([@var{FOM}, @var{grad}], @var{xx}, @var{C}, @var{yy}, optional_args)
15 Devuelve una aproximación del valor mínimo de
16 la expresión @var{FOM} respecto de las variables @var{xx},
17 manteniendo las restricciones @var{C} igual a cero. La lista
18 @var{yy} contiene las soluciones iniciales para @var{xx}.
19 El algoritmo que se utiliza es el método del lagrangiano
20 aumentado (ver referencias [1] y [2]).
22 Si @var{grad} está presente en la llamada a la función, se interpreta
23 como el gradiente de @var{FOM} respecto de @var{xx}, representado como una
24 lista de tantas expresiones como variables tenga @var{xx}. Si el
25 argumento @var{grad} no está, se calculará de forma automática.
27 Tanto @var{FOM} como cada uno de los elementos de @var{grad}, si se
28 da como argumento, deben ser expresiones ordinarias; no admitiéndose
29 ni nombres de funciones ni expresiones lambda.
31 El argumento @code{optional_args} hace referencia a otros argumentos adicionales,
32 los cuales se especifican de la forma @code{@var{symbol} = @var{value}}.
33 Los argumentos opcionales reconocidos son:
37 Número de iteraciones del algoritmo.
39 Tolerancia que se pasa a LBFGS.
41 Parámetro IPRINT (lista de dos enteros que controlan la frecuencia
42 de mensajes) que se pasa a LBFGS.
44 Valor inicial de @code{%lambda} que será utilizado para calcular el
45 lagrangiano aumentado.
48 Esta función minimiza el lagrangiano aumentado haciendo uso
49 del algoritmo LBFGS, que es un método de los llamados
52 Antes de hacer uso de esta función ejecútense @code{load("augmented_lagrangian")}.
54 Véase también @code{lbfgs}.
59 [1] @url{http://www-fp.mcs.anl.gov/otc/Guide/OptWeb/continuous/constrained/nonlinearcon/auglag.html}
61 [2] @url{http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf}
64 [1] @url{http://www-fp.mcs.anl.gov/@-otc/@-Guide/@-OptWeb/@-continuous/@-constrained/@*nonlinearcon/@-auglag.html}
66 [2] @url{http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf}
73 @c load ("augmented_lagrangian");
78 @c augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
82 (%o1) /maxima/share/lbfgs/lbfgs.mac
83 (%i2) load ("augmented_lagrangian");
85 /maxima/share/contrib/augmented_lagrangian.mac
86 (%i3) FOM: x^2 + 2*y^2;
95 (%i7) augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
96 (%o7) [[x = 0.66665984108002, y = 0.33334027245545],
97 %lambda = [- 1.333337940892525]]
100 Mismo ejemplo que en el caso anterior, pero ahora el
101 gradiente se suministra como argumento.
105 @c load ("augmented_lagrangian")$
108 @c grad : [2*x, 4*y];
111 @c augmented_lagrangian_method ([FOM, grad], xx, C, yy,
112 @c iprint = [-1, 0]);
115 (%i1) load ("lbfgs")$
116 (%i2) load ("augmented_lagrangian")$
117 (%i3) FOM: x^2 + 2*y^2;
120 (%i4) FOM: x^2 + 2*y^2;
125 (%i6) grad : [2*x, 4*y];
127 (%i7) C: [x + y - 1];
131 (%i9) augmented_lagrangian_method ([FOM, grad], xx, C, yy,
133 (%o9) [[x = 0.666659841080025, y = .3333402724554462],
134 %lambda = [- 1.333337940892543]]