[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

41. augmented_lagrangian


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

41.1 Functions and Variables for augmented_lagrangian

関数: 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)   制約 Cをゼロに保ちながら、式 FOMの変数 xxに関する近似最小を返します。

yyxxの初期推量のリストです。 利用した方法は拡張 Lagrange法です。(文献[1]と[2]を参照してください。)

もしgradが存在するなら、 それは FOMxxに関するグラディエントであり、 xxの変数それぞれに関する式のリストとして表されます。 もし存在ないなら、グラディエントは自動的に構成されます。

FOMと、もし gradが存在するならその要素それぞれは、 関数名やラムダ式ではなく、通常の式でなければいけません。

optional_argssymbol = valueとして指定される追加の引数を表します。 認識するオプション引数は以下の通りです:

niter

拡張 Lagrangeアルゴリズムの繰り返しの回数

lbfgs_tolerance

LBFGSに供給される許容誤差

iprint

LBFGSに供給される IPRINTパラメータ(メッセージ出力を制御する2つの整数のリスト)

%lambda

拡張 Lagrangeを計算するために使われる %lambdaの初期値

この実装は 擬似 Newtonアルゴリズムであるメモリ制限付きBFGS (LBFGS)アルゴリズムを適用することで 拡張 Lagrangeを最小化します。

load(augmented_lagrangian)はこの関数をロードします。

lbfgsも参照してください。

参考文献:

[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

例:

 
(%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]]

前と同じ例ですが、今回はグラディエントが引数として供給されます。

 
(%i1) load (lbfgs)$
(%i2) load (augmented_lagrangian)$
(%i3) FOM: x^2 + 2*y^2;
                               2    2
(%o3)                       2 y  + x
(%i4) FOM: x^2 + 2*y^2;
                               2    2
(%o4)                       2 y  + x
(%i5) xx: [x, y];
(%o5)                        [x, y]
(%i6) grad : [2*x, 4*y];
(%o6)                      [2 x, 4 y]
(%i7) C: [x + y - 1];
(%o7)                      [y + x - 1]
(%i8) yy: [1, 1];
(%o8)                        [1, 1]
(%i9) augmented_lagrangian_method ([FOM, grad], xx, C, yy,
                                   iprint = [-1, 0]);
(%o9) [[x = 0.666659841080025, y = .3333402724554462],
                                 %lambda = [- 1.333337940892543]]


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.