《大域的最適化》のソースを表示
←
《大域的最適化》
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
このページは編集や他の操作ができないように保護されています。
このページのソースの閲覧やコピーができます。
'''【たいいきてきさいてきか (global optimization)】''' ユークリッド空間<math>\mathbf{R}^n\, </math>上で定義された連続な実数値関数<math>f\, </math>を[[目的関数]]とし,<math>\mathbf{R}^n\, </math>の閉部分集合<math>D\, </math>を[[実行可能集合]]とする[[最適化問題]]: <table align="center"> <tr> <td> <math>\begin{array}{ll} \mbox{min.} & f (\boldsymbol{x})\\ \mbox{s. t.} & \boldsymbol{x} := (x_1, \ldots, x_n) \in D \end{array}\, </math></td> </tr> </table> に対して,その[[大域的最適解]],つまり <table align="center"> <tr> <td> <math>f(\boldsymbol{x}^*) \leq f(\boldsymbol{x}), \quad \forall\, \boldsymbol{x} \in D,\, </math> </td> </tr> </table> を満足する<math>\boldsymbol{x}^* \in D\, </math>を求める方法を[[大域的最適化]]という.目的関数<math>f\, </math>と実行可能集合<math>D\, </math>が共に凸性を満たす[[凸計画問題]]であれば,局所的な最適化によって<math>\boldsymbol{x}^*\, </math>を求めることができる.また,凸性を満たさなくとも,[[分数計画問題]](fractional programming problem)や[[幾何計画問題]](geometric programming problem)の一部は任意の[[局所的最適解]]で大域的にも最適となる.したがって,大域的最適化が本質的な意味をもつのは,目的関数値が異なる複数の局所的最適解をもつ[[非凸計画問題]]に対してであり,これを多極値大域的最適化問題(multiextremal global optimization problem)と呼ぶ.例えば,<math>f\, </math>が凹関数で<math>D\, </math>が凸多面体の凹最小化問題(concave minimization problem)の場合,局所的最適解は一般に<math>D\, </math>の複数の端点に現われる.しかし,端点の数は膨大であり,その中から大域的に最適なものを見つけだすのは容易な作業でない.実際,この単純な例でさえ最悪計算量の上では[[NP困難]]であることが知られている.そのため,現段階で一般の多極値大域的最適化問題を解決する有効な手段はなく,[[モンテカルロ法]](Monte Carlo method)などのヒューリスティクスが唯一現実的なアプローチとなっている [2]. このように困難な問題クラスではあるが,個々の問題の中には,その構造を利用することで現実的な計算時間のうちに大域的最適解の求められるものも少なくない [1].その代表例が,実は上にも述べた凹最小化問題である: <table align="center"> <tr> <td><math>\begin{array}{ll} \mbox{min.} & f(\boldsymbol{x}) \\ \mbox{s. t.} & \boldsymbol{x} \in D := \{\boldsymbol{x} \in \mathbf{R}^n \mid \mbox{A} \boldsymbol{x} \geq \boldsymbol{b}\}. \end{array}\, </math> </td> </tr> </table> ここで,<math>\mbox{A}\, </math>は<math>m \times n\, </math>行列で<math>\boldsymbol{b}\, </math>は<math>m\, </math>次ベクトル,<math>f\, </math>は凹関数(concave function),つまり<math>-f\, </math>が[[凸関数]]である.この非凸計画問題を大域的に最適化するアルゴリズムとして,凹性カット法(concavity-cut method),外部近似法(outer approximation method),[[分枝限定法]](branch-and-bound method)などがある [3]. 凹性カット法は,以下の操作を繰り返し,<math>D\, </math>から大域的最適解以外の実行可能解をすべて除去しようとする方法である.局所的最適解を与える<math>D\, </math>の端点<math>\boldsymbol{x}'\, </math>を見つけ,<math>\boldsymbol{x}'\, </math>から出る<math>n\, </math>本の稜線ベクトル<math>\boldsymbol{u}^1, \ldots, \boldsymbol{u}^n\, </math>と,それまでに得られた最も小さな目的関数値<math>f^\circ\, </math>によって集合 <table align="center"> <tr> <td><math>V := \{\boldsymbol{x}' + \theta_i \boldsymbol{u}^i \mid \theta_i \geq 0,\; i = 1, \ldots, n\} \cap \{\boldsymbol{x} \in \mathbf{R}^n \mid f(\boldsymbol{x}) = f^\circ\}\, </math></td> </tr> </table> を定義する.端点<math>\boldsymbol{x}'\, </math>における<math>f\, </math>の値が<math>f^\circ\, </math>よりも悪ければ,<math>V\, </math>は丁度<math>n\, </math>個の点から構成されるが,それらを通る<math>n\, </math>次元超平面によって<math>\boldsymbol{x}'\, </math>と一緒に見込のない実行可能解も<math>D\, </math>から切除する.目的関数<math>f\, </math>が2次の凹関数である[[双線形計画問題]] (bilinear programming problem)に対しては,より大きな領域を切除する方法も考案されている. 外部近似法も超平面による切除を行うが,凹性カット法と違って実行可能解は1つも失わない.まず,<math>D\, </math>を<math>n\, </math>次元単体や矩形などの単純な凸多面体<math>S \supseteq D\, </math>で近似し,<math>f\, </math>を<math>S\, </math>上で最小化する.これも凹最小化問題であるが,<math>S\, </math>は端点の数が少ないので,それらの列挙で最小点<math>\boldsymbol{x}'\, </math>は比較的容易に求められる.この<math>\boldsymbol{x}'\, </math>が満たさない<math>D\, </math>の制約式の1つ<math>\boldsymbol{a}_i^{\top} \boldsymbol{x} \geq b_i\, </math>を選び,<math>S\, </math>を <table align="center"> <tr> <td><math>S' := S \cap \{\boldsymbol{x} \in \mathbf{R}^n \mid \boldsymbol{a}_i^{\top} \boldsymbol{x} \geq b_i\}\, </math></td> </tr> </table> に更新して<math>\boldsymbol{x}'\, </math>と共に実行不可能な領域を切除する.実行可能集合<math>D\, </math>が<math>S\, </math>の部分集合なので<math>f(\boldsymbol{x}')\, </math>は大域的最適値の下界値を与えるが,以上の操作を繰り返して <math>\boldsymbol{x}' \in D\, </math>となれば,<math>\boldsymbol{x}'\, </math>が大域的最適解である. 分枝限定法には多くのバリエーションが存在するが,最も効力を発揮するのは目的関数<math>f\, </math>が1変数凹関数<math>f_i\, </math>の和に分離可能な場合である: <table align="center"> <tr> <td><math>f(\boldsymbol{x}) := \sum_{j=1}^n f_j(x_j).\, </math></td> </tr> </table> 実行可能集合<math>D\, </math>を含む矩形<math>M := \{\boldsymbol{x} \in \mathbf{R}^n \mid l_j \leq x_j \leq u_j,\; j = 1, \ldots, n\}\, </math>を定義し,これを複数の小さな矩形 <table align="center"> <tr> <td> <math>M^k := \{\boldsymbol{x} \in \mathbf{R}^n \mid l_j^k \leq x_j \leq u_j^k\}, \quad k = 1, \ldots, K,\, </math> </td> </tr> </table> に分割していく.基本となる操作は,[[組合せ最適化問題]]に使われる分枝限定法と同様で,まず <math>M^k\, </math> を選んで '''限定操作''' <math>D \cap M^k\, </math>上における<math>f\, </math>の下界値<math>f'\, </math>を計算し,その値がそれまでに得られた最も小さな目的関数値<math>f^\circ\, </math>以上ならば<math>M^k\, </math>を考察の対象から外す; '''分枝操作''' <math>f' < f^\circ\, </math>ならば,<math>M^k\, </math>を2つの矩形 <math>M^{k_1}\, </math>, <math>M^{k_2}\, </math>に分割する を繰り返す.効率の鍵を握る下界値<math>f'\, </math>には,通常<math>(l_j^k, f_j(l_j^k))\, </math>と<math>(u_j^k, f_j(u_j^k))\, </math>を通るアフィン関数 <table align="center"> <tr> <td> <math>g_j(x_j) := \frac{f(u_j^k) - f(l_j^k)}{u_j^k - l_j^k} x_j + \frac{u_j^k f(l_j^k) - l_j^k f(u_j^k)}{u_j^k - l_j^k}, \quad j = 1, \ldots, n,\, </math></td> </tr> </table> を定義し,その和<math>\textstyle g(\boldsymbol{x}) := \sum_{j=1}^n g_j(x_j)\, </math>の<math>D \cap M^k\, </math>上における最小値が用いられる.関数<math>g\, </math>は<math>M^k\, </math>上における<math>f\, </math>の最も大きな下界値を与える凸関数で,凸包絡関数 (convex envelope function)と呼ばれる.しかし,アフィン関数であるので[[単体法]]や[[内点法]]を使って容易に最小値<math>f'\, </math>を計算することができる. [[DC計画問題]](d.c. programming problem)や[[逆凸計画問題]](reverse convex programming problem)などのより一般的な多極値大域的最適化問題も,凹最小化問題を逐次解くことで処理することができる [2, 3]. ---- '''参考文献''' [1] H. Konno, P.T. Thach and H. Tuy, ''Optimization on Low Rank Nonconvex Structures'', Kluwer Academic Publishers, 1997. [2] R. Horst and P.M. Pardalos (eds.), ''Handbook of Global Optimization'', Kluwer Academic Publishers, 1995. [3] R. Horst and H. Tuy, ''Global Optimization - Deterministic Approaches,'' 3rd ed., Springer-Verlag, 1996. [[Category:非線形計画|たいいきてきさいてきか]]
《大域的最適化》
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ORWikiへのお問い合わせ
OR学会HP
OR学会アーカイブ集
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報