問題タブ [cvxopt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scipy - 半明確な制約を伴う非線形最適化のための適切なパッケージ/ソフトウェア
次の(一般的な)形式の最適化問題を数値的に解くのに苦労しています。
F(x) を最小化する
そのような:
___(1): 0 < x < 1
___(2): M(x) >= 0。
ここで、M(x) は要素が x の二次関数である行列です。最後の制約は、M(x) が正の半正定行列でなければならないことを意味します。さらに、F(x) は呼び出し可能な関数です。より好奇心旺盛な方のために、同様の最小限の作業例を次に示します。
いくつかのオプションを試しましたが、成功しませんでした。
- PICOS、CVXPYおよびCVX -- 最初の 2 つのケースでは、私のようなミニマックス問題をエンコードする方法が見つかりません。MATLAB で実装されている 3 番目のものでは、半正定制約に含まれる行列はアフィンでなければなりません。したがって、私の問題はこの基準から外れています。
- fmincon -- マトリックス ポジティブ制約をどのようにエンコードできますか? 1 つの方法は、行列 M(x) の固有値を解析的に計算し、それぞれが正になるように制約することです。しかし、固有値の解析式は恐ろしいものになる可能性があります。
- MOSEK -- 目的関数は標準形式で表現可能でなければなりません。ユーザー定義の目的関数の例が見つかりません。
- scipy.optimize -- 目的関数と制約に加えて、これらの関数の導関数も提供する必要があります。特に私の場合、それは目的関数にとっては問題ありません。しかし、固有値の解析式を使用して行列の正の制約 (およびその導関数) を表現するとしたら、それは非常に面倒な作業になる可能性があります。
上記の各パッケージ/ソフトウェアでの私の試みを説明するために MWE を提供していないことをお詫びします。
最適化の問題を解決するのに役立つパッケージ/ソフトウェアを誰か提案してもらえますか?
python - CVXOPT QP Solver: TypeError: 'A' は 1000 列の 'd' 行列でなければなりません
CVXOPT qp ソルバーを使用して、サポート ベクター マシンのラグランジュ乗数を計算しようとしています。
X
これは1000 X 2
行列でY
、同じ数のラベルがあります。ソルバーは次のエラーをスローします。
$ python svm.py
(1, 1000)
Traceback (most recent call last):
File "svm.py", line 35, in <module>
svm(X, Y, 50)
File "svm.py", line 29, in svm
sol = solvers.qp(P, q, G, h, A, b)
File "/usr/local/lib/python2.7/site-packages/cvxopt/coneprog.py", line 4468, in qp
return coneqp(P, q, G, h, None, A, b, initvals, options = options)
File "/usr/local/lib/python2.7/site-packages/cvxopt/coneprog.py", line 1914, in coneqp
%q.size[0])
TypeError: 'A' must be a 'd' matrix with 1000 columns
A の形状を印刷しました。これ(1,1000)
は、ベクトルから再形成した後の行列です。このエラーの正確な原因は何ですか?
python - GFORTRAN_1.4' が見つかりません
gfortran がインストールされていることを確認します
次に、インポートが次のように見えるpythonプログラムを試します
エラーが発生する
編集1