Вы находитесь на странице: 1из 56

2.

PROGRAMAÇÃO LINEAR
(CONTINUAÇÃO)

EN, 02 OUTUBRO 2018


SOLUÇÃO
Recapitulando
Qualquer conjunto de valores para as variáveis (x1, x2, …, xn)
que satisfaça as restrições (sem incluir as restrições de não-
negatividade), designa-se por solução.
x2

Conjunto
de
soluções
0 x1
SOLUÇÃO ADMISSÍVEL
Recapitulando
Uma solução admissível é uma solução que satisfaça também as
restrições de não-negatividade.

x2
Conjunto de
soluções
admissíveis

0 x1
SOLUÇÃO BÁSICA ADMISSÍVEL
Recapitulando
Teorema Fundamental
Considere-se um problema de PL na forma canónica. Os pontos
extremos do conjunto de soluções admissíveis coincidem com as
soluções básicas admissíveis.
x2

SBA

0 SB x1
SOLUÇÃO DEGENERADA
Uma solução degenerada é uma solução básica admissível, que
satisfaça também xi=0, para iϵ{1,2,…, n}.

x2 Solução Degenerada

SBA

0 SB x1
FORMAS CANÓNICA E STANDARD
Recapitulando
Forma standard
Forma Canónica (ou normalizada)
max z = cTx max z = cTx

s.a: s.a:
Ax ≤ b Ax = b
x ≥ 0 x ≥ 0

min z = cTx min z = cTx

s.a: s.a:
Ax ≥ b Ax = b
x ≥ 0 x ≥ 0
MÉTODO SIMPLEX
BREVE RESENHA HISTÓRICA
Em 1946 Dantzig era consultor para a US Air
Force Comptroller no Pentágono.

Foi no Pentágono que Dantzig recebeu dos seus


colegas D. Hitchcock e M. Wood o desafio de
tentar ver o que poderia ser feito para
mecanizar o processo de planeamento.

No verão de 1947 Dantzig propôs o Método


Simplex que tornou possível a solução de
problemas de optimização de vários tipos,
como transporte, produção, alocação de
recursos e problemas de escalonamento
(scheduling).
BREVE RESENHA HISTÓRICA
Apesar de, em termos teóricos, o algoritmo simplex não ser
eficiente (n.º de operações executadas pelo algoritmo no pior
caso é exponencial), na prática o desempenho do algoritmo é
muito bom.
Mais recentemente, em 1984, N. Karmarkar desenvolveu um
novo algoritmo polinomial para resolver problemas de
programação linear.
Nasciam assim os chamados métodos de pontos interiores.
MÉTODO SIMPLEX
Considere o seguinte problema de PL:

max z = 10x1 + 30x2 (lucro)


s. a: 1x1 + 4 x2 ≤ 100 (R1)
1x1 + 2 x2 ≤ 60 (R2)
1x1 + 1 x2 ≤ 50 (R3)

x1, x2 ≥ 0
MÉTODO SIMPLEX
Forma standard (ou normalizada)

max z = 1x1 + 3x2


s. a: 1x1 + 4x2 + x3 + x4 + x5 = 100
1x1 + 2x2 + x3 + x4 + x5 = 60
1x1 + 1x2 + x3 + x4 + x5 = 50
x1, x2, x3, x4, x5 ≥ 0
Variáveis de folga, desvio ou auxiliares
MÉTODO SIMPLEX
Reescrever o sistema de equações

0 = –1x1 – 3x2 +z
100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5
60 = 1x1 + 2x2 + 0x3 + 1x4 + 0x5
50 = 1x1 + 1x2 + 0x3 + 0x4 + 1x5
x1, x2, x3, x4, x5 ≥ 0
MÉTODO SIMPLEX
Encontrar uma SBA inicial

0 = –1x1 – 3x2 +z
100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5
Matriz
60 = 1x1 + 2x2 + 0x3 + 1x4 + 0x5 identidade

50 = 1x1 + 1x2 + 0x3 + 0x4 + 1x5


x1, x2, x3, x4, x5 ≥ 0

