2017-12-18 9 views
0

私はAが決定変数である。このチェック - gurobiのpythonでの制約

if A > 0 then B = 1 else B = 0 

を行うための制約を書きたいです。 Bは2進決定変数である。これを行うための最も効率的な方法は何ですか(メモリとCPUの使用方法がある場合)。

ありがとうございました。

答えて

0

インジケータ制約は単純です:Aの

B=1 => A >= 0.001 
B=0 => A <= 0 

使用良い境界はGurobiを支援します。あなたが良い境界を持っている場合

、あなたも直接行うことができます。

A <= B * U 
A >= L * (1-B) + B * 0.001 
L <= A <= U 
+0

m.addConstrs(Y [I、K、J、JP] <=(100000 * y_bin [I、K、J、JPユーザペアのi、kに対するm.addConstrs(y [i、k、j、jp]> =(y_bin [i、k、j、jp]) jについてはjp、弧ではjp)。明らかにuserpairには2500のインデックスがあり、アークにも2500のインデックスがあります。まず第一に、それはあなたのアドバイスのように見えますか?そしてその制約を加えるステップには多くの時間がかかり、私が見ているように多くのメモリを消費します。それは普通ですか?ところで、私はyのU境界とL境界を定義していませんでしたが、境界を知っています。私が定義してもいなくても、それは何か変わるのだろうか? –

+0

なぜ0.001をバイアスとして挿入し、0を直接挿入しないのですか?ありがとうございました。 –

+0

あなたはA> 0を求めました。 –