2013-05-04 177 views
2

我正在構建MILP約束系統。以下是我需要建立的約束。Gurobi中具有底層函數的線性約束條件

floor(a-b) <= 2c - 1 

這裏,a和b是實值。 c是整數變量。我需要floor函數來爲變量指定適當的值。我如何在Gurobi中添加這個約束?任何幫助讚賞。

+0

我可能會錯過一些東西,但它不足以要求那'a - b <= 2c'? – 2013-05-05 15:27:03

+0

不,問題是,如果'a> = b',我需要'c'分配'1'。否則分配「0」 – user592748 2013-05-05 16:25:46

回答

2

假設a由恆定的MaxA限定,並且類似地讓b < = MaxB。 然後,使用不等式

(1):一個< B + C * MAXA

(2):B < = A +(1-c)的* MAXB。 (1)意味着c = 1,並且(2)是平凡滿足的,與c無關。否則, 假設a小於b,現在(2)意味着c = 0並且(1)變得微不足道。 (你應該跳過(2),如果你只是想確保a> = b意味着c = 1,否則不關心c)。