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 expédier soit 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 pour chaque produit. En plus, le code du modèle PuLP pour initialiser, définir les variables décisionnelles, la fonction objectif et la contrainte afin que l'expédition totale de chaque produit soit égale à sa demande est fourni.
Cette activité fait partie du cours
Analytique de la chaîne d'approvisionnement avec Python
Instructions de l’exercice
- Complétez le code de la contrainte qui modélise les limites d'expédition de l'entrepôt W1 pour 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])) <= ____