Nebenbedingung zweigeteilt in Gurobi Modell

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
schuesra
User
Beiträge: 22
Registriert: Donnerstag 4. Oktober 2018, 17:40

Donnerstag 11. Oktober 2018, 11:41

Hallo,

ich habe folgendes Problem. In meinem Optimierungsmodell soll eine Nebenbedingung zweigeteilt sein. Mir ist nicht klar wie ich das umsetzen kann. Hier das Problem:


#Produkte
produkte = np.arange(12)
#Perioden
perioden = np.arange(10)
#p
p = np.array([ [0.08, 0.07, 0.09, 0.12, 0.04, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.12],
[0.01, 0.15, 0.09, 0.07, 0.08, 0.06, 0.10, 0.14, 0.02, 0.08, 0.07, 0.09],
[0.08, 0.07, 0.09, 0.12, 0.04, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.12],
[0.01, 0.15, 0.09, 0.07, 0.08, 0.06, 0.10, 0.14, 0.02, 0.08, 0.07, 0.09],
[0.08, 0.07, 0.09, 0.12, 0.04, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.12],
[0.01, 0.15, 0.09, 0.07, 0.08, 0.06, 0.10, 0.14, 0.02, 0.08, 0.07, 0.09],
[0.08, 0.07, 0.09, 0.12, 0.04, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.12],
[0.01, 0.15, 0.09, 0.07, 0.08, 0.06, 0.10, 0.14, 0.02, 0.08, 0.07, 0.09],
[0.08, 0.07, 0.09, 0.12, 0.04, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.12],
[0.01, 0.15, 0.09, 0.07, 0.08, 0.06, 0.10, 0.14, 0.02, 0.08, 0.07, 0.09] ])
#decision varibales
accept = m.addVars(perioden, produkte, name="accept")
denie = m.addVars(perioden, produkte, name="denie")

x = np.array([ [1,0,1,0,0,0,0,1,0,1,1,0],
[1,1,1,0,1,0,1,0,1,1,1,0],
[1,0,1,1,0,1,1,0,1,0,1,1],
[1,0,1,1,1,0,0,0,1,1,0,1] ])
t=4
#Nebenbedingung wird je nach Periode scharfgestellt
if t == 0:
c8 = m.addConstrs(accept[t, j] <= p[t, j] for t,j in accept)

if t == 4:
accept[t, j] = x[t, j] for t in perioden[0:4] for j in produkte
accept[t, j] <= p[t, j] for t in perioden[4:] for j in produkte

Wir befinden uns also in t=4. Wie kann ich nun umsetzen, dass die letzten 3 Zeilen als Nebenbedingung umgesetzt werden? In jetzigem Zustand wird ja keine NB hergestellt.
Sirius3
User
Beiträge: 8804
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 11. Oktober 2018, 12:58

Fehlt da nicht ein ` m.addConstrs`? Gleichheit wird per == verglichen.
schuesra
User
Beiträge: 22
Registriert: Donnerstag 4. Oktober 2018, 17:40

Samstag 13. Oktober 2018, 19:17

Ich stand total auf der Leitung, danke!
Antworten