2016-07-31 8 views
0

Ich versuche eine einfache Bestandsmaximierung Einkommen mit Gurobi MILP zu modellieren, aber ich habe Probleme bekommen, wie die Zielfunktion für Net Present Value Maximizing zu schreiben.gurobi milp modell zu maximieren npv

ein Array A = np.random.randint (100,1500,100) ist der Wert von jeweils 100 Gegenständen im Inventar

from gurobipy import * 

val=A 

m = Model() 
n = len(val) # number of items 

# Indicator variable for each item 
x = {} 
for i in range(n): 
    x[i] = m.addVar(vtype=GRB.BINARY, name="x%d" % i) 
#Indicator variable for each period of operation 
prd={} 
for u in range(7): 
    prd[u]=m.addVar(vtype=GRB.BINARY name="prd%d" % u) 

m.update() 

# Set objective 
m.setObjective((quicksum((quicksum((val[i])*x[i] for i in range(n)))/(1+0.1**(u+1)))*prd[u] for u in range(7))), GRB.MAXIMIZE) 

, ob dies der richtige Weg ist, diese Art von Problem zu modellieren Der nächste Schritt besteht darin, Einschränkungen hinzuzufügen, um ein Element nur zu einem bestimmten Zeitpunkt zu verwenden.

Antwort

0

quicksum() wertet einen linearen Ausdruck aus; Sie müssen Ihre verschachtelten Ausdrücke in einen einzigen linearen Ausdruck konvertieren. Sie können dies tun, indem Sie die Koeffizientenwerte berechnen.

Verwandte Themen