SBA’s: n=5
m=3  3 variáveis básicas
n – m = 5 – 3 = 2  2 variáveis não básicas
MÉTODO SIMPLEX
Escolhendo x3, x4 e x5 como variáveis básicas e x1 e x2
como variáveis não básicas:
Tem-se a base: 1 0 0
B  0 1 0
0 0 1
A solução básica encontrada é admissível (SBA) :

1 0 0  x3  100  x3  100  x1   0 
0 1 0  x    60    x    60  x   0 
  4     4    2  
0 0 1  x5   50   x5   50   x3   100
   
 x4   60 
x1  0, x2  0  x5   50 
MÉTODO SIMPLEX

0 = –1x1 – 3x2 +z
100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5
60 = 1x1 + 2x2 + 0x3 + 1x4 + 0x5
50 = 1x1 + 1x2 + 0x3 + 0x4 + 1x5
x1, x2, x3, x4, x5 ≥ 0

A solução [0 0 100 60 50] não é ótima


porque se x1 ou x2 aumentar, z aumenta.
MÉTODO SIMPLEX
Se x2 aumenta então z
também aumenta

0 = –1x1 – 3x2 +z

Por cada unidade a mais em x1, corresponde um aumento de 1


unidade em z.

Por cada unidade a mais em x2, corresponde um aumento de 3


unidades em z.

Vamos aumentar o valor de x2 (que agora vale 0)

A variável x2 vai passar a básica


MÉTODO SIMPLEX
Qual o valor máximo que x2 pode ter na 1ª Restrição?
A igualdade tem de
continuar a ser
verificada!
aumenta diminui

100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5


0 100 ≥
x1 é variável não x3 não pode ser
básica (vale 0) Valor máximo que 4x2 negativo
pode assumir

100
x2   25 Valor máximo que x2 pode tomar de forma
4 a que a 1ª igualdade seja verificada!
MÉTODO SIMPLEX
Qual o valor máximo que x2 pode ter na 2ª Restrição?
A igualdade tem de
continuar a ser
verificada!
aumenta diminui

60 = 1x1 + 2x2 ++ 0x3 + 1x4 + 0x5


0 60 ≥ x4 não pode ser
x1 é variável não
negativo
básica (vale 0) Valor máximo que 2x2
pode assumir

60
x2   30 Valor máximo que x2 pode tomar de forma
2 a que a 2ª igualdade seja verificada!
MÉTODO SIMPLEX
Qual o valor máximo que x2 pode ter na 3ª Restrição?
A igualdade tem de
continuar a ser
verificada!
aumenta diminui

50 = 1x1 + 1x2 ++ 0x3 + 0x4 + 1x5


0 50 ≥
x1 é variável não x5 não pode ser
básica (vale 0) Valor máximo que 1x2 negativo
pode assumir

50
x2   50 Valor máximo que x2 pode tomar de forma
1 a que a 3ª igualdade seja verificada!
MÉTODO SIMPLEX
3ª restrição
2ª restrição
1ª restrição

100 60 50  100
x2  min  , ,   25
 4 2 1 4
Valor máximo que a variável x2
pode tomar de forma a verificar
todas as restrições na igualdade
Valor máximo que a
variável x2 pode tomar
de forma a verificar a Valor máximo que a variável
1ª restrição x2 pode tomar de forma a
Valor máximo que a verificar a 3ª restrição
variável x2 pode tomar de
forma a verificar a 2ª
restrição
MÉTODO SIMPLEX
3ª restrição
2ª restrição
1ª restrição

100 60 50  100
x2  min  , ,   25
 4 2 1 4 x3 é a variável básica com
coeficiente 1 na 1ª restrição

aumenta 25 diminui para 0

100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5

Para x2 aumentar 25 unidades, a variável x3 terá de tomar


o valor 0 (x3 passa a variável não básica)
MÉTODO SIMPLEX

x2 passa a básica

x3 passa a não básica

Como reescrever o sistema de forma a


representar o aumento de x2?
MÉTODO SIMPLEX
Reescrever o sistema de equações

