Exercice sur une contrainte logique
Votre client a commandé six produits à livrer au cours du mois prochain. Vous devrez expédier plusieurs chargements de camion pour livrer tous les produits. La limite de poids de vos camions est de 25 000 lb. Pour des raisons de trésorerie, vous souhaitez expédier la combinaison de produits la plus rentable pouvant tenir dans votre camion.
| Produit | Poids (lb) | Rentabilité ($US) |
|---|---|---|
| A | 12 583 | 102 564 |
| B | 9 204 | 130 043 |
| C | 12 611 | 127 648 |
| D | 12 131 | 155 058 |
| E | 12 889 | 238 846 |
| F | 11 529 | 197 030 |
Deux dictionnaires Python weight et prof, ainsi qu’une liste prod, ont été créés pour vous et contiennent respectivement le poids, la rentabilité et le nom de chaque produit. Vous pouvez les explorer dans la console.
Cet exercice fait partie du cours
<cours>Analyse de la chaîne d’approvisionnement en Python</cours>Instructions de l’exercice
- Ajoutez une contrainte pour que le poids total du camion soit inférieur ou égal à 25 000 lb.
- Ajoutez une contrainte afin que le modèle sélectionne au plus un seul produit parmi D, E et F.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Initialized model, defined decision variables and objective
model = LpProblem("Loading Truck Problem", LpMaximize)
x = LpVariable.dicts('ship_', prod, cat='Binary')
model += lpSum([prof[i] * x[i] for i in prod])
# Define Constraint
model += lpSum([weight[i] * x[i] for i in prod]) ____ ____
model += ____
model.solve()
for i in prod:
print("{} status {}".format(i, x[i].varValue))