Programação Linear

Palavras-Chave

Fonte: GeoGebra

Em computação, Programação Linear (PL) são problemas de otimização combinatória nos quais a função objetivo e as restrições são todas lineares.

Geometricamente, as restrições lineares definem um poliedro convexo, que é chamado de conjunto dos pontos viáveis ou região de factibilidade.

A função objetivo ser linear implica que uma solução ótima pode ocorrer apenas em um ponto da fronteira do conjunto de pontos viáveis. Também, sendo a função objetivo linear, observa-se que todo ótimo local é automaticamente um ótimo global.

Existem duas situações nas quais uma solução ótima não pode ser encontrada:

1. Se as restrições se contradizem. Logo, a região factível é vazia e não pode haver solução ótima, e o problema é dito inviável, por exemplo:

função objetivo restrições
$ \displaystyle z=x$
$ x \geqslant 2 $ e $ x\leqslant 1 $

2. Quando o poliedro pode ser ilimitado na direção da função objetivo, neste caso não existe solução ótima uma vez que as soluções arbitrariamente grandes da função objetivo podem ser construídas, e o problema é dito ilimitado, por exemplo:

função objetivo restrições
$ \displaystyle z=x_1+3x_2$ $ x_1,\, x_2 \geqslant 0 $

$ x_1 + x_2 \geqslant 10 $

Estas condições são frequentemente eliminadas por limitações dos recursos inerentes ao problema que está sendo modelado. Fora estas duas condições irregulares, o ótimo é sempre alcançado num vértice do poliedro. Entretanto, o ótimo nem sempre é único: é possível ter um conjunto de soluções ótimas cobrindo uma aresta ou face do poliedro, ou até mesmo o poliedro todo. Esta última situação pode ocorrer se a função objetivo for uniformemente igual a uma constante.

Alguns problemas de programação linear são apresentados abaixo.

O Problema de Perdas em Redes Elétricas

Em engenharia elétrica, o Problema de Fluxo de Carga é o estudo de sistemas elétricos de potência em regime permanente para uma condição de carga e de geração. A sua solução determina os valores de tensão em todas as $n$ barras do sistema. Com as tensões nas barras e os parâmetros elétricos do sistema pode-se obter as correntes nas linhas e as perdas de potência ativa nas linhas de transmissão para uma condição de operação (carga+geração).

Nesse contexto, o problema de perdas em redes elétricas consiste em minimizar a função objetivo “Perdas” definindo o nível ótimo de potência ativa em cada unidade geradora da rede elétrica para se obter a menor soma de perdas de potência ativa nas $N_{LTs}$ linhas de transmissão.

Sejam:

  • $i=1,\,2,\,3,\,\cdots,\,n$ as barras do sistema;
  • $j=1,\,2,\,3,\,\cdots,\,n_{LTs}$ as linhas de transmissão;
  • $ P_{C_{i}} $ a potência ativa consumida em cada barra;
  • $ P_{L_{j}} $ a potência ativa perdida em cada linha de transmissão;
  • $ P_{G_{i}} $ a potência ativa gerada em cada barra.

E supondo um sistema com $n$ geradores após o fluxo de carga convergido. A soma da potência ativa gerada em cada gerador deverá ser igual a soma das potências ativas consumidas em cada uma das barras do sistema mais as perdas de potência ativa nas linhas de transmissão:

$ \displaystyle \sum_{i=1}^{n}P_{C_{i}}+\sum_{j=1}^{n_{LTs}}P_{L_{j}}-\sum_{i=1}^{n}P_{G_{i}}=0 $(1)

Caso se modifique a geração em cada unidade geradora $ (P_{G_{i}}) $, porém conservando a mesma carga consumida $ (P_{C_{i}}) $, o sistema passará a operar em um novo ponto de operação. Considerando as perdas ativas totais $(P_{L})$ como a função objetivo e o despacho de cada unidade geradora como variável de controle:

$ \displaystyle P_{L}=\sum_{j=1}^{n_{LTs}}P_{L_{j}} $(2)

o problema do fluxo de carga ótimo consistem em determinar o despacho de cada unidade geradora de modo que as perdas sejam mínimas.

Dessa forma, podemos formular o problema de perdas em redes elétricas como:

função objetivo “Perdas” restrições
$ \displaystyle P_{L}=\sum_{i=1}^{n}P_{G_{i}}-\sum_{i=1}^{n}P_{C_{i}}$ $ \displaystyle P_{G_{i}} \geqslant 0 $

O Problema da Produção Concorrente

Consiste em maximizar o lucro total $(\$)$ ao definir os níveis de produção dos $n$ produtos com os $m$ recursos disponíveis.