0 = –1x1 – 3x2 +z
100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5
60 = 1x1 + 2x2 + 0x3 + 1x4 + 0x5
50 = 1x1 + 1x2 + 0x3 + 0x4 + 1x5
Elemento Pivot → coeficiente da variável que passa a
básica (x2) na restrição onde aparece a variável que passa
a não básica.
Para cada linha somar a linha do elemento Pivot
multiplicada por um valor adequado.
MÉTODO SIMPLEX
Reescrever o sistema de equações

0 = –1x1 – 3x2 +z
(3)
(×1/4) 100 = 1x1 + 4x2 + 1x3 + 0x4 + 0x5
(-2)
60 = 1x1 + 2x2 + 0x3 + 1x4 + 0x5
(-1)

50 = 1x1 + 1x2 + 0x3 + 0x4 + 1x5

Lz  Lz  (3  1 ) L( R1)
4
L( R1)  1 L( R1)
4
L( R 2 )  L( R 2 )  (2  1 ) L( R1)
4
L( R 3)  L( R 3)  (1 1 ) L( R1)
4
MÉTODO SIMPLEX
Expressão geral para transformar linhas do sistema
de equações

k – linha da variável básica que vai sair (x3)


h – coluna da variável não básica que passa a básica (x2)
ak,h – termo pivot

 a j ,h
L j  Lk jk
 ak , h
Lj  
 1
Lk jk

 ak , h
MÉTODO SIMPLEX
Reescrever o sistema de equações

75 = – 1/4x1 + 0x2 + 3/4x3 +z


25 = 1/4x1 + 1x2 + 1/4x3 + 0x4 + 0x5
10 = 1/2x1 + 0x2 – 1/2x3 + 1x4 + 0x5
25 = 3/4x1 + 0x2 – 1/4x3 + 0x4 + 1x5

Tem-se uma nova  x1  0 A base associada é:  4 0 0


x  25
B  2 1 0
solução:
   
2

 x3    0 
    1 0 1
 x4  10 
 x5  25 x2 x4 x5
MÉTODO SIMPLEX
A nova solução é ótima?
75 = –1/4x1 + 3/4x3 +z

A solução não é ótima porque o coeficiente de


x1 na função objetivo é negativo.

Se x1 aumentar então o valor de z aumenta!

Vamos aumentar o valor de x1 (que agora vale 0)

A variável x1 vai passar a básica


MÉTODO SIMPLEX
Reescrever o sistema de equações

75 = –1/4x1 + 0x2 + 3/4x3 + 0x4 + 0x5 + z


25 = 1/4x1 + 1x2 + 1/4x3 + 0x4 + 0x5
10 = 1/2x1 + 0x2 – 1/2x3 + 1x4 + 0x5
25 = 3/4x1 + 0x2 – 1/4x3 + 0x4 + 1x5

Qual das variáveis básicas vai sair?


Ou seja, qual das variáveis básicas
vai passar a não básica?
MÉTODO SIMPLEX
Qual o valor máximo que x1 pode ter na 1ª Restrição?
A igualdade tem de
continuar a ser
verificada!
aumenta diminui

25 = 1/4x1 + 1x2 + 1/4x3 + 0x4 + 0x5


x3 é variável não
básica (vale 0)

25
x1   100 Valor máximo que x1 pode tomar de forma
1 a que a 1ª igualdade seja verificada!
4
MÉTODO SIMPLEX
Qual o valor máximo que x1 pode ter na 2ª Restrição?
A igualdade tem de
continuar a ser
verificada!
aumenta diminui

10 = 1/2x1 + 0x2 – 1/2x3 + 1x4 + 0x5


x3 é variável não
básica (vale 0)

10
x1   20 Valor máximo que x1 pode tomar de forma
1 a que a 2ª igualdade seja verificada!
2
MÉTODO SIMPLEX
Qual o valor máximo que x1 pode ter na 3ª Restrição?
A igualdade tem de
continuar a ser
verificada!
aumenta diminui

25 = 3/4x1 + 0x2 – 1/4x3 + 0x4 + 1x5


x3 é variável não
básica (vale 0)

25 100
x1   Valor máximo que x1 pode tomar de forma
3 3 a que a 3ª igualdade seja verificada!
4
MÉTODO SIMPLEX
1ª restrição 3ª restrição
2ª restrição

 25 10 25 
 
