m´etodo simplex - dccacunha/linear/simplex.pdf · problema de otimizac¸ao convexa (minimizar uma...
TRANSCRIPT
-
Metodo Simplex
Alexandre Salles da Cunha
DCC-UFMG, Marco 2012 - v.02
Alexandre Salles da Cunha Metodo Simplex
-
Ideias centrais do metodo
Se um PL na forma padrao possui uma solucao otima, entao existeuma solucao basica viavel otima para o problema.
O Metodo Simplex baseia-se neste fato. Iniciando em uma solucaobasica viavel, move-se para uma solucao basica vizinha de menorcusto.
Este processo continua ate que uma direcao que permita reduzir afuncao objetivo nao seja encontrada, comprovando a otimalidade dasolucao em maos.
Alexandre Salles da Cunha Metodo Simplex
-
O Problema a ser resolvido
min c x
s.t.: Ax = b
x 0
onde A Rmn, b R
a j-esima coluna de A e designada por Aj
a i -esima linha de A e designada por ai .
Alexandre Salles da Cunha Metodo Simplex
-
Uma ideia muito comum nos algoritmos de otimizacao
Dada uma solucao viavel, procure uma solucao viavel mais barata nasvizinhancas da solucao atual.
Esta procura de solucoes viaveis normalmente e feita tentandomovimentar sobre uma direcao viavel aprimorante.
Se uma direcao aprimorante nao existe, a solucao corrente e umotimo local para o problema (nao necessariamente global).
No caso do PL, todo otimo local e global, uma vez que o PL e uproblema de otimizacao convexa (minimizar uma funcao conexa sobreum conjunto convexo).
O Metodo Simplex explora exatamente esta ideia.
Alexandre Salles da Cunha Metodo Simplex
-
Direcao viavel
Seja x um ponto em um poliedro P . Um vetor d Rn e dito ser umadirecao viavel em x , se existir um escalar positivo para o qualx + d P .
Alexandre Salles da Cunha Metodo Simplex
-
Obtendo uma direcao viavel conveniente
Filosofia para escolha da direcao viavel
Vamos considerar a possibilidade de mover a partir de x para umasolucao basica vizinha (adjacente).
Por definicao, uma solucao basica adjacente a x deve compartilharn 1 restricoes justas, cujos vetores de definicao sao l.i.
Como as restricoes aix = bi ,i = 1, . . . m precisam ser satisfeitas emqualquer solucao viavel, escolhemos uma direcao d para a qualpermitamos acrescer uma unica variavel nao basica.
Logo, para obter uma solucao basica adjacente a x precisarmos nosmovimentar ao longo de uma direcao viavel que permita que apenasuma componente nao basica de x torne-se basica.
Alexandre Salles da Cunha Metodo Simplex
-
Deducao algebrica da direcao
Para os ndices j 6 {B(1), . . . ,B(m)} das componentes nao basicas: dj = 1 para uma unica variavel nao basica dj = 0 para todas as demais variaveis nao basicas. Vamos designar por j o ndice da coluna nao basica liberado para se
tornar basica.
Para os ndices j {B(1), . . . ,B(m)} Uma vez que A(x + d) P para algum > 0, temos que
Ax + Ad = b e entao Ad = 0. Entao: 0 = Ad =
ni=1 Aidi =
mi=1 AB(i)di + Aj = Aj + BdB .
Portanto dB = B1Aj uma vez que B admite inversa.
Direcao basica
Vamos chamar a direcao basica construda acima como a j-esima direcaobasica
Alexandre Salles da Cunha Metodo Simplex
-
E a garantia das restricoes de nao negatividade
Temos que garantir que xB + dB 0:
Apenas uma varivel nao basica, de ndice j , sera aumentada.
Logo temos que nos preocupar apenas com a variacao das variaveisbasicas. Temos dois casos a considerar:
Vamos supor que xB seja nao degenerada. Entao xB > 0 e entao existeum > 0 suficientemente pequeno que garante a viabilidade.
Se xB for degenerada, existe xB(i) = 0 para algumi {B(1), . . . , B(m)}. Neste caso, se para este ndice i tivermosB1i Aj < 0, qualquer movimento no sentido de d faz com que arestricao xB(i) seja violada. Assim sendo, a direcao d neste caso nao eviavel.
Alexandre Salles da Cunha Metodo Simplex
-
Exemplo no caso degenerado onde d nao e viavel
Em E (basica nao degenerada), temos como basicas: x2, x4, x5 e nao basicas: x1, x3.Direcao viavel: segmento EF , que consiste em aumentar x1, mantendo x3 em zero.
Em F (basica degenerada), vamos considerar que as variaveis nao basicas sejam x3, x5.Observe que x4 e basica em 0. Direcao basica: segmento FG , correpondendo a aumentarx3 e manter x5 em zero, e nao e viavel.
Alexandre Salles da Cunha Metodo Simplex
-
Qual o efeito na funcao objetivo de mover ao longo de d
Sendo d a j-esima direcao basica, ao mover no sentido positivo de d ,a taxa de variacao da funcao objetivo e por
ni=1
fxi
di =n
i=1 cidi .
Uma vez que dB = B1Aj temos que
ni=1 cidi = cj cBB
1Aj ,onde cB = (cB(1), . . . , cB(m)).
A parcela cj e a taxa unitaria de variacao por permitir j aumentar. A parcela cBB
1Aj e referente a compensacao das mudancas nasvariaveis basicas, necessaria para garantir a viabilidade, Ax = b.
Definicao
Seja x uma solucao basica, B a base associada a x e cB o vetor de custosdas variaveis basicas. Para todo j = 1, . . . , n, definimos o custo reduzidoc j da variavel xj por meio de :
c j = cj c
BB1Aj
Alexandre Salles da Cunha Metodo Simplex
-
Exemplo
Vamos considerar o seguinte exemplo:
min c1x1 + c2x2 + ccx3 + c4x4
s.t.: x1 + x2 + x3 + x4 = 2
2x1 + 3x3 + 4x4 = 2
x 0
Fazendo B = [A1 A2], temos uma matriz cujas colunas sao l.i.
Fixando x3 = x4 = 0 e resolvendo o sistema, (x1, x2) = (1, 1).
Assumindo que d seja a direcao basica associada a variavel nao basicax3, temos: dB = B
1A3 = [32
12 ]
.
c3 = c3 3c1/2 + c2/2
Alexandre Salles da Cunha Metodo Simplex
-
Custo reduzido para as variaveis basicas
Aplicando a definicao: cB(i) = cB(i) c
BB1AB(i) = cB(i) c
BeB(i),onde eB(i) e um vetor m dimensional com todas as entradas nulas,exceto a i -esima entrada que e 1.
Logo, cB(i) = cB(i) c
BeB(i) = cB(i) cB(i) = 0
Alexandre Salles da Cunha Metodo Simplex
-
Criterio de Otimalidade
Dada nossa interpretacao de custos reduzidos como a taxa de variacao dafuncao objetivo na medida em que movimentamos ao longo de umadirecao, temos o seguinte resultado:
Teorema
Considere uma solucao basica x associada a uma base B. Assuma que cseja o correspondente vetor de custos reduzidos.
1 Se c 0, entao x e uma solucao otima.
2 Se x e otima e nao degenerada, entao c 0.
Alexandre Salles da Cunha Metodo Simplex
-
Prova
Prova
(1):
Vamos assumir c 0 e que y denote uma solucao viavel qualquerpara o problema, para a qual determinamos uma direcao viaveld = y x (e viavel por convexidade !).
A viabilidade de x , y implica que Ax = Ay = b e entao Ad = 0.
Entao Ad = 0 = BdB +
iN Aidi = 0 (N e o conj. dos ndices dasvariaveis nao basicas em x).
Logo dB =
iN B1Aidi
Entao temos:c d = c BdB +
iN cidi =
iN(ci c
BB1Ai)di =
iN c idi .
Para qualquer i N, temos que xi = 0 e entao di = yi xi 0.Logo c d =
iN c idi 0
Alexandre Salles da Cunha Metodo Simplex
-
Prova
Prova
(2), por contradicao:
Suponha que x seja uma solucao basica viavel otima, nao degeneradae que exista j : c j < 0.
Entao j necessariamente deve ser ndice de uma variavel nao basica,uma vez que c i = 0,i {B(1), . . . ,B(m)}.
Considere a direcao basica j, d. Esta direcao e necessariamente viaveldado que x e nao degenerada.
Entao existe > 0 tal que x + d e uma solucao viavel. Por outrolado c (x + d) = c x + c d < c x, contrariando a hipotese de que xe otima.
Alexandre Salles da Cunha Metodo Simplex
-
Observacoes
Uma solucao otima x pode ser tal que o custo reduzido de algumavariavel nao basica e negativo.
De acordo com o teorema para decidir se uma solucao basica viavelnao degenerada x e otima, precisamos verificar os custos reduzidos desuas n m componentes nao basicas.
No caso de uma solucao basica degenerada, um teste igualmentesimples nao e disponvel. Embora possamos estar no vertice otimo,precisamos de uma caracterizacao de otimalidade que depende dabase.
Alexandre Salles da Cunha Metodo Simplex
-
Bases otimas
Definicao
Uma base B e otima se:
1 B1b 0 e
2 c = c c BB1B1A 0.
Observe que, diante desta definicao:
Se uma base otima B e encontrada, a solucao basica associada eviavel, satisfaz as condicoes de otimalidade e portanto e otima.
Por outro lado uma solucao basica viavel otima degenerada naonecessariamente garante custos reduzidos nao negativos.
Vale lembrar que mais de uma base podem ser associadas a mesmasolucao basica (no caso degenerado).
Alexandre Salles da Cunha Metodo Simplex
-
Desenvolvimento do metodo
De incio, vamos assumir a hipotese de que todos as solucoes basicasde P = {x Rn : Ax = b, x 0} sao nao degeneradas.
Em seguida relaxaremos esta hipotese.
Alexandre Salles da Cunha Metodo Simplex
-
Desenvolvimento do Metodo
Vamos supor que estejamos em um ponto x , solucao basica viavelnao degenerada de P e que tenhamos avaliado os custos reduzidos deforma que c j 0 : j 6 {B(1), . . . ,B(m)}. Entao, pelo resultadoanterior, concluimos que x resolve o PL.
Caso contrario, existe j 6 {B(1), . . . ,B(m)} : c j < 0.
Entao a jesima direcao basica d , obtida fazendo-se dB = B1Aj ,
dj = 1 e dk = 0,k 6 {j ,B(1), . . . ,B(m)} e uma direcao viavel, dereducao de custo.
Movendo ao longo de d , a partir de x , a componente xj torna-sepositiva, as componentes xk : k 6 {j ,B(1), . . . ,B(m)} permanecemem 0 e as variaveis basicas sao alteradas.
Uma vez que d e uma direcao de aprimoramento de custos, edesejavel nos mover o quanto pudermos ao longo desta direcao.
Alexandre Salles da Cunha Metodo Simplex
-
Garantindo a satisfacao das restricoes de nao negatividade
x() = x + d , 0
O maximo que podemos andar na direcao d e dado por = max{ 0 : x + d P}.
Dado que Ad = 0, Ax() = b e precisamos verificar apenas asrestricoes de nao negatividade.
Se d 0, x() 0 e entao = .
Caso contrario, existe i {B(1), . . . ,B(m)} : di < 0. Para garantirxi + di 0 temos que
xidi
.
Entao = min{ xidi
: di < 0} = mini=1,...,m,dB(i) 0 como consequencia da nao degeneracao de x .
Alexandre Salles da Cunha Metodo Simplex
-
O novo ponto obtido
Assumindo que e finito, y = x() = x + d .
Entao:
yj = xj + =
xB(l)dB(l)
, onde l {B(1), . . . ,B(m)} denota o ndice da
variavel basica que definiu .
Todas as componentes basicas de x , pelo modo como e definidocontinuam nao negativas.
Em particular, para l temos:
yB(l) = xB(l) + dB(l) = xB(l) xB(l)
dB(l)dB(l) = 0
o que sugere que a coluna Aj substitua a coluna AB(l) na base, umavez que houve uma troca das restricoes de nao negatividade queficaram justas.
Alexandre Salles da Cunha Metodo Simplex
-
Exemplo - continuacao
Considerando a solucao basica x = (1, 1, 0, 0) e lembrando quec3 = 3c1 +
c22 + c3.
Se c = (2, 0, 0, 0) temos que c3 = 3. A correspondente direcaobasica e (32 ,
12 , 1, 0).
Considerando pontos da forma x + d , > 0, a unica componente dex que cai e x1 (note que d1 < 0) e portanto
= x1d1
= 23 .
O novo ponto obtivo e y = x + 23d = (0,43 ,
23 , 0).
Observe que as novas colunas associadas as variaveis basicas (x2, x3)sao l.i..
Alexandre Salles da Cunha Metodo Simplex
-
A nova base
A nova base B e dada por:
B = [AB(1), . . . ,AB(l1),AB(j),AB(l+1), . . . ,AB(m)]
Equivalentemente, o novo conjunto de variaveis basicas e
{B(1), . . . ,B(l 1),B(j),B(l + 1), . . . ,B(m)}
Mais formalmente:
Teorema1 As colunas AB(i) : i 6= l e Aj sao linearmente independentes e, assim,
B e uma matriz basica.
2 O vetor y = x + d e a solucao basica associada a B.
Alexandre Salles da Cunha Metodo Simplex
-
Prova
Prova
(1): por contradicao:
Vamos supor que os vetores AB(i) sejam l.d. Entao, existem
coeficientes 1, . . . , m, nao todos nulos, tais quem
i=1 iAB(i) = 0.
Multiplicando por B1 temosm
i=1 iB1AB(i) = 0 e os vetores
B1AB(i) tambem sao l.d. Vamos mostrar que este nao e o caso.
Observe que B1B = I . Logo B1AB(i) = ei , i 6= l (ei denota o vetorde zeros, exceto na i esima entrada, que e 1). Todos os vetoresB1AB(i) possuem um 0 na lesima entrada. Logo, B
1AB(i), i 6= lsao l.i..
Por outro lado B1AB(l) = B1Aj = dB .
Por definicao, dB(l) < 0. Logo B1Aj e B
1AB(i), i 6= l sao l.i..
Logo, B e uma base.
Alexandre Salles da Cunha Metodo Simplex
-
Prova
Prova
(2):
Temos que y 0,Ay = b.
Alem disto yi = 0,i 6 {B(i), . . . ,B(i)}.
Acabamos de mostrar que AB(i), . . . ,AB(i) sao l.i..
Portanto, segue que y e uma solucao basica associada a B
Alexandre Salles da Cunha Metodo Simplex
-
Observacoes
Uma vez que > 0, segue que y e uma solucao basica distinta de x ,uma vez que d e uma direcao de reducao de custos e entao c y < c x .
Em parte, cumprimos nosso proposito inicial de mover para umasolucao basica adjacente, de menor custo.
Vamos enunciar uma iteracao tpica do Metodo Simplex, definindoum vetor u = (u1, . . . , um), de forma que u = dB = B
1Aj , onde Aje a coluna que entra na base. Ou seja, ui = dB(i) : i = 1, . . . ,m.
Alexandre Salles da Cunha Metodo Simplex
-
Metodo Simplex: Iteracao Tpica
1 Inicie a iteracao com as colunas basicas B(1), . . . ,B(m) e a solucaobasica viavel associada x . Seja N o conjunto dos ndices das variaveisnao basicas.
2 Calcule os custos reduzidos c j = cj c
BB1Aj ,j N. Se c 0,
pare, a solucao x e otima. Caso contrario, escolha j N : c j < 0.
3 Calcule u = B1Aj . Se u 0, temos que = e o custo otimo e
. Pare, o problema e ilimitado.
4 Se alguma componente de u e positiva, faca = mini1,...,m:ui>0xB(i)ui
.
Seja l tal que =xB(l)ul
.
5 Forme uma nova base substituindo AB(l) por Aj . Denote por y a novasolucao basica viavel. Entao yj =
e yB(i) = xB(i) ui , i 6 l .
Alexandre Salles da Cunha Metodo Simplex
-
Na ausencia de degeneracao, O Metodo Simplex converge
Teorema
Assuma que o conjunto de solucoes viaveis do PL e nao vazio e que todasolucao basica e nao degenerada. Entao, o Metodo Simplex termina aposum numero finito de iteracoes. Ao final, temos duas possibilidades:
1 Dispomos de uma base otima B e a correspondente solucao basicaotima.
2 Encontramos um vetor d : Ad = 0, d 0 e c d < 0. Portanto o custootimo e .
Alexandre Salles da Cunha Metodo Simplex
-
Prova
Prova
Se o algoritmo termina no passo 2, as condicoes de otimalidadepropostas previamente foram satisfeitas e B e uma base otima.
Se o algoritmo termina no passo 3, estamos em uma solucao basica xe descobrimos uma variavel nao basica xj tal que c j < 0. A jesimadirecao basica j satisfaz Ad = 0, d 0. Em particular temos quex + d P para tao grande quanto queiramos. Uma vez quec d = c j , o custo pode ser feito tao negativo quanto queiramos.
Em cada iteracao do algoritmo, nos movemos uma quantidade > 0ao longo de uma direcao basica d satisfazendo c d < 0. Assim sendo,a cada iteracao o custo diminui e portanto nao visitamos a mesmasolucao basica mais de uma vez.
Como o numero de solucoes basicas e finito, o algoritmo entaotermina.
Alexandre Salles da Cunha Metodo Simplex
-
Metodo Simplex para problemas degenerados
Vamos considerar a partir de agora, como se comporta o algoritmodescrito anteriormente, diante da degeneracao:
1 Se a solucao basica corrente x for degenerada, pode ser nulo, casoxB(l) = 0 e dB(l) < 0. Por este motivo, a nova solucao obtida y e
identica a x . Ainda assim, podemos definir uma nova matriz B com aentrada da coluna Aj e a sada de AB(l) de forma que B sera umabase.
2 Mesmo se > 0, pode acontecer de mais de uma variavel basica setornar zero no novo ponto x + d . Uma vez que apenas uma destasvariaveis basicas que se tornou nula saira da base para a entrada dacoluna Aj , a nova solucao encontrada y = x +
d sera degenerada.
Alexandre Salles da Cunha Metodo Simplex
-
Efeito da degeneracao
As mudancas de base associadas a mesma solucao basica podem, emalguns casos, nao ser inuteis, levando a descobrir uma direcao basicade reducao de custo.
Por outro lado, uma sequencia de mudancas de base associadas aomesmo ponto x pode levar a repeticao das colunas associadas arepresentacao da base, ocasionando a ciclagem.
Para problemas altamente estruturados (fluxo em redes, etc) apossibilidade nao e remota.
A ciclagem pode ser evitada atraves do uso de regras adequadas dequais variaveis entrarao e/ou sairao da base.
Alexandre Salles da Cunha Metodo Simplex
-
Ilustracao dos dois casos em uma solucao degenerada
Neste exemplo temos n m = 2. Vale observar a solucao degenerada x .
Alexandre Salles da Cunha Metodo Simplex
-
O Metodo Simplex pode nao terminar ?
Quadro 1, B = {5, 6, 7}, entra x1, sai x5
x5 = 0.5x1 + 5.5x2 + 2.5x3 9x4x6 = 0.5x1 + 1.5x2 + 0.5x3 x4x7 = 1 x1z = + 10x1 57x2 9x3 24x4
Quadro 2, B = {1, 6, 7}, entra x2, sai x6
x1 = + 11x2 + 5x3 18x4 2x5x6 = 4x2 2x3 + 8x4 + x5x7 = 1 11x2 5x3 + 18x4 + 2x5z = + 53x2 + 41x3 204x4 20x5
Alexandre Salles da Cunha Metodo Simplex
-
O Metodo Simplex pode nao terminar ?
Quadro 3, B = {1, 2, 7}, entra x3, sai x1
x2 = 0.5x3 + 2x4 + 0.25x5 0.25x6x1 = 0.5x3 + 4x4 + 0.75x5 2.75x6x7 = 1 + 0.5x3 4x4 0.75x5 13.25x6z = + 14.5x3 98x4 6.75x5 13.25x6
Quadro 4, B = {2, 3, 7}, entra x4, sai x2
x3 = + 8x4 + 1.5x5 5.5x6 2x1x2 = 2x4 0.5x5 + 2.5x6 + x1x7 = 1 x1z = + 18x4 + 15x5 93x6 29x1
Alexandre Salles da Cunha Metodo Simplex
-
O Metodo Simplex pode nao terminar ?
Quadro 5, B = {3, 4, 7}, entra x5, sai x3
x4 = 0.25x5 + 1.25x6 + 0.5x1 0.5x2x3 = 0.5x5 + 4.5x6 + 2x1 4x2x7 = 1 x1z = + 10.5x5 70.5x6 20x1 9x2
Quadro 6, B = {4, 5, 7}, entra x6, sai x4
x5 = + 9x6 + 4x1 8x2 2x3x4 = x6 0.5x1 + 1.5x2 + 0.5x3x7 = 1 x1z = + 24x6 + 22x1 93x2 21x3
Alexandre Salles da Cunha Metodo Simplex
-
O Metodo Simplex pode nao terminar ? Sim, caso cicle.
O proximo quadro e igual ao quadro inicial !
Quadro 7, B = {5, 6, 7}, entra x1, sai x5
x6 = 0.5x1 + 1.5x2 + 0.5x3 x4x5 = 0.5x1 + 5.5x2 + 2.5x3 9x4x7 = 1 x1z = + 10x1 57x2 9x3 24x4
Alexandre Salles da Cunha Metodo Simplex
-
Possibilidades para implementar o pivoteamento
Ate o momento, nao particularizamos regra alguma para escolher asregras de pivoteamento, isto e, escolher qual variavel entra e sai dabase. Em particular, na descricao que apresentamos do Metodo Simplex,temos flexibilidade quanto a escolha de:
1 Qual coluna nao basica com custo reduzido e negativo deve ser eleitapara entrar na base;
2 Diante de mais de uma variavel que definam , qual escolher paradeixar a base.
Alexandre Salles da Cunha Metodo Simplex
-
Algumas provaveis candidatas a regras de pivotemento :
Escolher para entrar na base, a coluna nao basica Aj que possui ocusto reduzido c j mais negativo.
Escoher para entrar na base, a coluna nao basica Aj que promova omaior reducao na funcao objetivo, isto e c j . Esta regra podeacelerar a queda da funcao objetivo, mais paga-se maior precocomputacional, para se avaliar o associado a entrada de cadacoluna que possua c j . A experiencia computacional existe sugere queo tempo global de cpu nao decresce com a adocao desta estrategia.
Mesmo a primeira estrategia acima pode ser muito cara paraproblemas de larga escala (requer que todas as colunas tenham seuscustos reduzidos avaliados). Assim sendo, uma regra simples consistena regra de escolher a coluna com custo reduzido negativo, de menorndice.
Alexandre Salles da Cunha Metodo Simplex
-
Implementacoes do Simplex
Os vetores B1Aj sao de fundamental importancia no algoritmo, umavez que com estas informacoes podemos obter:
Custos reduzidos c j = cj c
BB1Aj
A direcao de busca d O valor de
Por este motivo, a diferenca entre as implementacoes alternativas doMetodo Simplex residem em como esta informacao e calculada equais informacoes sao preservadas de iteracao para iteracao.
Dado que B e uma matriz m m temos: Custo de resolver Bx = b: O(m3) Custo de efetuar a mutiplicacao Bb: O(m2) Custo de calcular o produto interno de dois vetores m dimensionais:
O(m).
Alexandre Salles da Cunha Metodo Simplex
-
Implmentacao Inocente
1 Nenhuma informacao adicional sera transportada de iteracao paraiteracao no metodo.
2 Em cada iteracao tpica, conhecemos os ndices B(1), . . . ,B(m) dasvariaveis basicas.
3 Montamos a matriz B e resolvemos o sistema linear pB = c B .
4 O custo reduzido para qualquer coluna j e obtido via c j = cj pAj .
5 Dependendo da regra de pivoteamento adotado, podemos evitarcalcular todos os custos reduzidos.
6 Uma vez que escolhemos a coluna Aj para entrar na base, resolvemosBu = Aj (ou u = B
1Aj).
7 A partir de entao, podemos calcular e definir qual variavel saira dabase.
Alexandre Salles da Cunha Metodo Simplex
-
Implementacao inocente - complexidade computacional
Resolver os sistemas lineares (pB = c B e u = B1Aj): O(m
3).Dependendo da estrutura da matriz B , este custo pode ser reduzidosensivelmente (exemplo: Problemas de Fluxo em Redes)
Calculo do custo reduzido para todas as colunas: O(mn)
Custo total por iteracao: O(nm + m3).
Veremos como fazer a iteracao a um custo de O(m2 + mn)
Alexandre Salles da Cunha Metodo Simplex
-
Simplex Revisado
Boa parte do custo computacional por iteracao e relacionado aresolucao de dois sistemas lineares.
Neste metodo, a matriz B1 e explicitamente mantida em cadaiteracao e os vetores c BB
1 e B1Aj sa determinados viamultiplicacao matricial.
Para ser eficiente, o metodo requer um esquema eficiente deatualizacao de B1 quando implementarmos uma operacao depivoteamento.
Alexandre Salles da Cunha Metodo Simplex
-
Simplex Revisado
Base no incio da iteracao: B = [AB(1), . . . ,AB(m)]
Base ao fim da iteracao:B = [AB(1), . . . ,AB(l1),AB(j),AB(l+1), . . . ,AB(m)]
Todas, exceto uma coluna de B e B sao compartilhadas.
Em funcao disto, e razoavel esperar que B1 contenha informacao
que possa ser usada na determinacao de B1
.
Alexandre Salles da Cunha Metodo Simplex
-
Como aproveitar informacoes de B1 para avaliar B1
Definicao
Dada uma matriz, nao necessariamente quadrada, a operacao de adicionarum multiplo de uma linha a mesma linha ou a outra linha da matriz echamada de operacao linha elementar (nao muda as informacoes dossistemas lineares representados pela matriz).
Exemplo
Digamos que queiramos multiplicar a terceira linha da matriz C abaixo por2 para somar a primeira linha da matriz. Isto equivale a multiplicar C pelamatriz Q dada abaixo.
C =
1 23 45 6
Q =
1 0 20 1 00 0 1
QC =
11 143 45 6
Alexandre Salles da Cunha Metodo Simplex
-
Generalizando este exemplo
Multiplicar a jesima linha de uma matriz por e adicionar esteproduto a iesima linha da matriz, equivale a pre mutiplicar a matrizpor Q = I + Dij , onde Dij e uma matriz de zeros, exceto em suaentrada na iesima linha e jesima coluna que e .
Observe que a matriz Q possui determinante 1 e entao admite inversa.
Suponha que queiramos fazer uma sequencia de K operacoes linhaelementares, cada qual correspondento a pre-multiplicacao por umamatriz Qk correspondente. Esta sequencia de operacoes consiste empre multiplicar a matriz sobre a qual sao feitas as operacoes por:QKQK1 . . . Q2Q1.
Alexandre Salles da Cunha Metodo Simplex
-
Aplicando esta ideia no Metodo Simplex
Uma vez que B1B = I , temos que B1AB(i) = ei , onde ei e umvetor de zeros exceto pela iesima entrada que e 1.
Usando esta observacao temos B1B =
1 u1. . .
...ul...
. . .
um 1
Para transformar a matriz acima na identidade: Para cada i 6= l , adicionamos o produto da l esima linha (linha pivot)
por uiul
e somamos a i esima linha. Observe que ul 6= 0 e entao estaoperacao substitui ui por 0 na correspondente iesima linha.
Dividimos a l esima linha por ul .
Seja Q o produto destas m operacoes linha elementares. Temos entao
que QB1B = I , logo B1
= QB1.
Alexandre Salles da Cunha Metodo Simplex
-
Exemplo
Vamos considerar l = 3 (a terceira coluna de B sera alterada paracompor B) e
B1 =
1 2 32 3 14 3 2
u =
422
Entao temos: Q =
1 0 20 1 1
0 0 12
B1
=
9 4 16 6 3
2 1.5 1
Alexandre Salles da Cunha Metodo Simplex
-
Metodo Simplex Revisado
Vamos adicionar o seguinte passo ao final da quinta operacao na iteracaotpica:
Forme a matriz m (m + 1) dada por: [B1 | u].Faca as operacoes linha elementares necessarias para transformar aultima coluna desta matriz no vetor unitario el .
As primeiras m colunas da matriz resultante fornece B1
.
Observe que recalcular a inversa da base agora custa O(m2). Desta forma,apenas na primeira inversao da base, pagamos o O(m3). Desta forma,reduzimos o custo de cada iteracao para O(nm + m2)
Alexandre Salles da Cunha Metodo Simplex
-
Regras anti-ciclagem
Regra lexicografica, adequada a implementacao da versao Full tableimplementation que, por ter o comportamento assintotico pior que aversao do Simplex Revisado, nao sera discutida.
Regra de Bland - compatvel com a implementacao do SimplexRevisado.
Alexandre Salles da Cunha Metodo Simplex
-
Regra de Bland
Pivoteamento de Bland1 Encontre o menor ndice j para o qual o custo reduzido c j e negativo.
2 Dentre as variaveis basicas xi que se anularem primeiro com oincremento da variavel xj (para as quais houver empate nadeterminacao de ), escolha aquela com o menor ndice i .
Observacoes:
Esta regra nao nos obriga a calcular todos os custos reduzidos.
E compatvel com a implementacao do Simplex Revisado, na qual oscustos reduzidos sao calculados na ordem natural das variaveis.
Diante desta regra e provado que nao pode haver ciclagem e oMetodo Simplex converge apos um numerol finito de mudancas debase.
Alexandre Salles da Cunha Metodo Simplex
-
Encontrando uma base inicial viavel
No Metodo Simplex, assumimos dispor de uma solucao basica viavelinicial. Nao descrevemos ainda como obter esta solucao.
Em alguns casos, encontrar esta solucao e trivial. Exemplo:P = {x Rn+ : Ax b} e o vetor b 0. Neste caso, introduzindo asvariaveis de folga temos P = {(x , s) (Rn+, R
m+) : Ax + Is = b} e o
vetor (x , s) = (0, b) e uma solucao basica viavel.
De um modo geral, encontrar esta solucao nao e tao trivial,requerendo a solucao de um problema linear auxiliar (Fase 1).
Alexandre Salles da Cunha Metodo Simplex
-
Construcao de um problema auxiliar
Problema Original
min c x
Ax = b
x 0
Assumimos sem perda de generalidade que b 0 (caso contrario,multiplicamos alguma linha do sistema linear por 1)
Alexandre Salles da Cunha Metodo Simplex
-
Construcao de um problema auxiliar - Fase 1
Problema Auxiliar (PA)
minm
i=1
yi
Ax + y = b
x 0
y 0
Introduzimos as variaveis artificiais y Rm+.
Uma solucao basica inicial para o Prob. Auxiliar e dada por(x , y) = (0, b).
Resolvemos PA. Se a funcao objetivo otima for 0 sabemos que hasolucao viavel para o problem original. Caso contrario, o problemaoriginal e inviavel.
Como obter a solucao basica inicial para o problema original ?
Alexandre Salles da Cunha Metodo Simplex
-
Obtendo uma solucao viavel inicial a partir de PA
Para iniciar o Metodo Simplex, necessitamos de uma solucao basica iniciale a matriz basica associada. Vamos assumir que no otimo de PA tenhamosm
j=1 yj = 0 (prob. original e viavel).
Analisando a solucao do PA:
1 Se ao final da resolucao de PA as colunas basicas na solucao otimaforem exclusivamente as variaveis x , basta tomarmos esta solucaocomo uma sol. basica viavel inicial (e as correspondentes colunascompondo a base) para iniciar o problema original.
2 Se existirem variaveis yj basicas (necessariamente degeneradas) nasolucao otima de PA, devemos fazer operacoes de pivoteamentoforcado para remove-las da base.
Alexandre Salles da Cunha Metodo Simplex
-
Eliminando as variaveis y para fora da base
Vamos supor (como de costume) que posto(A) = m.
Vamos assumir que k < m colunas de A aparecem na base otima dePA. Os ndices das variaveis basicas associadas a estas colunas saoB1, . . . ,Bk
Vale observar que as colunas AB(1), . . . ,AB(k) sao linearmenteindependentes, uma vez que estao na base.
Como a matriz A Rmn possui posto m, suas colunas geram oespaco Rm. Logo, e possvel escolher outras m k colunas de A, quesejam linearmente independentes a AB(1), . . . ,AB(k).
Vamos identificar estas colunas, eliminando as colunas associadas a yda base.
Alexandre Salles da Cunha Metodo Simplex
-
Eliminando as variaveis artificiais
Vamos supor que a lesima (l > k) variavel basica seja artificial.Dentre as variaveis xj : j 6 {B(1), . . . ,B(m)}, procuramos umacoluna j tal que a lesima entrada de B1Aj seja nao nula.
Claramente Aj e l.i. com AB(1), . . . ,AB(k) (por que ?)
Entao fazemos um pivoteamento forcado, no qual trazemos a colunaAj para a base e eliminados a coluna da variavel artificial da base.
Repetimos o processo enquanto houver colunas basicas associadas avariaveis artificiais.
Alexandre Salles da Cunha Metodo Simplex
-
Complexidade computacional do metodo simplex
A complexidade do metodo Simplex depende:
1 da complexidade computacional em cada iteracao (O(nm), porexemplo, no caso do Simplex Revisado)
2 do numero de iteracoes, ou operacoes de pivoteamento.
Na pratica: ao longo dos anos observou-se que o metodonormalmente executa O(m) operacoes de pivoteamento na media.
Pior caso: esta observacao que ocorre na pratica nao e verdadeirapara qualquer Programa Linear e qualquer regra de pivoteamento. Haexemplos de problemas nao degenerados nos quais o metodo percorretodos os vertices do poliedro ate encontrar a solucao otima.
Alexandre Salles da Cunha Metodo Simplex
-
Complexidade no pior caso
Vamos considerar o problema de minimizar xn sobre o cuboP = {x Rn : 0 xi 1, i = 1, . . . , n}. Estes cubo possui 2
n
vertices, metade dos quais possuem custo 0 e a outra metade custo1. Assim sendo, a funcao objetivo nao pode decrescermonotonicamente ao longo das iteracoes do Simplex.
Por este motivo, vamos perturbar o cubo, mantendo o numero devertices, impondo as seguintes restricoes, para (0, 12)
x1 1,
xi1 xi 1 xi1, i = 2, . . . , n
de forma a criar uma sequencia de vertices adjacentes para os quais afuncao objetivo seja reduzida quando nos movemos de um vertice para ooutro.
Alexandre Salles da Cunha Metodo Simplex
-
Criamos um caminho que percorre todos os vertices
Existe uma regra de pivoteamento que faz o metodo percorrer todos osvertices (ver a prova em Papadimitrou e Steiglitz, pp. 166-170).
min xn
x1 1,
xi1 xi 1 xi1, i = 2, . . . , n
Alexandre Salles da Cunha Metodo Simplex
-
Existe regra de pivoteamento imune a esta patologia ?
Questao em aberto
Para varias regras populares de pivotemento, ha exemplos como oindicado anteriormente, que fazem o metodo percorrer todos osvertices.
Entretanto, estes exemplos nao excluem a possibilidade de existir umaregra de pivotemento que nao apresente o comportamento de piorcaso exponencial.
Esta e uma das questoes mais importantes em Teoria de ProgramacaoLinear, ainda em aberto.
O fato e que nao se conhece uma regra de pivoteamento imune a estapatologia.
O Problema de Programacao Linear e polinomialmente soluvel(Algoritmo do Elipsoide).
Alexandre Salles da Cunha Metodo Simplex