[Robson] 3. Método Simplex

Preview:

Citation preview

Metodo Simplex

Alexandre Salles da Cunha

DCC-UFMG, Marco 2010

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 ∈ Rm×n, 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 uma

direcao 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 a′ix = 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 = −B−1Aj uma vez que B admite inversa.

Direcao basica

Vamos chamar a direcao basica construıda 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 tivermos−B−1

i d < 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

∂f∂xi

di =∑n

i=1 cidi .

Uma vez que dB = −B−1Aj temos que∑n

i=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 nas

variaveis 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 ′BB−1Aj

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 = [−3

212 ]′.

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 ′BB−1AB(i) = cB(i) − c ′BeB(i),onde eB(i) e um vetor m dimensional com todas as entradas nulas,exceto a B(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 +∑

i∈N Aixi = 0 (N e o conj. dos ındices dasvariaveis nao basicas em x).

Logo dB = −∑

i∈N B−1Aidi

Entao temos:c ′d = c ′BdB +

i∈N cidi =∑

i∈N(ci − c ′BB−1Ai)di =∑

i∈N c idi .

Para qualquer i ∈ N, temos que xi = 0 e entao di = yi − xi ≥ 0.Logo c ′d =

i∈N 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 disponıvel.

Alexandre Salles da Cunha Metodo Simplex

Bases otimas

Definicao

Uma base B e otima se:

1 B−1b ≥ 0 e

2 c ′ = c ′ − c ′BB−1B−1A ≥ 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 inıcio, vamos assumir a hipotese de que todos as solucoes basicasde P = {x ∈ R

n : 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 j−esima direcao basica d , obtida fazendo-se dB = −B−1Aj ,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 θ ≤ − xi

di.

Entao θ∗ = min{− xi

di: dB(i) < 0}

Observe que θ∗ > 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 + c2

2 + c3.

Se c = (2, 0, 0, 0) temos que c3 = −3. A correspondente direcaobasica e (−3

2 , 12 , 1, 0).

Considerando pontos da forma x + θd , θ > 0, a unica componente dex que cai e x1 (note que d1 < 0) e portanto θ∗ = − x1

d1= 2

3 .

O novo ponto obtivo e y = x + 23d = (0, 4

3 , 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(l−1),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 que∑m

i=1 λiAB(i) = 0.

Multiplicando por B−1 temos∑m

i=1 λiB−1AB(i) = 0 e os vetores

B−1AB(i) tambem sao l.d. Vamos mostrar que este nao e o caso.

Observe que B−1B = I . Logo B−1AB(i) = ei , i 6= l (ei denota o vetorde zeros, exceto na i esima entrada, que e 1). Todos os vetoresB−1AB(i) possuem um 0 na l−esima entrada. Logo, B−1AB(i), i 6= lsao l.i..

Por outro lado B−1AB(l) = B−1Aj = −dB .

Por definicao, dB(l) < 0. Logo B−1Aj 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 tıpica do Metodo Simplex, definindoum vetor u = (u1, . . . , um), de forma que u = −dB = B−1Aj , onde Aj

e a coluna que entra na base. Ou seja, ui = −dB(i) : i = 1, . . . ,m.

Alexandre Salles da Cunha Metodo Simplex

Metodo Simplex: Iteracao Tıpica

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 ′BB−1Aj ,∀j ∈ N. Se c ≥ 0,pare, a solucao x e otima. Caso contrario, escolha j ∈ N : c j < 0.

3 Calcule u = B−1Aj . Se u ≤ 0, temos que θ∗ = ∞ e o custo otimo e−∞. Pare, o problema e ilimitado.

4 Se alguma componente de u e positiva, faca θ∗ = mini∈1,...,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 j−esimadirecao 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 saıda 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 − 9x4

x6 = − 0.5x1 + 1.5x2 + 0.5x3 − x4

x7 = 1 − x1

z = + 10x1 − 57x2 − 9x3 − 24x4

Quadro 2, B = {1, 6, 7}, entra x2, sai x6

x1 = + 11x2 + 5x3 − 18x4 − 2x5

x6 = − 4x2 − 2x3 + 8x4 + x5

x7 = 1 − 11x2 − 5x3 + 18x4 + 2x5

z = + 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.25x6

x1 = − 0.5x3 + 4x4 + 0.75x5 − 2.75x6

x7 = 1 + 0.5x3 − 4x4 − 0.75x5 − 13.25x6

z = + 14.5x3 − 98x4 − 6.75x5 − 13.25x6

Quadro 4, B = {2, 3, 7}, entra x4, sai x2

x3 = + 8x4 + 1.5x5 − 5.5x6 − 2x1

x2 = − 2x4 − 0.5x5 + 2.5x6 + x1

x7 = 1 − x1

z = + 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.5x2

x3 = − 0.5x5 + 4.5x6 + 2x1 − 4x2

x7 = 1 − x1

z = + 10.5x5 − 70.5x6 − 20x1 − 9x2

Quadro 6, B = {4, 5, 7}, entra x6, sai x4

x5 = + 9x6 + 4x1 − 8x2 − 2x3

x4 = − x6 − 0.5x1 + 1.5x2 + 0.5x3

x7 = 1 − x1

z = + 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 − x4

x5 = − 0.5x1 + 5.5x2 + 2.5x3 − 9x4

x7 = 1 − x1

z = + 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 menorındice.

Alexandre Salles da Cunha Metodo Simplex

Implementacoes do Simplex

Os vetores B−1Aj sao de fundamental importancia no algoritmo, umavez que com estas informacoes podemos obter:

◮ Custos reduzidos c j = cj − c ′

BB−1Aj

◮ 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 tıpica, conhecemos os ındices B(1), . . . ,B(m) dasvariaveis basicas.

3 Montamos a matriz B e resolvemos o sistema linear p′B = c ′B .

4 O custo reduzido para qualquer coluna j e obtido via c j = cj − p′Aj .

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 (p′B = c ′B e u = B−1Aj): O(m3).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 B−1 e explicitamente mantida em cadaiteracao e os vetores c ′BB−1 e B−1Aj sa determinados viamultiplicacao matricial.

Para ser eficiente, o metodo requer um esquema eficiente deatualizacao de B−1 quando implementarmos uma operacao depivoteamento.

Alexandre Salles da Cunha Metodo Simplex

Simplex Revisado

Base no inıcio da iteracao: B = [AB(1), . . . ,AB(m)]

Base ao fim da iteracao:B = [AB(1), . . . ,AB(l−1),AB(j),AB(l+1), . . . ,AB(m)]

Todas, exceto uma coluna de B e B sao compartilhadas.

Em funcao disto, e razoavel esperar que B−1 contenha informacao

que possa ser usada na determinacao de B−1

.

Alexandre Salles da Cunha Metodo Simplex

Como aproveitar informacoes de B−1 para avaliar B−1

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 j−esima linha de uma matriz por β e adicionar esteproduto a i−esima linha da matriz, equivale a pre mutiplicar a matrizpor Q = I + Dij , onde Dij e uma matriz de zeros, exceto em suaentrada na i−esima linha e j−esima 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:QKQK−1 . . . Q2Q1.

Alexandre Salles da Cunha Metodo Simplex

Aplicando esta ideia no Metodo Simplex

Uma vez que B−1B = I , temos que B−1AB(i) = ei , onde ei e umvetor de zeros exceto pela i−esima entrada que e 1.

Usando esta observacao temos B−1B =

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 −ui

ule somamos a i− esima linha. Observe que ul 6= 0 e entao esta

operacao substitui ui por 0 na correspondente i−esima linha.◮ Dividimos a l− esima linha por ul .

Seja Q o produto destas m operacoes linha elementares. Temos entao

que QB−1B = I , logo B−1

= QB−1.

Alexandre Salles da Cunha Metodo Simplex

Exemplo

Vamos considerar l = 3 (a terceira coluna de B sera alterada paracompor B) e

B−1 =

1 2 3−2 3 14 −3 −2

u =

−422

Entao temos: Q =

1 0 20 1 −1

0 0 12

B−1

=

9 −4 −1−6 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 iteracaotıpica:

Forme a matriz m × (m + 1) dada por: [B−1 | 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 B−1

.

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 - compatıvel 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 ∈ R

n+ : Ax ≤ b} e o vetor b ≥ 0. Neste caso, introduzindo as

variaveis de folga temos P = {(x , s) ∈ (Rn+, Rm

+) : Ax + Is = b} e ovetor (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 tenhamos∑m

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 ∈ Rm×n possui posto m, suas colunas geram o

espaco Rm. Logo, e possıvel escolher outras m − k colunas de A, que

sejam 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 l−esima (l > k) variavel basica seja artificial.Dentre as variaveis xj : j 6∈ {B(1), . . . ,B(m)}, procuramos umacoluna j tal que B−1Aj 6= 0.

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 ∈ R

n : 0 ≤ xi ≤ 1, i = 1 dots, n}. Estes cubo possui 2n

vertices, metade dos quais possuem custo 0 e a outra metade custo−1. 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, 1

2)

ǫ ≤ x1 ≤ 1,

ǫxi−1 ≤ xi ≤ 1 − xi−1, 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,

ǫxi−1 ≤ xi ≤ 1 − xi−1, 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