問題タブ [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 用の QP ソルバーは、次の形式の問題を解決します ( http://cvxopt.org/userguide/coneprog.html#quadratic-programmingを参照)。
これは問題なく動作しますが、問題の制約を両側の不等式で解決したい場合は少し厄介です。
2 番目の問題を最初の問題として再定義できます。次元の数を 2 倍にし、をそれ自体の上に積み重ねることを要求するnew_x
ことによってです。old_x
の適切な形式を見つけることで、上記の条件を強制できると思いますA
。h1
次に、とh2
不等式の両方を にエンコードして、スタックするようにnew_G * new_x <= new_h
設定し、対角線上に連続した s とそれに続く連続した sを持つ対角行列にします。new_h
h1
h2
new_G
n
1
n
-1
とにかく、上記は非常に不器用です。私の問題の次元が2倍になり、うまくいかないかもしれません。
CVXOPT の 2 番目の問題をより適切に表現する方法はありますか?
optimization - 凸QCQPの実用的なソルバー?
次のように凸QCQPを使用しています。
したがって、問題には、目的を除いて 1 つの二次制約しかなく、一部の変数は非負です。両方の二次形式の行列は恒等行列であるため、正定です。
二次制約を目的に移動できますが、問題が非凸になるように負の符号が必要です。
問題のサイズは、最大 10000 個の線形制約で、100 個の非負変数とほぼ同数の他の変数があります。
z_i をバイナリにすることができ、z'Iz=n を削除できるため、この問題は MIQP としても書き直すことができます。これまでのところ、MIQP のために AIMMS を介して CPLEX を使用してきましたが、この問題では非常に遅いです。CPLEX、MINOS、SNOPT、および CONOPT で問題の QCQP バージョンを使用することは、解決策を見つけることができないか、または解決策がアプリオリに知っている近似値に近くないため、絶望的です。
ここで、3 つの質問があります。
MIQPに行かずに、この形式の二次制約を取り除く方法/テクニックを知っていますか?
この QCQP の「良い」ソルバーはありますか? 良いとは、妥当な時間内に大域的最適解を効率的に見つけるソルバーを意味します。
SDP緩和を使用することで、この問題を解決できると思いますか? 私は実際に SDP の問題を解決したことがないので、SDP バージョンがどれほど効率的かはわかりません。何かアドバイス?
ありがとう。
matlab - L1 正則化の Matlab quadprog パラメーター
次のような問題のために、Matlab の quadprog 関数のパラメーター化に苦労しています。
ここで、x は x 0 w 0 +x 1 w 1 +x 2 2 w 2 の行列で、y は x の各行の値を含むターゲット ベクトル、w は重みベクトル、ラムダはスカラー値です。
私はこれを試しましたが、正しくないと確信しています:
quadprog 関数のパラメーターを教えてください。
matlab - 行列の加重和最適化
私は最適化の初心者であり、この分野のガイドを歓迎します。
15 個の行列 (つまり、Di
サイズ)があり、それらを加重平均する(n*m)
ための最適な重み (つまり、wi
Dt
実際、私の目的関数は次のようになります。
Matlab でこの関数を最適化するにはどうすればよいですか?
java - BOBYQAアルゴリズム
最適化の問題については、BOBYQA アルゴリズムを使用しています。このアルゴリズムの効率と正しいパラメータの設定方法について質問があります。Bobyqa は信頼領域に基づいており、この目的のために、関数を二次式で近似するために補間値の数を設定する必要があります。n+2 から 2n+1 の間でこの数を選択することを強くお勧めします。正しいものを選択する方法を見るのにいくつかの困難があります。不明な 9 に問題があり、経験的に最適な数を選択します。また、このパラメーターによって計算時間が大幅に増加する可能性があることにも気付きました。誰かがこのアルゴリズムで自分の経験を共有できるなら、それは役に立ちます.
ありがとう
matlab - matlab で二次計画法を実装する
この論文で解きたい方程式に出会いました。(一般の人が読めるかどうかはわかりません)。これは、式 10 の制約に従って式 9 (添付ファイルを参照) を最小化することに関するものです。
n は 3 次元ベクトル (つまり、n は Px3 配列として表すことができます) であり、c は単なる長さ K のベクトルです (つまり、c は単なる 1xK 配列です)。I' (PxL 配列) と l (3xL 配列) は両方とも既知です。n と c のセットを見つける必要があります。
同紙は次のように述べている。
「最適化のために、信頼領域反射二次計画法の MATLAB 実装を使用しました。」
どうすればこれができるのかわかりません。それが参照しているのはquadprogなのか、それとも単に fmincon を直接使用しただけなのかはわかりません。どちらの場合も、目的の方程式と制約の方程式を関数呼び出しに適した形式で記述する方法がわかりません。誰かが方程式を書き直し、「最適化のために信頼領域反射二次計画法」を使用する方法、またはその方程式を解くための他の効率的な方法を提供する方法を教えてくれれば素晴らしいでしょう。
ありがとう
mathematical-optimization - 二次計画法を線形計画法に変換するには?
目的関数に 2 つの乗算変数があり、モデルを 2 次にする最適化問題があります。
現在、モデルを解析するために zimpl を使用し、それを解決するために glpk を使用しています。二次計画法をサポートしていないため、これを MILP に変換する必要があります。
. 最初の変数は範囲 [0, 1] の実数で、2 番目の変数は範囲 0 から inf の実数です。これは問題なく整数である可能性があります。
目的関数の重要な部分は次のようになります。
制約にも同様の問題がありましたが、簡単に解決できました。
この種の問題を目的関数でどのように解決できますか?
r - quadProg ライブラリによる制約付き二次最適化
A
長さのベクトルがありN
ます。また、私はN*N
マトリックスを持っていC
ます。次の方程式を最大化したい:
ここw
で、 は length のベクトルで、それぞれが非負であり、すべての合計が 1 でN
あるという制約があります。w
w
というパッケージを見たことがありますquadProg
。そこで指定する必要があります:
Dmat = C
、dvec = A
、およびbvec = w
しかし、上記の制約をそこに適用する方法がわかりません。
私は、すべての非負Amat
を維持する恒等行列を提供できると思います。w
しかし、正規化を維持する方法がわかりませんw
(合計がゼロに等しい)。実際、後で正規化することもできますが、ここでそれを行うことができるかどうかはまだ疑問です.