問題タブ [quadratic-programming]
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 - CVXOPT 要件は無視されました
cvxopt で 2 次問題を解こうとしているのですが、要件の 1 つが無視されているようです
この一連の方程式を解きたい:
これはコードです:
しかし、次のような結果が得られます。
したがって、x <= 20 の要件は満たされていません。原因は何ですか?
optimization - Cplex は Q の入力として 2 つのスパース行列を取ることができますか
CPLEX MATLAB APIを使用して、線形制約のある非常に大きなバイナリ二次計画問題を最小化しようとしています。ただし、二次関数 f = x'Qx は非常に密な行列 Q を持ちます。非常に疎な行列 U と A で Q を書き直すことができます: Q = U A.
したがって、完全な行列 Q (格納するには大きすぎる) の代わりに、これらの行列を CPLEX に渡す方法はありますか?
r - quadprog を使用した係数の制約付き加重最小二乗法
R のquadprog
ライブラリを使用して、2 つの制限がある加重最小二乗法を実装するのに問題があります。最初の制限は、すべての係数が 0 以上である必要があることです。2 つ目の制限は、係数の合計が 1 になる必要があることです。
より正式には、次の式を W に関して最小化しようとしています: (Y - XW)^T * V * (Y - XW)、V は対角行列です。
Y は (px 1)、X は (pxs)、W は (sx 1)、V は対角線 (pxp) です。以下は再現可能な例です。使用する適切なパラメーターを見つけようとしていますquadprog::solve.QP
optimization - 最先端の非凸 QCQP ソルバー?
非凸 QCQP ソルバーを知っていますか? 大きな問題は、学者や学生向けの無料のソフトウェアです。私は成功せずにそのようなソルバーを見つけようとしました...
私の問題は次の形式です。
- 線形(厳密および非厳密)不等式
- 不等式間の論理的制約 (同等性、含意など) がある
- X = {x1, ..., xn} を変数の集合とし、Y = {y1, ..., ym} を変数の集合とする。二次制約は次の形式です。
- x1 = x1y1 + x2y2
- x2 = x1y3 + x3y4
- x3 = x2y5 + x1y6
- ...
- 左側の X からの 1 つの変数
- 等式制約
- 係数が 1 に等しい 2 つの変数の積の合計
- st 2 つの変数の各積は、X の 1 つの変数と Y の 1 つの変数の間でのみ発生します。
目的関数は線形です。
ご協力ありがとうございました
matlab - fmincon を使用して違反したステップ サイズの許容誤差
MatLab の fmincon 関数と SQP アルゴリズムを使用して、非線形制約の最適化問題を解決しようとしています。文献調査中にわかったように、このソルバーは私の問題にうまく適用されました。
私は自分の問題の解決策を知っていますが、fmincon はそれを確実に見つけるのに苦労しています。境界内でランダムに生成された開始値を使用して最適化を 100 回実行すると、約 40% の良好な結果が得られました。「良い」とは、結果が私が受け入れる最適に近いことを意味しますが、これらの「良い」結果は異なる ExitFlags に対応しています。最も一般的なのは終了フラグ -2 と 2 です。
「良くない」結果は、最適解から約 2% 外れており、ExitFlags 2 および -2 にも対応しています。
公差をいじってみましたが、成功しませんでした。制約許容度を緩和すると、ExitFlag -2 の数が減少し、いくつかの ExitFlag 1 のケースが発生しますが、その結果、最適解からの偏差が大きくなります。
大きな問題は、その許容範囲に違反するステップ サイズのようです。ステップ サイズ/ステップ サイズのノルムが小さすぎる (X の相対的な変化が TolX 未満である) ため、2 回または 3 回の反復後にソルバーが終了することがよくあります。これらの問題に対処する方法はありますか? 適切な結果を確実に得るために、ソルバーを調整したいと思います。
参考までに、使用されるオプションは次のとおりです。
python - CPLEX 目的関数の線形項と二次項
かなり単純な目的関数を最小化したいのですが、Python API から CPLEX への正しい呼び出しを行う際に問題が発生しています。
私は使用方法set_quadratic
とset_quadratic_coefficients
ここを見ましたが、それは私の問題の解決にはなりませんでした。
目的関数には一連の線形変数と一連の二次変数があります
最後の呼び出しまですべてが機能し、二次項が追加されます。その時点で、CPLEXCPLEX Error 1226: Array entry 13919 not ascending.
はコマンドを無視して次のエラーを 2 回スローし、Python コードは続行します。
エラーを調べましたが、それも役に立たなかったようです。
上記を書き直して、最初に名前と下限で変数を追加してみました...そして呼び出しset_linear
てからですset_quadratic
が、それも役に立ちません。
ここで何が欠けていますか?