M´todo Simplex
            e

       Alexandre Salles da Cunha


       DCC-UFMG, Mar¸o 2010
                    c




Alexandre Salles da Cunha   M´todo Simplex
                             e
Id´ias centrais do m´todo
  e                 e



    Se um PL na forma padr˜o possui uma solu¸˜o otima, ent˜o existe
                            a                  ca ´       a
    uma solu¸˜o b´sica vi´vel ´tima para o problema.
            ca a         a o
    O M´todo Simplex baseia-se neste fato. Iniciando em uma solu¸˜o
         e                                                       ca
    b´sica vi´vel, move-se para uma solu¸˜o b´sica vizinha de menor
     a       a                          ca a
    custo.
    Este processo continua at´ que uma dire¸˜o que permita reduzir a
                              e            ca
    fun¸˜o objetivo n˜o seja encontrada, comprovando a otimalidade da
       ca            a
    solu¸˜o em m˜os.
        ca        a




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
O Problema a ser resolvido




                             min       c ′x
                            s.t.:       Ax = b
                                          x ≥ 0


   onde A ∈ Rm×n , b ∈ R
   a j-´sima coluna de A ´ designada por Aj
       e                 e
   a i -´sima linha de A ´ designada por ai .
        e                e




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
Uma id´ia muito comum nos algoritmos de otimiza¸˜o
      e                                        ca


   Dada uma solu¸˜o vi´vel, procure uma solu¸˜o vi´vel mais barata nas
                  ca    a                   ca    a
   vizinhan¸as da solu¸˜o atual.
           c          ca
   Esta procura de solu¸˜es vi´veis normalmente ´ feita tentando
                       co     a                 e
   movimentar sobre uma dire¸˜o vi´vel aprimorante.
                              ca    a
   Se uma dire¸˜o aprimorante n˜o existe, a solu¸˜o corrente ´ um
               ca               a               ca           e
   o
   ´timo local para o problema (n˜o necess´riamente global).
                                 a        a
   No caso do PL, todo ´timo local ´ global, uma vez que o PL ´ u
                       o           e                          e
   problema de otimiza¸˜o convexa (minimizar uma fun¸˜o conexa sobre
                      ca                              ca
   um conjunto convexo).
   O M´todo Simplex explora exatamente esta id´ia.
      e                                       e




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Dire¸˜o vi´vel
    ca a

Seja x um ponto em um poliedro P. Um vetor d ∈ Rn ´ dito ser uma
                                                         e
dire¸˜o vi´vel em x, se existir um escalar positivo θ para o qual
    ca    a
x + θd ∈ P.




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
Obtendo uma dire¸˜o vi´vel conveniente
                ca a


Filosofia para escolha da dire¸˜o vi´vel
                             ca    a
    Vamos considerar a possibilidade de mover a partir de x para uma
    solu¸˜o b´sica vizinha (adjacente).
        ca a
    Por defini¸˜o, uma solu¸˜o b´sica adjacente a x deve compartilhar
              ca             ca a
    n − 1 restri¸˜es justas, cujos vetores de defini¸˜o s˜o l.i.
                co                                 ca a
    Como as restri¸˜es ai′ x = bi , ∀i = 1, . . . m precisam ser satisfeitas em
                  co
    qualquer solu¸˜o vi´vel, escolhemos uma dire¸˜o d para a qual
                 ca    a                               ca
    permitamos acrescer uma unica vari´vel n˜o b´sica.
                               ´           a       a a
    Logo, para obter uma solu¸˜o b´sica adjacente a x precisarmos nos
                             ca a
    movimentar ao longo de uma dire¸˜o vi´vel que permita que apenas
                                    ca    a
    uma componente n˜o b´sica de x torne-se b´sica.
                      a a                     a



                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Dedu¸˜o alg´brica da dire¸˜o
    ca     e             ca

    Para os ´
            ındices j ∈ {B(1), . . . , B(m)} das componentes n˜o b´sicas:
                                                              a a
      ◮   dj = 1 para uma ´nica vari´vel n˜o b´sica
                           u        a     a a
      ◮   dj = 0 para todas as demais vari´veis n˜o b´sicas.
                                          a      a a
      ◮   Vamos designar por j o ´
                                 ındice da coluna n˜o b´sica liberado para se
                                                    a a
          tornar b´sica.
                  a

    Para os ´
            ındices j ∈ {B(1), . . . , B(m)}
      ◮   Uma vez que A(x + θd) ∈ P para algum θ > 0, temos que
          Ax + θAd = b e ent˜o Ad = 0.
                            a
      ◮   Ent˜o: 0 = Ad = n=1 Ai di = m AB(i ) di + Aj = Aj + BdB .
             a              i            i =1
      ◮   Portanto dB = −B −1 Aj uma vez que B admite inversa.


Dire¸˜o b´sica
    ca a
Vamos chamar a dire¸˜o b´sica constru´ acima como a j-´sima dire¸˜o
                   ca a              ıda              e         ca
b´sica
 a

                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
E a garantia das restri¸˜es de n˜o negatividade
                       co       a


Temos que garantir que xB + θdB ≥ 0:

    Apenas uma vari´el n˜o b´sica, de ´
                   v    a a           ındice j, ser´ aumentada.
                                                   a
    Logo temos que nos preocupar apenas com a varia¸˜o das vari´veis
                                                   ca          a
    b´sicas. Temos dois casos a considerar:
     a
      ◮   Vamos supor que xB seja n˜o degenerada. Ent˜o xB > 0 e ent˜o existe
                                        a                   a                a
          um θ > 0 suficientemente pequeno que garante a viabilidade.
      ◮   Se xB for degenerada, existe xB(i ) = 0 para algum
          i ∈ {B(1), . . . , B(m)}. Neste caso, se para este ´ındice i tivermos
          −Bi−1 d < 0, qualquer movimento no sentido de d faz com que a
          restri¸˜o xB(i ) seja violada. Assim sendo, a dire¸˜o d neste caso n˜o ´
                ca                                          ca                  a e
          vi´vel.
            a




                     Alexandre Salles da Cunha   M´todo Simplex
                                                  e
Exemplo no caso degenerado onde d n˜o ´ vi´vel
                                   a e a
   Em E (b´sica n˜o degenerada), temos como b´sicas: x2 , x4 , x5 e n´o b´sicas: x1 , x3 .
           a       a                            a                    a a
   Dire¸ao vi´vel: segmento EF , que consiste em aumentar x1 , mantendo x3 em zero.
       c˜    a
   Em F (b´sica degenerada), vamos considerar que as vari´veis n˜o b´sicas sejam x3 , x5 .
           a                                             a        a a
   Observe que x4 ´ b´sica em 0. Dire¸ao b´sica: segmento FG , correpondendo a aumentar
                   e a                c˜ a
   x3 e manter x5 em zero, ´ n˜o ´ vi´vel.
                           e a e a




                     Alexandre Salles da Cunha   M´todo Simplex
                                                  e
Qual o efeito na fun¸˜o objetivo de mover ao longo de d
                    ca

    Sendo d a j-´sima dire¸˜o b´sica, ao mover no sentido positivo de d,
                e          ca a
    a taxa de varia¸˜o da fun¸˜o objetivo ´ por n=1 ∂xi di = n=1 ci di .
                   ca        ca           e      i
                                                     ∂f
                                                                i
                                                            n
    Uma vez que dB = −B −1 Aj temos que                     i =1 ci di   = cj − cB B −1 Aj ,
    onde cB = (cB(1) , . . . , cB(m) ).
       ◮   A parcela cj ´ a taxa unit´ria de varia¸˜o por permitir j aumentar.
                         e            a           ca
       ◮   A parcela −cB B −1 Aj ´ referente a compensa¸˜o das mudan¸as nas
                                  e                       ca             c
           vari´veis b´sicas, necess´ria para garantir a viabilidade, Ax = b.
               a      a             a

Defini¸˜o
     ca
Seja x uma solu¸˜o b´sica, B a base associada a x e cB o vetor de custos
                  ca a
das vari´veis b´sicas. Para todo j = 1, . . . , n, definimos o custo reduzido
         a      a
c j da vari´vel xj por meio de :
           a

                                 c j = cj − cB B −1 Aj
                                             ′



                     Alexandre Salles da Cunha   M´todo Simplex
                                                  e
Exemplo

Vamos considerar o seguinte exemplo:


               min        c1 x1 + c2 x2 + cc x3 + c4 x4
              s.t.:                    x1 + x2 + x3 + x4 = 2
                                         2x1 + 3x3 + 4x4 = 2
                                                      x ≥0

    Fazendo B = [A1 A2 ], temos uma matriz cujas colunas s˜o l.i.
                                                          a
    Fixando x3 = x4 = 0 e resolvendo o sistema, (x1 , x2 ) = (1, 1).
    Assumindo que d seja a dire¸˜o b´sica associada a vari´vel n˜o b´sica
                               ca a                       a     a a
    x3 , temos: dB = −B −1 A3 = [− 3 2 ]′ .
                                   2
                                     1

    c 3 = c3 − 3c1 /2 + c2 /2


                      Alexandre Salles da Cunha   M´todo Simplex
                                                   e
Custo reduzido para as vari´veis b´sicas
                           a      a




    Aplicando a defini¸˜o: c B(i ) = cB(i ) − cB B −1 AB(i ) = cB(i ) − cB eB(i ) ,
                       ca                     ′                         ′

    onde eB(i ) ´ um vetor m dimensional com todas as entradas nulas,
                e
    exceto a B(i )-´sima entrada que ´ 1.
                   e                  e
                              ′
    Logo, c B(i ) = cB(i ) − cB eB(i ) = cB(i ) − cB(i ) = 0




                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Crit´rio de Otimalidade
    e


Dada nossa interpreta¸˜o de custos reduzidos como a taxa de varia¸˜o da
                     ca                                          ca
fun¸ao objetivo na medida em que movimentamos ao longo de uma
    c˜
dire¸˜o, temos o seguinte resultado:
    ca


Teorema
Considere uma solu¸˜o b´sica x associada a uma base B. Assuma que c
                   ca a
seja o correspondente vetor de custos reduzidos.
  1   Se c ≥ 0, ent˜o x ´ uma solu¸˜o ´tima.
                   a    e         ca o
  2   Se x ´ ´tima e n˜o degenerada, ent˜o c ≥ 0.
           eo         a                 a




                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Prova

Prova
(1):
       Vamos assumir c ≥ 0 e que y denote uma solu¸˜o vi´vel qualquer
                                                   ca    a
       para o problema, para a qual determinamos uma dire¸˜o vi´vel
                                                         ca    a
       d = y − x (´ vi´vel por convexidade !).
                   e a
       A viabilidade de x, y implica que Ax = Ay = b e ent˜o Ad = 0.
                                                          a
       Ent˜o Ad = 0 = BdB + i ∈N Ai xi = 0 (N ´ o conj. dos ´
           a                                  e             ındices das
       vari´veis n˜o b´sicas em x).
           a      a a
       Logo dB = −         i ∈N   B −1 Ai di
       Ent˜o temos:
            a
       c ′ d = cB dB +
                ′
                            i ∈N ci di   =       i ∈N (ci   − cB B −1 Ai )di =
                                                               ′
                                                                                 i ∈N   c i di .
       Para qualquer i ∈ N, temos que xi = 0 e ent˜o di = yi − xi ≥ 0.
                                                  a
       Logo c ′d =
                     i ∈N c i di ≥ 0


                         Alexandre Salles da Cunha    M´todo Simplex
                                                       e
