Problema de planificación logística 2
Vuelves a asesorar a un fabricante de hornos de cocina para planificar su logística. Esta vez intentas elaborar un plan para los próximos seis meses (ene.–jun.). Siguen existiendo dos ubicaciones de almacén (New York y Atlanta) y cuatro ubicaciones de clientes regionales (East, South, Midwest, West). El coste de envío desde cada almacén a cada región de clientes aparece en la tabla siguiente. Tu objetivo es determinar el número de envíos desde cada almacén a cada cliente que minimice el coste total.
| Customer | New York | Atlanta |
|---|---|---|
| East | $211 | $232 |
| South | $232 | $212 |
| Midwest | $240 | $230 |
| West | $300 | $280 |
Se ha creado para ti un diccionario de Python llamado costs con los costes del modelo y tres listas months, warehouse y customers. costs ya se ha impreso; también puedes explorar las listas en la consola. Además, el modelo ya está inicializado.
Este ejercicio forma parte del curso
Analítica de la cadena de suministro en Python
Instrucciones del ejercicio
- Define las variables de decisión en el modelo usando primero una list comprehension para iterar sobre las listas
months,warehouseycustomersy crear una lista de claves. Usa esa lista de claves conLpVariable.dicts()para definir las variables necesarias. - Define la función objetivo sumando todos los costes de envío desde un almacén y cliente concretos a lo largo de los seis meses.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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])