問題タブ [cvxpy]
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.
optimization - ポートフォリオ最適化におけるカーディナリティ制約
私は cvxpy を使用して、いくつかの単純なポートフォリオ最適化問題に取り組んでいます。私が理解できない唯一の制約は、ゼロ以外のポートフォリオ保有数のカーディナリティ制約です。MIP アプローチと従来の凸型アプローチの 2 つのアプローチを試しました。
これは、動作する従来の例のダミー コードです。
sum_smallest と sum_largest ( cvxpy manual ) を使用するという考えがありました。私の考えは、最小の nk エントリを 0 に制約し、目標範囲 k の合計を 1 にすることでした。不等式の方向を順番に変更できないことはわかっています。しかし、問題をシンプルに保ちながら問題を制限する巧妙な方法を知っている人がいるかもしれません。
私の 2 番目のアイデアは、これを混合整数問題にすることでした。
バイナリ ベクトルを見ると、正しいことをしているように見えますが、sum_entries 制約が機能しません。バイナリ ベクトル値を調べると、0 が 0 ではないことに気付きました。たとえば、xxe^-20 など、非常に小さいです。上。これが正しい方法である場合、誰でも私にガイダンスを与えることができますか? 標準ソルバーと Mosek を使用できます。これは組み合わせの問題であり、より大きな問題では非常に遅くなることを理解しているため、MIP 以外の実装を希望します。最終的には、ターゲット保有の正確な数、または 20 ~ 30 などの範囲に制約を加えたいと考えています。
また、MIP に関する cvxpy のドキュメントは非常に短いものです。ありがとう
python - `cvxpy` でベクトルの一部を合計する方法は?
私はcvxpy
凸最適化問題を解決するために使用しています。ここに私の制約があります:
では、この制約を でどのように表現できcvxpy
ますか? のsum_entries
関数はcvxpy
、行列/ベクトル全体を合計することしかできませんが、ベクトルの一部を合計することはできません。
mathematical-optimization - Minimum jerk trajectory with CVXPY
I am trying to numerically solve the problem of generating a 1D minimum jerk trajectory using cvxpy (version 0.4.9). Here is the basic statement of the problem,
'x' is the vector of position as a function of time. 'D' is the matrix for calculating the jerk, 'A' and 'b' specify the the constraints for position, velocity and acceleration. x[0] = 0, and x[N] = 1. The velocity and acceleration start and end at 0.
I tried to solve this problem using CVXPY using using the following code.
I get the following output, as expected, when N = 100.
However, when I change N = 1000, I get something strange (problem status is still optimal).
Why do I see a difference like this? What am I doing wrong and what should I do to fix this?
When I scale D by a factor of 1000, my results are different.