Prova


Prova
(2), por contradi¸˜o:
                 ca
    Suponha que x seja uma solu¸˜o b´sica vi´vel ´tima, n˜o degenerada
                               ca a         a o          a
    e que exista j : c j < 0.
    Ent˜o j necessariamente deve ser ´
       a                               ındice de uma vari´vel n˜o b´sica,
                                                         a     a a
    uma vez que c i = 0, ∀i ∈ {B(1), . . . , B(m)}.
    Considere a dire¸˜o b´sica j, d. Esta dire¸˜o ´ necessariamente vi´vel
                    ca a                      ca e                    a
    dado que x ´ n˜o degenerada.
                e a
    Ent˜o existe θ > 0 tal que x + θd ´ uma solu¸˜o vi´vel. Por outro
        a                                    e           ca   a
    lado c ′ (x + θd) = c ′ x + θc ′ d < c ′ x, contrariando a hip´tese de que x
                                                                  o
    ´ ’otima.
    e



                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Observa¸˜es
       co




   Uma solu¸˜o ´tima x pode ser tal que o custo reduzido de alguma
             ca o
   vari´vel n˜o b´sica ´ negativo.
       a     a a       e
   De acordo com o teorema para decidir se uma solu¸˜o b´sica vi´vel
                                                    ca a         a
   n˜o degenerada x ´ ´tima, precisamos verificar os custos reduzidos de
    a               eo
   suas n − m componentes n˜o b´sicas.
                            a a
   No caso de uma solu¸˜o b´sica degenerada, um teste igualmente
                       ca a
   simples n˜o ´ dispon´
            a e        ıvel.




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Bases ´timas
      o


Defini¸˜o
     ca
Uma base B ´ ´tima se:
           eo
  1   B −1 b ≥ 0 e
  2   c ′ = c ′ − cB B −1 B −1 A ≥ 0.
                   ′


Observe que, diante desta defini¸˜o:
                               ca
      Se uma base ´tima B ´ encontrada, a solu¸˜o b´sica associada ´
                     o        e                   ca a                 e
      vi´vel, satisfaz as condi¸˜es de otimalidade e portanto ´ ´tima.
        a                      co                             eo
      Por outro lado uma solu¸˜o b´sica vi´vel ´tima degenerada n˜o
                             ca a         a o                    a
      necessariamente garante custos reduzidos n˜o negativos.
                                                a
      Vale lembrar que mais de uma base podem ser associadas ` mesma
                                                             a
      solu¸˜o b´sica (no caso degenerado).
          ca a


                      Alexandre Salles da Cunha   M´todo Simplex
                                                   e
Desenvolvimento do m´todo
                    e




   De in´
        ıcio, vamos assumir a hip´tese de que todos as solu¸˜es b´sicas
                                 o                         co    a
   de P = {x ∈ Rn : Ax = b, x ≥ 0} s˜o n˜o degeneradas.
                                      a a

   Em seguida relaxaremos esta hip´tese.
                                  o




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Desenvolvimento do M´todo
                    e

   Vamos supor que estejamos em um ponto x, solu¸˜o b´sica vi´vel
                                                       ca a         a
   n˜o degenerada de P e que tenhamos avaliado os custos reduzidos de
    a
   forma que c j ≥ 0 : ∀j ∈ {B(1), . . . , B(m)}. Ent˜o, pelo resultado
                                                     a
   anterior, concluimos que x resolve o PL.
   Caso contr´rio, existe j ∈ {B(1), . . . , B(m)} : c j < 0.
             a
   Ent˜o a j−´sima dire¸˜o b´sica d, obtida fazendo-se dB = −B −1 Aj ,
      a       e         ca a
   dj = 1 e dk = 0, ∀k ∈ {j, B(1), . . . , B(m)} ´ uma dire¸˜o vi´vel, de
                                                 e         ca    a
   redu¸˜o de custo.
       ca
   Movendo ao longo de d, a partir de x, a componente xj torna-se
   positiva, as componentes xk : k ∈ {j, B(1), . . . , B(m)} permanecem
   em 0 e as vari´veis b´sicas s˜o alteradas.
                  a     a       a
   Uma vez que d ´ uma dire¸˜o de aprimoramento de custos, ´
                  e         ca                               e
   desej´vel nos mover o quanto pudermos ao longo desta dire¸˜o.
        a                                                   ca

                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Garantindo a satisfa¸˜o das restri¸˜es de n˜o negatividade
                    ca            co       a


                             x(θ) = x + θd, θ ≥ 0

    O m´ximo que podemos andar na dire¸˜o d ´ dado por
         a                            ca    e
    θ ∗ = max{θ ≥ 0 : x + θd ∈ P}.

    Dado que Ad = 0, Ax(θ) = b e precisamos verificar apenas as
    restri¸˜es de n˜o negatividade.
          co       a
    Se d ≥ 0, x(θ) ≥ 0 e ent˜o θ ∗ = ∞.
                            a
    Caso contr´rio, existe i ∈ {B(1), . . . , B(m)} : di < 0. Para garantir
              a
                                   x
    xi + θdi ≥ 0 temos que θ ≤ − dii .
                      x
    Ent˜o θ ∗ = min{− dii : dB(i ) < 0}
       a
    Observe que θ ∗ > 0 como consequˆncia da n˜o degenera¸˜o de x.
                                    e         a          ca


                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
O novo ponto obtido

Assumindo que θ ∗ ´ finito, y = x(θ ∗ ) = x + θ ∗ d.
                  e

Ent˜o:
   a
                        x
    yj = xj + θ ∗ = − dB(l ) , onde l ∈ {B(1), . . . , B(m)} denota o ´
                       B(l )
                                                                      ındice da
    vari´vel b´sica que definiu θ
        a     a                     ∗.

    Todas as componentes b´sicas de x, pelo modo como θ ∗ ´ definido
                           a                              e
    continuam n˜o negativas.
               a
    Em particular, para l temos:
                                                             xB(l)
                 yB(l) = xB(l) + θdB(l) = xB(l) −                  d    =0
                                                             dB(l) B(l)

    o que sugere que a coluna Aj substitua a coluna AB(l) na base, uma
    vez que houve uma troca das restri¸˜es de n˜o negatividade que
                                      co        a
    ficaram justas.

                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Exemplo - continua¸˜o
                  ca


   Considerando a solu¸˜o b´sica x = (1, 1, 0, 0) e lembrando que
                      ca a
                c2
   c 3 = −3c1 + 2 + c3 .

   Se c = (2, 0, 0, 0) temos que c 3 = −3. A correspondente dire¸˜o
                                                                ca
               3 1
   b´sica ´ (− 2 , 2 , 1, 0).
    a     e

   Considerando pontos da forma x + θd, θ > 0, a unica componente de
                                                   ´
                                                       x
   x que cai ´ x1 (note que d1 < 0) e portanto θ ∗ = − d1 = 2 .
             e                                           1  3

   O novo ponto obtivo ´ y = x + 2 d = (0, 3 , 2 , 0).
                       e         3
                                           4
                                               3

   Observe que as novas colunas associadas `s vari´veis b´sicas (x2 , x3 )
                                           a      a      a
   s˜o l.i..
    a



                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
A nova base


     A nova base B ´ dada por:
                   e

              B = [AB(1) , . . . , AB(l−1) , AB(j) , AB(l+1) , . . . , AB(m) ]

     Equivalentemente, o novo conjunto de vari´veis b´sicas ´
                                              a      a      e

                {B(1), . . . , B(l − 1), B(j), B(l + 1), . . . , B(m)}

Mais formalmente:
Teorema
 1   As colunas AB(i ) : i = l e Aj s˜o linearmente independentes e, assim,
                                     a
     B ´ uma matriz b´sica.
       e                a
 2   O vetor y = x + θ ∗ d ´ a solu¸˜o b´sica associada a B.
                           e       ca a


                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Prova

Prova
(1): por contradi¸˜o:
                 ca
    Vamos supor que os vetores AB(i ) sejam l.d. Ent˜o, existem
                                                             a
    coeficientes λ1 , . . . , λm , n˜o todos nulos, tais que m λi AB(i ) = 0.
                                   a                             i =1
                             −1 temos    m
    Multiplicando por B                  i =1 λi B −1 AB(i ) = 0 e os vetores
    B −1 AB(i ) tamb´m s˜o l.d. Vamos mostrar que este n˜o ´ o caso.
                    e        a                                     a e
    Observe que B −1 B = I . Logo B −1 AB(i ) = ei , i = l (ei denota o vetor
    de zeros, exceto na i´sima entrada, que ´ 1). Todos os vetores
                         e                   e
    B −1 AB(i ) possuem um 0 na l −´sima entrada. Logo, B −1 AB(i ) , i = l
                                   e
    s˜o l.i..
     a
    Por outro lado B −1 AB(l) = B −1 Aj = −dB .
    Por defini¸˜o, dB(l) < 0. Logo B −1 Aj e B −1 AB(i ) , i = l s˜o l.i..
             ca                                                  a
    Logo, B ´ uma base.
            e

                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Prova




Prova
(2):
       Temos que y ≥ 0, Ay = b.
       Al´m disto yi = 0, ∀i ∈ {B(i ), . . . , B(i )}.
         e
       Acabamos de mostrar que AB(i ) , . . . , AB(i ) s˜o l.i..
                                                        a
       Portanto, segue que y ´ uma solu¸˜o b´sica associada a B
                             e         ca a




                       Alexandre Salles da Cunha   M´todo Simplex
                                                    e
Observa¸˜es
       co



   Uma vez que θ ∗ > 0, segue que y ´ uma solu¸˜o b´sica distinta de x,
                                    e         ca a
   uma vez que d ´ uma dire¸˜o de redu¸˜o de custos e ent˜o c ′ y < c ′ x.
                 e          ca         ca                a

   Em parte, cumprimos nosso prop´sito inicial de mover para uma
                                   o
   solu¸˜o b´sica adjacente, de menor custo.
       ca a

   Vamos enunciar uma itera¸˜o t´ ca ıpica do M´todo Simplex, definindo
                                                 e
   um vetor u = (u1 , . . . , um ), de forma que u = −dB = B −1 Aj , onde Aj
   ´ a coluna que entra na base. Ou seja, ui = −dB(i ) : i = 1, . . . , m.
   e




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
M´todo Simplex: Itera¸˜o T´
 e                   ca ıpica

 1   Inicie a itera¸˜o com as colunas b´sicas B(1), . . . , B(m) e a solu¸˜o
                   ca                  a                                  ca
     b´sica vi´vel associada x. Seja N o conjunto dos ´
      a        a                                          ındices das vari´veis
                                                                          a
     n˜o b´sicas.
      a a
 2   Calcule os custos reduzidos c j = cj − cB B −1 Aj , ∀j ∈ N. Se c ≥ 0,
                                              ′

     p´re, a solu¸˜o x ´ ´tima. Caso contr´rio, escolha j ∈ N : c j < 0.
      a          ca    eo                   a
 3   Calcule u = B −1 Aj . Se u ≤ 0, temos que θ ∗ = ∞ e o custo ´timo ´
                                                                 o     e
     −∞. P´re, o problema ´ ilimitado.
            a                 e
                                                                            xB(i )
 4   Se alguma componente de u ´ positiva, fa¸a θ ∗ = mini ∈1,...,m:ui >0
                                   e         c                               ui .
     Seja l tal que θ ∗ = xB(l ) .
                           ul

 5   Forme uma nova base substituindo AB(l) por Aj . Denote por y a nova
     solu¸˜o b´sica vi´vel. Ent˜o yj = θ ∗ e yB(i ) = xB(i ) − θ ∗ ui , i l .
         ca a         a        a


                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Na ausˆncia de degenera¸˜o, O M´todo Simplex converge
      e                ca      e