x1  min  , ,   20
1 1 3
 4 2 4 
Valor máximo que a variável x1
pode tomar de forma a verificar
todas as restrições na igualdade
Valor máximo que a
variável x1 pode tomar
de forma a verificar a 1ª
restrição Valor máximo que a variável x1
pode tomar de forma a verificar
Valor máximo que a variável x1 a 3ª restrição
pode tomar de forma a verificar
a 2ª restrição
MÉTODO SIMPLEX
1ª restrição 3ª restrição
2ª restrição

 25 10 25 
 
x1  min  , ,   20
1 1 3
 4 2 4  x4 é a variável básica
com coeficiente 1 na 2ª
restrição

aumenta 20 diminui para 0

10 = 1/2x1 + 0x2 – 1/2x3 + 1x4 + 0x5

Para x1 aumentar 20 unidades, a variável x4 terá de tomar


o valor 0 (x4 passa a variável não básica)
MÉTODO SIMPLEX
Reescrever o sistema de equações

(1/4)
75 = –1/4x1 + 0x2 + 3/4x3 +z

(-1/4)
25 = 1/4x1 + 1x2 + 1/4x3 + 0x4 + 0x5
(×2) 10 = 1/2x1 + 0x2 – 1/2x3 + 1x4 + 0x5
(-3/4)
25 = 3/4x1 + 0x2 – 1/4x3 + 0x4 + 1x5
Lz  Lz  ( 1  2) L( R 2 )
4
L( R1)  L( R1)  ( 1  2) L( R 2 )
4
L( R 2 )  2 L( R 2 )
L( R 3)  L( R 3)  ( 3  2) L( R 2 )
4
MÉTODO SIMPLEX
Reescrever o sistema de equações

80 = 0x1 + 0x2 + 1/2x3 + 1/2x4 +z


20 = 0x1 + 1x2 + 1/2x3 – 1/2x4 + 0x5
20 = 1x1 + 0x2 – x3 + 2x4 + 0x5
10 = 0x1 + 0x2 + 1/2x3 – 3/2x4 + 1x5

Tem-se uma nova  x  20


  A base associada é: 1 4 0
B  1 2 0
1
solução:  x  20
 2  
 x3    0 
    1 1 1
 x4   0  x1 x2 x5
 x5  10 
MÉTODO SIMPLEX
A solução encontrada é ótima?

80 = 1/2x3 + 1/2x4 +z

A solução é ótima porque não é possível


melhorar mais a função objetivo.

z* = 80 Valor da solução ótima.


MÉTODO SIMPLEX
Quadro do Simplex (tableau)
Valor da FO

max x1 x2 x3 x4 x5
z 0 -1 -3 0 0 0
x3 100 1 4 1 0 0
Variáveis
básicas
x4 60 1 2 0 1 0
= x5 50 1 1 0 0 1
Número de
restrições

Elemento pivot
Valores das variáveis
MÉTODO SIMPLEX
Quadro do Simplex (tableau)

max x1 x2 x3 x4 x5
z 0 -1 -3 0 0 0
x3 100 1 4 1 0 0
x4 60 1 2 0 1 0
x5 50 1 1 0 0 1

Notação: O coeficiente da variável xj na linha da função objetivo


representa-se por zj – cj e designa-se por custo
reduzido da variável xj
MÉTODO SIMPLEX
Algoritmo Simplex (problema de maximização)

1º passo: SBA inicial.


2º passo: ∃ j : zj – cj < 0  A solução não é ótima. Caso
contrário PARAR.
3º passo: Escolher variável não básica que passa a básica.
4º passo: Verificar se o problema é ilimitado. Se sim então
PARAR. Caso contrário ir para passo 5.
5º passo: Escolher variável básica que passa a não básica.
Realizar operação de pivotagem e voltar ao passo 2.
MÉTODO SIMPLEX
Algoritmo Simplex (problema de maximização)

1º passo: SBA inicial x3, x4, x5 básicas e x1, x2 não básicas.


