4

2 つの最適化変数 ( x_in(t)x_out(t)) を持つ最適化問題があるとします。任意の時間ステップで、x_inが非ゼロの場合、ゼロでx_outなければなりません (逆も同様です)。制約として書かれています:

x_in(t)*x_out(t)=0

linprogそのような制約を Matlab の関数にどのように含めることができますか?

4

1 に答える 1

5

問題は完全に線形ではないため、関数を使用してそのまま解決できるとは思いませんlinprogただし、問題を混合整数線形計画問題として再定式化できるはずです。次に、たとえばMatlab Centralのこの拡張機能を使用して問題を解決できます。

x_in(t)およびがそれぞれ上限およびx_out(t)を持つ非負の変数であると仮定すると、変数およびを最適化問題に追加して、次の制約を含めることができます。x_in_maxx_out_maxy_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

于 2013-04-03T09:33:48.017 に答える