Ajouter une contrainte logique dans l’étude de cas
Poursuivez l’étude de cas du modèle de localisation d’usines capacitaires pour un constructeur automobile. Quatre DataFrames Pandas demand, var_cost, fix_cost et cap vous sont fournis : ils contiennent respectivement la demande par région (milliers de voitures), les coûts variables de production (milliers de $US), les coûts fixes de production (milliers de $US) et la capacité de production (milliers de voitures). Deux listes Python, loc et size, ont également été créées ; elles regroupent les différents emplacements et les deux types de capacités d’usine. Toutes ces variables ont été affichées dans la console pour votre consultation. Le code d’initialisation, la définition des variables de décision, ainsi que la création de la fonction objectif et des contraintes ont été préparés pour vous.
Cet exercice fait partie du cours
<cours>Analyse de la chaîne d’approvisionnement en Python</cours>Instructions de l’exercice
- Ajoutez une contrainte logique : si l’usine à haute capacité aux USA est ouverte, alors une usine à faible capacité en Allemagne doit également être ouverte.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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 += ____ - ____ <= ____