Teorema
Assuma que o conjunto de solu¸˜es vi´veis do PL ´ n˜o vazio e que toda
                              co    a           e a
solu¸˜o b´sica ´ n˜o degenerada. Ent˜o, o M´todo Simplex termina ap´s
    ca a       e a                  a       e                       o
um n´mero finito de itera¸˜es. Ao final, temos duas possibilidades:
     u                   co
  1   Dispomos de uma base ´tima B e a correspondente solu¸˜o b´sica
                           o                              ca a
      o
      ´tima.
  2   Encontramos um vetor d : Ad = 0, d ≥ 0 e c ′ d < 0. Portanto o custo
      o
      ´timo ´ −∞.
            e




                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Prova

Prova
   Se o algoritmo termina no passo 2, as condi¸˜es de otimalidade
                                              co
   propostas previamente foram satisfeitas e B ´ uma base ´tima.
                                               e          o
   Se o algoritmo termina no passo 3, estamos em uma solu¸˜o b´sica x
                                                                ca a
   e descobrimos uma vari´vel n˜o b´sica xj tal que c j < 0. A j−´sima
                             a      a a                             e
   dire¸˜o b´sica j satisfaz Ad = 0, d ≥ 0. Em particular temos que
         ca a
   x + θd ∈ P para θ t˜o grande quanto queiramos. Uma vez que
                           a
   c ′ d = c j , o custo pode ser feito t˜o negativo quanto queiramos.
                                         a
   Em cada itera¸˜o do algoritmo, nos movemos uma quantidade θ ∗ > 0
                  ca
   ao longo de uma dire¸˜o b´sica d satisfazendo c ′ d < 0. Assim sendo,
                        ca a
   a cada itera¸˜o o custo diminui e portanto n˜o visitamos a mesma
               ca                              a
   solu¸˜o b´sica mais de uma vez.
       ca a
   Como o n´mero de solu¸˜es b´sicas ´ finito, o algoritmo ent˜o
            u           co    a      e                       a
   termina.

                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
M´todo Simplex para problemas degenerados
 e

Vamos considerar a partir de agora, como se comporta o algoritmo
descrito anteriormente, diante da degenera¸˜o:
                                          ca

  1   Se a solu¸˜o b´sica corrente x for degenerada, θ ∗ pode ser nulo, caso
               ca a
      xB(l) = 0 e dB(l) < 0. Por este motivo, a nova solu¸˜o obtida y ´
                                                          ca           e
      idˆntica a x. Ainda assim, podemos definir uma nova matriz B com a
        e
      entrada da coluna Aj e a sa´ de AB(l) de forma que B ser´ uma
                                  ıda                             a
      base.

  2   Mesmo se θ ∗ > 0, pode acontecer de mais de uma vari´vel b´sica se
                                                              a     a
      tornar zero no novo ponto x + θ ∗ d. Uma vez que apenas uma destas
      vari´veis b´sicas que se tornou nula sair´ da base para a entrada da
          a      a                             a
      coluna Aj , a nova solu¸˜o encontrada y = x + θ ∗ d ser´ degenerada.
                             ca                              a



                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Efeito da degenera¸˜o
                  ca


   As mudan¸as de base associadas ` mesma solu¸ao b´sica podem, em
             c                        a           c˜ a
   alguns casos, n˜o ser in´teis, levando a descobrir uma dire¸˜o b´sica
                  a        u                                  ca a
   de redu¸˜o de custo.
          ca

   Por outro lado, uma sequˆncia de mudan¸as de base associadas ao
                            e              c
   mesmo ponto x pode levar ` repeti¸˜o das colunas associadas `
                              a      ca                        a
   representa¸˜o da base, ocasionando a ciclagem.
             ca

   Para problemas altamente estruturados (fluxo em redes, etc) a
   possibilidade n˜o ´ remota.
                  a e

   A ciclagem pode ser evitada atrav´s do uso de regras adequadas de
                                      e
   quais vari´veis entrar˜o e/ou sair˜o da base.
             a           a           a



                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Ilustra¸˜o dos dois casos em uma solu¸˜o degenerada
       ca                            ca
Neste exemplo temos n − m = 2. Vale observar a solu¸˜o degenerada x.
                                                   ca




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
O M´todo Simplex pode n˜o terminar ?
   e                   a

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    M´todo Simplex
                                                   e
O M´todo Simplex pode n˜o terminar ?
   e                   a

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     M´todo Simplex
                                                      e
O M´todo Simplex pode n˜o terminar ?
   e                   a

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     M´todo Simplex
                                                       e
O M´todo Simplex pode n˜o terminar ? Sim, caso cicle.
   e                   a



O pr´ximo quadro ´ igual ao quadro inicial !
    o            e

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    M´todo Simplex
                                                  e
Possibilidades para implementar o pivoteamento



At´ o momento, n˜o particularizamos regra alguma para escolher as
  e               a
regras de pivoteamento, isto ´, escolher qual vari´vel entra e sai da
                                e                 a
base. Em particular, na descri¸˜o que apresentamos do M´todo Simplex,
                              ca                         e
temos flexibilidade quanto ` escolha de:
                          a

  1   Qual coluna n˜o b´sica com custo reduzido ´ negativo deve ser eleita
                    a a                         e
      para entrar na base;

  2   Diante de mais de uma vari´vel que definam θ ∗ , qual escolher para
                                a
      deixar a base.




                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Algumas prov´veis candidatas a regras de pivotemento :
            a


   Escolher para entrar na base, a coluna n˜o b´sica Aj que possui o
                                           a a
   custo reduzido c j mais negativo.
   Escoher para entrar na base, a coluna n˜o b´sica Aj que promova o
                                            a a
   maior redu¸˜o na fun¸˜o objetivo, isto ´ θ ∗c j . Esta regra pode
              ca         ca                e
   acelerar a queda da fun¸˜o objetivo, mais paga-se maior pre¸o
                           ca                                     c
   computacional, para se avaliar o θ ∗ associado a entrada de cada
   coluna que possua c j . A experiˆncia computacional existe sugere que
                                   e
   o tempo global de cpu n˜o decresce com a ado¸˜o desta estrat´gia.
                            a                        ca              e
   Mesmo a primeira estrat´gia acima pode ser muito cara para
                           e
   problemas de larga escala (requer que todas as colunas tenham seus
   custos reduzidos avaliados). Assim sendo, uma regra simples consiste
   na regra de escolher a coluna com custo reduzido negativo, de menor
   ´
   ındice.


                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Implementa¸˜es do Simplex
          co

   Os vetores B −1 Aj s˜o de fundamental importˆncia no algoritmo, uma
                       a                       a
   vez que com estas informa¸˜es podemos obter:
                              co
     ◮   Custos reduzidos c j = cj − cB B −1 Aj
                                      ′

     ◮   A dire¸˜o de busca d
               ca
     ◮   O valor de θ∗

   Por este motivo, a diferen¸a entre as implementa¸˜es alternativas do
                             c                     co
   M´todo Simplex residem em como esta informa¸˜o ´ calculada e
     e                                            ca e
   quais informa¸˜es s˜o preservadas de itera¸˜o para itera¸˜o.
                co    a                      ca            ca

   Dado que B ´ uma matriz m × m temos:
              e
     ◮   Custo de resolver Bx = b: O(m3 )
     ◮   Custo de efetuar a mutiplica¸˜o Bb: O(m2 )
                                     ca
     ◮   Custo de calcular o produto interno de dois vetores m dimensionais:
         O(m).


                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Implmenta¸˜o Inocente
         ca

 1   Nenhuma informa¸˜o adicional ser´ transportada de itera¸˜o para
                      ca             a                      ca
     itera¸˜o no m´todo.
          ca      e
 2   Em cada itera¸˜o t´
                    ca ıpica, conhecemos os ´
                                            ındices B(1), . . . , B(m) das
     vari´veis b´sicas.
         a      a
 3   Montamos a matriz B e resolvemos o sistema linear p ′ B = cB .
                                                                ′

 4   O custo reduzido para qualquer coluna j ´ obtido via c j = cj − p ′ Aj .
                                             e
 5   Dependendo da regra de pivoteamento adotado, podemos evitar
     calcular todos os custos reduzidos.
 6   Uma vez que escolhemos a coluna Aj para entrar na base, resolvemos
     Bu = Aj (ou u = B −1 Aj ).
 7   A partir de ent˜o, podemos calcular θ ∗ e definir qual vari´vel sair´ da
                    a                                          a        a
     base.


                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Implementa¸˜o inocente - complexidade computacional
          ca



   Resolver os sistemas lineares (p ′ B = cB e u = B −1 Aj ): O(m3 ).
                                           ′

   Dependendo da estrutura da matriz B, este custo pode ser reduzido
   sensivelmente (exemplo: Problemas de Fluxo em Redes)

   C´lculo do custo reduzido para todas as colunas: O(mn)
    a

   Custo total por itera¸˜o: O(nm + m3 ).
                        ca

   Veremos como fazer a itera¸˜o a um custo de O(m2 + mn)
                             ca




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Simplex Revisado



   Boa parte do custo computacional por itera¸˜o ´ relacionado `
                                             ca e              a
   resolu¸˜o de dois sistemas lineares.
         ca

   Neste m´todo, a matriz B −1 ´ explicitamente mantida em cada
            e                     e
   itera¸˜o e os vetores cB B −1 e B −1 Aj s˜ determinados via
        ca                ′                 a
   multiplica¸˜o matricial.
              ca

   Para ser eficiente, o m´todo requer um esquema eficiente de
                         e
   atualiza¸˜o de B
           ca       −1 quando implementarmos uma opera¸˜o de
                                                        ca
   pivoteamento.




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Simplex Revisado




   Base no in´ da itera¸˜o: B = [AB(1) , . . . , AB(m) ]
             ıcio      ca
   Base ao fim da itera¸˜o: ca
   B = [AB(1) , . . . , AB(l−1) , AB(j) , AB(l+1) , . . . , AB(m) ]
   Todas, exceto uma coluna de B e B s˜o compartilhadas.
                                      a
   Em fun¸˜o disto, ´ razo´vel esperar que B −1 contenha informa¸˜o
          ca        e     a                                     ca
                                             −1
   que possa ser usada na determina¸˜o de B .
                                    ca




                     Alexandre Salles da Cunha   M´todo Simplex
                                                  e
−1
Como aproveitar informa¸˜es de B −1 para avaliar B
                       co

Defini¸˜o
     ca
Dada uma matriz, n˜o necessariamente quadrada, a opera¸ao de adicionar
                     a                                  c˜
um m´ltiplo de uma linha ` mesma linha ou a outra linha da matriz ´
      u                    a                                      e
chamada de opera¸˜o linha elementar (n˜o muda as informa¸˜es dos
                   ca                   a                  co
sistemas lineares representados pela matriz).