2º passo: z1 – c1 , z2 – c2 < 0  A solução não é ótima.
3º passo: x2 passa a básica.
4º passo: não concluímos que o problema é ilimitado.
5º passo: x3 passa a não básica.
MÉTODO SIMPLEX
Quadro do Simplex (tableau) Entra x2

max x1 x2 x3 x4 x5
z 0 -1 -3 0 0 0
Sai x3 x3 100 1 4 1 0 0
100 60 50  100
x2  min  , ,   25
x4 60 1 2 0 1 0
 4 2 1 4
x5 50 1 1 0 0 1

O problema não é ilimitado porque: 4 0


 2   0 
   
1 0
MÉTODO SIMPLEX
Cálculo auxiliar
max x1 x2 x3 x4 x5
Entra x2
z 0 -1 -3 0 0 0 Sai x3
x3 100 1 4 1 0 0

x4 60 1 2 0 1 0

x5 50 1 1 0 0 1

max x1 x2 x3 x4 x5
z 75 -1/4 0 3/4 0
x2 25 1/4 1 1/4 0 0
x4 10 1/2 0 -1/2 0
x5 25 3/4 0 -1/4 1
MÉTODO SIMPLEX
Cálculo auxiliar
max x1 x2 x3 x4 x5
Entra x2
z 0 -1 -3 0 0 0 Sai x3
x3 100 1 4 1 0 0

x4 60 1 2 0 1 0

x5 50 1 1 0 0 1

max x1 x2 x3 x4 x5
z 75 -1/4 0 3/4
x2 25 1/4 1 1/4 0 0
x4 10 1/2 0 -1/2
x5 25 3/4 0 -1/4
MÉTODO SIMPLEX
Cálculo auxiliar
max x1 x2 x3 x4 x5
Entra x2
z 0 -1 -3 0 0 0 Sai x3
x3 100 1 4 1 0 0

x4 60 1 2 0 1 0

x5 50 1 1 0 0 1

max x1 x2 x3 x4 x5
z 75 -1/4 0 3/4 0 0
x2 25 1/4 1 1/4 0 0
x4 10 1/2 0 -1/2 1 0
x5 25 3/4 0 -1/4 0 1
MÉTODO SIMPLEX
Quadro do Simplex (tableau) Entra x1

max x1 x2 x3 x4 x5
z 75 -1/4 0 3/4 0 0
x2 25 1/4 1 1/4 0 0
Sai x4 x4 10 1/2 0 -1/2 1 0
 25 10 25  10
  x5 25 3/4 0 -1/4 0 1
x1  min  , ,   20
1 1 3
 4 2 4  1
2

Notação: A transformação do quadro designa-se por operação de


pivotagem
MÉTODO SIMPLEX
Cálculo auxiliar
max x1 x2 x3 x4 x5
Entra x1
z 75 -1/4 0 3/4 0 0 Sai x4
x2 25 1/4 1 1/4 0 0

x4 10 1/2 0 -1/2 1 0

x5 25 3/4 0 -1/4 0 1

max x1 x2 x3 x4 x5
z
x2
x1 20 1 0 -1 2 0
x5
MÉTODO SIMPLEX
Cálculo auxiliar
max x1 x2 x3 x4 x5
Entra x1
z 75 -1/4 0 3/4 0 0 Sai x4
x2 25 1/4 1 1/4 0 0

x4 10 1/2 0 -1/2 1 0

x5 25 3/4 0 -1/4 0 1

max x1 x2 x3 x4 x5
z 0
x2 0
x1 20 1 0 -1 2 0
x5 0
MÉTODO SIMPLEX
Cálculo auxiliar
max x1 x2 x3 x4 x5
Entra x1
z 75 -1/4 0 3/4 0 0 Sai x4
x2 25 1/4 1 1/4 0 0

x4 10 1/2 0 -1/2 1 0

x5 25 3/4 0 -1/4 0 1

max x1 x2 x3 x4 x5
z 80 0 0 1/2 1/2 0
x2 20 0 1 1/2 -1/2 0
x1 20 1 0 -1 2 0
x5 10 0 0 -1/2 -3/2 1
MÉTODO SIMPLEX
Operação de pivotagem
max x1 x2 x3 x4 x5

z 75 -1/4 0 3/4 0 0

