Logische beperking toevoegen in case study-oefening
Ga verder met de case study van het Capacitated Plant Location-model van een autofabrikant. Je krijgt vier Pandas-dataframes demand, var_cost, fix_cost en cap met respectievelijk de regionale vraag (duizenden auto’s), variabele productiekosten (duizenden $US), vaste productiekosten (duizenden $US) en productiecapaciteit (duizenden auto’s). Er zijn ook twee Python-lijsten loc en size aangemaakt met de verschillende locaties en de twee typen fabriekscapaciteiten. Al deze variabelen zijn naar de console geprint zodat je ze kunt bekijken. De code om het model te initialiseren, de beslissingsvariabelen te definiëren, de doelfunctie te maken en de beperkingen op te stellen is al voor je gedaan.
Deze oefening maakt deel uit van de cursus
Supply Chain Analytics in Python
Oefeninstructies
- Voeg een logische beperking toe zodat, als de fabriek met hoge capaciteit in de USA open is, er ook een fabriek met lage capaciteit in Duitsland geopend wordt.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Initialize, Define Decision Vars., Object. Fun., and Constraints
model = LpProblem("Capacitated Plant Location Model", LpMinimize)
loc = ['USA', 'Germany', 'Japan', 'Brazil', 'India']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production_", [(i,j) for i in loc for j in loc],
lowBound=0, upBound=None, cat='Integer')
y = LpVariable.dicts("plant_",
[(i,s) for s in size for i in loc], cat='Binary')
model += (lpSum([fix_cost.loc[i,s] * y[(i,s)] for s in size for i in loc])
+ lpSum([var_cost.loc[i,j] * x[(i,j)] for i in loc for j in loc]))
for j in loc:
model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']
for i in loc:
model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)]
for s in size])
# Define logical constraint
model += ____ - ____ <= ____