2017-03-01 3 views
0

Ich versuche den GurobiTM Optimizer zu benutzen. Hier finden Sie mein QP Modell:Gurobi LP Dateisyntax

Die Probleme am häufigsten durch das Parallel Mixed Integer Programming-Solver Gurobi gelöst sind von der Form: Ziel: Minimierung cT x Constraints: A x = b (linear constraints) l ≤ x ≤ u (gebunden constraints) einige oder alle xj müssen ganzzahlige Werte (Ganzzahligkeitsbedingungen)

Maximize 
    - x1 + .5 x2 + .5 x3 + x4 - x5 + .5 x6 + .5 x7 - x8 
    - .17 x1 * x2 + .66 * x1 * x3 + .66 x1 * x4 
    + .56 x2 * x3 + .49 x2 * x4 
    - .17 x5 * x6 + .82 x5 * x7 + .66 x5 * x8 
    + .16 x6 * x7 + .49 x6 * x8 
Subject To 
    c1: x1 + x5 <=1 
    c2: x2 + x6 <=1, 
    c3: x3 + x7 <=1 
    c4: x4 + x8 <=1, 
    c5: x1 + x2 + x3 + x4 <= 2 
    c6: x5 + x6 + x7 + x8 <= 2 
Bounds 
0 <= x1 <= 1 
0 <= x2 <= 1 
0 <= x3 <= 1 
0 <= x4 <= 1 
0 <= x5 <= 1 
0 <= x6 <= 1 
0 <= x7 <= 1 
0 <= x8 <= 1 
Integers 
    PS PD JS JD AS AD MS MD 
End 


It seems that according to Gurobi Interactive Shell the syntax is not correct : 

Error reading LP format file /.../toyproblem.lp at line 2 
Malformed term in expression 
Neighboring tokens: " - .17 x1 * x2 + .66 * x1 * " 

Jede Idee nehmen?

Vielen Dank im Voraus für Ihre Hilfe,

MM.

Antwort

0

Das ist kein lineares Programm (LP) - es ist ein quadratisches Programm (QP), das nicht in Standardform geschrieben ist. Außerdem ist es sehr schlecht, ein Produkt aus binären Variablen zu schreiben; Sie sollten neue binäre Variablen einführen, um die logische Bedingung darzustellen. - .17 x1: 1.

+0

Tanks für Ihre Antwort. Setzen wir die binäre Variable weg. So weit ich mich noch nicht gesehen habe, kann Gurobi QP angehen (siehe [http://www.gurobi.com/documentation/6.5/refman/lp_format.html] (http://www.gurobi.com/documentation/6.5/refman/ lp_format.html)) Was meinst du mit Standardform? – user3265473

+0

Verwenden Sie niemals eine QP, um logische Ausdrücke darzustellen. –

+0

Die Integritätsbedingungen erlauben MIP-Modellen, die diskrete Natur einiger Entscheidungen zu erfassen. Zum Beispiel kann eine Variable, deren Werte auf 0 oder 1 beschränkt sind, eine so genannte binäre Variable, verwendet werden, um zu entscheiden, ob eine Aktion ausgeführt wird, z. B. ein Lager aufbauen oder eine neue Maschine kaufen. [http://www.gurobi.com/resources/getting-started/mip-basics](http://www.gurobi.com/resources/getting-started/mip-basics) – user3265473

0

Der Fehler war in der dritten Zeile - beispielsweise w1 w2 * durch eine neue Variable z mit z Einschränkungen < = w1, w2 = < z, z> = w1 + w2 ersetzen * x2 + 0,66 * x1 * x3 + 0,66 x1 * x4 es sein sollte: - .17 x1 * x2 + 0,66 x1 * x3 + 0,66 x1 * x4 statt

Für die Aufzeichnung. Gurobi behandelt QP und nennt es Simplex ... obwohl wir wissen, dass es nicht wirklich Simplex im eigentlichen Sinne ist. Sie verwendeten etwas namens "Active-Set-Methoden"

können Sie Fragen in ihrer Google-Gruppe zu buchen. Sie antworten innerhalb eines Tages drüben :)

Verwandte Themen