ComeçarComece de graça

Problema de planejamento logístico 2

Você está novamente prestando consultoria para um fabricante de fornos de cozinha, ajudando a planejar a logística. Desta vez, você vai montar um plano para os próximos seis meses (jan.-jun.). Ainda há dois locais de armazém (New York e Atlanta) e quatro regiões de clientes (East, South, Midwest, West). O custo de envio de cada um dos armazéns para cada região de clientes está na tabela abaixo. Seu objetivo é determinar o número de remessas de cada armazém para os clientes que resulte no menor custo.

Customer New York Atlanta
East $211 $232
South $232 $212
Midwest $240 $230
West $300 $280

Um dicionário do Python chamado costs, contendo os custos do modelo, e três listas months, warehouse e customers já foram criados para você. costs já foi impresso; você também pode explorar as listas no console. Além disso, o modelo já foi inicializado para você.

Este exercício faz parte do curso

Análise de Cadeia de Suprimentos em Python

Ver curso

Instruções do exercício

  • Defina as variáveis de decisão no modelo usando primeiro uma list comprehension para iterar sobre as listas months, warehouse e customers e criar uma lista de chaves. Use essa lista de chaves com LpVariable.dicts() para definir as variáveis necessárias.
  • Defina a função objetivo somando todos os custos de envio de um determinado armazém para um cliente ao longo dos seis meses.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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])
Editar e executar o código