x2 25 1/4 1 1/4 0 0

x4 10 1/2 0 -1/2 1 0

x5 25 3/4 0 -1/4 0 1

max x1 x2 x3 x4 x5
z 80 0 0 1/2 1/2 0
Quadro ótimo!
x2 20 0 1 1/2 -1/2 0
x1 20 1 0 -1 2 0
x5 10 0 0 -1/2 -3/2 1
MÉTODO SIMPLEX
Algoritmo Simplex (problema de minimização)

1º passo: SBA inicial


2º passo: ∃ j :zj – cj > 0  A solução não é ótima. Caso
contrário PARAR.
3º passo: Escolher variável não básica que passa a básica
4º passo: Verificar se o problema é ilimitado. Se sim então
PARAR. Caso contrário ir para passo 5.
5º passo: Escolher variável básica que passa a não básica.
Realizar operação de pivotagem e voltar ao passo 2.
MÉTODO SIMPLEX
= CASOS ESPECIAIS =
SOLUÇÃO ÓTIMA DEGENERADA
max x1 x2 s1 s2 A variável básica
z 0 -3 -4 0 0 apresenta valor nulo
na solução ótima.
s1 9 1 1 1 0
s2 18 2 3 0 1
min{9/1;18/3} = 6
(x1,x2) = (0,0)
max x1 x2 s1 s2
z 24 -1/3 0 0 4/3
max x1 x2 s1 s2
s1 3 1/3 0 1 -1/3
z 27 0 0 1 1
x2 6 2/3 1 0 1/3
x1 9 1 0 3 -1
min{9;9} = 9 x2 0 0 1 -2 1
(x1,x2) = (0,6) (x1,x2) = (9,0)
SOLUÇÃO INTERMÉDIA DEGENERADA
max x1 x2 s1 s2 s3 s4
z 0 -3 -4 0 0 0 0
s1 10 1 1 1 0 0 0
s2 18 2 3 0 1 0 0
s3 8 1 0 0 0 1 0
s4 6 0 1 0 0 0 1
min{10/1;18/3;6/1} = 6
max x1 x2 s1 s2 s3 s4
z 24 -1/3 0 0 4/3 0 0
s1 4 1/3 0 1 -1/3 0 0
x2 6 2/3 1 0 1/3 0 0
s3 8 1 0 0 0 1 0
s4 0 -2/3 0 0 -1/3 0 1
SOLUÇÃO ÓTIMA MÚLTIPLA
max x1 x2 s1 s2 (x1*,x2*)=α1(0,5)+α2(2,4)
z 0 -1 -2 0 0 α1+α2=1 e α1≥0, α2≥0
s1 6 1 1 1 0
s2 10 1 2 0 1
min{6/1;10/2} = 5
(x1,x2) = (0,0)
max x1 x2 s1 s2
z 10 0 0 0 1 max x1 x2 s1 s2
s1 1 1/2 0 1 -1/2 z 10 0 0 0 1
x2 5 1/2 1 0 1/2 x1 2 1 0 2 -1
x2 4 0 1 -1 1
min{2;10} = 2
(x1*,x2*) = (0,5) (x1*,x2*) = (2,4)
SOLUÇÃO ILIMITADA
max x1 x2 s1 s2
z 0 -1 -2 0 0
s1 2 -2 1 1 0
s2 6 1 -2 0 1
min{2} = 2
(x1,x2) = (0,0)
max x1 x2 s1 s2
z 4 -5 0 2 0
x2 2 -2 1 1 0
s2 10 -3 0 2 1
EXERCÍCIO
Resolva o problema de PL através do algoritmo Simplex:
max z = 2x1 + 3x2
s.a: -x1 + 2x2 ≤ 4
x2 ≤ 2
x1 + 2x2 ≤ 6
x1 + x2 ≤ 4
Quadro Final
x1, x2 ≥ 0
max x1 x2 s1 s2 s3 s4
z 10 0 0 0 1 0 2
s1 2 0 0 1 -3 0 1
x2 2 0 1 0 1 0 0
s3 0 0 0 0 -1 1 -1
x1 2 1 0 0 -1 0 1

Вам также может понравиться