Introdução a Programação Linear
Introdução
Após a etapa de modelagem matemática, surge a
necessidade de encontrar respostas (soluções) para o modelo matemático construído.
Em se tratando de um modelo com função objetivo
e restrições lineares, além de variáveis reais não-negativas, teremos um modelo referente a um Problema de Programação Linear (PPL).
É necessário um método de solução do modelo
Sistemática de Resolução de Problemas de
Pesquisa Operacional
Problema Real Modelo Conceitual Modelo Matemá-tico Solução Feedback Validação Bertrand, Fransoo (2002)Introdução
Apesar da diversidade de modelos, quanto à função
objetivo (minimizar ou maximizar) e quanto às restrições (igualdade e desigualdades), bem como quanto às variáveis, iremos trabalhar com uma
forma padrão, para o qual o algoritmo de solução
poderá ser aplicado:
Função objetivo: minimização Restrições: igualdade
Variáveis: não-negativas
Forma Padrão do Problema de
Programação Linear
0 : a sujeito min x b Ax cx z z Onde:
c1 c2 cn
c n x x x 2 1 x m b b b 2 1 b [ ] ij a A Vetor linha Vetores colunas Matriz m x n (n≥m)Soluções Viáveis & Solução Ótima
0
x R :Ax b,x
F n Conjunto de soluções viáveis do
problema de programação linear (“feasible set”)
será solução ótima do problema de programação linear na forma padrão se
* x F * x * cx cx x F
Equivalência - Restrições de
desigualdade
Uma restrição do tipo:
é equivalente às restrições:
Analogamente, uma restrição do tipo:
é equivalente às restrições: i n in i i x a x a x b a1 1 2 2 0 2 2 1 1 i i i n in i i s b s x a x a x a i n in i i x a x a x b a1 1 2 2 0 2 2 1 1 i i i n in i i s b s x a x a x a
Variável residual ou de folga
Equivalência - Restrições de
desigualdade
É interessante notar que:
é equivalente às restrições: i n in i i x a x a x b a1 1 2 2 i n in i i i n in i i b x a x a x a b x a x a x a 2 2 1 1 2 2 1 1
Equivalência - Função Objetivo
Maximização
Seja: 0 : a sujeito max : P1 Problema x b Ax cx z z 0 : a sujeito min : P2 Problema x b Ax cx w w * xSeja solução ótima do problema P2. Então: P1. de ótima solução é e : Logo . qualquer para * x cx cx* x cx cx* F
Equivalência - Variáveis irrestritas em
sinal
Se uma variável de decisão for irrestrita em sinal,
então ela pode ser substituída pelo par de variáveis
...tal que: i x i i x x e 0 , 0 - i i i i i x x x x x
Exemplo
Colocar na forma padrão o seguinte PPL:
0 , 18 6 7 2 7 13 3 4 2 29 3 6 5 4 6 6 4 max 3 2 3 2 1 3 2 1 3 2 1 3 2 1 x x x x x x x x x x x x x x z 0 , , , , 18 6 7 2 7 2 7 13 3 4 2 2 29 3 6 5 4 4 6 6 4 4 min 6 2 1 1 6 3 2 1 1 5 3 2 1 1 4 3 2 1 1 3 2 1 1 x x x x x x x x x x x x x x x x x x x x x x x w
Forma Padrão de um Problema de
Programação Linear
n j x m i b x a x c z z j i n j ij j n j j j , , 2 , 1 0 , , 2 , 1 : a sujeito min 1 1
Resolvendo um PPL
Considere um problema de programação linear com
n variáveis e m equações independentes.
As seguintes possibilidades poderão acontecer: n =
m, n < m, n > m.
O caso de interesse em programação linear é
quando n>m.
Será desenvolvido um procedimento em o sistema
será resolvido para m variáveis dependentes, em função de n-m variáveis independentes.
Resolvendo um PPL
Quantas formas há de escolher n-m variáveis
independentes dentre n variáveis?
Exemplo: n = 100; m = 40 m n m n n 28 10 . 4 , 1 40 100
Exemplo
0 , , 18 6 4 6 7 2 7 11 4 2 3 6 23 2 29 4 2 3 6 5 4 2 9 4 6 6 4 min 5 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 x x x x x x x x x x x x x x x x x x x x x x z Resolver o sistema abaixo para x3 , x4 e x5 em
função de x1 e x2 , aplicando o método de eliminação de Gauss Jordan.
A regra geral para eliminação de uma dada variável
xj é:
1. Sendo i a linha em que a variável será mantida
com coeficiente 1, definir como elemento pivô e
para :
2. Para as demais linhas :
a) Para a coluna j:
b) Para as demais colunas
Método de Eliminação de Gauss-Jordan
j x ij a j s ij i i ij is is a a b b a a' / ; ' / i r 0 rj a' s j rj i r r ij rj is rs rs a a b b b a a a a a ' '
Exemplo
18 6 4 6 7 2 / 7 11 4 2 3 6 / 23 2 29 4 2 3 6 / 5 4 0 2 / 9 4 6 6 4 5 4 3 0 5 4 3 2 1 x x x z z x x x x x O elemento pivô será o coeficiente de x3 na 1ª linha.
Esta variável será eliminada do sistema, aparecendo com valor 0 nas demais linhas.
Exemplo
40 2 8 0 3 / 16 2 / 23 18 0 4 0 3 6 3 / 29 3 / 4 3 / 2 1 18 / 5 3 / 4 58 2 / 7 8 0 3 / 13 12 5 4 3 0 5 4 3 2 1 x x x z z x x x x x O elemento pivô será o coeficiente de x4 na 2ª linha.
Esta variável será eliminada do sistema, aparecendo com valor 0 nas demais linhas.
Exemplo
4 2 0 0 3 / 2 2 / 1 2 / 9 0 1 0 4 / 3 2 / 3 3 / 20 3 / 4 0 1 9 / 7 3 / 1 22 2 / 7 0 0 3 / 5 0 5 4 3 0 5 4 3 2 1 x x x z z x x x x x O elemento pivô será o coeficiente de x5 na 3ª linha.
Esta variável será eliminada do sistema, aparecendo com valor 0 nas demais linhas.
Exemplo
2 1 0 0 3 / 1 4 / 1 2 / 9 0 1 0 4 / 3 2 / 3 4 0 0 1 3 / 1 3 / 2 15 0 0 0 2 / 1 8 / 7 5 4 3 0 5 4 3 2 1 x x x z z x x x x x Após a aplicação de Gauss-Jordan, o sistema
Exemplo (todas as possibilidades de fixar 2
variáveis em 0)
x1 x2 x3 x4 x5 sol viável? fo 9,6 13,2 -6,8 0 0 não 0 2,1818 7,6364 0 6,9546 0 sim 9,2727 4,5 3 0 0 2,125 sim 9,5625 -8 0 9,3333 16,5 0 não 22 3 0 2 0 2,75 sim 12,375 6 0 0 -4,5 3,5 não 9,75 0 6 2 9 0 sim 12 0 -6 6 0 4 não 18 0 12 0 13,5 -2 não 9 0 0 4 4,5 2 sim 15Exemplo
0 , , 2 3 1 4 1 2 / 9 4 3 2 3 4 3 1 3 2/8 1/2 7 15 min 5 1 5 2 1 4 2 1 3 2 1 2 1 x x x x x x x x x x x x x z Com a aplicação de Gauss-Jordan, o sistema
resultante gerou uma forma canônica, em que as variáveis dependentes aparecem com coeficiente 1 em sua respectiva linha e 0 nas demais; a função objetivo é escrita apenas em função das variáveis independentes.
Neste caso, foi obtida a seguinte solução:
Particularmente, fazendo x1=x2=0 (variáveis não
básicas), teremos x3=4, x4=9/2 e x5=2 (variáveis básicas).
Exemplo
2 1 2 1 5 2 1 4 2 1 3 2 / 1 8 / 7 15 3 / 1 4 / 1 2 4 / 3 2 / 3 2 / 9 3 / 1 3 / 2 4 x x z x x x x x x x x x Exercício
Vamos fazer uma representação geométrica deste
problema no plano das variáveis independentes.
Representação Geométrica
0 ; 0 2 3 1 4 1 2 3 1 4 1 2 9 4 3 2 3 2 9 4 3 2 3 4 3 1 3 2 4 3 1 3 2 2 1 2 1 5 2 1 2 1 4 2 1 2 1 3 2 1 x x x x x x x x x x x x x x x x x A Woodcarving, Inc. de Giapetto fabrica dois tipos de brinquedos
de madeira: soldados e trens. Um soldado é vendido por US$ 27 e usa US$ 10 em matérias-primas.
Cada soldado fabricado aumenta os custos variáveis de
mão-de-obra e custos indiretos de Giapetto em US$ 14.
Um trem é vendido por US$ 21 e usa US$ 9 em matérias-primas.
Cada trem construído aumenta os custos variáveis de mão-de-obra e custos indiretos da Giapetto em US$ 10.
A fabricação de soldados e trens de madeira requer dois tipos de
mão de obra qualificada: carpintaria e acabamento. Um soldado exige 2 horas de trabalho de acabamento e 1 hora de trabalho de carpintaria. Um trem requer 1 hora de acabamento e 1 hora de trabalho de carpintaria. A cada semana, a Giapetto pode obter toda a matéria-prima necessária, mas apenas 100 horas de acabamento e 80 horas de carpintaria. A demanda por trens é ilimitada, mas no máximo 40 soldados são comprados a cada semana. Giapetto quer maximizar o lucro semanal custos de receita .
Formule um modelo matemático da situação de Giapetto que
Utilização dos
setores (horas/unidade) Disponibilidade semanal
Soldado Trem
ACABAMENTO 2 1 100 horas
1. Variáveis de decisão 2. Função objetivo Maximizar o lucro semanal do sr. Giapetto max z = 3. Restrições 3.1. Disponibilidade da mão de obra ACABAMENTO: CARPINTARIA: 3.2. Demanda máxima por soldados 3.3. Não negatividade (27‐10‐14)s + (21‐10‐9)t = 3s + 2t 2s + t 100 s + t 80 s 40 s, t 0 s = quantidade de soldados produzidos por semana t = quantidade de trens produzidos por semana
Exemplo
0 , , 18 6 4 6 7 2 7 11 4 2 3 6 23 2 29 4 2 3 6 5 4 2 9 4 6 6 4 min 5 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 x x x x x x x x x x x x x x x x x x x x x x z Resolver o sistema abaixo para x3 , x4 e x5 em
função de x1 e x2 , aplicando o método de eliminação de Gauss Jordan.
Exemplo
0 , , 2 3 1 4 1 2 / 9 4 3 2 3 4 3 1 3 2/8 1/2 7 15 min 5 1 5 2 1 4 2 1 3 2 1 2 1 x x x x x x x x x x x x x z Com a aplicação de Gauss-Jordan, o sistema
resultante gerou uma forma canônica, em que as variáveis dependentes aparecem com coeficiente 1 em sua respectiva linha e 0 nas demais; a função objetivo é escrita apenas em função das variáveis independentes.
Neste caso, foi obtida a seguinte solução:
Particularmente, fazendo x1=x2=0 (variáveis não
básicas), teremos x3=4, x4=9/2 e x5=2 (variáveis básicas).
Exemplo
2 1 2 1 5 2 1 4 2 1 3 2 / 1 8 / 7 15 3 / 1 4 / 1 2 4 / 3 2 / 3 2 / 9 3 / 1 3 / 2 4 x x z x x x x x x x x x Vamos fazer uma representação geométrica deste
problema no plano das variáveis independentes.
Representação Geométrica
0 ; 0 2 3 1 4 1 2 3 1 4 1 2 9 4 3 2 3 2 9 4 3 2 3 4 3 1 3 2 4 3 1 3 2 2 1 2 1 5 2 1 2 1 4 2 1 2 1 3 2 1 x x x x x x x x x x x x x x x x xRepresentação
Geométrica
x2 x1 J H F E D C B A G I 3/2 x1 - 3/4 x2 ≤ 9/2 -1/4 x1 + 1/3 x2 ≤ 2 2/3 x1 + 1/3 x2 ≤ 4 x3 = 0 x4 = 0 x5 = 0Representação
Geométrica
x1 x2 x3 x4 x5 z A 0 0 4 9/2 2 15 B 3 0 2 0 11/4 99/8 C 9/2 3 0 0 51/24 153/16 D 24/11 84/11 0 153/22 0 102/11 E 0 6 2 9 0 12 x1 x2 x3 x4 x5 z F 0 ‐6 6 0 4 18 G 6 0 0 ‐9/2 7/2 39/4 H 48/5 66/5 ‐99/10 0 0 0 I 0 12 0 27/2 ‐2 9 J ‐8 0 28/3 33/2 0 22 Soluções Viáveis Soluções InviáveisRepresentação
Geométrica
x2 x1 J H F E D C B A G I E1 E1 E2 x1 x2 x3 x4 x5 z E1 8/7 4 40/21 81/4 20/21 12 E2 16/5 2/5 26/15 0 8/3 12 E 0 6 2 9 0 12 Neste exemplo, cadavértice possui n-m
variáveis nulas, correspondendo a uma forma canônica
Representação
Geométrica
x2 x1 J H F E D C B A G I E1Exemplo
2 1 0 0 3 / 1 4 / 1 2 / 9 0 1 0 4 / 3 2 / 3 4 0 0 1 3 / 1 3 / 2 15 0 0 0 2 / 1 8 / 7 5 4 3 0 5 4 3 2 1 x x x z z x x x x x Será que a solução indicada por esta forma
canônica é ótima?
Pela análise da função objetivo, se x1 assumir um
valor positivo, a função z irá variar a uma taxa de -7/8. O mesmo vale para x2 , cuja função irá variar a uma taxa de -1/2.
Vamos escolher reescrever a forma canônica em
função de x1 (a variável com a taxa mais negativa), introduzindo-a na base. Para isso, vamos verificar o impacto que isto gera nas demais variáveis da base.
Exemplo
2 1 1/ 2 8 / 7 15 x x z Exemplo
Sendo um pressuposto que todas as variáveis sejam
não-negativas, vamos verificar o máximo valor que
x1 poderá assumir sem tornar nenhuma variável negativa.
O máximo valor que x1 pode assumir é 3, quando x4
passa a valer 0. Desta forma, uma nova forma canônica será escrita para x3 , x1 e x5 em função de
x2 e x4 (x4 deixará de ser variável básica, dando lugar a x1). 5 1 1 5 1 1 4 1 1 3 zera não 4 / 1 2 3 2 / 3 2 / 9 2 / 3 2 / 9 6 3 / 2 4 3 / 2 4 x x x x x x x x x x
Exemplo
2 1 0 0 3 / 1 4 / 1 2 / 9 0 1 0 4 / 3 2 / 3 4 0 0 1 3 / 1 3 / 2 15 0 0 0 2 / 1 8 / 7 5 4 3 0 5 4 3 2 1 x x x z z x x x x x O elemento pivot será o coeficiente de x1 na 2ª linha
(linha da variável que irá sair). Esta variável será eliminada do sistema, aparecendo com valor 0 nas demais linhas. 15 ; 2 ; 2 / 9 ; 4 ; 0 ; 0 Básica Solução 1 5 4 3 2 1 a x x x x z x
Exemplo
4 / 11 1 6 / 1 0 24 / 5 0 3 0 3 / 2 0 2 / 1 1 2 0 9 / 4 1 3 / 2 0 8 / 99 0 12 / 7 0 16 / 15 0 5 1 3 0 5 4 3 2 1 x x x z z x x x x x 8 / 99 ; 4 / 11 ; 0 ; 2 ; 0 ; 3 Básica Solução 2 5 4 3 2 1 a x x x x z x A solução não é ótima pois o coeficiente de x2 na
função objetivo é negativo, indicando que há possibilidade de melhoria.
4 / 11 1 6 / 1 0 24 / 5 0 3 0 3 / 2 0 2 / 1 1 2 0 9 / 4 1 3 / 2 0 8 / 99 0 12 / 7 0 16 / 15 0 5 1 3 0 5 4 3 2 1 x x x z z x x x x x
Exemplo
O elemento pivot será o coeficiente de x2 na 1ª linha
(linha da variável que irá sair). Esta variável será eliminada do sistema, aparecendo com valor 0 nas demais linhas.
Exemplo
24 / 51 1 36 / 11 16 / 5 0 0 2 / 9 0 3 / 1 4 / 3 0 1 3 0 3 / 2 2 / 3 1 0 16 / 153 0 24 / 1 32 / 45 0 0 5 1 2 0 5 4 3 2 1 x x x z z x x x x x 16 / 153 ; 24 / 51 ; 0 ; 0 ; 3 ; 2 / 9 Básica Solução 3 5 4 3 2 1 a x x x x z x A solução não é ótima pois o coeficiente de x4 na
função objetivo é negativo, indicando que há possibilidade de melhoria.
24 / 51 1 36 / 11 16 / 5 0 0 2 / 9 0 3 / 1 4 / 3 0 1 3 0 3 / 2 2 / 3 1 0 16 / 153 0 24 / 1 32 / 45 0 0 5 1 2 0 5 4 3 2 1 x x x z z x x x x x
Exemplo
O elemento pivot será o coeficiente de x5 na 3ª linha
(linha da variável que irá sair). Esta variável será eliminada do sistema, aparecendo com valor 0 nas demais linhas.
Exemplo
22 / 153 11 / 36 1 44 / 45 0 0 11 / 24 11 / 12 0 11 / 12 0 1 11 / 84 11 / 24 0 11 / 9 1 0 11 / 102 22 / 3 0 22 / 30 0 0 4 1 2 0 5 4 3 2 1 x x x z z x x x x x 11 / 102 ; 0 ; 22 / 153 ; 0 ; 11 / 84 ; 11 / 24 Básica Solução 4 5 4 3 2 1 a x x x x z x A solução é ótima pois o coeficiente das variáveis
Os pontos candidatos a solução ótima são os
pontos extremos do espaço de solução (vértices).
Cada vértice pode ser representado por uma forma
canônica (há situações em que mais de uma forma canônica representará o mesmo vértice).
No exemplo introdutório: i) Quantidade de vértices:
; ii) Em cada vértice tem-se
exatamente (n-m=2) variáveis iguais a zero; iii)
Dentre o número total de vértices, foi constatado
que 5 vértices são viáveis e 5 inviáveis. Uma possível forma de encontrar a solução ótima
de um PPL pode ser por meio de um procedimento ingênuo com a seguinte estrutura:
1. Enumerar (gerar) todos os vértices.
2. Verificar se a base associada a cada vértice é
viável e comparar o valor da função objetivo com os demais vértices examinados, para identificar o vértice ótimo.
Este procedimento obrigatoriamente terá que gerar
todos os vértices (mesmo os inviáveis), e somente será capaz de achar a solução ótima no final da análise de todos eles. Isto viabiliza a solução apenas de problemas de pequeno porte.
Resolvendo um PPL
Determinação da Solução Inicial
PPL – Forma Padrão
PPL – Forma Canônica
Escolha de uma base viável Método de Gauss-Jordan
Seja o problema de programação linear na forma canônica:
Algoritmo Simplex
𝑥 𝑥 … 𝑥 … 𝑥 𝑥 … 𝑥 … 𝑥 𝑧 0 0 0 0 𝑐̄ … 𝑐̄ … 𝑐̄ 𝑧 𝑥 1 0 0 0 𝑎̄ 𝑎̄ 𝑎̄ 𝑏 𝑥 0 1 0 0 𝑎̄ 𝑎̄ 𝑎̄ 𝑏 ⋮ 0 0 ⋮ 0 0 ⋮ ⋮ ⋮ ⋮ 𝑥 0 0 1 0 𝑎̄ 𝑎̄ 𝑎̄ , 𝑏 ⋮ 0 0 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 𝑥 0 0 0 1 𝑎̄ 𝑎̄ 𝑎̄ , 𝑏 Variáveis básicas (dependentes) Variáveis não-básicas (independentes)Algoritmo Simplex
Forma canônica inicial do exemplo introdutório.
𝑥 𝑥 𝑥 𝑥 𝑥 𝑧
𝑧 7/8 1/2 0 0 0 15
𝑥 2/3 1/3 1 0 0 4
𝑥 3/2 3/4 0 1 0 9/2
Forma canônica de um PPL:
Algoritmo Simplex
min 𝑧 𝑧 𝑧 𝑐̄ 𝑥 𝑥 𝑎̄ 𝑥 𝑏 𝑥 𝑎̄ 𝑥 𝑏 ⋱ 𝑥 𝑎̄ 𝑥 𝑏 𝑥 01. É dada uma forma canônica viável.
2. Examinar a solução básica atual para verificar se
ela é ótima. Isto consiste em examinar os coeficientes
a) Se não existir 𝑐̅ 0 , a solução básica atual é ótima;
interromper o procedimento;
b) Em caso contrário, ir para o passo 3.
3. Melhoria da solução básica atual
a) Selecionar o mínimo 𝑐̅ 0, isto é, 𝑐̅ min 𝑐̅ 0 . A variável
não básica atual 𝑥 vai ser aumentada a partir de zero, tornando-se básica na próxima solução.
b) Para determinar qual das variáveis básicas atuais irá ceder
lugar, analisar o quociente: min
3. Há duas possibilidades...
a) Existe na coluna de 𝑥 pelo menos um 𝑎 0. A variável
básica na equação de r, 𝑥 vai deixar de ser básica na próxima solução, sendo substituída por 𝑥 .
b) Não existe na coluna de 𝑥 um elemento 𝑎 0 A solução é
ilimitada.
4. Para obter na nova forma canônica, aplicar o
método de Gauss-Jordan de eliminação, tendo como pivô , que está na intersecção da coluna da variável que vai se tornar básica, com a linha da variável que vai deixar de ser básica.
5. Voltar ao passo 2.
Exercícios
Considere o seguinte problema de programação linear:
Exercícios
min 𝑧 4𝑥 6𝑥 6𝑥 4𝑥 9 2 𝑥 4𝑥 5 6 𝑥 3𝑥 2𝑥 4𝑥 29 2𝑥 23 6 𝑥 3𝑥 2𝑥 4𝑥 11 7 2 𝑥 7𝑥 6𝑥 4𝑥 6𝑥 18 𝑥 , … , 𝑥 01) Resolver o sistema abaixo para x1 , x3 e x4 em função de x2 e x5 , aplicando o método de eliminação de Gauss Jordan. Represente graficamente o problema no plano das variáveis x2 e x5 .
Exercícios
2) Admita-se conhecido um modelo de programação linear associado a um problema de nutrição. Neste problema de nutrição, deseja-se minimizar o custo de uma dieta diária, partindo-se de uma cesta de 12 alimentos diferentes para atender os requisitos mínimos de 5 nutrientes diferentes. Você espera que a solução ótima venha contemplar o consumo de todos esses alimentos? Justifique.
Exercícios
3) Ao se colocar um problema de programação linear na forma padrão, a variável irrestrita em sinal foi
substituída pela diferença . O problema
foi, a seguir, resolvido pelo algoritmo simplex. É possível que na tabela ótima, as variáveis e
Exercícios
4) Resolva, utilizando o algoritmo simplex, o problema de programação linear abaixo. Quantos vértices ótimos ele possui? Ha alguma solução ótima que não pertença às arestas do poliedro viável? Qual?
max 𝑧 36𝑥 18𝑥 24𝑥 sujeito a restrições
6x 3x 4x 24
6x 12x 4x 48
Exercícios
5) Considere o seguinte problema de programação linear:
Aplique o método simplex para resolvê-lo. A partir da última tabela construa uma solução viável na qual o valor da função objetivo seja menor ou igual a -3500 (na forma padrão de minimização).