MODELOS DE PROGRAMAÇÃO LINEAR
MODELOS DE PROGRAMAÇÃO LINEAR
Objetivo: Determinar o volume máximo de produção de pizzas que a loja pode atingir, garantindo que nenhum ingrediente em estoque seja excedido.
Recursos Necessários (Por Pizza): Para a fabricação de uma única unidade, são consumidos:
- 1 kg de farinha (trigo)
- 0.2 kg de manteiga
- 0.3 kg de queijo
- 0.25 kg de molho
Questão: Considerando que a produção deve ser composta por unidades inteiras, qual é a quantidade máxima de pizzas que podem ser produzidas e qual ingrediente será o limitador (gargalo) desta operação?
Sugestão de estoque disponível: - Farinha: 150kg - Manteiga: 25kg - Queijo: 50kg - Molho: 160kg
⏬ MODELANDO A FUNÇÃO OBJETIVO E AS RESTRIÇÕES ⏬ APENAS COM UMA VARIÁVEL
Para este problema de programação linear, a estrutura matemática simplificada é a seguinte:
A função objetivo representa o que você deseja alcançar. Neste caso, o objetivo é Maximizar Z, onde Z é o número total de pizzas produzidas.
Maximizar Z=x
As restrições limitam a produção com base no que você tem no estoque. Cada uma representa um ingrediente:
Farinha: 1x≤150
(Você gasta 1 kg por pizza e tem 150 kg no total)
Manteiga: 0,2x≤25
(Você gasta 0,2 kg por pizza e tem 25 kg no total)
Queijo: 0,3x≤50
(Você gasta 0,3 kg por pizza e tem 50 kg no total)
Molho: 0,25x≤160
(Você gasta 0,25 kg por pizza e tem 160 kg no total)
⏬ SINTAXE PARA PYTHON ⏬
import pulp
# Estoque disponível:
# - Farinha: 150 kg
# - Manteiga: 25 kg
# - Queijo: 50 kg
# - Molho: 160 kg
# Criar o problema de otimização
prob = pulp.LpProblem("Maximizacao_Pizzas", pulp.LpMaximize)
# Variável de decisão: número de pizzas (inteiro, não-negativo)
x = pulp.LpVariable("num_pizzas", lowBound=0, cat='Integer')
# Função objetivo: maximizar o número de pizzas
prob += x, "Z"
# Restrições de ingredientes
prob += 1 * x <= 150, "Farinha"
prob += 0.2 * x <= 25, "Manteiga"
prob += 0.3 * x <= 50, "Queijo"
prob += 0.25 * x <= 160, "Molho"
# Resolver o modelo
prob.solve(pulp.PULP_CBC_CMD(msg=0))
# Imprimir o resultado
print("Status:", pulp.LpStatus[prob.status])
print(f"Quantidade ótima de pizzas: {int(x.varValue)}")
print(f"Valor ótimo da função objetivo: {pulp.value(prob.objective)}")
Status: Optimal
Quantidade ótima de pizzas: 125
Valor ótimo da função objetivo: 125.0
⏬ MODELANDO A FUNÇÃO OBJETIVO E AS RESTRIÇÕES ⏬ COM DUAS VARIÁVEIS
Cenário: Uma pizzaria produz dois sabores principais: Muçarela e Calabresa.
O objetivo é determinar a quantidade ideal de cada pizza a ser produzida para maximizar o lucro total, respeitando as limitações de ingredientes em estoque.
Massa: 0,5 kg
Queijo: 0,3 kg
Molho: 0,2 kg
Lucro: R$ 20,00
Massa: 0,5 kg
Queijo: 0,2 kg
Molho: 0,2 kg
Calabresa: 0,15 kg
Lucro: R$ 25,00
Sabendo que o estoque disponível é: Massa: 10 kg, Queijo: 5 kg, Molho: 4 kg, Calabresa: 2 kg
Desafio: Quantas pizzas de cada sabor devem ser fabricadas para obter o maior lucro possível antes que os ingredientes acabem?
Variáveis de Decisão:
x1: Quantidade de pizzas de Muçarela.
x2: Quantidade de pizzas de Calabresa.
Objetivo: Maximizar o Lucro Total (Z).
Lucro Muçarela: R$ 20,00
Lucro Calabresa: R$ 25,00
Função Objetivo: Maximizar Z=20(x1)+25(x2)
Restrições de Ingredientes:
Massa (Farinha): 1(x1)+1(x2) ≤20 kg
Queijo: 0,3(x1)+0,2(x2) ≤ 5 kg
Molho: 0,2(x1)+0,2(x2) ≤ 4 kg
Calabresa: 0,15(x2) ≤ 2 kg (Apenas a pizza de calabresa usa este ingrediente)
x1, x2 ≥ 0 devem ser valores inteiros.