Para tal, considere uma unidade fabril com capacidade para produzir $n$ produtos distintos, com diferentes níveis de consumo de recursos e que produzem lucros distintos. Nesse contexto, estes produtos concorrem entre si pelos recursos limitados disponíveis para obtenção do maior lucro possível. Logo, deseja-se definir o nível de produção de cada produto, de forma que o lucro total obtido seja máximo.

Sejam:

  • $i=1,\,2,\,3,\,\cdots,\,m\,$: os recursos disponíveis;
  • $j=1,\,2,\,3,\,\cdots,\,n\,$: as produtos distintos;
  • $x_1,\,x_2,\,x_3,\,\cdots,\,x_n\,$: os níveis de produção dos $n$ produtos;
  • $c_1,\,c_2,\,c_3,\,\cdots,\,c_n\,$: os lucros unitários dos $n$ produtos;
  • $b_1,\,b_2,\,b_3,\,\cdots,\,b_m\,$: as quantidades dos diferentes recursos disponíveis;
  • $a_{i1},\,a_{i2},\,a_{i3},\,\cdots,\,a_{in}\,$: os níveis de consumo do recurso $(i)$ referente a fabricação de uma unidade dos $n$ produtos.

Dessa forma, podemos formular o problema de otimização da produção concorrente como:

função objetivo “Lucro” restrições
$ \displaystyle z=\sum_{j=1}^{n}c_jx_{j}$ Estudo
de Mercado
$ \displaystyle \sum_{j=1}^{n}a_{ij}x_j \leqslant b_i $
Numérica $ \displaystyle x_j \geqslant 0 $

Cujo o propósito é maximizar a função objetivo “Lucro” $(z)$ para se obter os níveis de produção $(x_1,\,x_2,\,x_3,\,\cdots,\,x_n)$ necessários para a obtenção do maior lucro $(z_{max})$.

Exemplo: Uma fábrica produz os produtos I, II e III com níveis de consumo de recursos conforme a tabela seguinte:

Recursos Tempo disponível

(em horas/mês)
Horas / unidade dos produtos
I II III
Máquina 01 100 2 3 1
Máquina 02 120 1 1 2
Mão de Obra 01 176 2 2 3
Mão de Obra 02 132 1 2 1
Lucro Unitário ($) 10 15 20
Produção Máxima (unid.) 80 20 40

O problema pode ser formulado por:

função objetivo “Lucro” restrições
$ \displaystyle z=10x_1+15x_2+20x_3 $ Máquinas $ \displaystyle 2x_1+3x_2+x_3 \leqslant 100 $

$ \displaystyle x_1+x_2+2x_3 \leqslant 120 $
Mão de Obra $ \displaystyle 2x_1+2x_2+3x_3 \leqslant 176 $

$ \displaystyle x_1+2x_2+x_3 \leqslant 132 $
Mercado $ \displaystyle x_1 \leqslant 80 ;\quad x_2 \leqslant 20 ;\quad x_3 \leqslant 40 $
Numérica $ \displaystyle x_1,\,x_2,\,x_3 \geqslant 0 $

O Problema da Dieta

Consiste em minimizar o custo total $(\$)$ ao definir os níveis de produção de $n$ alimentos com base em uma dieta com o menor consumo vitamínico diário possível.

Para tal, considere que uma pessoa deseja minimizar o custo de sua dieta diária, mantendo os níveis de consumo recomendados para as diferentes vitaminas.

Sejam:

  • $i=1,\,2,\,3,\,\cdots,\,m\,$: as vitaminas necessárias;
  • $j=1,\,2,\,3,\,\cdots,\,n\,$: os alimentos disponíveis;
  • $x_1,\,x_2,\,x_3,\,\cdots,\,x_n\,$: os níveis de produção dos $n$ alimentos pertencentes à dieta;
  • $b_1,\,b_2,\,b_3,\,\cdots,\,b_m\,$: os níveis mínimos de consumo da vitamina $i$;
  • $a_{i1},\,a_{i2},\,a_{i3},\,\cdots,\,a_{in}\,$: as quantidades da vitamina $(i)$ contidas nos $n$ alimentos disponíveis;
  • $c_1,\,c_2,\,c_3,\,\cdots,\,c_n\,$: os custos unitários dos $n$ alimentos disponíveis.

Cujo o propósito é minimizar a função objetivo “Custo” $(C)$ para se obter os níveis de produção dos $n$ alimentos $(x_1,\,x_2,\,x_3,\,\cdots,\,x_n)$, com base em uma dieta com o menor consumo vitamínico diário possível, para a obtenção do menor custo $(C_{min})$.

