「大域的最適化」の版間の差分
(基礎編と用語編のマージ) |
|||
(2人の利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
'''【たいいきてきさいてきか (global optimization)】''' | '''【たいいきてきさいてきか (global optimization)】''' | ||
+ | === 概要 === | ||
最適化問題: | 最適化問題: | ||
21行目: | 22行目: | ||
を満たす実行可能解 <math>\boldsymbol{x}^* \,</math>を求めることをいう. | を満たす実行可能解 <math>\boldsymbol{x}^* \,</math>を求めることをいう. | ||
+ | |||
+ | === 詳説 === | ||
+ | ユークリッド空間<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:非線形計画|たいいきてきさいてきか]] |
2008年3月13日 (木) 22:46時点における最新版
【たいいきてきさいてきか (global optimization)】
概要
最適化問題:
において か の一方, あるいは両方が凸でなければ, 一般に値の異なる複数の局所的最適解が存在する. その中から大域的最適解, つまり
を満たす実行可能解 を求めることをいう.
詳説
ユークリッド空間上で定義された連続な実数値関数を目的関数とし,の閉部分集合を実行可能集合とする最適化問題:
に対して,その大域的最適解,つまり
|
を満足するを求める方法を大域的最適化という.目的関数と実行可能集合が共に凸性を満たす凸計画問題であれば,局所的な最適化によってを求めることができる.また,凸性を満たさなくとも,分数計画問題(fractional programming problem)や幾何計画問題(geometric programming problem)の一部は任意の局所的最適解で大域的にも最適となる.したがって,大域的最適化が本質的な意味をもつのは,目的関数値が異なる複数の局所的最適解をもつ非凸計画問題に対してであり,これを多極値大域的最適化問題(multiextremal global optimization problem)と呼ぶ.例えば,が凹関数でが凸多面体の凹最小化問題(concave minimization problem)の場合,局所的最適解は一般にの複数の端点に現われる.しかし,端点の数は膨大であり,その中から大域的に最適なものを見つけだすのは容易な作業でない.実際,この単純な例でさえ最悪計算量の上ではNP困難であることが知られている.そのため,現段階で一般の多極値大域的最適化問題を解決する有効な手段はなく,モンテカルロ法(Monte Carlo method)などのヒューリスティクスが唯一現実的なアプローチとなっている [2].
このように困難な問題クラスではあるが,個々の問題の中には,その構造を利用することで現実的な計算時間のうちに大域的最適解の求められるものも少なくない [1].その代表例が,実は上にも述べた凹最小化問題である:
ここで,は行列では次ベクトル,は凹関数(concave function),つまりが凸関数である.この非凸計画問題を大域的に最適化するアルゴリズムとして,凹性カット法(concavity-cut method),外部近似法(outer approximation method),分枝限定法(branch-and-bound method)などがある [3].
凹性カット法は,以下の操作を繰り返し,から大域的最適解以外の実行可能解をすべて除去しようとする方法である.局所的最適解を与えるの端点を見つけ,から出る本の稜線ベクトルと,それまでに得られた最も小さな目的関数値によって集合
を定義する.端点におけるの値がよりも悪ければ,は丁度個の点から構成されるが,それらを通る次元超平面によってと一緒に見込のない実行可能解もから切除する.目的関数が2次の凹関数である双線形計画問題 (bilinear programming problem)に対しては,より大きな領域を切除する方法も考案されている.
外部近似法も超平面による切除を行うが,凹性カット法と違って実行可能解は1つも失わない.まず,を次元単体や矩形などの単純な凸多面体で近似し,を上で最小化する.これも凹最小化問題であるが,は端点の数が少ないので,それらの列挙で最小点は比較的容易に求められる.このが満たさないの制約式の1つを選び,を
に更新してと共に実行不可能な領域を切除する.実行可能集合がの部分集合なのでは大域的最適値の下界値を与えるが,以上の操作を繰り返して となれば,が大域的最適解である.
分枝限定法には多くのバリエーションが存在するが,最も効力を発揮するのは目的関数が1変数凹関数の和に分離可能な場合である:
実行可能集合を含む矩形を定義し,これを複数の小さな矩形
|
に分割していく.基本となる操作は,組合せ最適化問題に使われる分枝限定法と同様で,まず を選んで
限定操作 上におけるの下界値を計算し,その値がそれまでに得られた最も小さな目的関数値以上ならばを考察の対象から外す;
分枝操作 ならば,を2つの矩形 , に分割する
を繰り返す.効率の鍵を握る下界値には,通常とを通るアフィン関数
を定義し,その和の上における最小値が用いられる.関数は上におけるの最も大きな下界値を与える凸関数で,凸包絡関数 (convex envelope function)と呼ばれる.しかし,アフィン関数であるので単体法や内点法を使って容易に最小値を計算することができる.
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.