Exercice sur les prix d’ombre et les marges pt1
Vous planifiez quels cupcakes une boulangerie doit produire. La boulangerie peut fabriquer soit :
- cupcake de taille standard : profit = 5 $
- cupcake géant deux fois plus grand : profit = 10 $
Il y a 2 contraintes : heures de four (30) et heures de travail des employés (65). Ce scénario a été modélisé dans PuLP pour vous et une solution a été trouvée. L’état du modèle, les valeurs des variables de décision, la valeur de l’objectif (c.-à-d. le profit), ainsi que les prix d’ombre et la marge (slack) des contraintes ont été affichés dans le terminal.
Le script d’exemple est une copie de ce code. Vous allez ajuster les contraintes pour voir comment la solution optimale évolue.
Cet exercice fait partie du cours
<cours>Analyse de la chaîne d’approvisionnement en Python</cours>Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Define Constraints, Solve, Print Status, Variables, Objective
model = LpProblem("Maximize Bakery Profits", LpMaximize)
R = LpVariable('Regular_production', lowBound=0, cat='Continuous')
J = LpVariable('Jumbo_production', lowBound=0, cat='Continuous')
model += 5 * R + 10 * J, "Profit"
# Adjust the constraint
model += 0.5 * R + 1 * J <= ____
model += 1 * R + 2.5 * J <= 65
# Solve Model, Print Status, Variables, Objective, Shadow and Slack
model.solve()
print("Model Status: {}".format(LpStatus[model.status]))
for v in model.variables():
print(v.name, "=", v.varValue)
print("Objective = $", value(model.objective))
o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack}
for name, c in model.constraints.items()]
print(pd.DataFrame(o))