Exemplo: A dieta de uma pessoa deve constar de 03 alimentos, cujos teores de vitaminas, bem como os níveis mínimos de consumo se encontram na tabela seguinte:

Vitaminas Consumo Mínimo

diário (mg)
Teor Vitamínico dos Alimentos (mg / unid)
$A_1$ $A_2$ $A_3$
A 80 10 5 10
B 70 8 7 6
C 100 1,5 3 7
D 60 20 2 9
Preços dos Alimentos ($ / unid) 80 32 180

O problema pode ser formulado por:

função objetivo “Custo” restrições
$ \displaystyle C=80x_1+32x_2+180x_3 $ Vitaminas $ \displaystyle 10x_1+5x_2+10x_3 \geqslant 80 $

$ \displaystyle 8x_1+7x_2+6x_3 \geqslant 70 $

$ \displaystyle 15x_1+3x_2+7x_3 \geqslant 100 $

$ \displaystyle 20x_1+2x_2+9x_3 \geqslant 60 $
Numérica $ \displaystyle x_1,\,x_2,\,x_3 \geqslant 0 $

O Problema de Transporte

Consiste em minimizar o custo total do transporte de mercadorias de $m$ centros fornecedores para $n$ centros consumidores.

Sejam:

  • $i=1,\,2,\,3,\,\cdots,\,m\,$: os fornecedores;
  • $j=1,\,2,\,3,\,\cdots,\,n\,$: os consumidores;
  • $x_{ij}\,$: a quantidade a transportar do fornecedor $(i)$ para o consumidor $(j)$;
  • $d_{ij}\,$: o custo unitário do transporte de $i$ para $j$.

O ideal é que a soma das quantidades fabricadas $(a_i)$ seja igual a soma das quantidades demandadas $(b_j)$ pelos consumidores, para que não seja necessário o uso de pátios de armazenamento para a operação de transporte, cujo o aluguel e manutenção aumentam os custos da operação.

O problema pode ser formulado por:

função objetivo “Custo” restrições
$ \displaystyle C=\sum_{i=1}^{m}\sum_{j=1}^{n}d_{ij}x_{ij}$ quantidade disponível
na origem $i$
$\displaystyle \sum_{j=1}^{n}x_{ij}=a_i\,$
quantidade demandada
pelo destino $j$
$\displaystyle \sum_{i=1}^{m}x_{ij}=b_j\,$
Numérica $ \displaystyle x_{ij} \geqslant 0 $

Cujo o propósito é minimizar a função objetivo “Custo” $(C)$ para se obter a quantidade a transportar do fornecedor para o consumidor $ ( x_{ij} ) $ de maneira a se obter o menor custo $ ( C_{min} ) $.

O Problema da Designação

Consistem de um caso particular do problema do transporte em que:

  • $m=n$;
  • $ a_i=1 \quad \forall \, i $;
  • $ b_j=1 \quad \forall \, j $;

Nesse contexto, o modelo assume a seguinte forma:

função objetivo “Custo” restrições
$ \displaystyle C=\sum_{i=1}^{m}\sum_{j=1}^{n}d_{ij}x_{ij}$ quantidade disponível
na origem $i$
$\displaystyle \sum_{j=1}^{n}x_{ij}=1\,$
quantidade demandada
pelo destino $j$
$\displaystyle \sum_{i=1}^{m}x_{ij}=1\,$

Numérica
$ \displaystyle x_{ij} \geqslant 0 $

$ x_{ij}= \left\{\begin{matrix} 1, \quad \textbf{se } i=j \qquad\quad\,\,\, \\ 0, \quad \textbf{caso contrario} \end{matrix}\right.$

Referências

  • M. Firmino de Medeiros Jr. Otimização de Sistemas, dca-UFRN, 2011.
  • A. Izmailov; M. Solodov: Otimização – Vol. 2 – Métodos Computacionais. Instituto de Matemática Pura e Aplicada – IMPA, 2007.
  • SILVA, E. M. et al. Pesquisa operacional: programação linear. São Paulo: Atlas, 1999.
  • Bazaraa, M. S., Sherali, H.D., Shetty, C. M., Nonlinear programming: Theory and algorithms. 2nd ed. John Wiley, New York (NY), 1993.
  • Bazaraa, M.S., Jarvis, J.J., e Sherali, H.D., Linear Programming and Network Flows. Wiley, 1990.
  • Fletcher, R., Practical methods of optimization, John Wiley – Interscience, New York, 1987.
  • Luenberger, D.: Introduction to Linear and Nonlinear Programming – Addison-Wesley, 1973.