問題タブ [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.
python - log cdf を使用して cvxopt (python) で関数を定義する
目的関数を次のように定義したいと思います。-sum(log(normcdf(x)))
ここでnormcdf
、の各コンポーネントで動作しますx
。実装されているようですが、Pythoncvxpy
にこだわりたいと思います。cvxopt
助言がありますか?
windows - cvxopt をインストールすると、 -lgfortan が見つからないというエラーが表示されます
しか見つかりませんlibgfortan.a
。cmd を使用して cvxopt をインストールし、Web サイトの指示に従っています。見つからないというエラーが表示されます-lgfortan
。
python - cvxopt を使用して 2 項線形計画法を解く方法は? パイソン
cvxopt で線形計画法を解く方法は知っていますが、変数がすべて 0 または 1 の場合 (2 項問題) の作り方がわかりません。これが私の試行コードです:
結果は次のとおりです。
cvxopt のドキュメントを読みましたが、バイナリ線形の問題については何も見つかりません。
python-2.7 - CVXOpt op 引数エラー
次のモデルでCVXOptをテストしています
ただし、次の 2 つの問題があります。
- コードの最後の行の制約の引数が無効です。CVXOpt のドキュメントを確認しましたが、コード化されている方法が正しい方法のようです。
- それほど重要ではありませんが、ここに示されているように、すべての制約 (c1、c2、..) を同じ行に書き込むと構文エラーが発生する理由を誰かが教えてくれればうれしいです。代わりに、それぞれに異なる行を使用する必要がありました。
python - Pandas: cvxopt マトリックスとの間の変換
Pandas データフレームが与えられた場合、cvxopt マトリックスに変換する、またはその逆に変換する最良の方法 (読みやすさまたは実行速度) は何ですか?
現在私はやっています:
また、オブジェクトを変換せずに cvxopt 行列と pandas データフレームの混合物を使用して、ベクトルまたは行列代数を行う合理的に読みやすい方法はありますか?
以下は、読みにくいベクトル内積 (pdObj と cvxMat は列ベクトル) です。
何かアドバイス?
waitingkuoの回答へのフォローアップ:
pandas データフレームを使用した説明のためだけに:
ただし、次の点に注意してください。
python - Cython でラップされたコードが予期せず segfault する
私は、C 最適化ライブラリーである donlp2 用の単純な cython ラッパーを作成しました。ライブラリはグローバル変数を広範囲に使用し、関数がそれらを呼び出すことができるように、呼び出し元が定義済みの名前で関数を記述していることを前提としています。(例えば、それぞれ関数とその勾配を評価する関数 ef と egradf があります)
ラッパーは、グローバル変数に「cdef extern」を使用し、C ライブラリが期待する関数を作成するために「cdef public」を使用して、非常に簡単に作成できました。また、view.array を使用して、python 関数に渡すことができる cython 配列への double* ポインターをキャストしました。私のラッパーがCライブラリを使用して、純粋なPythonで定義された関数と勾配を最適化できるようにします。
以下はラッパーコードです。
ラッパー コードは、次のようないくつかの単純なおもちゃのケースで機能します。
私が実際に解決したい問題には、numpy と cvxopt を使用した配列操作を使用した、より多くのセットアップが含まれます。私がそれを作成すると、コードはすぐにセグメンテーション違反になります。gdb をステップ実行して valgrind を使用すると、次のような最適化ライブラリの行のみが明らかになります。
valgrind からの次のエラーで終了します。
セグメンテーション違反は、C ライブラリが実際の作業を行う前に発生します。変数を初期化するだけです。ライン 8690 は
204行目は単なる呼び出しです
インクルードされたヘッダー ファイルでは、foo は double* であると定義されています。malloc_wrapper 内のメモリ割り当てが成功し、関数が正常に返されたことに注意してください。失敗しているのは foo への書き込みです。
これを引き起こしている原因を絞り込む方法、またはそれを修正する方法について何か提案はありますか?