内点法

提供: miniwiki
2018/8/19/ (日) 17:06時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

内点法(ないてんほう、: internal point method)とは、連続最適化問題アルゴリズムであり、カーマーカー法に触発されて生まれた多くの手法の総称である。実行可能領域の内部を経由して、最適解に収束するのが特徴である。また、大規模問題に対しては計算効率が良い点や非線型問題にも対応できる点で、シンプレックス法よりも優れているといえる。内点法は、点列を生成する方法によって、アフィン変換法ポテンシャル減少法パス追跡法などに分類される。また、扱う問題によっては、与えられた問題を直接扱う方法(主内点法: primal interior point method)、その双対問題を扱う方法(双対内点法: dual interior point method)、主問題と双対問題を同時に解く方法(主双対内点法: primal-dual interior point method)に分けられる。

主双対内点法による非線型最適化

主双対内点法のアイディアは単純で、制約付き非線型最適化問題にも応用が可能である。ここでは単純のために制約式が全て不等式で与えられる非線型最適化問題について考える。

最小化: [math]f(x)[/math]
条件: [math] c(x) \geq 0, x \in \mathbb{R}^n, c(x) \in \mathbb{R}^m~~~~(1)[/math]

この最適化問題の対数バリア関数は次のようになる。

[math]B(x,\mu) = f(x) - \mu \sum_{i=1}^m \ln(c_i(x))~~~~(2)[/math]

ここで[math]\mu[/math]は正のスカラーで、時に「バリア・パラメータ」とも呼ばれる。この[math]\mu[/math]が0に収束していくと、[math]B(x, \mu)[/math]が最適解に収束していく。

前述のバリア関数の勾配は

[math]g_b = g - \mu \sum_{i=1}^m \frac{1}{c_i (x)} \nabla c_i (x)~~~~(3)[/math]

となる。ただし、[math]g[/math]は元の関数[math]f(x)[/math]の勾配であり、[math]\nabla c_i[/math][math]c_i[/math]の勾配を表す。

主値[math]x[/math]に加えて、双対値[math]\lambda \in \mathbb{R}^m[/math]をラグランジュ乗数として導入する。

[math]\forall i=1, \ldots, m, c_i(x) \lambda_i = \mu~~~~(4)[/math]

この条件は時に摂動相補性条件とも呼ばれる。式(4)を式(3)に適用することにより以下を得る。

[math]g - A^T \lambda = 0 ~~~~ (5) [/math]

ただし、行列[math]A[/math]は制約[math]c(x)[/math]ヤコビ行列である。

式(5)が表しているのは関数[math]f(x)[/math]が制約式の勾配により張られる部分空間の中に存在するということである。このとき小さな[math]\mu[/math]による摂動相補性条件は、最適解が[math]c_i(x)=0[/math]の境界付近に存在するか、もしくは制約[math]c_i(x)[/math]の勾配[math]g[/math]がほとんど0であるということを表している。

式(4)および式(5)に対してニュートン法を用いて[math](x, \lambda)[/math]を更新していくことを考えると、その更新幅[math](p_x, p_\lambda)[/math]は次の線型方程式の解として与えられる。

[math] \begin{pmatrix} W & -A^T \\ \Lambda A & C \end{pmatrix} \begin{pmatrix}p_x \\ p_y \end{pmatrix} = \begin{pmatrix} -g + A^T \lambda \\ \mu 1 - C \lambda \end{pmatrix}[/math]

ただし行列[math]W[/math]は関数[math]f(x)[/math]ヘッセ行列であり、対角行列[math]\Lambda[/math][math]\lambda[/math]を対角成分に持つ。

したがって、式(1), (4)から

[math] \lambda \geq 0 [/math]

がそれぞれのステップに課される。適切なステップ更新幅[math]\alpha[/math]を選び、

[math](x, \lambda) \rightarrow (x + \alpha p_x, \lambda + \alpha p_\lambda)[/math]

とすることで、最適解に向かって収束していく。

実装

参考文献

  • 福島雅夫 『数理計画入門』 朝倉書店、1996年。
  • 福島雅夫 『非線形最適化の基礎』 朝倉書店、2001年。

テンプレート:最適化アルゴリズム