Otimização Linear
Profª : Adriana
Departamento de Matemática adriana@fc.unesp.br
Revisão – Método Simplex
Solução básica factível:
Solução geral usando a partição básica: , xˆ xˆ xˆ N B = ˆ 1 0 ˆ 0 B N x B b x − = = em que
=
N Bx
x
x
Revisão
N T N x N 1 1 T B(B b B Nx ) c x c ) x ( f B + − = − − N T N N 1 T B 1 T BB b c B Nx c x c − + = − − valor da solução básica associada a partiçãoA função objetivo f(x)=cTx considerando a partição básica:
( ) T TB TN B TB B TN N N x f x c x c c c x c x x = = = + ˆ ( ) f x = N B x x x
Revisão
Definição (vetor multiplicador simplex) é o vetor (m 1),
também chamado de vetor das variáveis duais dado por:
1 T B − = Bc T T B B = c
Vetor multiplicador simplex na expressão de f(x):
ˆ ( ) ( ) ( ) ( ) 1 1 N1 n m n m n m T T N N N N N f x = f x + c −λ a x + + c − − λ a − x − T -1 T T T T B N N N N N N N N ˆ ˆ ˆ (x) (x) c B Nx c x (x) TNx c x ( ) ( ) f = f − + = f − + = f x + c −λ N x
Custos relativos ou custos reduzidos
1
ˆ
ˆ
ˆ
ˆ
( )
( )
N1 2 2 n m n m N N N N Nf
x
=
f
x
+
c x
+
c x
+ +
c
−x
− j ˆ ( ) j j T N N N c = c − λ aRevisão
Propriedade: (condição de otimalidade) Considere uma partição básica factível com solução básica factível
associada e seja vetor multiplicador
simplex.
Se , então a solução básica é ótima.
1 T B T B c − =
B N
A = 0 b B xˆB = −1 m n , , 1 j , 0 ) c ( N N j j T = − − λ a “Se a condição de otimalidade for verificada, então a solução
básica é ótima”.
Caso não seja ótima ( ), perturbamos essa solução básica factível de modo a diminuir o valor da função objetivo. 0 ˆ k − = N N N T k k c c λ a
Revisão
Estratégia Simplex: perturbar soluções básicas factíveis que consiste em alterar as variáveis não-básicas por:
− = = = . , ,...., 2 , 1 , 0 negativo) relativo custo com (variável , 0 ε k i m n j x x N N j k
A função objetivo passa a valer:
m n N m n k N k N N N c c c f f N − − + + + + + = x x x 0 ˆ ε ˆ 0 ˆ ) ˆ ( ) ( 1 1 x x ε ˆ ) ˆ ( N k c f + = x f (xˆ)
Revisão
Alteração nas variáveis não-básicas: k
x x x N N m n k N = = − 0 ε 0 1 N x ε ε B B N B B b B Nx xˆ B aNk xˆ y x y -1 -1 -1 − = − = − =
Alteração nas variáveis básicas:
Direção Simplex
Fornece os coeficientes de como as variáveis básicas são alteradas na estratégia simplex.
Revisão
Equação vetorial: xB = xˆB − y ε
Como:
como devemos ter
0 i B x ε 0 0 ε ˆ − = B i B x y x i i i B y x i ˆ ε Menor valor de : = = = y i m y x y x i i B B i ,..., 1 , 0 que tal ˆ mínimo ˆ εˆ Tamanho do passo
então para todo 0
yi
0
yi xBi =xˆBi −yi0
Revisão
Ao resolvermos
Nova partição:
A variável básica se anula (sair da base)
A variável não-básica torna-se positiva (entrar na base) B xˆ k N xˆ = = / y 0 y xˆ min y xˆ ˆ i i B B i k N B ] a , , a , , [a B B B B m 1 = ] a , , a , , [a N N N N m n k 1 − = → → ] a , , a , , [a B´ B N B m k 1 = ] a , , a , , [a N´ N B N m n 1 − =
Método Simplex - comentários
•
Há uma versão do método usando tabelas,conhecida como “Tableau”.
•
Estratégias para determinar partição inicial (Fase I).•
Algoritmo é finito, porém pode ocorrer ciclagem.•
Na análise de pior caso (complexidade dealgoritmo) é um algoritmo que pode ter um número exponencial de iterações.
•
Na prática, têm obtido sucesso na resolução de problemas de programação linear.•
Utiliza três sistemas lineares que devem ser resolvidos de forma eficiente (LU).Método Simplex – Exemplo
Considere o problema de otimização linear:
Exemplo
Os coeficientes das variáveis de folga formam uma matriz identidade:
Fase II: Fase I:
Exemplo
Exemplo
Método Simplex em Tabelas
Maneira prática de se trabalhar
Interessante para a compreensão do método
Não é eficiente computacionalmente
Método Simplex em Tabelas
Parâmetros necessários para resolução do problema: coeficientes de um problema de otimização linear
✓ x1 x2 xn: variáveis
✓ c1 c2 cn f : coeficientes da função objetivo ✓ a1 a2 an b: coeficientes das restrições
Exemplo
Na forma padrão, temos:
Matriz básica. No método por tabelas, será sempre a matriz identidade
Se todos os valores forem positivo A solução é ótima, cc, a variável mais negativa é candidata a entrar na base
Variável básica: custo relativo é zero! Se não for , então temos q torna-lo nulo. x1 x2 x3 x4 x5 b -1 -2 0 0 0 f 1 1 1 0 0 6 1 -1 0 1 0 4 -1 1 0 0 1 4
Exemplo
Sabemos que podemos escrever cada variável
básica em função das demais variáveis (no caso, das variáveis não-básicas, x1 e x2). Como B = I, isso é feito muito facilmente:
Basta atribuir valores às variáveis não-básicas x1 e
Exemplo
• Se fixarmos as variáveis não-básicas x1 e x2 em seus
limites, x1 = 0 e x2 = 0, então as demais variáveis têm como valores x3 = 6, x4 = 4, x5 = 4 e produzem uma solução
factível para o problema que corresponde a um vértice da região factível.
• Em uma tabela simplex, a função objetivo é sempre escrita em termos das variáveis não-básicas: f = – x1 – 2x2
x1 x2 x3 x4 x5 b
-1 -2 0 0 0 f
1 1 1 0 0 6
1 -1 0 1 0 4
Exemplo
Aumentando x1 ou x2, a função objetivo diminui.
Portanto, a solução básica:
(x1 = 0, x2 = 0, x3 = 6, x4 = 4 e x5 = 4 ) não é ótima.
Aumentar x2 e mantendo x1 = 0 , a função objetivo
diminui com uma taxa de variação –2 e quanto maior o valor de x2, menor será o valor de f.
Ao aumentar x2, o que acontece com as variáveis
Exemplo
Se x2 cresce e x1 = 0 os valores das variáveis básicas
podem aumentar ou diminuir, entretanto, deve-se preservar a não-negatividade das variáveis:
Exemplo – Solução ilimitada
Se no caso anterior tivéssemos:
Solução ilimitada!! x1 x2 x3 x4 x5 b -1 -2 0 0 0 f 1 1 1 0 0 6 1 -1 0 1 0 4 -1 1 0 0 1 4
Exemplo
Aumentando o valor de x2 e mantendo x1 = 0 os valores das variáveis básicas podem aumentar ou diminuir.
Para preservar a não-negatividade das variáveis:
x2 6
x2 4
Para x2 = 4, x5 se anula. Temos uma nova solução:
variáveis não-básicas: x1 = 0, x2 = 4 entra na base
variáveis básicas: x3 = 2, x4 = 8 e x5 = 0 sai da base Valor da f.o.: f = 0 – 2 x2 = - 8.
Partição anterior: B = [3, 4, 5] NB = [1, 2] Nova partição: B = [3, 4, 2] NB = [1, 5]
Exemplo
Nova base: B = [3, 4, 2] NB = [1, 5]
As colunas da base devem formar uma identidade
entra na base sai da base Efetuar um pivotamento!!! x1 x2 x3 x4 x5 b VB -1 -2 0 0 0 f x3 1 1 1 0 0 6 x4 1 -1 0 1 0 4 x5 -1 1 0 0 1 4
Exemplo
Nova base: B = [3, 4, 2] NB = [1, 5]
As colunas da base devem formar uma identidade
pivô Restrição atingida
entra na base sai da base x1 x2 x3 x4 x5 b VB -1 -2 0 0 0 f x3 1 1 1 0 0 6 x4 1 -1 0 1 0 4 x5 -1 1 0 0 1 4
Exemplo
Tabela simplex – iteração 1. Variáveis básicas: x3, x4, x2
Os coeficientes das variáveis não básicas x1 e x5 são chamados de custos relativos x1 x2 x3 x4 x5 b VB -3 0 0 0 2 f + 8 x3 2 0 1 0 -1 2 x4 0 0 0 1 1 8 x2 -1 1 0 0 1 4
Exemplo
Aumentando o valor da variável x1 e x5 = 0 diminui o valor da f. o. diminui com uma taxa de variação –3.
Equações do sistema com x5 = 0
x1 1 x1 x2 x3 x4 x5 b VB -3 0 0 0 2 f + 8 x3 2 0 1 0 -1 2 x4 0 0 0 1 1 8 x2 -1 1 0 0 1 4
Exemplo
Enquanto a variável não-básica x1 = 1, a variável x3 se anula. Temos uma nova solução básica :
variáveis não-básicas: x1 = 1, x5 = 0 entra na base
variáveis básicas: x3 = 0, x4 = 8 e x2 = 5 sai da base
• Redefinindo as variáveis:
variáveis não-básicas: x3 = 0, x5 = 0
variáveis básicas: x1 = 1, x4 = 8 e x2 = 5
Partição anterior: B = [3, 4, 2] NB = [1, 5] Nova partição: B = [1, 4, 2] NB = [3, 5]
Exemplo
entra na base
sai da base
Nova base: B = [1, 4, 2] NB = [3, 5]
As colunas da base devem formar uma identidade
x1 x2 x3 x4 x5 b
VB -3 0 0 0 2 f + 8
x3 2 0 1 0 -1 2
x4 0 0 0 1 1 8
Exemplo
Nova base: B = [1, 4, 2] NB = [3, 5]
As colunas da base devem formar uma identidade
pivô Efetuar um pivotamento!!! entra na base sai da base x1 x2 x3 x4 x5 b VB -3 0 0 0 2 f + 8 x3 2 0 1 0 -1 2 x4 0 0 0 1 1 8 x2 -1 1 0 0 1 4
Exemplo
Com essa tabela:
x1 x2 x3 x4 x5 b
VB 0 0 3/2 0 ½ f + 11
x1 1 0 ½ 0 -1/2 1
x4 0 0 0 1 1 8
Exemplo
Como essa tabela: (x3, x5) = (0, 0), (x1, x4,x2 ) = (1, 8, 5) (solução básica) e f = -11.
Atribuindo-se valores positivos a x3 ou x5) a função
objetivo cresce, ou seja, f(x) ≥ -11 para qualquer solução factível x, o que significa que a solução atual é ótima.
Todos os custos relativos são não-negativos → condição de otimalidade foi verificada!!
Base Inicial
Para que o método simplex possa ser aplicado,
precisamos de uma solução básica factível inicial (Fase I)
Até agora supomos que sabemos facilmente
encontrar uma base factível inicial. Isso é verdade, quando todas as restrições forem de ≤. Por exemplo:
Após a introdução das variáveis de folga:
Base Inicial
A matriz dos coeficientes das restrições agora é dada por [A I] e uma partição básica factível é dada por:
Base Inicial
Suponha agora que as restrições são, originalmente,
de igualdade:
Precisamos encontrar uma partição básica factível de A, isto é, uma partição da forma A = [B N] tal que existe B-1 e x
Quantas partições existem?
Seja A10 x 20
Precisamos identificar dez colunas L.I. de A para formar B, e a solução do sistema BxB = b, deve satisfazer xB ≥ 0.
Procedimento possível:
◦ 1. Escolher dez (m) colunas e resolver o sistema. ◦ 2. Verificar se xB ≥ 0.
◦ 3. Se não, escolher outras dez colunas e retornar ao passo 2.
Quantas partições existem?
Se formos testar partição a partição, quantos testes
temos que fazer ?
Método das duas fases
As variáveis de folga foram úteis para a classe de
problemas:
Se não for o caso, podemos introduzir novas
variáveis como se fossem de folga: equivalente a:
uma partição [I N] em que as variáveis de folga começam como as variáveis básicas.
Fase I
Obviamente, essas variáveis não podem aparecer
na solução final (pois elas não existem - são variáveis artificiais).
Método duas-fases: resolvemos primeiro um
problema:
Variáveis artificiais. Não fazem parte do problema original e devem ser
Fase I
Se conseguimos uma solução de custo zero para o
problema acima (fase I), a base final não contém nenhuma variável artificial (por quê ?)
Neste caso, a base final do problema da fase I é
Fase I
E se não conseguimos uma solução de custo zero?
(Isto é, na solução ótima da fase I, existe uma variável artificial na base).
Exemplo
Qual o problema da Fase I a
resolver?
Caso A: introduzimos uma variável artificial pra
cada restrição:
Qual o problema da Fase I a
resolver?
Caso B: note que x4 já fornece uma coluna da
matriz identidade. Assim, a rigor, precisamos apenas de uma variável artificial
Fase I
Uma vez encontrada uma solução básica em que
todas as variáveis artificiais são não-básicas, temos uma base formada por colunas originais e,
portanto, podemos aplicar o método simplex para resolver o problema original a partir dessa base.
Método Simplex duas fases:
◦ Fase I – resolve o problema artificial.
◦ Fase II – resolve o problema original, a partir da base
Exemplo
• Considere o problema:
E o problema artificial definido no caso B em que apenas uma variável artificial é introduzida:
Exemplo
• Para resolver o problema artificial, aplicamos o método simplex:
Exemplo
• Fase II: Aplicar o método simplex a partir da base
obtida na Fase I. A variável artificial é descartada e os índices não-básicos são redefinidos: N1 = 4, N2 = 3.
Base formada por variáveis originais do problema. A variável artificial x5 torna-se não básica. Fim da Fase I.
Método M-grande
Em vez de resolver um problema auxiliar (Fase I)
para encontrar a base, simplesmente penalizamos as variáveis artificiais no problema original (Fase II), de modo a garantir que elas sejam nulas na solução ótima. Um objetivo alternativo para o problema artificial é:
Método M-grande
Valor suficientemente grande para garantir que x5 não aparece na solução ótima.