Uma empresa produz dois tipos de bebidas utilizando um mesmo tanque de produção. Para cada 1000 litros da Bebida 1, são necessárias 100 horas de processamento, enquanto para a Bebida 2 são necessárias 80 horas por 1000 litros.
Além disso, cada vez que se inicia a produção de um lote da Bebida 1, são necessárias 12 horas para a preparação do tanque (setup); e para a Bebida 2,8 horas.
A capacidade de produção disponível em cada um dos três períodos considerados é:
- Período 1: 240 horas
- Período 2: 320 horas
- Período 3: 200 horas
O problema exige que se modele a restrição de capacidade, considerando os tempos de setup e de processamento, de forma a garantir que a produção em cada período não ultrapasse a capacidade disponível.
Além disso, cada vez que se inicia a produção de um lote da Bebida 1, são necessárias 12 horas para a preparação do tanque (setup); e para a Bebida 2,8 horas.
A capacidade de produção disponível em cada um dos três períodos considerados é:
Passo 1
O enunciado dá as seguintes informações e pede que modelemos a restrição de capacidade considerando processamento e setups, garantindo que a produção em cada período não ultrapasse a capacidade disponível.
Dados fornecidos:
- Para a Bebida 1: são necessárias
horas de processamento por litros; setup de horas por início de lote. - Para a Bebida 2: são necessárias
horas de processamento por litros; setup de horas por início de lote. - Capacidades (horas) por período:
- Período 1:
horas. - Período 2:
horas. - Período 3:
horas.
- Período 1:
O que o enunciado pede:
- Modelar (escrever a restrição de capacidade) de forma que, para cada período, a soma do tempo de processamento e do tempo de preparação (setup) não exceda a capacidade disponível no período.
Passo 2
Definimos variáveis de decisão e unidades (escolha de unidades é importante para simplificar contas).
Escolha prática: medir produção em unidades de
litros (chamo isso de “milhares de litros”), porque os tempos de processamento foram dados por
litros. Assim fica tudo com números inteiros simples.
Variáveis:
-
= produção da Bebida 1 no período , em milhares de litros (isto é, significa L). -
= produção da Bebida 2 no período , em milhares de litros. -
= variável indicadora (binária) que vale se iniciarmos pelo menos um lote da Bebida 1 no período , e caso contrário. -
= variável indicadora (binária) que vale se iniciarmos pelo menos um lote da Bebida 2 no período , e caso contrário.
Comentário didático curto: usamos
binárias porque o tempo de setup aparece uma vez sempre que a produção naquele período é positiva — isto é um custo fixo por abrir produção no período. Para modelar esse “se produzir > 0 então paga setup” precisamos de variáveis discretas.
Passo 3
Converter tempos de processamento para as unidades escolhidas:
- Bebida 1:
horas por L → para cada unidade de (que é 1000 L) usamos horas de processamento. Portanto tempo de processamento no período devido à Bebida 1 é . - Bebida 2:
horas por L → tempo de processamento é .
Tempo de setup no período
é
para Bebida 1 e
para Bebida 2.
Então o tempo total ocupado no período
é
Passo 4
Escrevemos a restrição de capacidade por período: o tempo total não pode exceder a capacidade disponível naquele período.
Se
denota a capacidade (horas) do período
, a restrição é, para cada
,
Neste problema
,
,
. Vou mais adiante substituir numericamente.
Passo 5
Precisamos ligar
e
para garantir que
quando não houver produção e
quando houver produção positiva. Isso é feito com uma restrição do tipo “big-M”:
Explicação didática do “big-M”:
é um limite superior plausível para a produção de
no período
. Se
, a desigualdade força
então
(com não-negatividade). Se
, a desigualdade apenas impõe
, que não restringe além de um limite lógico. É importante escolher
não muito grande para manter o modelo estável numericamente, mas grande o suficiente para ser verdadeiramente um teto.
Passo 6
Como escolher
de forma segura e simples: um teto natural para
é “se todo o tempo do período fosse usado somente no processamento do produto
(ignorando setups), então a produção máxima seria
dividida pelo tempo por unidade”. Ou seja,
Usando unidades de milhares de litros:
- Para Bebida 1: tempo por unidade =
horas, então . - Para Bebida 2: tempo por unidade =
horas, então .
Esses
são seguros porque não consideram setups — portanto qualquer produção acima disso seria impossível mesmo sem setups. Podemos tomar
iguais a esses valores (ou arredondar para cima se quisermos inteiros).
Passo 7
Agora escrevemos o modelo completo das restrições relevantes (capacidade + ligação big‑M + domínio das variáveis). Primeiro a forma geral (para cada período
):
Capacidade:
Ligação big-M:
Domínio:
E para cada
podemos escolher
e
.
Passo 8
Substituindo os valores numéricos dos três períodos para apresentar as restrições explicitamente:
Para
(
):
- Capacidade:
- Big-M (usando
, ):
Para
(
):
- Capacidade:
- Big-M (
, ):
Para
(
):
- Capacidade:
- Big-M (
, ):
Observações práticas finais:
- Todos os
são não negativos. - Todos os
são binários. Se por alguma razão não se quiser resolver um modelo inteiro, existe a alternativa aproximada de relaxar a contínuos em , mas aí perde-se a consistência lógica “se produzir >0 então paga setup” — portanto a formulação correta é uma MIP (programação inteira mista). - Os
foram escolhidos de forma óbvia e segura; podem ser arredondados para cima se quiser trabalhar só com números inteiros (por exemplo em vez de ), sabendo que isso torna maior, mas não incorreto.