Nebenbedingung zweigeteilt in Gurobi Modell
Verfasst: 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.
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.