Exemplo
Digamos que queiramos multiplicar a terceira linha da matriz C abaixo por
2 para somar ` primeira linha da matriz. Isto equivale a multiplicar C pela
             a
matriz Q dada abaixo.
                                                          
                  1 2            1 0 2                 11 14
          C =  3 4  Q =  0 1 0  QC =  3 4 
                  5 6            0 0 1                  5 6


                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Generalizando este exemplo



   Multiplicar a j−´sima linha de uma matriz por β e adicionar este
                    e
   produto ` i −´sima linha da matriz, equivale a pr´ mutiplicar a matriz
            a e                                     e
   por Q = I + Dij , onde Dij ´ uma matriz de zeros, exceto em sua
                              e
   entrada na i −´sima linha e j−´sima coluna que ´ β.
                  e              e                  e
   Observe que a matriz Q possui determinante 1 e ent˜o admite inversa.
                                                     a
   Suponha que queiramos fazer uma sequˆncia de K opera¸˜es linha
                                            e                co
   elementares, cada qual correspondento a pr´-multiplica¸˜o por uma
                                                e          ca
   matriz Qk correspondente. Esta sequˆncia de opera¸˜es consiste em
                                         e              co
   pr´ multiplicar a matriz sobre a qual s˜o feitas as opera¸˜es por:
     e                                    a                 co
   QK QK −1 . . . Q2 Q1 .




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
Aplicando esta id´ia no M´todo Simplex
                 e       e

   Uma vez que B −1 B = I , temos que B −1 AB(i ) = ei , onde ei ´ um
                                                                 e
   vetor de zeros exceto pela i −´sima entrada que ´ 1.
                                 e                  e
                                                                    
                                              1         u1
                                                  ..      .
                                                     . .
                                                                    
                                            
                                                         .          
                                                                     
   Usando esta observa¸˜o temos B
                        ca           −1 B =             ul          
                                                          . ..
                                                                    
                                            
                                                         .
                                                          .    .
                                                                     
                                                                     
                                                        um         1
   Para transformar a matriz acima na identidade:
     ◮   Para cada i = l, adicionamos o produto da l− ´sima linha (linha pivot)
                                                       e
         por −ui e somamos ` i− ´sima linha. Observe que ul = 0 e ent˜o esta
              ul             a     e                                   a
         opera¸˜o substitui ui por 0 na correspondente i−´sima linha.
               ca                                        e
     ◮   Dividimos a l− ´sima linha por ul .
                         e
   Seja Q o produto destas m opera¸˜es linha elementares. Temos ent˜o
                                   co                              a
   que QB −1 B = I , logo B −1 = QB −1 .


                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Exemplo



   Vamos considerar l = 3 (a terceira         coluna de B ser´ alterada para
                                                             a
   compor B) e
                                                       
                            1     2           3        −4
                  −1
                B =      −2 3                1 u =  2 
                            4 −3              −2        2
                                             
                      1 0  2          9  −4 −1
                                −1
   Ent˜o temos: Q =  0 1 −1  B =  −6
      a                                    6  3 
                           1
                      0 0  2          2 −1.5 −1




                 Alexandre Salles da Cunha   M´todo Simplex
                                              e
M´todo Simplex Revisado
 e


Vamos adicionar o seguinte passo ao final da quinta opera¸˜o na itera¸˜o
                                                        ca          ca
t´
 ıpica:

    Forme a matriz m × (m + 1) dada por: [B −1 | u].
    Fa¸a as opera¸˜es linha elementares necess´rias para transformar a
       c         co                            a
    ultima coluna desta matriz no vetor unit´rio el .
    ´                                       a
                                                          −1
    As primeiras m colunas da matriz resultante fornece B .


Observe que recalcular a inversa da base agora custa O(m2 ). Desta forma,
apenas na primeira invers˜o da base, pagamos o O(m3 ). Desta forma,
                         a
reduzimos o custo de cada itera¸˜o para O(nm + m2 )
                                ca



                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Regras anti-ciclagem




    Regra lexicogr´fica, adequada ` implementa¸˜o da vers˜o Full table
                  a               a            ca       a
    implementation que, por ter o comportamento assint´tico pior que a
                                                      o
    vers˜o do Simplex Revisado, n˜o ser´ discutida.
        a                        a     a

    Regra de Bland - compat´ com a implementa¸˜o do Simplex
                           ıvel              ca
    Revisado.




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
Regra de Bland

Pivoteamento de Bland
  1   Encontre o menor ´
                       ındice j para o qual o custo reduzido c j ´ negativo.
                                                                 e
  2   Dentre as vari´veis b´sicas xi que se anularem primeiro com o
                    a       a
      incremento da vari´vel xj (para as quais houver empate na
                         a
      determina¸˜o de θ ∗ ), escolha aquela com o menor ´
               ca                                        ındice i .

Observa¸˜es:
       co
      Esta regra n˜o nos obriga a calcular todos os custos reduzidos.
                  a
      ´
      E compat´el com a implementa¸˜o do Simplex Revisado, na qual os
                v                    ca
      custos reduzidos s˜o calculados na ordem natural das vari´veis.
                        a                                      a
      Diante desta regra ´ provado que n˜o pode haver ciclagem e o
                         e              a
      M´todo Simplex converge ap´s um n´merol finito de mudan¸as de
        e                         o       u                     c
      base.

                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Encontrando uma base inicial vi´vel
                               a


No M´todo Simplex, assumimos dispor de uma solu¸˜o b´sica vi´vel
       e                                           ca a     a
inicial. N˜o descrevemos ainda como obter esta solu¸ao.
          a                                         c˜

    Em alguns casos, encontrar esta solu¸˜o ´ trivial. Exemplo:
                                         ca e
    P ′ = {x ∈ Rn : Ax ≤ b} e o vetor b ≥ 0. Neste caso, introduzindo as
                  +
                                              n    m
    vari´veis de folga temos P = {(x, s) ∈ (R+ , R+ ) : Ax + Is = b} e o
        a
    vetor (x, s) = (0, b) ´ uma solu¸˜o b´sica vi´vel.
                          e         ca a         a

    De um modo geral, encontrar esta solu¸˜o n˜o ´ t˜o trivial,
                                         ca a e a
    requerendo a solu¸˜o de um problema linear auxiliar (Fase 1).
                     ca




                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
Constru¸˜o de um problema auxiliar
       ca



Problema Original

                              min               c ′x
                                        Ax = b
                                           x ≥0

Assumimos sem perda de generalidade que b ≥ 0 (caso contr´rio,
                                                         a
multiplicamos alguma linha do sistema linear por −1)




                    Alexandre Salles da Cunha      M´todo Simplex
                                                    e
Constru¸˜o de um problema auxiliar - Fase 1
       ca
Problema Auxiliar (PA)

                                              m
                        min                          yi
                                              i =1
                                   Ax + y = b
                                              x ≥0
                                              y ≥0

    Introduzimos as vari´veis artificiais y ∈ Rm +.
                           a
    Uma solu¸˜o b´sica inicial para o Prob. Auxiliar ´ dada por
               ca a                                  e
    (x, y ) = (0, b).
    Resolvemos PA. Se a fun¸˜o objetivo ´tima for 0 sabemos que h´
                             ca            o                         a
    solu¸˜o vi´vel para o problem original. Caso contr´rio, o problema
         ca    a                                      a
    original ´ invi´vel.
             e     a
    Como obter a solu¸˜o b´sica inicial para o problema original ?
                         ca a
                  Alexandre Salles da Cunha       M´todo Simplex
                                                   e
Obtendo uma solu¸˜o vi´vel inicial a partir de PA
                ca a

Para iniciar o M´todo Simplex, necessitamos de uma solu¸˜o b´sica inicial
                 e                                     ca a
e a matriz b´sica associada. Vamos assumir que no ´timo de PA tenhamos
             a                                    o
   m
   j=1 yj = 0 (prob. original ´ vi´vel).
                              e a


Analisando a solu¸˜o do PA:
                 ca
  1   Se ao final da resolu¸˜o de PA as colunas b´sicas na solu¸ao ´tima
                          ca                      a            c˜ o
      forem exclusivamente as vari´veis x, basta tomarmos esta solu¸˜o
                                  a                                 ca
      como uma sol. b´sica vi´vel inicial (e as correspondentes colunas
                      a       a
      compondo a base) para iniciar o problema original.
  2   Se existirem vari´veis yj b´sicas (necessariamente degeneradas) na
                       a         a
      solu¸˜o ´tima de PA, devemos fazer opera¸˜es de pivoteamento
           ca o                                   co
      for¸ado para removˆ-las da base.
         c                e


                    Alexandre Salles da Cunha   M´todo Simplex
                                                 e
Eliminando as vari´veis y para fora da base
                  a


    Vamos supor (como de costume) que posto(A) = m.
    Vamos assumir que k < m colunas de A aparecem na base ´tima de    o
    PA. Os ´     ındices das vari´veis b´sicas associadas a estas colunas s˜o
                                 a      a                                  a
    B1 , . . . , Bk
    Vale observar que as colunas AB(1) , . . . , AB(k) s˜o linearmente
                                                        a
    independentes, uma vez que est˜o na base.
                                  a
    Como a matriz A ∈ Rm×n possui posto m, suas colunas geram o
    espa¸o Rm . Logo, ´ poss´ escolher outras m − k colunas de A, que
        c             e     ıvel
    sejam linearmente independentes a AB(1) , . . . , AB(k) .
    Vamos identificar estas colunas, eliminando as colunas associadas a y
    da base.


                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Eliminando as vari´veis artificiais
                  a



    Vamos supor que a l −´sima (l > k) vari´vel b´sica seja artificial.
                            e                    a     a
    Dentre as vari´veis xj : j ∈ {B(1), . . . , B(m)}, procuramos uma
                  a
    coluna j tal que B −1 Aj = 0.

    Claramente Aj ´ l.i. com AB(1) , . . . , AB(k) (por quˆ ?)
                  e                                       e

    Ent˜o fazemos um pivoteamento for¸ado, no qual trazemos a coluna
       a                                c
    Aj para a base e eliminados a coluna da vari´vel artificial da base.
                                                a

    Repetimos o processo enquanto houver colunas b´sicas associadas a
                                                  a
    vari´veis artificiais.
        a




                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Complexidade computacional do m´todo simplex
                               e


A complexidade do m´todo Simplex depende:
                   e
 1   da complexidade computacional em cada itera¸˜o (O(nm), por
                                                ca
     exemplo, no caso do Simplex Revisado)
 2   do n´mero de itera¸˜es, ou opera¸˜es de pivoteamento.
         u             co            co

     Na pr´tica: ao longo dos anos observou-se que o m´todo
          a                                           e
     normalmente executa O(m) opera¸˜es de pivoteamento na m´dia.
                                      co                    e
     Pior caso: esta observa¸˜o que ocorre na pr´tica n˜o ´ verdadeira
                            ca                   a      a e
     para qualquer Programa Linear e qualquer regra de pivoteamento. H´a
     exemplos de problemas n˜o degenerados nos quais o m´todo percorre
                               a                            e
     todos os v´rtices do poliedro at´ encontrar a solu¸˜o ´tima.
               e                     e                 ca o



                   Alexandre Salles da Cunha   M´todo Simplex
                                                e
