二次計画法

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

二次計画法(にじけいかくほう、: quadratic programming, QP)とは数理最適化問題の一つである。特に、いくつかの変数からなる二次関数を線形制約の下で最適化(最小化ないしは最大化)する問題である。非線形計画法の代表例の一つである。

問題の定式化[編集]

n の変数と m の制約からなる二次計画問題は以下のように定式化することができる[1]

以下を所与とする:

  • 実数値の n 次元ベクトル c
  • nn 列の実数値対称行列 Q
  • mn 列の実数値行列 A
  • 実数値の m 次元ベクトル b

二次計画問題の目的は以下の問題の解となる n 次元ベクトル x を見つけることである。

ここで xT はベクトル 転置を表す。Axb という記法はベクトル Ax の全ての要素が対応するベクトル b の要素より小さいもしくは等しいことを意味する。

関係する最適化問題として、二次制約付き二次計画問題英語版があり、二次制約付き二次計画問題では二次の制約が足されている。

解法[編集]

一般の問題について、多様な解法が広く用いられており、例えば

などがある。行列 Q正値定符号ならば、問題はより一般的な凸最適化の領域の特殊ケースとなる。

等式制約[編集]

二次計画問題は行列 Q正値定符号であり、等式制約のみを含む時、特に簡単になり、解の過程は線形となる。ラグランジュの未定乗数法を用い、ラグランジアンの極値を探せば、以下の等式制約問題

の解は次の線形システム

の解として与えられることが容易に示される。ここで はラグランジュ乗数の集合で と共に計算される。

このシステムを解く最も簡単な方法は直接的に問題を解くこと(例えばLU分解)で、問題の規模が小さければ非常に有用である。問題の規模が大きければ、このシステムは特異な難しさに直面する。もっとも重要なのは( が正値定符号であったとしても、)問題自体は正値定符号と決してならないことである。良い数値解法を見つけることは潜在的に非常に難しく、問題に依存した様々な方法がある[4]

もし、制約が変数をそう含んでないのであれば、相対的に簡単な方法として変数を変換し制約を無条件で満たすようにすることがある。例えば、 (非ゼロの場合にも一般化できる)と仮定する。制約方程式を見ると

となる。新しい変数として を以下のように定義する。

ここで の次元は の次元から制約の数を引いたものである。この時、

であり、もし となるように選べば、制約方程式は常に満たされるようになる。このような を見つけるということは 零空間を見つけるということを意味し、 の構造に依存するが多かれ少なかれ単純である。二次形式に代入すると次の無制約の最小化問題が得られる。

この解は以下で与えられる。

についてのある条件の下で、退化した行列 は正値定符号となる。 の陽な計算を避けた共役勾配法のバリエーションとして書くことも可能である[5]

ラグランジュ双対[編集]

二次計画問題のラグランジュ双対はまた二次計画問題となる。これを見るために、 かつ Q が正値定符号であるケースに着目しよう。ラグランジュ関数は以下のように書ける。

(ラグランジュ)双対関数を とし、 を満たすものとすれば、 という条件と Q の正値定符号性を用いることで、 の下限を見つけることができる。

ゆえに双対関数は

であり、二次計画問題のラグランジュ双対は

となる。ラグランジュ双対理論の他にも他の双対性が存在する(例えばWolfe双対英語版)。

複雑性[編集]

正値定符号行列である Q について楕円体法英語版多項式時間で二次計画問題を解くことができる[6]。一方で、Q の符号が不定ならば、二次計画問題はNP困難となる[7]。実際、Q のただ一つの固有値だけが負であったとしても、二次計画問題はNP困難である[8]

二次計画法のソルバーとプログラミング言語[編集]

