Prix d’ombre avec des jus
Une entreprise utilise deux machines \(M_1\) et \(M_2\) pour embouteiller du jus de pamplemousse (\(g\)) et du jus d’orange (\(o\)). Son objectif est de maximiser le profit sous les contraintes suivantes :
M1 : \(6g + 5.5o \leq 40\) et M2 : \(3g + 2.5o \leq 20\)
Ces contraintes reflètent la productivité et la disponibilité des machines. Par exemple, M1 est disponible 40 heures par semaine et nécessite 6 heures pour embouteiller 1 tonne de jus de pamplemousse et 5,5 heures pour 1 tonne de jus d’orange.
Il existe également une contrainte d’approvisionnement : l’entreprise ne reçoit au maximum que 6 tonnes de pamplemousses par semaine et 12 tonnes d’oranges. Ce sont les bornes supérieures.
pulp a été importé pour vous et model a été défini, ainsi que les variables g et o pour les jus de pamplemousse et d’orange.
Cet exercice fait partie du cours
Introduction à l’optimisation en Python
Instructions
- Complétez la boucle for pour inclure une vérification du fait que le prix d’ombre est positif.
- Indiquez la variable qui mesure l’augmentation marginale de l’objectif lorsque la contrainte est relâchée.
- Indiquez la variable qui mesure à quel point la contrainte est serrée.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
print(LpStatus[model.status])
print(f'The optimal amount of {g.name} embottled is: {g.varValue:.2f} tons')
print(f'The optimal amount of {o.name} embottled is: {o.varValue:.2f} tons')
for name, c in model.constraints.items():
# Check if shadow value is positive
if c.____ > 0:
# Enter the variable that measures marginal increase in objective when constraint is relaxed
print(f"Increasing the capacity of {name} by one unit would increase profit by {c.____} units.")
else:
# Enter the variable that measures how tight the constraint is
print(f"{name} has {c.____} units of unused capacity.")