Modelos Clássicos de Programação Linear - Aplicações
Aplicação e Formulação dos Modelos Clássicos de Programação Linear
A programação linear é uma das técnicas matemáticas de otimização mais amplamente utilizadas em contextos empresariais e organizacionais. A sua versatilidade permite modelar uma grande variedade de problemas reais, convertendo-os em formulações matemáticas que podem ser resolvidas de forma eficiente. Este artigo explora os principais modelos clássicos de programação linear, as suas características, formulações matemáticas e aplicações práticas.
Introdução à Programação Linear
A programação linear (PL) é uma técnica para otimizar uma função objetivo linear sujeita a restrições lineares. A estrutura geral de um problema de programação linear é:
Maximizar/Minimizar: Z = c₁x₁ + c₂x₂ + ... + cₙxₙ
Sujeito a:a₁₁x₁ + a₁₂x₂ + ... + a₁ₙxₙ ≤/=/≥ b₁a₂₁x₁ + a₂₂x₂ + ... + a₂ₙxₙ ≤/=/≥ b₂...aₘ₁x₁ + aₘ₂x₂ + ... + aₘₙxₙ ≤/=/≥ bₘx₁, x₂, ..., xₙ ≥ 0
A programação linear é resolúvel de forma eficiente através de algoritmos como o método simplex ou métodos de ponto interior, tornando-a uma ferramenta prática mesmo para problemas de grande escala.
Vamos explorar os principais modelos clássicos de programação linear, excluindo os modelos de rede (que serão abordados em outro artigo).
1. Modelo de Mistura (Blending)
Descrição
O modelo de mistura é utilizado quando diferentes ingredientes ou recursos devem ser combinados para criar produtos finais que atendam a determinados requisitos de qualidade, custo ou composição.
Aplicações
- Mistura de combustíveis em refinarias
- Formulação de alimentos e rações
- Preparação de ligas metálicas
- Composição de portfólios financeiros
- Mistura de fertilizantes
Formulação Matemática
Índices e Conjuntos:
- i = ingredientes disponíveis (i = 1, 2, ..., m)
- j = características ou requisitos (j = 1, 2, ..., n)
Variáveis de Decisão:
- xᵢ = quantidade do ingrediente i a ser utilizada na mistura
Parâmetros:
- cᵢ = custo por unidade do ingrediente i
- aᵢⱼ = quantidade da característica j por unidade do ingrediente i
- bⱼᵐⁱⁿ = nível mínimo requerido da característica j
- bⱼᵐᵃˣ = nível máximo permitido da característica j
- dᵢᵐⁱⁿ = disponibilidade mínima do ingrediente i
- dᵢᵐᵃˣ = disponibilidade máxima do ingrediente i
Função Objetivo (minimizar custo):
Min Z = Σ cᵢxᵢ (i = 1, 2, ..., m)
Restrições:
-
Requisitos de características:
bⱼᵐⁱⁿ ≤ Σ aᵢⱼxᵢ ≤ bⱼᵐᵃˣ (j = 1, 2, ..., n)
-
Disponibilidade de ingredientes:
dᵢᵐⁱⁿ ≤ xᵢ ≤ dᵢᵐᵃˣ (i = 1, 2, ..., m)
-
Volume total da mistura (opcional):
Σ xᵢ = V (onde V é o volume total desejado)
-
Não-negatividade:
xᵢ ≥ 0 (i = 1, 2, ..., m)
Exemplo Prático
Uma refinaria precisa produzir 10.000 litros de gasolina premium com octanagem mínima de 92. Dispõe de três tipos de componentes:
Componente | Octanagem | Custo (€/litro) | Disponibilidade (litros) |
---|---|---|---|
A | 85 | 0,60 | 8.000 |
B | 90 | 0,80 | 6.000 |
C | 98 | 1,10 | 4.000 |
Formulação:
Min Z = 0,60xₐ + 0,80xᵦ + 1,10xᶜ
Sujeito a:85xₐ + 90xᵦ + 98xᶜ ≥ 92(xₐ + xᵦ + xᶜ) [Restrição de octanagem]xₐ + xᵦ + xᶜ = 10.000 [Volume total]xₐ ≤ 8.000 [Disponibilidade de A]xᵦ ≤ 6.000 [Disponibilidade de B]xᶜ ≤ 4.000 [Disponibilidade de C]xₐ, xᵦ, xᶜ ≥ 0 [Não-negatividade]
Simplificando a restrição de octanagem:
85xₐ + 90xᵦ + 98xᶜ ≥ 92xₐ + 92xᵦ + 92xᶜ
-7xₐ - 2xᵦ + 6xᶜ ≥ 0
2. Modelo de Planeamento de Produção
Descrição
O modelo de planejamento da produção ajuda a determinar quanto produzir de cada produto ao longo de um horizonte de tempo, considerando recursos limitados, demanda e custos.
Aplicações
- Planejamento industrial
- Programação de manufatura
- Agendamento de produção sazonal
- Dimensionamento de lotes de produção
Formulação Matemática
Índices e Conjuntos:
- i = produtos (i = 1, 2, ..., n)
- j = recursos (j = 1, 2, ..., m)
- t = períodos de tempo (t = 1, 2, ..., T)
Variáveis de Decisão:
- xᵢₜ = quantidade do produto i a ser produzida no período t
- Iᵢₜ = estoque do produto i ao final do período t
Parâmetros:
- pᵢ = lucro unitário do produto i
- cᵢ = custo de produção unitário do produto i
- hᵢ = custo de manutenção de estoque unitário do produto i
- aᵢⱼ = quantidade do recurso j necessária para produzir uma unidade do produto i
- bⱼₜ = disponibilidade do recurso j no período t
- dᵢₜ = demanda do produto i no período t
Função Objetivo (maximizar lucro total):
Max Z = Σ Σ (pᵢxᵢₜ - hᵢIᵢₜ) (i = 1, 2, ..., n; t = 1, 2, ..., T)
Restrições:
-
Balanço de estoque:
Iᵢ(t-1) + xᵢₜ - Iᵢₜ = dᵢₜ (i = 1, 2, ..., n; t = 1, 2, ..., T)
-
Restrições de capacidade:
Σ aᵢⱼxᵢₜ ≤ bⱼₜ (j = 1, 2, ..., m; t = 1, 2, ..., T)
-
Não-negatividade:
xᵢₜ, Iᵢₜ ≥ 0 (i = 1, 2, ..., n; t = 1, 2, ..., T)
Exemplo Prático
Uma empresa fabrica dois produtos usando dois recursos (máquinas e mão de obra) em dois períodos. Os dados são:
Produto | Lucro (€/unid.) | Custo estoque (€/unid.) | Recurso 1 (h/unid.) | Recurso 2 (h/unid.) |
---|---|---|---|---|
1 | 30 | 5 | 3 | 2 |
2 | 40 | 6 | 4 | 3 |
Período | Disponibilidade Recurso 1 (h) | Disponibilidade Recurso 2 (h) | Demanda Produto 1 | Demanda Produto 2 |
---|---|---|---|---|
1 | 200 | 180 | 20 | 10 |
2 | 180 | 160 | 30 | 20 |
Formulação:
Max Z = 30x₁₁ + 30x₁₂ + 40x₂₁ + 40x₂₂ - 5I₁₁ - 5I₁₂ - 6I₂₁ - 6I₂₂
Sujeito a:
x₁₁ - I₁₁ = 20 [Balanço de estoque P1T1]
I₁₁ + x₁₂ - I₁₂ = 30 [Balanço de estoque P1T2]
x₂₁ - I₂₁ = 10 [Balanço de estoque P2T1]
I₂₁ + x₂₂ - I₂₂ = 20 [Balanço de estoque P2T2]
3x₁₁ + 4x₂₁ ≤ 200 [Recurso 1, período 1]
2x₁₁ + 3x₂₁ ≤ 180 [Recurso 2, período 1]
3x₁₂ + 4x₂₂ ≤ 180 [Recurso 1, período 2]
2x₁₂ + 3x₂₂ ≤ 160 [Recurso 2, período 2]
x₁₁, x₁₂, x₂₁, x₂₂, I₁₁, I₁₂, I₂₁, I₂₂ ≥ 0 [Não-negatividade]
3. Modelo de Atribuição
Descrição
O modelo de atribuição é utilizado para designar recursos (pessoas, máquinas, equipamentos) a tarefas ou atividades, onde cada recurso pode ser atribuído a exatamente uma tarefa e cada tarefa requer exatamente um recurso.
Aplicações
- Alocação de funcionários a funções
- Designação de máquinas a trabalhos
- Atribuição de veículos a rotas
- Alocação de equipes a projetos
Formulação Matemática
Índices e Conjuntos:
- i = recursos (i = 1, 2, ..., n)
- j = tarefas (j = 1, 2, ..., n) (geralmente o número de recursos e tarefas é igual)
Variáveis de Decisão:
- xᵢⱼ = 1 se o recurso i for atribuído à tarefa j; 0 caso contrário
Parâmetros:
- cᵢⱼ = custo (ou tempo, eficiência, etc.) de atribuir o recurso i à tarefa j
Função Objetivo (minimizar custo total):
Min Z = Σ Σ cᵢⱼxᵢⱼ (i = 1, 2, ..., n; j = 1, 2, ..., n)
Restrições:
-
Cada recurso é atribuído a exatamente uma tarefa:
Σ xᵢⱼ = 1 (i = 1, 2, ..., n)
-
Cada tarefa recebe exatamente um recurso:
Σ xᵢⱼ = 1 (j = 1, 2, ..., n)
-
Restrições de variáveis binárias:
xᵢⱼ ∈ {0, 1} (i, j = 1, 2, ..., n)
Nota: Embora o problema de atribuição seja tecnicamente um problema de programação inteira binária, ele tem a propriedade especial de que quando resolvido como um problema de programação linear (relaxando as restrições de integralidade), a solução ótima será naturalmente inteira.
Exemplo Prático
Quatro funcionários (1-4) devem ser designados a quatro tarefas (A-D). A matriz de custos (em euros) é:
Funcionário | Tarefa A | Tarefa B | Tarefa C | Tarefa D |
---|---|---|---|---|
1 | 14 | 5 | 8 | 7 |
2 | 2 | 12 | 6 | 5 |
3 | 7 | 8 | 3 | 9 |
4 | 2 | 4 | 6 | 10 |
Formulação:
Min Z = 14x₁ₐ + 5x₁ᵦ + 8x₁ᶜ + 7x₁ᵈ + 2x₂ₐ + 12x₂ᵦ + 6x₂ᶜ + 5x₂ᵈ +
7x₃ₐ + 8x₃ᵦ + 3x₃ᶜ + 9x₃ᵈ + 2x₄ₐ + 4x₄ᵦ + 6x₄ᶜ + 10x₄ᵈSujeito a:
x₁ₐ + x₁ᵦ + x₁ᶜ + x₁ᵈ = 1 [Cada funcionário 1 recebe uma tarefa]
x₂ₐ + x₂ᵦ + x₂ᶜ + x₂ᵈ = 1 [Cada funcionário 2 recebe uma tarefa]
x₃ₐ + x₃ᵦ + x₃ᶜ + x₃ᵈ = 1 [Cada funcionário 3 recebe uma tarefa]
x₄ₐ + x₄ᵦ + x₄ᶜ + x₄ᵈ = 1 [Cada funcionário 4 recebe uma tarefa]
x₁ₐ + x₂ₐ + x₃ₐ + x₄ₐ = 1 [Tarefa A recebe um funcionário]
x₁ᵦ + x₂ᵦ + x₃ᵦ + x₄ᵦ = 1 [Tarefa B recebe um funcionário]
x₁ᶜ + x₂ᶜ + x₃ᶜ + x₄ᶜ = 1 [Tarefa C recebe um funcionário]
x₁ᵈ + x₂ᵈ + x₃ᵈ + x₄ᵈ = 1 [Tarefa D recebe um funcionário]
xᵢⱼ ∈ {0, 1} para todos i, j
4. Modelo de Carregamento ou Knapsack (Mochila)
Descrição
O modelo da mochila (knapsack) envolve selecionar um subconjunto de itens com diferentes valores e pesos, de forma a maximizar o valor total sem exceder a capacidade de uma "mochila" ou recurso limitado.
Aplicações
- Seleção de projetos de investimento
- Carregamento de contêineres ou veículos
- Corte de materiais
- Orçamento de capital
Formulação Matemática (Mochila 0-1)
Índices e Conjuntos:
- i = itens disponíveis (i = 1, 2, ..., n)
Variáveis de Decisão:
- xᵢ = 1 se o item i for selecionado; 0 caso contrário
Parâmetros:
- vᵢ = valor do item i
- wᵢ = peso (ou consumo de recurso) do item i
- W = capacidade total disponível
Função Objetivo (maximizar valor total):
Max Z = Σ vᵢxᵢ (i = 1, 2, ..., n)
Restrições:
-
Restrição de capacidade:
Σ wᵢxᵢ ≤ W (i = 1, 2, ..., n)
-
Restrições de variáveis binárias:
xᵢ ∈ {0, 1} (i = 1, 2, ..., n)
Nota: A versão 0-1 do problema da mochila é um problema de programação inteira binária. Para formulá-lo como programação linear, pode-se relaxar a restrição binária para 0 ≤ xᵢ ≤ 1, embora isso possa levar a soluções fracionárias.
Exemplo Prático
Uma empresa de investimentos tem €10 milhões para investir em cinco projetos diferentes. Cada projeto tem um retorno esperado e um requisito de capital:
Projeto | Retorno esperado (milhões €) | Requisito de capital (milhões €) |
---|---|---|
1 | 4,2 | 3,0 |
2 | 5,0 | 4,0 |
3 | 3,8 | 2,5 |
4 | 6,0 | 5,0 |
5 | 3,5 | 2,0 |
Formulação:
Max Z = 4,2x₁ + 5,0x₂ + 3,8x₃ + 6,0x₄ + 3,5x₅
Sujeito a:
3,0x₁ + 4,0x₂ + 2,5x₃ + 5,0x₄ + 2,0x₅ ≤ 10,0 [Restrição de capital]
xᵢ ∈ {0, 1} para i = 1, 2, 3, 4, 5
5. Modelo de Dieta ou Nutrição
Descrição
O modelo de dieta busca determinar a combinação ótima de alimentos que satisfaça requisitos nutricionais específicos ao menor custo possível.
Aplicações
- Planejamento de dietas para hospitais
- Formulação de rações para animais
- Planejamento nutricional em instituições
- Suplementação dietética otimizada
Formulação Matemática
Índices e Conjuntos:
- i = alimentos disponíveis (i = 1, 2, ..., n)
- j = nutrientes considerados (j = 1, 2, ..., m)
Variáveis de Decisão:
- xᵢ = quantidade do alimento i a ser incluída na dieta
Parâmetros:
- cᵢ = custo por unidade do alimento i
- aᵢⱼ = quantidade do nutriente j por unidade do alimento i
- bⱼᵐⁱⁿ = requisito mínimo diário do nutriente j
- bⱼᵐᵃˣ = limite máximo recomendado do nutriente j
- dᵢᵐⁱⁿ = consumo mínimo recomendado do alimento i (opcional)
- dᵢᵐᵃˣ = consumo máximo recomendado do alimento i (opcional)
Função Objetivo (minimizar custo total):
Min Z = Σ cᵢxᵢ (i = 1, 2, ..., n)
Restrições:
-
Requisitos nutricionais:
bⱼᵐⁱⁿ ≤ Σ aᵢⱼxᵢ ≤ bⱼᵐᵃˣ (j = 1, 2, ..., m)
-
Limites de consumo (se aplicáveis):
dᵢᵐⁱⁿ ≤ xᵢ ≤ dᵢᵐᵃˣ (i = 1, 2, ..., n)
-
Não-negatividade:
xᵢ ≥ 0 (i = 1, 2, ..., n)
Exemplo Prático
Um nutricionista precisa planejar uma dieta diária com três alimentos, satisfazendo requisitos mínimos de proteínas, vitaminas e calorias:
Alimento | Custo (€/unid.) | Proteínas (g/unid.) | Vitaminas (mg/unid.) | Calorias (kcal/unid.) |
---|---|---|---|---|
Alimento 1 | 2,00 | 8 | 3 | 120 |
Alimento 2 | 3,50 | 15 | 2 | 180 |
Alimento 3 | 1,80 | 5 | 4 | 90 |
Requisitos diários:
- Proteínas: mínimo 70g
- Vitaminas: mínimo 20mg
- Calorias: entre 800 e 1200 kcal
Formulação:
Min Z = 2,00x₁ + 3,50x₂ + 1,80x₃
Sujeito a:
8x₁ + 15x₂ + 5x₃ ≥ 70 [Restrição de proteínas]
3x₁ + 2x₂ + 4x₃ ≥ 20 [Restrição de vitaminas]
120x₁ + 180x₂ + 90x₃ ≥ 800 [Restrição mínima de calorias]
120x₁ + 180x₂ + 90x₃ ≤ 1200 [Restrição máxima de calorias]
x₁, x₂, x₃ ≥ 0 [Não-negatividade]
6. Modelo de Corte e Empacotamento
Descrição
O modelo de corte e empacotamento procura determinar como cortar materiais maiores (bobinas, chapas, barras) em peças menores para atender a pedidos específicos, minimizando o desperdício ou o número de itens maiores utilizados.
Aplicações
- Corte de papel, tecido, metal, madeira
- Empacotamento de itens em contentores
- Programação de comprimentos em máquinas de corte
- Indústrias de vidro, aço, têxtil e móveis
Formulação Matemática (Modelo de Padrões de Corte)
Índices e Conjuntos:
- i = tipos de peças menores demandadas (i = 1, 2, ..., m)
- j = padrões de corte possíveis (j = 1, 2, ..., n)
Variáveis de Decisão:
- xⱼ = número de vezes que o padrão de corte j é utilizado
Parâmetros:
- aᵢⱼ = número de peças do tipo i produzidas pelo padrão de corte j
- dᵢ = demanda de peças do tipo i
- cⱼ = custo associado ao uso do padrão j (geralmente relacionado ao desperdício)
Função Objetivo (minimizar custo total ou desperdício):
Min Z = Σ cⱼxⱼ (j = 1, 2, ..., n)
Restrições:
-
Satisfação da demanda:
Σ aᵢⱼxⱼ ≥ dᵢ (i = 1, 2, ..., m)
-
Não-negatividade:
xⱼ ≥ 0 (j = 1, 2, ..., n)
-
Integralidade (opcional, torna o problema de programação inteira):
xⱼ inteiro (j = 1, 2, ..., n)
Exemplo Prático
Uma indústria produz barras de aço de 10 metros e precisa cortá-las para atender à procura/pedido de barras com comprimentos menores:
- 30 barras de 2 metros
- 40 barras de 3 metros
- 20 barras de 4 metros
Padrões de corte possíveis em uma barra de 10 metros:
- Padrão 1: 5 barras de 2 metros (sem desperdício)
- Padrão 2: 3 barras de 3 metros + 0,5 metro de desperdício
- Padrão 3: 2 barras de 4 metros + 1 barra de 2 metros (sem desperdício)
- Padrão 4: 2 barras de 3 metros + 2 barras de 2 metros (sem desperdício)
- Padrão 5: 1 barra de 4 metros + 2 barras de 3 metros (sem desperdício)
Formulação:
Min Z = x₁ + x₂ + x₃ + x₄ + x₅ [Minimizar o número total de barras de 10m]
Sujeito a:
5x₁ + 0x₂ + 1x₃ + 2x₄ + 0x₅ ≥ 30 [Procura de barras de 2m]
0x₁ + 3x₂ + 0x₃ + 2x₄ + 2x₅ ≥ 40 [Procura de barras de 3m]
0x₁ + 0x₂ + 2x₃ + 0x₄ + 1x₅ ≥ 20 [Procura de barras de 4m]
x₁, x₂, x₃, x₄, x₅ ≥ 0 e inteiros