Ejercicio de combinación de restricciones
Estás trabajando en un plan de distribución para una red de almacenes. La red tiene dos almacenes (W1 y W2) y cada uno puede enviar tres tipos de productos (A, B y C). W1 es pequeño y puede enviar 10 productos A por semana o 15 productos B por semana o 20 productos C por semana. Buscas minimizar los costes totales.
En la consola se imprime un DataFrame de Pandas llamado demand que contiene la demanda mensual de cada producto. Además, el código del modelo de PuLP ya inicializa el modelo, define las variables de decisión, la función objetivo y la restricción para que el envío total de cada producto sea igual a su demanda.
Este ejercicio forma parte del curso
Analítica de la cadena de suministro en Python
Instrucciones del ejercicio
- Completa el código de la restricción que modela las limitaciones de envío del almacén W1 durante 4 semanas.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh],
lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c] for c in cust for p in prod for w in wh])
for c in cust:
for p in prod:
model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]
# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust])
+ ____ * lpSum([X[(____, ____, c)] for c in cust])
+ ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____