0

次の(一般的な)形式の最適化問題を数値的に解くのに苦労しています。

F(x) を最小化する

そのような:

___(1): 0 < x < 1

___(2): M(x) >= 0。

ここで、M(x) は要素が x の二次関数である行列です。最後の制約は、M(x) が正の半正定行列でなければならないことを意味します。さらに、F(x) は呼び出し可能な関数です。より好奇心旺盛な方のために、同様の最小限の作業例を次に示します

いくつかのオプションを試しましたが、成功しませんでした。

  1. PICOSCVXPYおよびCVX -- 最初の 2 つのケースでは、私のようなミニマックス問題をエンコードする方法が見つかりません。MATLAB で実装されている 3 番目のものでは、半正定制約に含まれる行列はアフィンでなければなりません。したがって、私の問題はこの基準から外れています。
  2. fmincon -- マトリックス ポジティブ制約をどのようにエンコードできますか? 1 つの方法は、行列 M(x) の固有値を解析的に計算し、それぞれが正になるように制約することです。しかし、固有値の解析式は恐ろしいものになる可能性があります。
  3. MOSEK -- 目的関数は標準形式で表現可能でなければなりません。ユーザー定義の目的関数の例が見つかりません。
  4. scipy.optimize -- 目的関数と制約に加えて、これらの関数の導関数も提供する必要があります。特に私の場合、それは目的関数にとっては問題ありません。しかし、固有値の解析式を使用して行列の正の制約 (およびその導関数) を表現するとしたら、それは非常に面倒な作業になる可能性があります。

上記の各パッケージ/ソフトウェアでの私の試みを説明するために MWE を提供していないことをお詫びします。

最適化の問題を解決するのに役立つパッケージ/ソフトウェアを誰か提案してもらえますか?

4

1 に答える 1

0

ボックス制約を使用した非線形最適化パッケージを見てみましょう。ここでは、さまざまなタイプの制約がペナルティまたはバリア技術によってコーディングされている可能性があります。次の URL merlin.cs.uoi.gr を見てください。

于 2016-03-07T01:42:58.970 に答える