Exercício de combinação de restrições
Você está trabalhando em um plano de distribuição para uma rede de armazéns. A rede tem dois armazéns (W1 e W2) e cada um pode enviar três tipos diferentes de produtos (A, B e C). O W1 é pequeno e pode enviar 10 produtos A por semana, ou 15 produtos B por semana, ou 20 produtos C por semana. Você quer minimizar os custos totais.
Um DataFrame do Pandas chamado demand é exibido no console e contém a demanda mensal de cada produto. Além disso, o código do modelo PuLP para inicializar, definir variáveis de decisão, função objetivo e a restrição para que o total enviado de cada produto seja igual à sua demanda já está incluído.
Este exercício faz parte do curso
Análise de Cadeia de Suprimentos em Python
Instruções do exercício
- Complete o código da restrição que modela as limitações de envio do armazém W1 para 4 semanas.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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])) <= ____