2016-07-11 13 views
-1

Ich arbeite zZ an einem Optimierungsproblem auf GUROBI.All meine Variablen sind vom binären type.I haben eine Variable y, die dem Absoluten der Differenz von zwei binären Entscheidungsvariablen gleich ist. Jedoch, als ich versuchte, die ABS zu benutzen () Funktion, ich bekomme diese Ausgabe.Wie erhält man den absoluten Wert eines linearen Ausdrucks?

Daher quadriere ich jetzt die Differenz (da der Unterschied immer -1,0 oder 1 ist). Dies führt jedoch zu einer höheren Optimierungszeit (quadratische Ausdrücke nach dem Quadrieren). Gibt es eine Alternative dazu?

Auch gibt es einen Fall (nicht binäre Variablen), wo die Differenz von zwei Variablen nicht -1,0 oder 1 sein kann. Wie nehme ich das Absolute in diesem Fall?

Antwort

1

y=|x1-x2| für binäre Variable ist das gleiche wie y = x1 xor x2. Dies kann geschrieben werden als:

y <= x1+x2 
y >= x1-x2 
y >= x2-x1 
y <= 2-x1-x2 

(siehe here).

Wenn x1,x2 sind kontinuierliche Variablen zwischen 0 und U Sie schreiben können:

y1-y2 = x1-x2 
y = y1+y2 
y1 <= delta*U 
y2 <= (1-delta)*U 
y1>=0 
y2>=0 
delta in {0,1} 

In vielen Fällen ist dies vereinfacht werden kann.

Verwandte Themen