6

私は解決する必要があります (多くの場合、多くのデータに対して、他の多くのことと一緒に) 2 次コーン プログラムに要約すると思われるものを解決する必要があります。CVXで簡潔に表現すると、次のようになります。

cvx_begin
    variable X(2000);
    expression MX(2000);
    MX = M * X;
    minimize( norm(A * X - b) + gamma * norm(MX, 1) )
  subject to
    X >= 0
    MX((1:500) * 4 - 3) == MX((1:500) * 4 - 2)
    MX((1:500) * 4 - 1) == MX((1:500) * 4)
cvx_end

示されているデータ長と等式制約パターンは、一部のテスト データからの任意の値にすぎませんが、一般的な形式はほとんど同じで、2 つの客観的項 (1 つはエラーを最小化し、もう 1 つはスパース性を促進します) と多数の等式制約があります。最適化変数の変換されたバージョンの要素 (それ自体は非負になるように制約されています)。

これはかなりうまく機能しているように見えます。私の以前のアプローチよりもはるかに優れています。問題は、これに関する他のすべてが R で行われていることであり、Matlab に移植する必要があるのは非常に面倒です。R でこれを行うことは実行可能ですか?

これは、2 つの別々の質問に要約されます。

1)これに適したRリソースはありますか? CRAN タスク ページからわかる限り、SOCP パッケージ オプションはCLSCOPDWDであり、分類器の補助として SOCP ソルバーが含まれています。どちらも似ていますがかなり不透明なインターフェースを持ち、ドキュメントと例が少し薄いため、次のことがわかります。

2) これらのパッケージで使用される制約ブロック形式で上記の問題を表現する最良の方法は何ですか? 上記の CVX 構文は、追加の変数などを使った多くの退屈ないじりを隠しています。これを正しく行うために何週間も費やしていることがわかります。正しい方向に私を微調整するためのヒントやポインターは大歓迎です...

4

3 に答える 3