Warning: Undefined variable $type in /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php on line 3

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/includes/json/FormatJson.php on line 297

Warning: Trying to access array offset on value of type bool in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 660

Warning: session_name(): Session name cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 834

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 126

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 127

Warning: session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 133

Warning: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 140

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/languages/LanguageConverter.php on line 773

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 294

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
http:///mymemo.xyz/wiki/api.php?action=feedcontributions&user=240F%3A80%3ABA13%3A1%3A3089%3A47FA%3A71A7%3A4962&feedformat=atom miniwiki - 利用者の投稿記録 [ja] 2024-05-16T03:46:29Z 利用者の投稿記録 MediaWiki 1.31.0 内点法 2017-04-16T04:00:19Z <p>240F:80:BA13:1:3089:47FA:71A7:4962: 内部リンクを追加</p> <hr /> <div>&#039;&#039;&#039;内点法&#039;&#039;&#039;(ないてんほう、{{lang-en-short|internal point method}})とは、連続[[最適化問題]]の[[アルゴリズム]]であり、[[カーマーカー法]]に触発されて生まれた多くの手法の総称である。実行可能領域の内部を経由して、最適解に収束するのが特徴である。また、大規模問題に対しては計算効率が良い点や非線型問題にも対応できる点で、[[シンプレックス法]]よりも優れているといえる。内点法は、点列を生成する方法によって、[[アフィン変換法]]、[[ポテンシャル減少法]]、[[パス追跡法]]などに分類される。また、扱う問題によっては、与えられた問題を直接扱う方法(&#039;&#039;&#039;主内点法&#039;&#039;&#039;、{{lang-en-short|primal interior point method}})、その双対問題を扱う方法(&#039;&#039;&#039;双対内点法&#039;&#039;&#039;、{{lang-en-short|dual interior point method}})、主問題と双対問題を同時に解く方法(&#039;&#039;&#039;主双対内点法&#039;&#039;&#039;、{{lang-en-short|primal-dual interior point method}})に分けられる。<br /> <br /> == 主双対内点法による非線型最適化 ==<br /> 主双対内点法のアイディアは単純で、制約付き非線型最適化問題にも応用が可能である。ここでは単純のために制約式が全て不等式で与えられる非線型最適化問題について考える。<br /> <br /> :&#039;&#039;&#039;最小化:&#039;&#039;&#039; &lt;math&gt;f(x)&lt;/math&gt; <br /> :&#039;&#039;&#039;条件:&#039;&#039;&#039; &lt;math&gt; c(x) \geq 0, x \in \mathbb{R}^n, c(x) \in \mathbb{R}^m~~~~(1)&lt;/math&gt;<br /> <br /> この最適化問題の対数[[バリア関数]]は次のようになる。<br /> <br /> :&lt;math&gt;B(x,\mu) = f(x) - \mu \sum_{i=1}^m \ln(c_i(x))~~~~(2)&lt;/math&gt;<br /> <br /> ここで&lt;math&gt;\mu&lt;/math&gt;は正のスカラーで、時に「バリア・パラメータ」とも呼ばれる。この&lt;math&gt;\mu&lt;/math&gt;が0に収束していくと、&lt;math&gt;B(x, \mu)&lt;/math&gt;が最適解に収束していく。<br /> <br /> 前述のバリア関数の勾配は<br /> <br /> :&lt;math&gt;g_b = g - \mu \sum_{i=1}^m \frac{1}{c_i (x)} \nabla c_i (x)~~~~(3)&lt;/math&gt;<br /> <br /> となる。ただし、&lt;math&gt;g&lt;/math&gt;は元の関数&lt;math&gt;f(x)&lt;/math&gt;の勾配であり、&lt;math&gt;\nabla c_i&lt;/math&gt;は&lt;math&gt;c_i&lt;/math&gt;の勾配を表す。<br /> <br /> 主値&lt;math&gt;x&lt;/math&gt;に加えて、双対値&lt;math&gt;\lambda \in \mathbb{R}^m&lt;/math&gt;をラグランジュ乗数として導入する。<br /> <br /> :&lt;math&gt;\forall i=1, \ldots, m, c_i(x) \lambda_i = \mu~~~~(4)&lt;/math&gt;<br /> <br /> この条件は時に摂動相補性条件とも呼ばれる。式(4)を式(3)に適用することにより以下を得る。<br /> <br /> :&lt;math&gt;g - A^T \lambda = 0 ~~~~ (5) &lt;/math&gt;<br /> <br /> ただし、行列&lt;math&gt;A&lt;/math&gt;は制約&lt;math&gt;c(x)&lt;/math&gt;の[[ヤコビ行列]]である。<br /> <br /> 式(5)が表しているのは関数&lt;math&gt;f(x)&lt;/math&gt;が制約式の勾配により張られる部分空間の中に存在するということである。このとき小さな&lt;math&gt;\mu&lt;/math&gt;による摂動相補性条件は、最適解が&lt;math&gt;c_i(x)=0&lt;/math&gt;の境界付近に存在するか、もしくは制約&lt;math&gt;c_i(x)&lt;/math&gt;の勾配&lt;math&gt;g&lt;/math&gt;がほとんど0であるということを表している。<br /> <br /> 式(4)および式(5)に対して[[ニュートン法]]を用いて&lt;math&gt;(x, \lambda)&lt;/math&gt;を更新していくことを考えると、その更新幅&lt;math&gt;(p_x, p_\lambda)&lt;/math&gt;は次の線型方程式の解として与えられる。<br /> <br /> :&lt;math&gt; \begin{pmatrix} W &amp; -A^T \\ \Lambda A &amp; C \end{pmatrix}<br /> \begin{pmatrix}p_x \\ p_y \end{pmatrix} = <br /> \begin{pmatrix} -g + A^T \lambda \\ \mu 1 - C \lambda \end{pmatrix}&lt;/math&gt;<br /> <br /> ただし行列&lt;math&gt;W&lt;/math&gt;は関数&lt;math&gt;f(x)&lt;/math&gt;の[[ヘッセ行列]]であり、対角行列&lt;math&gt;\Lambda&lt;/math&gt;は&lt;math&gt;\lambda&lt;/math&gt;を対角成分に持つ。<br /> <br /> したがって、式(1), (4)から<br /> <br /> :&lt;math&gt; \lambda \geq 0 &lt;/math&gt;<br /> <br /> がそれぞれのステップに課される。適切なステップ更新幅&lt;math&gt;\alpha&lt;/math&gt;を選び、<br /> <br /> :&lt;math&gt;(x, \lambda) \rightarrow (x + \alpha p_x, \lambda + \alpha p_\lambda)&lt;/math&gt;<br /> <br /> とすることで、最適解に向かって収束していく。<br /> <br /> == 実装 ==<br /> * [[IPOPT]]<br /> <br /> ==参考文献==<br /> {{Refbegin}}<br /> *{{Cite book|和書<br /> |author=福島雅夫<br /> |title=数理計画入門<br /> |publisher=朝倉書店<br /> |year=1996<br /> |ISBN=978-4254280043<br /> }}<br /> *{{Cite book|和書<br /> |author=福島雅夫<br /> |title=非線形最適化の基礎<br /> |publisher=朝倉書店<br /> |year=2001<br /> |ISBN=978-4254280012<br /> }}<br /> {{Refend}}<br /> <br /> {{最適化アルゴリズム}}<br /> <br /> {{デフォルトソート:ないてんほう}}<br /> [[Category:最適化アルゴリズム]]<br /> [[Category:オペレーションズリサーチ]]<br /> [[Category:数学に関する記事]]</div> 240F:80:BA13:1:3089:47FA:71A7:4962
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46