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.

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 100 horas de processamento por 1000 litros; setup de 12 horas por início de lote.
  • Para a Bebida 2: são necessárias 80 horas de processamento por 1000 litros; setup de 8 horas por início de lote.
  • Capacidades (horas) por período:
    • Período 1: 240 horas.
    • Período 2: 320 horas.
    • Período 3: 200 horas.
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 1000 litros (chamo isso de “milhares de litros”), porque os tempos de processamento foram dados por 1000 litros. Assim fica tudo com números inteiros simples.
Variáveis:
  • x_{1t} = produção da Bebida 1 no período t, em milhares de litros (isto é, x_{1t}=1 significa 1000 L).
  • x_{2t} = produção da Bebida 2 no período t, em milhares de litros.
  • y_{1t} = variável indicadora (binária) que vale 1 se iniciarmos pelo menos um lote da Bebida 1 no período t, e 0 caso contrário.
  • y_{2t} = variável indicadora (binária) que vale 1 se iniciarmos pelo menos um lote da Bebida 2 no período t, e 0 caso contrário.
Comentário didático curto: usamos y 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: 100 horas por 1000 L → para cada unidade de x_{1t} (que é 1000 L) usamos 100 horas de processamento. Portanto tempo de processamento no período t devido à Bebida 1 é 100 \, x_{1t}.
  • Bebida 2: 80 horas por 1000 L → tempo de processamento é 80 \, x_{2t}.
Tempo de setup no período t é 12\, y_{1t} para Bebida 1 e 8\, y_{2t} para Bebida 2.
Então o tempo total ocupado no período t é
100\, x_{1t} + 80\, x_{2t} + 12\, y_{1t} + 8\, y_{2t}.

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 C_t denota a capacidade (horas) do período t, a restrição é, para cada t,
100\, x_{1t} + 80\, x_{2t} + 12\, y_{1t} + 8\, y_{2t} \le C_t.
Neste problema C_1=240, C_2=320, C_3=200. Vou mais adiante substituir numericamente.

Passo 5

Precisamos ligar x_{it} e y_{it} para garantir que y_{it}=0 quando não houver produção e y_{it}=1 quando houver produção positiva. Isso é feito com uma restrição do tipo “big-M”:
x_{it} \le M_{it}\, y_{it},\quad i\in\{1,2\},\\ t\in\{1,2,3\}.
Explicação didática do “big-M”: M_{it} é um limite superior plausível para a produção de i no período t. Se y_{it}=0, a desigualdade força x_{it}\le 0 então x_{it}=0 (com não-negatividade). Se y_{it}=1, a desigualdade apenas impõe x_{it}\le M_{it}, que não restringe além de um limite lógico. É importante escolher M_{it} não muito grande para manter o modelo estável numericamente, mas grande o suficiente para ser verdadeiramente um teto.

Passo 6

Como escolher M_{it} de forma segura e simples: um teto natural para x_{it} é “se todo o tempo do período fosse usado somente no processamento do produto i (ignorando setups), então a produção máxima seria C_t dividida pelo tempo por unidade”. Ou seja,
M_{it} = \frac{C_t}{\text{tempo de processamento por unidade de } i}.
Usando unidades de milhares de litros:
  • Para Bebida 1: tempo por unidade = 100 horas, então M_{1t} = C_t / 100.
  • Para Bebida 2: tempo por unidade = 80 horas, então M_{2t} = C_t / 80.
Esses M_{it} são seguros porque não consideram setups — portanto qualquer produção acima disso seria impossível mesmo sem setups. Podemos tomar M_{it} 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 t):
Capacidade:
100\, x_{1t} + 80\, x_{2t} + 12\, y_{1t} + 8\, y_{2t} \le C_t.
Ligação big-M:
x_{1t} \le M_{1t}\, y_{1t},
x_{2t} \le M_{2t}\, y_{2t}.
Domínio:
x_{1t} \ge 0,\quad x_{2t} \ge 0,\quad y_{1t}\in\{0,1\},\quad y_{2t}\in\{0,1\}.
E para cada t podemos escolher M_{1t} = C_t/100 e M_{2t} = C_t/80.

Passo 8

Substituindo os valores numéricos dos três períodos para apresentar as restrições explicitamente:
Para t=1 ( C_1=240):
  • Capacidade:
100\, x_{11} + 80\, x_{21} + 12\, y_{11} + 8\, y_{21} \le 240.
  • Big-M (usando M_{11}=240/100=2{,}4, M_{21}=240/80=3):
x_{11} \le 2{,}4\, y_{11},
x_{21} \le 3\, y_{21}.
Para t=2 ( C_2=320):
  • Capacidade:
100\, x_{12} + 80\, x_{22} + 12\, y_{12} + 8\, y_{22} \le 320.
  • Big-M ( M_{12}=320/100=3{,}2, M_{22}=320/80=4):
x_{12} \le 3{,}2\, y_{12},
x_{22} \le 4\, y_{22}.
Para t=3 ( C_3=200):
  • Capacidade:
100\, x_{13} + 80\, x_{23} + 12\, y_{13} + 8\, y_{23} \le 200.
  • Big-M ( M_{13}=200/100=2, M_{23}=200/80=2{,}5):
x_{13} \le 2\, y_{13},
x_{23} \le 2{,}5\, y_{23}.
Observações práticas finais:
  • Todos os x_{it} são não negativos.
  • Todos os y_{it} são binários. Se por alguma razão não se quiser resolver um modelo inteiro, existe a alternativa aproximada de relaxar y_{it} a contínuos em [0,1], 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 M_{it} foram escolhidos de forma óbvia e segura; podem ser arredondados para cima se quiser trabalhar só com números inteiros (por exemplo M_{11}=3 em vez de 2{,}4), sabendo que isso torna M maior, mas não incorreto.

Resposta

\begin{aligned} &\text{Para }t=1,2,3:\\\ &\qquad 100\,x_{1t} + 80\,x_{2t} + 12\,y_{1t} + 8\,y_{2t} \le C_t,\\[4pt] &\qquad x_{1t} \le M_{1t}\,y_{1t},\qquad M_{1t}=\dfrac{C_t}{100},\\[4pt] &\qquad x_{2t} \le M_{2t}\,y_{2t},\qquad M_{2t}=\dfrac{C_t}{80},\\[4pt] &\qquad x_{1t}\ge 0,\; x_{2t}\ge 0,\; y_{1t}\in\{0,1\},\; y_{2t}\in\{0,1\}. \end{aligned}
\begin{aligned} \text{Numericamente:}\\\ &100x_{11}+80x_{21}+12y_{11}+8y_{21}\le 240,\\\ &x_{11}\le 2{,}4\,y_{11},\quad x_{21}\le 3\,y_{21},\\[4pt] &100x_{12}+80x_{22}+12y_{12}+8y_{22}\le 320,\\\ &x_{12}\le 3{,}2\,y_{12},\quad x_{22}\le 4\,y_{22},\\[4pt] &100x_{13}+80x_{23}+12y_{13}+8y_{23}\le 200,\\\ &x_{13}\le 2\,y_{13},\quad x_{23}\le 2{,}5\,y_{23},\\[4pt] &x_{it}\ge 0,\; y_{it}\in\{0,1\}\\ \text{ para }i=1,2,\\ t=1,2,3. \end{aligned}]

Exercícios relacionados