2016-03-25 11 views
1

so neu zu Gurobi und Optimierung. Ich möchte dies ein einfaches Linienmodell lösen, aber scheint, dass ich einen Fehler gemacht habe, den ich nicht erkennen kann. so unter drei Funktionen, die jeweils spezifischen Aufwand zu implementieren verbrauchen Ich möchte diejenigen mit dem höchsten Wert bei einer bestimmten Kapazität auswählen. Eigenschaft, Wert, Mühe f1,3,2 f2,5,1 f3,1,2 Kapazität = 3Gurobi lineare Programmierung mit Python

hier mein Code:

from gurobipy import * 
m = Model("C1")  
featuresname, value, effort = multidict({ 
    "F1":[3,2], 
    "F2":[5,1], 
    "F3":[1,2] 
}) 
featureset = {} 
for f in featuresname: 
    featureset[f] = m.addVar(obj=value[f], name=f) 
m.modelSense = GRB.MAXIMIZE 
m.update() 
capacity = 3 
m.addConstr(quicksum(effort[f] * featureset[f] for f in featuresname) <=capacity,f) 
result = m.optimize() 
print(result) 
if m.status == GRB.Status.OPTIMAL: 
    print('Optimal objective: %g' % m.objVal) 
elif m.status != GRB.Status.INFEASIBLE: 
    print('Optimization was stopped with status %d' % m.status) 

ich diese Beispiele alle lesen http://www.gurobi.com/resources/examples/example-models-overview aber kann das Problem nicht finden .... können Sie mir bitte einige Hinweise geben?

+0

Code sieht OK für mich. Was erwarten Sie, dass das nicht stimmt? – vcp

Antwort

0

Wenn es hilfreich wäre, einen Blick auf die Gurobi-Ausgabe und/oder Fehler zu werfen, die Sie erhalten, aber nur durch den Code, scheint es, Sie vergessen, das Modell nach dem Hinzufügen der Einschränkung zu aktualisieren.

So würde ich "m.update()" kurz vor "result = m.optimize()" sieht Ok

Anders als das Code hinzufügen.