二次錐計画問題

提供: testwiki
ナビゲーションに移動 検索に移動

二次錐計画問題(にじすいけいかくもんだい、テンプレート:Lang-en-short、略称: SOCP)とは、次の形をした凸最適化問題を指す。

minimize  fTx 
subject to
Aix+bi2ciTx+di,i=1,,m
Fx=g 

ただし、問題中に現れるfn, Aini×n, bini, cin, di, Fp×n、かつ gp はパラメータ定数で、xn が最適化変数である[1]

この式においてAi=0 for i=1,,mである場合には、二次錐計画問題は単なる線形計画問題となる。また、ci=0 for i=1,,mである場合には二次制約付き二次計画問題となる。また二次錐計画問題は制約条件を線形行列不等式として書き直すことで半正定値計画問題の一種とみなすこともできる。二次錐計画問題は内点法による効率的な解法が存在することが知られている。

概要

二次錐計画問題は、名前の通り実行可能領域が二次錐であるような凸最適化問題を指す。もっとも単純な二次錐は n 次元空間上において次のような集合としてあらわされる。

𝒞0:={xn:i=1n1xi2xn}.

より一般的な形として

𝒞:={xm:Ax+bcTx+d},A(n1)×m,bn1,cm,d

と表されることがあるが、これは

[AcT]x+[bd]𝒞0

と同値な条件であり、錐体を表す集合であることがわかる。この一般的な錐体の定義により、上のような二次錐計画問題が定義される。

二次錐計画問題には一般的な主双対内点法による解法以外にもバリア関数法などの解法が用いられる。バリア関数法では、上記の凸最適化問題を

minimize fTxlog((Fxg))i=1mlog(12(Aix+bi22(ciTx+di)2))

という形に書き換え、これをニュートン法などにより最小化することで各繰り返しにおけるステップ幅Δxを求める[1]

例: 二次制約の問題

次の二次不等式制約を考える。

xTATAx+bTx+c0.

この不等式は次のように変形することで錐形の実行可能領域を表す二次錐制約とみなすことができる。

(1+bTx+c)/2Ax2(1bTxc)/2.

例: 確率計画

確率的線形計画問題とは次のような不等式制約を含む線形核問題を指す。

minimize  cTx 
subject to
P(aiT(x)bi)p,i=1,,m

この式においてaiは平均a¯i、共分散Σiの正規乱数を要素とするベクトルであり、p0.5である。この問題は次の二次錐計画問題と同値とみなすことができる。

minimize  cTx 
subject to
a¯iT(x)+Φ1(1p)Σi1/2x2bi,i=1,,m

ただしΦ1誤差関数の逆関数を表す[1]

二次錐計画問題のプログラム

Name License Brief info
Xpress 商用 バージョン7.6より
CPLEX 商用
Gurobi 商用 並列のバリア関数アルゴリズム
JOptimizer ASLライセンス Javaによる凸最適化のライブラリ(オープンソース)
MOSEK 商用
OpenOpt BSDライセンス 複数の言語に対応した最適化フレームワーク。詳しくはSOCP (英語) を参照のこと。内部ではPythonのライブラリであるNumPyおよびSciPyを用いた疎行列計算が用いられている。

脚注

テンプレート:脚注ヘルプ テンプレート:Reflist

テンプレート:主要な最適化問題の分類