名前 要約
AIMMS英語版 最適化とスケジューリング型問題のモデリングと計算のためのソフトウェアシステム
ALGLIB英語版 二重ライセンス(GPL/proprietary)の数値ライブラリ(C++, .NET).
AMPL英語版 大規模数理最適化のための一般的なモデリング言語
APMonitor英語版 LP、QP、NLPMILP、MINLP[9]DAE英語版のための、MATLABとPython上のモデリングと最適化スイート。
CGAL 二次計画法ソルバーを含むオープンソースの計算幾何パッケージ
CPLEX英語版 API(C,C++,Java,.Net, Python, Matlab, R)によるポピュラーなソルバー。大学向けは無料。
CVXOPT Pythonを元にした凸最適化のためのフリーパッケージ。software
Excel のソルバー関数 関数の評価がセル上の再計算を元にした表計算に調整された非線形ソルバー。基本バージョンはExcelの標準アドオンとして利用できる。
GALAHAD 凸、もしくは非凸二次計画法についての多様な方法を含む平滑非線形最適化のためのパッケージライブラリ。
GAMS英語版 数理最適化のためのハイレベルモデリングシステム。
Gurobi英語版 大規模線形計画、二次計画、混合整数計画のための並列アルゴリズムを備えたソルバー。大学向けは無料。
IMSL プログラマーが自身のソフトウェアアプリケーションに埋め込むことが可能な数学関数と統計関数のセット。
IPOPT IPOPT (Interior Point OPTimizer) は大規模非線形最適化のためのソフトウェアパッケージである。
JOptimizer 線形等式制約と凸不等式制約を含む最小化問題を解くためのオープンソースライブラリ(Javaで実装されている)
Artelys Knitro英語版 非線形最適化のための統合パッケージ
Maple 数学のための汎用的用途のプログラミング言語。Maple上で二次計画問題を解くにはQPSolveのコマンドを用いればよい。
MATLAB 数値的計算のための汎用的用途の行列指向プログラミング言語。MATLAB上で二次計画法を行うにはMATLABの基本製品に加えて Optimization Toolbox が必要になる。
Mathematica 数学のための汎用的用途のプログラミング言語でシンボリック計算と数値計算を含む。
MOSEK英語版 いくつかの言語(C++,java,.net, Matlab, python)のためのAPIを持つ大規模最適化のためのソルバー。
NAG数値計算ライブラリ 複数のプログラミング言語(C, C++, Fortran, Visual Basic, Java, C#)とパッケージ(MATLAB, Excel, R, LabVIEW)のためのNumerical Algorithms Groupによって開発された数学ルーチンと統計ルーチンの集まり。NAGライブラリの最適化チャプターには疎線形制約行列と非疎線形制約行列を持つ二次計画問題のルーチンが、非線形、有界、もしくは制約なしの線形ないしは非線形関数の線形、非線和、二乗和の最適化のためのルーチンとともに含まれている。NAGライブラリは局所最適化と大域的最適化のためと連続もしくは整数問題のためのルーチンが含まれている。
OOQP OOQPは凸二次計画問題のためのオブジェクト指向の内点法ソルバーである[10][11]
OpenOpt PythonのためのBSDライセンスの数値最適化ライブラリ。QPのページを参照のこと。
OptimJ英語版 Eclipseのプラグインとして利用可能な複数のターゲットをサポートした最適化のためのJavaをベースとしたフリーのモデリング言語[12][13]
qpOASES オンラインの有効制約法のオープンソースのC++実装
R (Fortran) GPLライセンスのユニバーサルクロスプラットフォームの統計計算フレームワーク。quadprogページを参照のこと。MIT Licenseの下でjavascriptに移植されている。LGPLの下でC#にも移植されている。
SAS英語版/OR 線形、整数、非線形、微分不可、ネットワーク、組み合わせ、そして制約付きの最適化のためのソルバーのスイート。algebraic modeling language英語版であるOPTMODELと特定の問題と市場を目標とした多様な垂直ソリューションはそのすべてが完全にSAS System英語版上で統合されている。
TK Solver英語版 宣言型のルールベース型言語に基づいた数理的モデリングと問題解決のためのソフトウェアシステムでUniversal Technical Systems, Inc.により商品化されている。
TOMLAB英語版 MATLABのための、大域的最適化、整数計画問題、あらゆるタイプの最小二乗法、線形計画、二次計画、制約なし計画問題のサポート。TOMLABはGurobi英語版CPLEX英語版SNOPT英語版KNITRO英語版のようなソルバーをサポートしている。
XPRESS 大規模線形計画問題、二次計画問題、汎用非線形計画問題、混合整数問題のためのソルバー。いくつかのプログラミング言語のためのAPIとモデリング言語Moselを持ち合わせており、APML、GAMS英語版上で起動する。大学向けは無料。

関連項目[編集]

参照文献[編集]

脚注[編集]

  1. ^ Nocedal, Jorge; Wright, Stephen J. (2006). Numerical Optimization (2nd ed.). Berlin, New York: Springer-Verlag. p. 449. ISBN 978-0-387-30303-1 .
  2. ^ a b Murty, Katta G. (1988). Linear complementarity, linear and nonlinear programming. Sigma Series in Applied Mathematics. 3. Berlin: Heldermann Verlag. pp. xlviii+629 pp.. ISBN 3-88538-403-5. MR 949214. http://ioe.engin.umich.edu/people/fac/books/murty/linear_complementarity_webbook/. 
  3. ^ Delbos, F.; Gilbert, J.Ch. (2005). “Global linear convergence of an augmented Lagrangian algorithm for solving convex quadratic optimization problems”. Journal of Convex Analysis 12: 45–69. http://www.heldermann-verlag.de/jca/jca12/jca1203_b.pdf. 
  4. ^ Google search.
  5. ^ Gould, Nicholas I. M.; Hribar, Mary E.; Nocedal, Jorge (April 2001). On the Solution of Equality Constrained Quadratic Programming Problems Arising in Optimization. 23. SIAM Journal of Scientific Computing. pp. 1376–1395. CiteSeerx10.1.1.129.7555. 
  6. ^ Kozlov, M. K.; S. P. Tarasov; Leonid G. Khachiyan (1979). “[Polynomial solvability of convex quadratic programming]”. Doklady Akademii Nauk SSSR 248: 1049–1051.  Translated in: Soviet Mathematics - Doklady 20: 1108–1111. 
  7. ^ Sahni, S. (1974). “Computationally related problems”. SIAM Journal on Computing 3: 262–279. doi:10.1137/0203021. 
  8. ^ Pardalos, Panos M.; Vavasis, Stephen A. (1991). “Quadratic programming with one negative eigenvalue is NP-hard”. Journal of Global Optimization 1 (1): 15–22. doi:10.1007/bf00120662. 
  9. ^ Mixed Integer Nonlinear Programming. 混合整数非線形計画問題のこと。
  10. ^ Object-Oriented Software for Quadratic Programming (Paper) (PDF)”. University of Wisconsin-Madison (2003年2月25日). 2014年7月11日閲覧。
  11. ^ Source repository for OOQP, a quadratic programming solver (and more)”. 2014年7月11日閲覧。
  12. ^ OptimJ used in an optimization model for mixed-model assembly lines. University of Münster. http://www.in-ter-trans.eu/resources/Zesch_Hellingrath_2010_Integrated+Production-Distribution+Planning.pdf. 
  13. ^ OptimJ used in an Approximate Subgame-Perfect Equilibrium Computation Technique for Repeated Games. http://www.aaai.org/ocs/index.php/AAAI/AAAI10/paper/viewFile/1769/2076. 

書籍[編集]

  • Cottle, Richard W.; Pang, Jong-Shi; Stone, Richard E. (1992). The linear complementarity problem. Computer Science and Scientific Computing. Boston, MA: Academic Press, Inc.. pp. xxiv+762 pp.. ISBN 0-12-192350-9. MR 1150683. 
  • Garey, Michael R.; Johnson, David S. (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W.H. Freeman. ISBN 0-7167-1045-5.  A6: MP2, pg.245.

外部リンク[編集]