2 つの最適化変数 ( x_in(t)
、x_out(t)
) を持つ最適化問題があるとします。任意の時間ステップで、x_in
が非ゼロの場合、ゼロでx_out
なければなりません (逆も同様です)。制約として書かれています:
x_in(t)*x_out(t)=0
linprog
そのような制約を Matlab の関数にどのように含めることができますか?
2 つの最適化変数 ( x_in(t)
、x_out(t)
) を持つ最適化問題があるとします。任意の時間ステップで、x_in
が非ゼロの場合、ゼロでx_out
なければなりません (逆も同様です)。制約として書かれています:
x_in(t)*x_out(t)=0
linprog
そのような制約を Matlab の関数にどのように含めることができますか?
問題は完全に線形ではないため、関数を使用してそのまま解決できるとは思いませんlinprog
。ただし、問題を混合整数線形計画問題として再定式化できるはずです。次に、たとえばMatlab Centralのこの拡張機能を使用して問題を解決できます。
x_in(t)
およびがそれぞれ上限およびx_out(t)
を持つ非負の変数であると仮定すると、変数およびを最適化問題に追加して、次の制約を含めることができます。x_in_max
x_out_max
y_in(t)
y_out(t)
(1) y_in(t) and y_out(t) are binary, i.e. 0 or 1
(2) x_in(t) <= x_in_max * y_in(t)
(3) x_out(t) <= x_out_max * y_out(t)
(4) y_in(t) + y_out(t) = 1
y_in
とがバイナリ変数であることを考えるとy_out
、制約 (2) と (3) はx_
とy_
変数を互いに関連付け、変数が範囲内に留まるようにします (したがって、変数x_
の固定範囲は問題の定式化から削除できますし、削除する必要があります)。制約 (4) は、イベントまたはイベントのいずれかが発生することを保証しますが、両方が同時に発生することはありません。x_
_in
_out