Exercice sur la combinaison de contraintes
Vous travaillez sur un plan de distribution pour un réseau d’entrepôts. Le réseau compte deux entrepôts (W1 et W2) et chacun peut expédier trois types de produits (A, B et C). W1 est petit et peut soit expédier 10 produits A par semaine, soit 15 produits B par semaine, soit 20 produits C par semaine. Vous cherchez à minimiser les coûts totaux.
Un DataFrame Pandas nommé demand est affiché dans la console et contient la demande mensuelle de chaque produit. En outre, le code du modèle PuLP permettant d’initialiser le modèle, de définir les variables de décision, la fonction objectif et la contrainte pour que l’expédition totale de chaque produit soit égale à sa demande est fourni.
Cet exercice fait partie du cours
<cours>Analyse de la chaîne d’approvisionnement en Python</cours>Instructions de l’exercice
- Complétez le code de la contrainte qui modélise les limites d’expédition de l’entrepôt W1 sur 4 semaines.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh],
lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c] for c in cust for p in prod for w in wh])
for c in cust:
for p in prod:
model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]
# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust])
+ ____ * lpSum([X[(____, ____, c)] for c in cust])
+ ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____