Complexidade no pior caso

    Vamos considerar o problema de minimizar −xn sobre o cubo
    P = {x ∈ Rn : 0 ≤ xi ≤ 1, i = 1 dots, n}. Estes cubo possui 2n
    v´rtices, metade dos quais possuem custo 0 e a outra metade custo
     e
    −1. Assim sendo, a fun¸˜o objetivo n˜o pode decrescer
                           ca             a
    monotonicamente ao longo das itera¸˜es do Simplex.
                                        co
    Por este motivo, vamos perturbar o cubo, mantendo o n´mero de
                                                                u
    v´rtices, impondo as seguintes restri¸˜es, para ǫ ∈ (0, 1 )
     e                                   co                 2

                                  ǫ ≤ x1 ≤ 1,
                  ǫxi −1 ≤ xi ≤ 1 − xi −1 , i = 2, . . . , n

de forma a criar uma sequˆncia de v´rtices adjacentes para os quais a
                          e        e
fun¸ao objetivo seja reduzida quando nos movemos de um v´rtice para o
   c˜                                                      e
outro.

                  Alexandre Salles da Cunha   M´todo Simplex
                                               e
Criamos um caminho que percorre todos os v´rtices
                                          e
Existe uma regra de pivoteamento que faz o m´todo percorrer todos os
                                               e
v´rtices (ver a prova em Papadimitrou e Steiglitz, pp. 166-170).
 e
           min                                −xn
                                  ǫ ≤ x1 ≤ 1,
                  ǫxi −1 ≤ xi ≤ 1 − xi −1 , i = 2, . . . , n




                  Alexandre Salles da Cunha    M´todo Simplex
                                                e
Existe regra de pivoteamento imune a esta patologia ?

Quest˜o em aberto
     a
    Para v´rias regras populares de pivotemento, h´ exemplos como o
           a                                      a
    indicado anteriormente, que fazem o m´todo percorrer todos os
                                           e
    v´rtices.
     e
    Entretanto, estes exemplos n˜o excluem a possibilidade de existir uma
                                 a
    regra de pivotemento que n˜o apresente o comportamento de pior
                               a
    caso exponencial.
    Esta ´ uma das quest˜es mais importantes em Teoria de Programa¸˜o
         e              o                                         ca
    Linear, ainda em aberto.
    O fato ´ que n˜o se conhece uma regra de pivoteamento imune a esta
           e      a
    patologia.
    O Problema de Programa¸˜o Linear ´ polinomialmente sol´vel
                              ca     e                    u
    (Algoritmo do Elips´ide).
                       o


                  Alexandre Salles da Cunha   M´todo Simplex
                                               e

