m´etodo simplex - dccacunha/linear/simplex.pdf · problema de otimizac¸ao convexa (minimizar uma...

Download M´etodo Simplex - DCCacunha/linear/simplex.pdf · problema de otimizac¸ao convexa (minimizar uma func¸ao conexa sobre um conjunto convexo). O M´etodo Simplex explora exatamente

If you can't read please download the document

Upload: truongcong

Post on 06-Feb-2018

220 views

Category:

Documents


2 download

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