ノルムの不等式制約に対処する方法


8


(凸)最適化タスクを解決したい:

以下の2つの制約を受ける R X I- X T I Z 0maxr,zr

Z 1 R 0rxixiTz0i=1,,N
z1
r0

スカラーであり、 zはベクトルであり、 X のは、同じ次元のベクトルであり、‖は簡単のEuClあります。規範。実行可能領域は空ではないと想定できます。 これを解決する簡単な方法はありますか?私はなしであるため、これは簡単なはずだと思うZ 1制約これは単なる線形プログラムです。私にソフトウェアパッケージを紹介する前に、この種のタスクに役立つ一般的なアプローチについてのヒントを教えてください。 ありがとうDGrzxi

z1

回答:


3

z

  1. 少し調整して、処方をそのまま使用します。

    maxr,zr

    rxixiTz0i=1,,N
    zTz1
    r0

    この問題は二次制約のあるプログラムであり、CPLEXやGurobiなどの高速ソルバーが多数あります。この特定のプログラムは、2次コーンプログラム、半確定プログラム、および凸非線形プログラムでもあるため、これらのソルバーのいずれかを使用することもできます。ユークリッドノルム制約を内積で置き換えた理由は、2つの制約は同等ですが、後者は微分可能ですが、前者は微分可能ではありません。微分できない関数はより高価なアルゴリズムを必要とし、この問題はそのタイプの機械を必要としないので、それを避けるのが最善です。

  2. zz

線形計画法ソルバーは非常に効率的ですが、オプション1を選択します。これは、2次制約付きプログラミングソルバーも非常に効率的で(凸型計画法ソルバーや他のタイプの非線形計画法ソルバーと比較して)、大規模な定式化(少なくとも数十万の決定変数、前回私が文献を見たとき)。公式が驚くほど大きい場合を除き、二次制約付きプログラミングソルバーをシリアルで使用して問題なく、絶対に変更する必要がない限り、公式の標準を変更する必要はありません。

xi


これを半確定プログラムと呼ぶべきではありません。これは、2次制約プログラム、または少し一般的な2次コーンプログラムです。これを半確定プログラムと呼ぶことは、線形プログラムを2次コーンプログラムと呼ぶことと同じです(クラス線形プログラム-二次制約プログラム
-2

あなたはそれをQPと呼ぶ方が良いだろうというのは正しいです。どういうわけか、私はグラミアン(小さなものでも)を見て、パターンに飛びつきました。
Geoff Oxberry 2013

二次プログラムは間違った信号を送信すると思います。これは通常、二次の目的と線形制約の問題に限定されます。二次的に制約された問題、またはおそらく最も一般的ですが、ここでの問題よりも少し一般的な2次コーンプログラムです。
JohanLöfberg2013

1

zTz1z1

パフォーマンスを向上させる必要がある場合は、シングルコーン機能を利用する方法があります。ここに一例があります

SIAM J. Optim。、17(2)、459–484。(26ページ)シングルコーン2次コーンプログラムのアクティブセット法E. ErdouganおよびG. Iyengar

ノルムを1ノルムに置き換えると、おそらくうまく機能しないことを指摘しておきます。二次ノルムは、この問題の幾何学的背景に起源があります(これは、特定のベクトルのセットに対して最小の角度を持つベクトルを見つけると解釈します)。

αzTz

zz106101

z = sdpvar(5,1);
r = sdpvar(1);

err1 = [];
err2 = [];
for i = 1:1000
    X = randn(5,10);
    Con = [r*sqrt(sum(X.^2,1)) <= z'*X,norm(z,2) <= 1]
    sol = solvesdp(Con,-r)
    if sol.problem == 0 & double(r)>1e-3
        zSOCP = double(z);
        Con = [r*sqrt(sum(X.^2,1)) <= z'*X];
        sol = solvesdp(Con,-r+0.001*z'*z);
        zQP = double(z/norm(double(z)));
        err1 = [err1 norm(zQP-zSOCP)];
        Con = [r*sqrt(sum(X.^2,1)) <= z'*X, norm(z,1)<=1];
        sol = solvesdp(Con,-r);
        zLP = double(z/norm(double(z)));
        err2 = [err2 norm(zLP-zSOCP)];
    end
end

最後に、幾何学的な洞察を使用すると、この問題を解決するためのより優れたアプローチにつながる可能性があります。基本的に、単位球上の一連の点の特に定義された中心を探しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.