[Robson] 3. Método Simplex

  • 1.
    M´todo Simplex e Alexandre Salles da Cunha DCC-UFMG, Mar¸o 2010 c Alexandre Salles da Cunha M´todo Simplex e
  • 2.
    Id´ias centrais dom´todo e e Se um PL na forma padr˜o possui uma solu¸˜o otima, ent˜o existe a ca ´ a uma solu¸˜o b´sica vi´vel ´tima para o problema. ca a a o O M´todo Simplex baseia-se neste fato. Iniciando em uma solu¸˜o e ca b´sica vi´vel, move-se para uma solu¸˜o b´sica vizinha de menor a a ca a custo. Este processo continua at´ que uma dire¸˜o que permita reduzir a e ca fun¸˜o objetivo n˜o seja encontrada, comprovando a otimalidade da ca a solu¸˜o em m˜os. ca a Alexandre Salles da Cunha M´todo Simplex e
  • 3.
    O Problema aser resolvido min c ′x s.t.: Ax = b x ≥ 0 onde A ∈ Rm×n , b ∈ R a j-´sima coluna de A ´ designada por Aj e e a i -´sima linha de A ´ designada por ai . e e Alexandre Salles da Cunha M´todo Simplex e
  • 4.
    Uma id´ia muitocomum nos algoritmos de otimiza¸˜o e ca Dada uma solu¸˜o vi´vel, procure uma solu¸˜o vi´vel mais barata nas ca a ca a vizinhan¸as da solu¸˜o atual. c ca Esta procura de solu¸˜es vi´veis normalmente ´ feita tentando co a e movimentar sobre uma dire¸˜o vi´vel aprimorante. ca a Se uma dire¸˜o aprimorante n˜o existe, a solu¸˜o corrente ´ um ca a ca e o ´timo local para o problema (n˜o necess´riamente global). a a No caso do PL, todo ´timo local ´ global, uma vez que o PL ´ u o e e problema de otimiza¸˜o convexa (minimizar uma fun¸˜o conexa sobre ca ca um conjunto convexo). O M´todo Simplex explora exatamente esta id´ia. e e Alexandre Salles da Cunha M´todo Simplex e
  • 5.
    Dire¸˜o vi´vel ca a Seja x um ponto em um poliedro P. Um vetor d ∈ Rn ´ dito ser uma e dire¸˜o vi´vel em x, se existir um escalar positivo θ para o qual ca a x + θd ∈ P. Alexandre Salles da Cunha M´todo Simplex e
  • 6.
    Obtendo uma dire¸˜ovi´vel conveniente ca a Filosofia para escolha da dire¸˜o vi´vel ca a Vamos considerar a possibilidade de mover a partir de x para uma solu¸˜o b´sica vizinha (adjacente). ca a Por defini¸˜o, uma solu¸˜o b´sica adjacente a x deve compartilhar ca ca a n − 1 restri¸˜es justas, cujos vetores de defini¸˜o s˜o l.i. co ca a Como as restri¸˜es ai′ x = bi , ∀i = 1, . . . m precisam ser satisfeitas em co qualquer solu¸˜o vi´vel, escolhemos uma dire¸˜o d para a qual ca a ca permitamos acrescer uma unica vari´vel n˜o b´sica. ´ a a a Logo, para obter uma solu¸˜o b´sica adjacente a x precisarmos nos ca a movimentar ao longo de uma dire¸˜o vi´vel que permita que apenas ca a uma componente n˜o b´sica de x torne-se b´sica. a a a Alexandre Salles da Cunha M´todo Simplex e
  • 7.
    Dedu¸˜o alg´brica dadire¸˜o ca e ca Para os ´ ındices j ∈ {B(1), . . . , B(m)} das componentes n˜o b´sicas: a a ◮ dj = 1 para uma ´nica vari´vel n˜o b´sica u a a a ◮ dj = 0 para todas as demais vari´veis n˜o b´sicas. a a a ◮ Vamos designar por j o ´ ındice da coluna n˜o b´sica liberado para se a a tornar b´sica. a Para os ´ ındices j ∈ {B(1), . . . , B(m)} ◮ Uma vez que A(x + θd) ∈ P para algum θ > 0, temos que Ax + θAd = b e ent˜o Ad = 0. a ◮ Ent˜o: 0 = Ad = n=1 Ai di = m AB(i ) di + Aj = Aj + BdB . a i i =1 ◮ Portanto dB = −B −1 Aj uma vez que B admite inversa. Dire¸˜o b´sica ca a Vamos chamar a dire¸˜o b´sica constru´ acima como a j-´sima dire¸˜o ca a ıda e ca b´sica a Alexandre Salles da Cunha M´todo Simplex e
  • 8.
    E a garantiadas restri¸˜es de n˜o negatividade co a Temos que garantir que xB + θdB ≥ 0: Apenas uma vari´el n˜o b´sica, de ´ v a a ındice j, ser´ aumentada. a Logo temos que nos preocupar apenas com a varia¸˜o das vari´veis ca a b´sicas. Temos dois casos a considerar: a ◮ Vamos supor que xB seja n˜o degenerada. Ent˜o xB > 0 e ent˜o existe a a a um θ > 0 suficientemente pequeno que garante a viabilidade. ◮ Se xB for degenerada, existe xB(i ) = 0 para algum i ∈ {B(1), . . . , B(m)}. Neste caso, se para este ´ındice i tivermos −Bi−1 d < 0, qualquer movimento no sentido de d faz com que a restri¸˜o xB(i ) seja violada. Assim sendo, a dire¸˜o d neste caso n˜o ´ ca ca a e vi´vel. a Alexandre Salles da Cunha M´todo Simplex e
  • 9.
    Exemplo no casodegenerado onde d n˜o ´ vi´vel a e a Em E (b´sica n˜o degenerada), temos como b´sicas: x2 , x4 , x5 e n´o b´sicas: x1 , x3 . a a a a a Dire¸ao vi´vel: segmento EF , que consiste em aumentar x1 , mantendo x3 em zero. c˜ a Em F (b´sica degenerada), vamos considerar que as vari´veis n˜o b´sicas sejam x3 , x5 . a a a a Observe que x4 ´ b´sica em 0. Dire¸ao b´sica: segmento FG , correpondendo a aumentar e a c˜ a x3 e manter x5 em zero, ´ n˜o ´ vi´vel. e a e a Alexandre Salles da Cunha M´todo Simplex e
  • 10.
    Qual o efeitona fun¸˜o objetivo de mover ao longo de d ca Sendo d a j-´sima dire¸˜o b´sica, ao mover no sentido positivo de d, e ca a a taxa de varia¸˜o da fun¸˜o objetivo ´ por n=1 ∂xi di = n=1 ci di . ca ca e i ∂f i n Uma vez que dB = −B −1 Aj temos que i =1 ci di = cj − cB B −1 Aj , onde cB = (cB(1) , . . . , cB(m) ). ◮ A parcela cj ´ a taxa unit´ria de varia¸˜o por permitir j aumentar. e a ca ◮ A parcela −cB B −1 Aj ´ referente a compensa¸˜o das mudan¸as nas e ca c vari´veis b´sicas, necess´ria para garantir a viabilidade, Ax = b. a a a Defini¸˜o ca Seja x uma solu¸˜o b´sica, B a base associada a x e cB o vetor de custos ca a das vari´veis b´sicas. Para todo j = 1, . . . , n, definimos o custo reduzido a a c j da vari´vel xj por meio de : a c j = cj − cB B −1 Aj ′ Alexandre Salles da Cunha M´todo Simplex e
  • 11.
    Exemplo Vamos considerar oseguinte exemplo: min c1 x1 + c2 x2 + cc x3 + c4 x4 s.t.: x1 + x2 + x3 + x4 = 2 2x1 + 3x3 + 4x4 = 2 x ≥0 Fazendo B = [A1 A2 ], temos uma matriz cujas colunas s˜o l.i. a Fixando x3 = x4 = 0 e resolvendo o sistema, (x1 , x2 ) = (1, 1). Assumindo que d seja a dire¸˜o b´sica associada a vari´vel n˜o b´sica ca a a a a x3 , temos: dB = −B −1 A3 = [− 3 2 ]′ . 2 1 c 3 = c3 − 3c1 /2 + c2 /2 Alexandre Salles da Cunha M´todo Simplex e
  • 12.
    Custo reduzido paraas vari´veis b´sicas a a Aplicando a defini¸˜o: c B(i ) = cB(i ) − cB B −1 AB(i ) = cB(i ) − cB eB(i ) , ca ′ ′ onde eB(i ) ´ um vetor m dimensional com todas as entradas nulas, e exceto a B(i )-´sima entrada que ´ 1. e e ′ Logo, c B(i ) = cB(i ) − cB eB(i ) = cB(i ) − cB(i ) = 0 Alexandre Salles da Cunha M´todo Simplex e
  • 13.
    Crit´rio de Otimalidade e Dada nossa interpreta¸˜o de custos reduzidos como a taxa de varia¸˜o da ca ca fun¸ao objetivo na medida em que movimentamos ao longo de uma c˜ dire¸˜o, temos o seguinte resultado: ca Teorema Considere uma solu¸˜o b´sica x associada a uma base B. Assuma que c ca a seja o correspondente vetor de custos reduzidos. 1 Se c ≥ 0, ent˜o x ´ uma solu¸˜o ´tima. a e ca o 2 Se x ´ ´tima e n˜o degenerada, ent˜o c ≥ 0. eo a a Alexandre Salles da Cunha M´todo Simplex e
  • 14.
    Prova Prova (1): Vamos assumir c ≥ 0 e que y denote uma solu¸˜o vi´vel qualquer ca a para o problema, para a qual determinamos uma dire¸˜o vi´vel ca a d = y − x (´ vi´vel por convexidade !). e a A viabilidade de x, y implica que Ax = Ay = b e ent˜o Ad = 0. a Ent˜o Ad = 0 = BdB + i ∈N Ai xi = 0 (N ´ o conj. dos ´ a e ındices das vari´veis n˜o b´sicas em x). a a a Logo dB = − i ∈N B −1 Ai di Ent˜o temos: a c ′ d = cB dB + ′ i ∈N ci di = i ∈N (ci − cB B −1 Ai )di = ′ i ∈N c i di . Para qualquer i ∈ N, temos que xi = 0 e ent˜o di = yi − xi ≥ 0. a Logo c ′d = i ∈N c i di ≥ 0 Alexandre Salles da Cunha M´todo Simplex e
  • 15.
    Prova Prova (2), por contradi¸˜o: ca Suponha que x seja uma solu¸˜o b´sica vi´vel ´tima, n˜o degenerada ca a a o a e que exista j : c j < 0. Ent˜o j necessariamente deve ser ´ a ındice de uma vari´vel n˜o b´sica, a a a uma vez que c i = 0, ∀i ∈ {B(1), . . . , B(m)}. Considere a dire¸˜o b´sica j, d. Esta dire¸˜o ´ necessariamente vi´vel ca a ca e a dado que x ´ n˜o degenerada. e a Ent˜o existe θ > 0 tal que x + θd ´ uma solu¸˜o vi´vel. Por outro a e ca a lado c ′ (x + θd) = c ′ x + θc ′ d < c ′ x, contrariando a hip´tese de que x o ´ ’otima. e Alexandre Salles da Cunha M´todo Simplex e
  • 16.
    Observa¸˜es co Uma solu¸˜o ´tima x pode ser tal que o custo reduzido de alguma ca o vari´vel n˜o b´sica ´ negativo. a a a e De acordo com o teorema para decidir se uma solu¸˜o b´sica vi´vel ca a a n˜o degenerada x ´ ´tima, precisamos verificar os custos reduzidos de a eo suas n − m componentes n˜o b´sicas. a a No caso de uma solu¸˜o b´sica degenerada, um teste igualmente ca a simples n˜o ´ dispon´ a e ıvel. Alexandre Salles da Cunha M´todo Simplex e
  • 17.
    Bases ´timas o Defini¸˜o ca Uma base B ´ ´tima se: eo 1 B −1 b ≥ 0 e 2 c ′ = c ′ − cB B −1 B −1 A ≥ 0. ′ Observe que, diante desta defini¸˜o: ca Se uma base ´tima B ´ encontrada, a solu¸˜o b´sica associada ´ o e ca a e vi´vel, satisfaz as condi¸˜es de otimalidade e portanto ´ ´tima. a co eo Por outro lado uma solu¸˜o b´sica vi´vel ´tima degenerada n˜o ca a a o a necessariamente garante custos reduzidos n˜o negativos. a Vale lembrar que mais de uma base podem ser associadas ` mesma a solu¸˜o b´sica (no caso degenerado). ca a Alexandre Salles da Cunha M´todo Simplex e
  • 18.
    Desenvolvimento do m´todo e De in´ ıcio, vamos assumir a hip´tese de que todos as solu¸˜es b´sicas o co a de P = {x ∈ Rn : Ax = b, x ≥ 0} s˜o n˜o degeneradas. a a Em seguida relaxaremos esta hip´tese. o Alexandre Salles da Cunha M´todo Simplex e
  • 19.
    Desenvolvimento do M´todo e Vamos supor que estejamos em um ponto x, solu¸˜o b´sica vi´vel ca a a n˜o degenerada de P e que tenhamos avaliado os custos reduzidos de a forma que c j ≥ 0 : ∀j ∈ {B(1), . . . , B(m)}. Ent˜o, pelo resultado a anterior, concluimos que x resolve o PL. Caso contr´rio, existe j ∈ {B(1), . . . , B(m)} : c j < 0. a Ent˜o a j−´sima dire¸˜o b´sica d, obtida fazendo-se dB = −B −1 Aj , a e ca a dj = 1 e dk = 0, ∀k ∈ {j, B(1), . . . , B(m)} ´ uma dire¸˜o vi´vel, de e ca a redu¸˜o de custo. ca Movendo ao longo de d, a partir de x, a componente xj torna-se positiva, as componentes xk : k ∈ {j, B(1), . . . , B(m)} permanecem em 0 e as vari´veis b´sicas s˜o alteradas. a a a Uma vez que d ´ uma dire¸˜o de aprimoramento de custos, ´ e ca e desej´vel nos mover o quanto pudermos ao longo desta dire¸˜o. a ca Alexandre Salles da Cunha M´todo Simplex e
  • 20.
    Garantindo a satisfa¸˜odas restri¸˜es de n˜o negatividade ca co a x(θ) = x + θd, θ ≥ 0 O m´ximo que podemos andar na dire¸˜o d ´ dado por a ca e θ ∗ = max{θ ≥ 0 : x + θd ∈ P}. Dado que Ad = 0, Ax(θ) = b e precisamos verificar apenas as restri¸˜es de n˜o negatividade. co a Se d ≥ 0, x(θ) ≥ 0 e ent˜o θ ∗ = ∞. a Caso contr´rio, existe i ∈ {B(1), . . . , B(m)} : di < 0. Para garantir a x xi + θdi ≥ 0 temos que θ ≤ − dii . x Ent˜o θ ∗ = min{− dii : dB(i ) < 0} a Observe que θ ∗ > 0 como consequˆncia da n˜o degenera¸˜o de x. e a ca Alexandre Salles da Cunha M´todo Simplex e
  • 21.
    O novo pontoobtido Assumindo que θ ∗ ´ finito, y = x(θ ∗ ) = x + θ ∗ d. e Ent˜o: a x yj = xj + θ ∗ = − dB(l ) , onde l ∈ {B(1), . . . , B(m)} denota o ´ B(l ) ındice da vari´vel b´sica que definiu θ a a ∗. Todas as componentes b´sicas de x, pelo modo como θ ∗ ´ definido a e continuam n˜o negativas. a Em particular, para l temos: xB(l) yB(l) = xB(l) + θdB(l) = xB(l) − d =0 dB(l) B(l) o que sugere que a coluna Aj substitua a coluna AB(l) na base, uma vez que houve uma troca das restri¸˜es de n˜o negatividade que co a ficaram justas. Alexandre Salles da Cunha M´todo Simplex e
  • 22.
    Exemplo - continua¸˜o ca Considerando a solu¸˜o b´sica x = (1, 1, 0, 0) e lembrando que ca a c2 c 3 = −3c1 + 2 + c3 . Se c = (2, 0, 0, 0) temos que c 3 = −3. A correspondente dire¸˜o ca 3 1 b´sica ´ (− 2 , 2 , 1, 0). a e Considerando pontos da forma x + θd, θ > 0, a unica componente de ´ x x que cai ´ x1 (note que d1 < 0) e portanto θ ∗ = − d1 = 2 . e 1 3 O novo ponto obtivo ´ y = x + 2 d = (0, 3 , 2 , 0). e 3 4 3 Observe que as novas colunas associadas `s vari´veis b´sicas (x2 , x3 ) a a a s˜o l.i.. a Alexandre Salles da Cunha M´todo Simplex e
  • 23.
    A nova base A nova base B ´ dada por: e B = [AB(1) , . . . , AB(l−1) , AB(j) , AB(l+1) , . . . , AB(m) ] Equivalentemente, o novo conjunto de vari´veis b´sicas ´ a a e {B(1), . . . , B(l − 1), B(j), B(l + 1), . . . , B(m)} Mais formalmente: Teorema 1 As colunas AB(i ) : i = l e Aj s˜o linearmente independentes e, assim, a B ´ uma matriz b´sica. e a 2 O vetor y = x + θ ∗ d ´ a solu¸˜o b´sica associada a B. e ca a Alexandre Salles da Cunha M´todo Simplex e
  • 24.
    Prova Prova (1): por contradi¸˜o: ca Vamos supor que os vetores AB(i ) sejam l.d. Ent˜o, existem a coeficientes λ1 , . . . , λm , n˜o todos nulos, tais que m λi AB(i ) = 0. a i =1 −1 temos m Multiplicando por B i =1 λi B −1 AB(i ) = 0 e os vetores B −1 AB(i ) tamb´m s˜o l.d. Vamos mostrar que este n˜o ´ o caso. e a a e Observe que B −1 B = I . Logo B −1 AB(i ) = ei , i = l (ei denota o vetor de zeros, exceto na i´sima entrada, que ´ 1). Todos os vetores e e B −1 AB(i ) possuem um 0 na l −´sima entrada. Logo, B −1 AB(i ) , i = l e s˜o l.i.. a Por outro lado B −1 AB(l) = B −1 Aj = −dB . Por defini¸˜o, dB(l) < 0. Logo B −1 Aj e B −1 AB(i ) , i = l s˜o l.i.. ca a Logo, B ´ uma base. e Alexandre Salles da Cunha M´todo Simplex e
  • 25.
    Prova Prova (2): Temos que y ≥ 0, Ay = b. Al´m disto yi = 0, ∀i ∈ {B(i ), . . . , B(i )}. e Acabamos de mostrar que AB(i ) , . . . , AB(i ) s˜o l.i.. a Portanto, segue que y ´ uma solu¸˜o b´sica associada a B e ca a Alexandre Salles da Cunha M´todo Simplex e
  • 26.
    Observa¸˜es co Uma vez que θ ∗ > 0, segue que y ´ uma solu¸˜o b´sica distinta de x, e ca a uma vez que d ´ uma dire¸˜o de redu¸˜o de custos e ent˜o c ′ y < c ′ x. e ca ca a Em parte, cumprimos nosso prop´sito inicial de mover para uma o solu¸˜o b´sica adjacente, de menor custo. ca a Vamos enunciar uma itera¸˜o t´ ca ıpica do M´todo Simplex, definindo e um vetor u = (u1 , . . . , um ), de forma que u = −dB = B −1 Aj , onde Aj ´ a coluna que entra na base. Ou seja, ui = −dB(i ) : i = 1, . . . , m. e Alexandre Salles da Cunha M´todo Simplex e
  • 27.
    M´todo Simplex: Itera¸˜oT´ e ca ıpica 1 Inicie a itera¸˜o com as colunas b´sicas B(1), . . . , B(m) e a solu¸˜o ca a ca b´sica vi´vel associada x. Seja N o conjunto dos ´ a a ındices das vari´veis a n˜o b´sicas. a a 2 Calcule os custos reduzidos c j = cj − cB B −1 Aj , ∀j ∈ N. Se c ≥ 0, ′ p´re, a solu¸˜o x ´ ´tima. Caso contr´rio, escolha j ∈ N : c j < 0. a ca eo a 3 Calcule u = B −1 Aj . Se u ≤ 0, temos que θ ∗ = ∞ e o custo ´timo ´ o e −∞. P´re, o problema ´ ilimitado. a e xB(i ) 4 Se alguma componente de u ´ positiva, fa¸a θ ∗ = mini ∈1,...,m:ui >0 e c ui . Seja l tal que θ ∗ = xB(l ) . ul 5 Forme uma nova base substituindo AB(l) por Aj . Denote por y a nova solu¸˜o b´sica vi´vel. Ent˜o yj = θ ∗ e yB(i ) = xB(i ) − θ ∗ ui , i l . ca a a a Alexandre Salles da Cunha M´todo Simplex e
  • 28.
    Na ausˆncia dedegenera¸˜o, O M´todo Simplex converge e ca e Teorema Assuma que o conjunto de solu¸˜es vi´veis do PL ´ n˜o vazio e que toda co a e a solu¸˜o b´sica ´ n˜o degenerada. Ent˜o, o M´todo Simplex termina ap´s ca a e a a e o um n´mero finito de itera¸˜es. Ao final, temos duas possibilidades: u co 1 Dispomos de uma base ´tima B e a correspondente solu¸˜o b´sica o ca a o ´tima. 2 Encontramos um vetor d : Ad = 0, d ≥ 0 e c ′ d < 0. Portanto o custo o ´timo ´ −∞. e Alexandre Salles da Cunha M´todo Simplex e
  • 29.
    Prova Prova Se o algoritmo termina no passo 2, as condi¸˜es de otimalidade co propostas previamente foram satisfeitas e B ´ uma base ´tima. e o Se o algoritmo termina no passo 3, estamos em uma solu¸˜o b´sica x ca a e descobrimos uma vari´vel n˜o b´sica xj tal que c j < 0. A j−´sima a a a e dire¸˜o b´sica j satisfaz Ad = 0, d ≥ 0. Em particular temos que ca a x + θd ∈ P para θ t˜o grande quanto queiramos. Uma vez que a c ′ d = c j , o custo pode ser feito t˜o negativo quanto queiramos. a Em cada itera¸˜o do algoritmo, nos movemos uma quantidade θ ∗ > 0 ca ao longo de uma dire¸˜o b´sica d satisfazendo c ′ d < 0. Assim sendo, ca a a cada itera¸˜o o custo diminui e portanto n˜o visitamos a mesma ca a solu¸˜o b´sica mais de uma vez. ca a Como o n´mero de solu¸˜es b´sicas ´ finito, o algoritmo ent˜o u co a e a termina. Alexandre Salles da Cunha M´todo Simplex e
  • 30.
    M´todo Simplex paraproblemas degenerados e Vamos considerar a partir de agora, como se comporta o algoritmo descrito anteriormente, diante da degenera¸˜o: ca 1 Se a solu¸˜o b´sica corrente x for degenerada, θ ∗ pode ser nulo, caso ca a xB(l) = 0 e dB(l) < 0. Por este motivo, a nova solu¸˜o obtida y ´ ca e idˆntica a x. Ainda assim, podemos definir uma nova matriz B com a e entrada da coluna Aj e a sa´ de AB(l) de forma que B ser´ uma ıda a base. 2 Mesmo se θ ∗ > 0, pode acontecer de mais de uma vari´vel b´sica se a a tornar zero no novo ponto x + θ ∗ d. Uma vez que apenas uma destas vari´veis b´sicas que se tornou nula sair´ da base para a entrada da a a a coluna Aj , a nova solu¸˜o encontrada y = x + θ ∗ d ser´ degenerada. ca a Alexandre Salles da Cunha M´todo Simplex e
  • 31.
    Efeito da degenera¸˜o ca As mudan¸as de base associadas ` mesma solu¸ao b´sica podem, em c a c˜ a alguns casos, n˜o ser in´teis, levando a descobrir uma dire¸˜o b´sica a u ca a de redu¸˜o de custo. ca Por outro lado, uma sequˆncia de mudan¸as de base associadas ao e c mesmo ponto x pode levar ` repeti¸˜o das colunas associadas ` a ca a representa¸˜o da base, ocasionando a ciclagem. ca Para problemas altamente estruturados (fluxo em redes, etc) a possibilidade n˜o ´ remota. a e A ciclagem pode ser evitada atrav´s do uso de regras adequadas de e quais vari´veis entrar˜o e/ou sair˜o da base. a a a Alexandre Salles da Cunha M´todo Simplex e
  • 32.
    Ilustra¸˜o dos doiscasos em uma solu¸˜o degenerada ca ca Neste exemplo temos n − m = 2. Vale observar a solu¸˜o degenerada x. ca Alexandre Salles da Cunha M´todo Simplex e
  • 33.
    O M´todo Simplexpode n˜o terminar ? e a 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 M´todo Simplex e
  • 34.
    O M´todo Simplexpode n˜o terminar ? e a 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 M´todo Simplex e
  • 35.
    O M´todo Simplexpode n˜o terminar ? e a 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 M´todo Simplex e
  • 36.
    O M´todo Simplexpode n˜o terminar ? Sim, caso cicle. e a O pr´ximo quadro ´ igual ao quadro inicial ! o e 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 M´todo Simplex e
  • 37.
    Possibilidades para implementaro pivoteamento At´ o momento, n˜o particularizamos regra alguma para escolher as e a regras de pivoteamento, isto ´, escolher qual vari´vel entra e sai da e a base. Em particular, na descri¸˜o que apresentamos do M´todo Simplex, ca e temos flexibilidade quanto ` escolha de: a 1 Qual coluna n˜o b´sica com custo reduzido ´ negativo deve ser eleita a a e para entrar na base; 2 Diante de mais de uma vari´vel que definam θ ∗ , qual escolher para a deixar a base. Alexandre Salles da Cunha M´todo Simplex e
  • 38.
    Algumas prov´veis candidatasa regras de pivotemento : a Escolher para entrar na base, a coluna n˜o b´sica Aj que possui o a a custo reduzido c j mais negativo. Escoher para entrar na base, a coluna n˜o b´sica Aj que promova o a a maior redu¸˜o na fun¸˜o objetivo, isto ´ θ ∗c j . Esta regra pode ca ca e acelerar a queda da fun¸˜o objetivo, mais paga-se maior pre¸o ca c computacional, para se avaliar o θ ∗ associado a entrada de cada coluna que possua c j . A experiˆncia computacional existe sugere que e o tempo global de cpu n˜o decresce com a ado¸˜o desta estrat´gia. a ca e Mesmo a primeira estrat´gia acima pode ser muito cara para e problemas de larga escala (requer que todas as colunas tenham seus custos reduzidos avaliados). Assim sendo, uma regra simples consiste na regra de escolher a coluna com custo reduzido negativo, de menor ´ ındice. Alexandre Salles da Cunha M´todo Simplex e
  • 39.
    Implementa¸˜es do Simplex co Os vetores B −1 Aj s˜o de fundamental importˆncia no algoritmo, uma a a vez que com estas informa¸˜es podemos obter: co ◮ Custos reduzidos c j = cj − cB B −1 Aj ′ ◮ A dire¸˜o de busca d ca ◮ O valor de θ∗ Por este motivo, a diferen¸a entre as implementa¸˜es alternativas do c co M´todo Simplex residem em como esta informa¸˜o ´ calculada e e ca e quais informa¸˜es s˜o preservadas de itera¸˜o para itera¸˜o. co a ca ca Dado que B ´ uma matriz m × m temos: e ◮ Custo de resolver Bx = b: O(m3 ) ◮ Custo de efetuar a mutiplica¸˜o Bb: O(m2 ) ca ◮ Custo de calcular o produto interno de dois vetores m dimensionais: O(m). Alexandre Salles da Cunha M´todo Simplex e
  • 40.
    Implmenta¸˜o Inocente ca 1 Nenhuma informa¸˜o adicional ser´ transportada de itera¸˜o para ca a ca itera¸˜o no m´todo. ca e 2 Em cada itera¸˜o t´ ca ıpica, conhecemos os ´ ındices B(1), . . . , B(m) das vari´veis b´sicas. a a 3 Montamos a matriz B e resolvemos o sistema linear p ′ B = cB . ′ 4 O custo reduzido para qualquer coluna j ´ obtido via c j = cj − p ′ Aj . e 5 Dependendo da regra de pivoteamento adotado, podemos evitar calcular todos os custos reduzidos. 6 Uma vez que escolhemos a coluna Aj para entrar na base, resolvemos Bu = Aj (ou u = B −1 Aj ). 7 A partir de ent˜o, podemos calcular θ ∗ e definir qual vari´vel sair´ da a a a base. Alexandre Salles da Cunha M´todo Simplex e
  • 41.
    Implementa¸˜o inocente -complexidade computacional ca Resolver os sistemas lineares (p ′ B = cB e u = B −1 Aj ): O(m3 ). ′ Dependendo da estrutura da matriz B, este custo pode ser reduzido sensivelmente (exemplo: Problemas de Fluxo em Redes) C´lculo do custo reduzido para todas as colunas: O(mn) a Custo total por itera¸˜o: O(nm + m3 ). ca Veremos como fazer a itera¸˜o a um custo de O(m2 + mn) ca Alexandre Salles da Cunha M´todo Simplex e
  • 42.
    Simplex Revisado Boa parte do custo computacional por itera¸˜o ´ relacionado ` ca e a resolu¸˜o de dois sistemas lineares. ca Neste m´todo, a matriz B −1 ´ explicitamente mantida em cada e e itera¸˜o e os vetores cB B −1 e B −1 Aj s˜ determinados via ca ′ a multiplica¸˜o matricial. ca Para ser eficiente, o m´todo requer um esquema eficiente de e atualiza¸˜o de B ca −1 quando implementarmos uma opera¸˜o de ca pivoteamento. Alexandre Salles da Cunha M´todo Simplex e
  • 43.
    Simplex Revisado Base no in´ da itera¸˜o: B = [AB(1) , . . . , AB(m) ] ıcio ca Base ao fim da itera¸˜o: ca B = [AB(1) , . . . , AB(l−1) , AB(j) , AB(l+1) , . . . , AB(m) ] Todas, exceto uma coluna de B e B s˜o compartilhadas. a Em fun¸˜o disto, ´ razo´vel esperar que B −1 contenha informa¸˜o ca e a ca −1 que possa ser usada na determina¸˜o de B . ca Alexandre Salles da Cunha M´todo Simplex e
  • 44.
    −1 Como aproveitar informa¸˜esde B −1 para avaliar B co Defini¸˜o ca Dada uma matriz, n˜o necessariamente quadrada, a opera¸ao de adicionar a c˜ um m´ltiplo de uma linha ` mesma linha ou a outra linha da matriz ´ u a e chamada de opera¸˜o linha elementar (n˜o muda as informa¸˜es dos ca a co sistemas lineares representados pela matriz). Exemplo Digamos que queiramos multiplicar a terceira linha da matriz C abaixo por 2 para somar ` primeira linha da matriz. Isto equivale a multiplicar C pela a matriz Q dada abaixo.       1 2 1 0 2 11 14 C =  3 4  Q =  0 1 0  QC =  3 4  5 6 0 0 1 5 6 Alexandre Salles da Cunha M´todo Simplex e
  • 45.
    Generalizando este exemplo Multiplicar a j−´sima linha de uma matriz por β e adicionar este e produto ` i −´sima linha da matriz, equivale a pr´ mutiplicar a matriz a e e por Q = I + Dij , onde Dij ´ uma matriz de zeros, exceto em sua e entrada na i −´sima linha e j−´sima coluna que ´ β. e e e Observe que a matriz Q possui determinante 1 e ent˜o admite inversa. a Suponha que queiramos fazer uma sequˆncia de K opera¸˜es linha e co elementares, cada qual correspondento a pr´-multiplica¸˜o por uma e ca matriz Qk correspondente. Esta sequˆncia de opera¸˜es consiste em e co pr´ multiplicar a matriz sobre a qual s˜o feitas as opera¸˜es por: e a co QK QK −1 . . . Q2 Q1 . Alexandre Salles da Cunha M´todo Simplex e
  • 46.
    Aplicando esta id´iano M´todo Simplex e e Uma vez que B −1 B = I , temos que B −1 AB(i ) = ei , onde ei ´ um e vetor de zeros exceto pela i −´sima entrada que ´ 1. e e   1 u1 .. . . .     .   Usando esta observa¸˜o temos B ca −1 B =  ul  . ..     . . .   um 1 Para transformar a matriz acima na identidade: ◮ Para cada i = l, adicionamos o produto da l− ´sima linha (linha pivot) e por −ui e somamos ` i− ´sima linha. Observe que ul = 0 e ent˜o esta ul a e a opera¸˜o substitui ui por 0 na correspondente i−´sima linha. ca e ◮ Dividimos a l− ´sima linha por ul . e Seja Q o produto destas m opera¸˜es linha elementares. Temos ent˜o co a que QB −1 B = I , logo B −1 = QB −1 . Alexandre Salles da Cunha M´todo Simplex e
  • 47.
    Exemplo Vamos considerar l = 3 (a terceira coluna de B ser´ alterada para a compor B) e     1 2 3 −4 −1 B =  −2 3 1 u =  2  4 −3 −2 2     1 0 2 9 −4 −1 −1 Ent˜o temos: Q =  0 1 −1  B =  −6 a 6 3  1 0 0 2 2 −1.5 −1 Alexandre Salles da Cunha M´todo Simplex e
  • 48.
    M´todo Simplex Revisado e Vamos adicionar o seguinte passo ao final da quinta opera¸˜o na itera¸˜o ca ca t´ ıpica: Forme a matriz m × (m + 1) dada por: [B −1 | u]. Fa¸a as opera¸˜es linha elementares necess´rias para transformar a c co a ultima coluna desta matriz no vetor unit´rio el . ´ a −1 As primeiras m colunas da matriz resultante fornece B . Observe que recalcular a inversa da base agora custa O(m2 ). Desta forma, apenas na primeira invers˜o da base, pagamos o O(m3 ). Desta forma, a reduzimos o custo de cada itera¸˜o para O(nm + m2 ) ca Alexandre Salles da Cunha M´todo Simplex e
  • 49.
    Regras anti-ciclagem Regra lexicogr´fica, adequada ` implementa¸˜o da vers˜o Full table a a ca a implementation que, por ter o comportamento assint´tico pior que a o vers˜o do Simplex Revisado, n˜o ser´ discutida. a a a Regra de Bland - compat´ com a implementa¸˜o do Simplex ıvel ca Revisado. Alexandre Salles da Cunha M´todo Simplex e
  • 50.
    Regra de Bland Pivoteamentode Bland 1 Encontre o menor ´ ındice j para o qual o custo reduzido c j ´ negativo. e 2 Dentre as vari´veis b´sicas xi que se anularem primeiro com o a a incremento da vari´vel xj (para as quais houver empate na a determina¸˜o de θ ∗ ), escolha aquela com o menor ´ ca ındice i . Observa¸˜es: co Esta regra n˜o nos obriga a calcular todos os custos reduzidos. a ´ E compat´el com a implementa¸˜o do Simplex Revisado, na qual os v ca custos reduzidos s˜o calculados na ordem natural das vari´veis. a a Diante desta regra ´ provado que n˜o pode haver ciclagem e o e a M´todo Simplex converge ap´s um n´merol finito de mudan¸as de e o u c base. Alexandre Salles da Cunha M´todo Simplex e
  • 51.
    Encontrando uma baseinicial vi´vel a No M´todo Simplex, assumimos dispor de uma solu¸˜o b´sica vi´vel e ca a a inicial. N˜o descrevemos ainda como obter esta solu¸ao. a c˜ Em alguns casos, encontrar esta solu¸˜o ´ trivial. Exemplo: ca e P ′ = {x ∈ Rn : Ax ≤ b} e o vetor b ≥ 0. Neste caso, introduzindo as + n m vari´veis de folga temos P = {(x, s) ∈ (R+ , R+ ) : Ax + Is = b} e o a vetor (x, s) = (0, b) ´ uma solu¸˜o b´sica vi´vel. e ca a a De um modo geral, encontrar esta solu¸˜o n˜o ´ t˜o trivial, ca a e a requerendo a solu¸˜o de um problema linear auxiliar (Fase 1). ca Alexandre Salles da Cunha M´todo Simplex e
  • 52.
    Constru¸˜o de umproblema auxiliar ca Problema Original min c ′x Ax = b x ≥0 Assumimos sem perda de generalidade que b ≥ 0 (caso contr´rio, a multiplicamos alguma linha do sistema linear por −1) Alexandre Salles da Cunha M´todo Simplex e
  • 53.
    Constru¸˜o de umproblema auxiliar - Fase 1 ca Problema Auxiliar (PA) m min yi i =1 Ax + y = b x ≥0 y ≥0 Introduzimos as vari´veis artificiais y ∈ Rm +. a Uma solu¸˜o b´sica inicial para o Prob. Auxiliar ´ dada por ca a e (x, y ) = (0, b). Resolvemos PA. Se a fun¸˜o objetivo ´tima for 0 sabemos que h´ ca o a solu¸˜o vi´vel para o problem original. Caso contr´rio, o problema ca a a original ´ invi´vel. e a Como obter a solu¸˜o b´sica inicial para o problema original ? ca a Alexandre Salles da Cunha M´todo Simplex e
  • 54.
    Obtendo uma solu¸˜ovi´vel inicial a partir de PA ca a Para iniciar o M´todo Simplex, necessitamos de uma solu¸˜o b´sica inicial e ca a e a matriz b´sica associada. Vamos assumir que no ´timo de PA tenhamos a o m j=1 yj = 0 (prob. original ´ vi´vel). e a Analisando a solu¸˜o do PA: ca 1 Se ao final da resolu¸˜o de PA as colunas b´sicas na solu¸ao ´tima ca a c˜ o forem exclusivamente as vari´veis x, basta tomarmos esta solu¸˜o a ca como uma sol. b´sica vi´vel inicial (e as correspondentes colunas a a compondo a base) para iniciar o problema original. 2 Se existirem vari´veis yj b´sicas (necessariamente degeneradas) na a a solu¸˜o ´tima de PA, devemos fazer opera¸˜es de pivoteamento ca o co for¸ado para removˆ-las da base. c e Alexandre Salles da Cunha M´todo Simplex e
  • 55.
    Eliminando as vari´veisy para fora da base a Vamos supor (como de costume) que posto(A) = m. Vamos assumir que k < m colunas de A aparecem na base ´tima de o PA. Os ´ ındices das vari´veis b´sicas associadas a estas colunas s˜o a a a B1 , . . . , Bk Vale observar que as colunas AB(1) , . . . , AB(k) s˜o linearmente a independentes, uma vez que est˜o na base. a Como a matriz A ∈ Rm×n possui posto m, suas colunas geram o espa¸o Rm . Logo, ´ poss´ escolher outras m − k colunas de A, que c e ıvel sejam linearmente independentes a AB(1) , . . . , AB(k) . Vamos identificar estas colunas, eliminando as colunas associadas a y da base. Alexandre Salles da Cunha M´todo Simplex e
  • 56.
    Eliminando as vari´veisartificiais a Vamos supor que a l −´sima (l > k) vari´vel b´sica seja artificial. e a a Dentre as vari´veis xj : j ∈ {B(1), . . . , B(m)}, procuramos uma a coluna j tal que B −1 Aj = 0. Claramente Aj ´ l.i. com AB(1) , . . . , AB(k) (por quˆ ?) e e Ent˜o fazemos um pivoteamento for¸ado, no qual trazemos a coluna a c Aj para a base e eliminados a coluna da vari´vel artificial da base. a Repetimos o processo enquanto houver colunas b´sicas associadas a a vari´veis artificiais. a Alexandre Salles da Cunha M´todo Simplex e
  • 57.
    Complexidade computacional dom´todo simplex e A complexidade do m´todo Simplex depende: e 1 da complexidade computacional em cada itera¸˜o (O(nm), por ca exemplo, no caso do Simplex Revisado) 2 do n´mero de itera¸˜es, ou opera¸˜es de pivoteamento. u co co Na pr´tica: ao longo dos anos observou-se que o m´todo a e normalmente executa O(m) opera¸˜es de pivoteamento na m´dia. co e Pior caso: esta observa¸˜o que ocorre na pr´tica n˜o ´ verdadeira ca a a e para qualquer Programa Linear e qualquer regra de pivoteamento. H´a exemplos de problemas n˜o degenerados nos quais o m´todo percorre a e todos os v´rtices do poliedro at´ encontrar a solu¸˜o ´tima. e e ca o Alexandre Salles da Cunha M´todo Simplex e
  • 58.
    Complexidade no piorcaso Vamos considerar o problema de minimizar −xn sobre o cubo P = {x ∈ Rn : 0 ≤ xi ≤ 1, i = 1 dots, n}. Estes cubo possui 2n v´rtices, metade dos quais possuem custo 0 e a outra metade custo e −1. Assim sendo, a fun¸˜o objetivo n˜o pode decrescer ca a monotonicamente ao longo das itera¸˜es do Simplex. co Por este motivo, vamos perturbar o cubo, mantendo o n´mero de u v´rtices, impondo as seguintes restri¸˜es, para ǫ ∈ (0, 1 ) e co 2 ǫ ≤ x1 ≤ 1, ǫxi −1 ≤ xi ≤ 1 − xi −1 , i = 2, . . . , n de forma a criar uma sequˆncia de v´rtices adjacentes para os quais a e e fun¸ao objetivo seja reduzida quando nos movemos de um v´rtice para o c˜ e outro. Alexandre Salles da Cunha M´todo Simplex e
  • 59.
    Criamos um caminhoque percorre todos os v´rtices e Existe uma regra de pivoteamento que faz o m´todo percorrer todos os e v´rtices (ver a prova em Papadimitrou e Steiglitz, pp. 166-170). e min −xn ǫ ≤ x1 ≤ 1, ǫxi −1 ≤ xi ≤ 1 − xi −1 , i = 2, . . . , n Alexandre Salles da Cunha M´todo Simplex e
  • 60.
    Existe regra depivoteamento imune a esta patologia ? Quest˜o em aberto a Para v´rias regras populares de pivotemento, h´ exemplos como o a a indicado anteriormente, que fazem o m´todo percorrer todos os e v´rtices. e Entretanto, estes exemplos n˜o excluem a possibilidade de existir uma a regra de pivotemento que n˜o apresente o comportamento de pior a caso exponencial. Esta ´ uma das quest˜es mais importantes em Teoria de Programa¸˜o e o ca Linear, ainda em aberto. O fato ´ que n˜o se conhece uma regra de pivoteamento imune a esta e a patologia. O Problema de Programa¸˜o Linear ´ polinomialmente sol´vel ca e u (Algoritmo do Elips´ide). o Alexandre Salles da Cunha M´todo Simplex e