Problème de planification logistique 2
Vous conseillez de nouveau un fabricant de fours de cuisine pour l’aider à planifier sa logistique. Cette fois, vous cherchez à établir un plan pour les six prochains mois (janv.-juin). Il y a toujours deux entrepôts (New York et Atlanta) et quatre zones clients régionales (Est, Sud, Midwest, Ouest). Le coût d’expédition de chaque entrepôt vers chaque zone client est indiqué dans le tableau ci-dessous. Votre objectif est de déterminer le nombre d’expéditions de chaque entrepôt vers les clients qui minimise les coûts.
| Client | New York | Atlanta |
|---|---|---|
| Est | $211 | $232 |
| Sud | $232 | $212 |
| Midwest | $240 | $230 |
| Ouest | $300 | $280 |
Un dictionnaire Python nommé costs, contenant les coûts du modèle, ainsi que trois listes months, warehouse et customers ont été créés pour vous. costs a été affiché pour vous ; vous pouvez également explorer les listes dans la console. De plus, le modèle a été initialisé pour vous.
Cet exercice fait partie du cours
<cours>Analyse de la chaîne d’approvisionnement en Python</cours>Instructions de l’exercice
- Définissez les variables de décision du modèle en utilisant d’abord une compréhension de liste pour itérer sur les listes
months,warehouseetcustomersafin de créer une liste de clés. Utilisez cette liste de clés avecLpVariable.dicts()pour définir les variables nécessaires. - Définissez la fonction objectif en additionnant tous les coûts d’expédition d’un entrepôt donné vers un client donné sur les six mois.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Define decision variables
key = [(m, w, ____) for m in months for w in warehouse for c in customers]
var_dict = LpVariable.dicts('num_of_shipments',
key,
lowBound=____, cat=____)
# Use the LpVariable dictionary variable to define objective
model += lpSum([costs[(w, c)] * ____[(____, ____, ____)]
for m in months for w in warehouse for c in customers])