最適化問題(さいてきかもんだい、: optimization problem)とは、特定の集合上で定義された実数関数または整数値関数についてその値が最小(もしくは最大)となる状態を解析する問題である。数理計画問題(すうりけいかくもんだい、: mathematical programming problem, mathematical program)、数理計画とも呼ばれる。実世界の現象の数理的な解析に関わる問題や抽象的な理論の多くをこの最適化問題という一般的なくくりに入れることができる。物理学コンピュータビジョンにおける最適化問題は、考えている関数をモデル化されたエネルギーを表すものと見なすことによって、エネルギー最小化問題と呼ばれることもある。

目次

定義編集

最適化問題を数学的に記述すると、最小化問題の場合

与えられた関数   について、  なる   を求めよ

となる。最大化問題の場合には   となる   を探すことになる。最大化問題は目的関数の符号を反転させることにより等価な最小化問題に書き直せるので、最小化用のアルゴリズムが使える。

このときの関数 f を目的関数 (: objective function, cost function) と呼び、探すべき変数 x が集合 A に含まれるという条件のことを制約条件と呼ぶ。制約条件の集合 A を実行可能領域あるいは許容領域と呼び、その元(要素)を実行可能解、可能解、許容解 (: feasible solution, candidate solution) などと呼ぶ。目的関数を最小あるいは最大にするような実行可能解を(大域的)最小解、最大解と呼び、そのときの目的関数値を最小値、最大値と呼ぶ。また最小・最大を区別しないで最適解、最適値とも呼ばれる。なお、ここで「領域」という用語は単に「集合」と同じ意味で使っている。また「解」は「点」と同義語である。したがって実行可能集合とか実行可能点などということもある。(この分野での伝統的・慣習的表現であり、数学的な意味の「領域=連結な開集合」,「解=問題の(最終的つまり最適)解」ということではないので注意。)

問題の分類編集

最適化問題(数理計画問題)は、いろいろな観点・切り口によって多種多様に分類されるが、基本的な分類として以下がある。

まず考える集合 A の含まれる空間によって、無限次元と有限次元の問題に大別される。すなわち、A が関数空間に含まれる場合、無限次元の最適化問題となり、変分問題や最適制御問題が代表的である。A がユークリッド空間に含まれる場合は、有限次元の最適化問題となる。

また A が全空間のように実質的に制約条件がない問題は無制約問題(制約なし問題)となり、そうでない場合は有制約問題(制約付き問題)となる。

以下、それ以外の分類を有限次元の場合で説明する。

最適化問題は目的関数や制約条件の種類によっていくつかの問題クラスに分けることができる。

線型計画問題
目的関数が1次式として表され、制約条件の集合が一次方程式一次不等式によって定義されている場合。
整数計画問題
線型計画問題のうち、各変数のとる値が整数に制限されている場合。
2次計画問題
目的関数が2次式で定義され、制約条件の集合が一次方程式・一次不等式によって定義されている場合。
凸計画問題
目的関数が凸関数で、制約条件の集合も凸集合である場合。
半正定値計画問題
半正定値行列を変数とする凸計画問題。
非線型計画問題
目的関数や制約条件に非線型なものが含まれる場合。

連続最適化問題編集

連続最適化問題(: continuous optimization problem)とは、制約条件の集合 A がユークリッド空間   の部分集合の物。

無制約問題を解析的に解く場合は、最適性の必要条件(偏微分を取って 0 )を満たす点の中に最小解がある。束縛条件がある場合はラグランジュの未定乗数法が使える。

導関数が必要なアルゴリズム編集

導関数が必要なアルゴリズムを勾配法という。以下は、勾配法のアルゴリズム。

MathematicaのFindMinimumのデフォルトの設定は、制約条件付きは内点法[1]、目的関数が平方和の場合はレーベンバーグ・マーカート法を使い[2]、そうで無い場合はBFGS法を使い、250次元以上の場合L-BFGS法を使う[3]

導関数が不要なアルゴリズム編集

以下は、導関数が不要(: Derivative-free optimization)なアルゴリズム。

MathematicaのNMinimumのデフォルトの設定は、線形計画問題ならば単体法を使い、整数パラメータがある場合などは差分進化を使い、それ以外はNelder-Mead法を使う[4]

1次元用編集

2次元以上に対応している連続最適化問題のアルゴリズムでも内部で1次元用のアルゴリズムを使用している場合も多い。以下は、1次元用のアルゴリズム。

線形計画問題用編集

以下は線形計画問題用のアルゴリズム。

離散最適化問題編集

離散最適化問題(: discrete optimization problem)とは、制約条件の集合 A が   の部分集合の物。詳細は組合せ最適化を参照。

計算理論の問題のクラス編集

歴史編集

最適化問題としての手法の最も古い登場はカール・フリードリッヒ・ガウスまでさかのぼることができる最急降下法 (steepest descent) である。歴史的に始めに導入された用語は1940年代にジョージ・ダンツィクによって作られた「線型計画法」(linear programming) である。この(「計画法」と訳される)programmingという語の由来は、コンピュータなどのプログラムを書く、機器を設定する、といった意味の「プログラミング」とは別で、軍などにおける(特に、この分野では先行していた米国において、アメリカ軍の用語としての)訓練・補給の予定、という語のprogramからきている。最適化問題の発展に貢献した数学者として

らがあげられる。

参照編集

関連項目編集