[ < ] | [ > ] |  | [ << ] | [ 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に関する近似最小を返します。

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

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

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

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

  `niter`

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

  `lbfgs_tolerance`

    LBFGSに供給される許容誤差

  `iprint`

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

  `%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)  /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]]

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

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

  Categories: Numerical methods · Optimization · Share packages · Package augmented_lagrangian

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

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