Monte seu pedido, monitore o estoque em tempo real e descubra a solução ótima
| Ingrediente | Restrição | Estoque |
|---|---|---|
| 🌾 Massa | 0,5x₁ + 0,5x₂ ≤ 10 | 10 kg |
| 🧀 Queijo | 0,3x₁ + 0,2x₂ ≤ 5 | 5 kg |
| 🍅 Molho | 0,2x₁ + 0,2x₂ ≤ 4 | 4 kg |
| 🌶️ Calabresa | 0,15x₂ ≤ 2 | 2 kg |
| Não-negatividade inteira | x₁, x₂ ≥ 0 ∈ ℤ | |
import pulp
# ── Criar o problema ─────────────────────────────────────────
prob = pulp.LpProblem("Maximizacao_Lucro_Pizzas", pulp.LpMaximize)
# ── Variáveis de decisão (inteiras, não-negativas) ───────────
x1 = pulp.LpVariable("muccarela", lowBound=0, cat='Integer')
x2 = pulp.LpVariable("calabresa", lowBound=0, cat='Integer')
# ── Função objetivo: maximizar lucro ─────────────────────────
prob += 20 * x1 + 25 * x2, "Lucro_Total"
# ── Restrições de estoque ─────────────────────────────────────
prob += 0.50 * x1 + 0.50 * x2 <= 10, "Massa"
prob += 0.30 * x1 + 0.20 * x2 <= 5, "Queijo"
prob += 0.20 * x1 + 0.20 * x2 <= 4, "Molho"
prob += 0.15 * x2 <= 2, "Calabresa"
# ── Resolver ──────────────────────────────────────────────────
prob.solve(pulp.PULP_CBC_CMD(msg=0))
# ── Resultado ─────────────────────────────────────────────────
print(f"Status: {pulp.LpStatus[prob.status]}")
print(f"Pizzas de Muçarela: {int(x1.varValue)}")
print(f"Pizzas de Calabresa: {int(x2.varValue)}")
print(f"Lucro máximo: R$ {pulp.value(prob.objective):.2f}")
# Saída:
# Status: Optimal
# Pizzas de Muçarela: 7
# Pizzas de Calabresa: 13
# Lucro máximo: R$ 465.00