O Método Simplex

Cid C. de Souza
cid@ic.unicamp.br
Instituto de Computac¸ ˜ ao – UNICAMP
Cid de Souza – M´ etodo Simplex – p.1/63
Definições e Resultados Básicos
S ⊆ R é convexo se e somente se todo ponto x que é
uma combinação linear convexa de um par de pontos
qualquer (x
1
, x
2
) de S também pertencer a S.
CONVEXO
NÃO CONVEXO
Proposição: S = {x ∈ R
n
: Ax ≤ b, x ≥ 0} é convexo.
Cid de Souza – M´ etodo Simplex – p.2/63
Definições e Resultados Básicos
Definição (geométrica):
x é um ponto extremo de S se e somente se não existem
pontos distintos x
1
e x
2
de S tal que αx
1
+ (1 −α)x
2
= x
com 0 < α < 1.
Definição (algébrica):
Seja S = {x ∈ R
n
: Ax ≤ b, x ≥ 0} x não vazio, A : m×n,
m ≤ n e ρ(A) = m. Se x é ponto extremo de S então x
satisfaz n desigualdades linearmente independentes de
S na igualdade.
Cid de Souza – M´ etodo Simplex – p.3/63
Definições e Resultados Básicos
(algébrica =⇒geométrica)
Seja Gx ≤ g o subsistema linear de S com n desigualdades LI
satisfeitas na igualdade, ou seja,
Gx = g, G : n ×n, ρ(G) = n.
Supor por contradição que x = αx
1
+ (1 −α)x
2
, x
1
= x
2
∈ S.
Isso implica que Gx = αGx
1
+ (1 −α)Gx
2
= g.
Como α > 0, 1 −α > 0, Gx
1
≤ g e Gx
2
≤ g, Gx
1
= Gx
2
= g.
Uma vez que G é inversível, isso obriga que x = x
1
= x
2
.
Logo, x deve ser extremo.
Cid de Souza – M´ etodo Simplex – p.4/63
Definições e Resultados Básicos
(geométrica =⇒algébrica)
Supor que x satisfaz a apenas r < n desigualdades de S na
igualdade. Sejam estas r desigualdades dadas por:
Gx = g, G : r ×n, ρ(G) = r < n.
Afirmação: Existe d = 0 tal que Gd = 0
(as colunas de G são LD)
Portanto, existe um escalar ǫ > 0 tal que (x −ǫd) e (x + ǫd)
estão ambos em S.
Como x =
1
2
(x −ǫd) +
1
2
(x + ǫd), x não é extremo.
Cid de Souza – M´ etodo Simplex – p.5/63
Representação de Poliedros
Teorema de Caratheodory:
O poliedro não vazio S = {x ∈ R
n
: Ax ≤ b, x ≥ 0} também
pode ser representado na seguinte forma:
S = {x ∈ R : x =

p
i=1
λ
i
x
i
+

q
j=1
µ
j
d
j
,

p
i=1
λ
i
= 1, λ
i
≥ 0 para todo i = 1, . . . , p
µ
j
≥ 0 para todo j = 1, . . . , q},
onde {x
1
, . . . , x
p
} são os pontos extremos de S e {d
1
, . . . , d
q
}
são os raios extremos de S.
Cid de Souza – M´ etodo Simplex – p.6/63
Representação de Poliedros
x1
x2
x3
d1
d2
x1
x2
x3
x4
x5
POLIEDRO ILIMITADO
POLIEDRO LIMITADO
(POLITOPO)
Cid de Souza – M´ etodo Simplex – p.7/63
Soluções básicas
S = {x ∈ R
n
: Ax = b, x ≥ 0}
Se y ∈ S então y é uma solução viável.
Supor que A : m×n, ρ(A) = m e n ≥ m.
Então, x é uma solução básica se x
i
= 0 para todo
i = m + 1, . . . , n e a matriz B = [A
•1
A
•2
. . . A
•m
] é
inversível.
(assume-se que as colunas de A e as componentes de x
tenham sido rearranjadas apropriadamente).
Cid de Souza – M´ etodo Simplex – p.8/63
Soluções básicas
x =
2
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
4
x
1
x
2
.
.
.
. . .
0
.
.
.
0
3
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
5
=
2
6
6
4
x
B
. . .
x
N
3
7
7
5
,
onde x
B
são as variáveis básicas e x
N
são as variáveis não básicas.
Ax = [B N]
_
_
x
B
x
N
_
_
= Bx
B
+ Nx
N
= b =⇒ x
B
= B
−1
b −B
−1
Nx
N
.
Cid de Souza – M´ etodo Simplex – p.9/63
Soluções básicas (exemplos)
x
1
+ x
2
≤ 6
x
2
≤ 3
x
1
, x
2
≥ 0

x
1
+ x
2
+ x
3
= 6
x
2
+ x
4
= 3
x
1
, x
2
, x
3
, x
4
≥ 0
A =
_
_
0 1 1 0
1 1 0 1
_
_
x2
x1
(0,3)
(3,3)
(0,0)
x1=0
x2=0
x4=0
x3=0
(6,0)
Cid de Souza – M´ etodo Simplex – p.10/63
Soluções básicas (exemplos)
1. B = [A
•1
A
•2
] =
_
_
1 1
0 1
_
_
é inversível.
2
4
x
1
x
2
3
5
= B
−1
b =
2
4
1 −1
0 1
3
5
2
4
6
3
3
5
=
2
4
3
3
3
5
, x
N
=
2
4
x
3
x
4
3
5
=
2
4
0
0
3
5
2. B = [A
•2
A
•3
] =
_
_
1 1
1 0
_
_
é inversível.
2
4
x
2
x
3
3
5
= B
−1
b =
2
4
0 1
1 −1
3
5
2
4
6
3
3
5
=
2
4
3
3
3
5
, x
N
=
2
4
x
1
x
4
3
5
=
2
4
0
0
3
5
Cid de Souza – M´ etodo Simplex – p.11/63
Soluções básicas (exemplos)
3. B = [A
•2
A
•4
] =
_
_
1 0
1 1
_
_
é inversível.
2
4
x
2
x
4
3
5
= B
−1
b =
2
4
1 0
−1 1
3
5
2
4
6
3
3
5
=
2
4
6
−3
3
5
, x
N
=
2
4
x
1
x
3
3
5
=
2
4
0
0
3
5
Solução inviável !
4. B = [A
•1
A
•3
] =
_
_
1 0
1 1
_
_
não é inversível.
Número de soluções básicas:
n!
m!(n−m)!
(exponencial !)
Cid de Souza – M´ etodo Simplex – p.12/63
Soluções Básicas e Pontos Extremos
Teorema: Seja S = {x ∈ R
n
: Ax = b, x ≥ 0}. Então, x é um ponto
extremo de S se e somente se x é uma solução básica viável.
(básica =⇒extremo)
Seja x uma solução básica e assuma por contradição que
x = αy + (1 −α)z, y, z ∈ S −{x} e α ∈ (0, 1).
x =
_
¸
¸
¸
¸
¸
¸
¸
¸
_
x
B
. . .
0
.
.
.
0
_
¸
¸
¸
¸
¸
¸
¸
¸
_
= α
_
¸
¸
¸
¸
¸
¸
¸
¸
_
y
B
. . .
y
m+1
.
.
.
y
n
_
¸
¸
¸
¸
¸
¸
¸
¸
_
+ (1 −α)
_
¸
¸
¸
¸
¸
¸
¸
¸
_
z
B
. . .
z
m+1
.
.
.
z
n
_
¸
¸
¸
¸
¸
¸
¸
¸
_
.
Cid de Souza – M´ etodo Simplex – p.13/63
Soluções Básicas e Pontos Extremos
Como y
m+j
≥ 0, z
m+j
≥ 0 e 0 < α < 1, tem-se que,
y
m+j
= z
m+j
= 0 para todo j = 1, . . . , n −m.
Além disso,
Ay = [B N][y
B
0] = By
B
= b
Az = [B N][z
B
0] = Bz
B
= b
_
_
_
=⇒y
B
= z
B
= x
B
= B
−1
b.
Conclui-se que x não pode ser escrita como combinação
convexa estrita de dois pontos distintos de S. Logo, x é
ponto extremo.
Cid de Souza – M´ etodo Simplex – p.14/63
Soluções Básicas e Pontos Extremos
(extremo =⇒básica)
Como x é extremo, existem n restrições LI em S que são
satisfeitas na igualdade. Logo existem n −m equações da
forma x
i
= 0 que são satisfeitas para i ∈ N ⊆ {1, . . . , n}.
Assim, tem-se o sistema linear da forma Ax = b, x
N
= 0 que é
satisfeito por x que, na forma matricial, é dado por:
Ax =
2
4
B N
0 I
3
5
2
4
x
B
x
N
3
5
=
2
4
b
0
3
5
.
Este sistema tem solução única pois as linhas de A são LI.
Logo det(B) = det(A) e, portanto, B é inversível e a solução
do sistema acima é básica.
Cid de Souza – M´ etodo Simplex – p.15/63
Pontos extremos e otimalidade
Teorema: S = {x ∈ R
n
: Ax ≤ b, x ≥ 0} tem solução viável
se e somente se S tem um ponto extremo.
Teorema: Seja S = {x ∈ R
n
: Ax = b, x ≥ 0}. Considere o
problema dado por z = min{cx : x ∈ S}. Se z tem valor
finito então existe um ponto extremo ótimo.
Além disso, se existir mais de um ponto extremo ótimo,
toda combinação convexa destes pontos será uma solução
ótima também.
Prova: Teorema de Caratheodory. .
Cid de Souza – M´ etodo Simplex – p.16/63
Idéia do algoritmo Simplex
Encontrar um ponto extremo ( ≡ solução básica).
Sair do ponto extremo corrente e ir para um ponto extremo
vizinho onde o valor da função objetivo é melhor.
Repetir o passo anterior enquanto for possível.
Retornar o ponto extremo corrente (solução ótima !)
min z = cx
s.a. Ax = b,
x ≥ 0
Solução básica:
Ax = b ≡ Bx
B
+ Nx
N
= b =⇒
x
B
= B
−1
b −B
−1
Nx
N
, x
N
= 0
x
B
= b −

j∈N
B
−1
a
•j
. ¸¸ .
y
j
x
j
Cid de Souza – M´ etodo Simplex – p.17/63
Algoritmo do Simplex
Escrever a função objetivo e as variáveis básicas em função
das variáveis não básicas:
_
¸
¸
_
¸
¸
_
z = cx = c
B
x
B
+ c
N
x
N
= (c
B
B
−1
b −c
B
B
−1
Nx
N
) + c
N
x
N
z = c
B
B
−1
b
. ¸¸ .
z
0
+ (c
N
−c
B
B
−1
N)x
N
. ¸¸ .
P
j∈N
(c
j
−c
B
B
−1
a
•j
)x
j
Reescrevendo o PL: (custos reduzidos)
min z = z
0
+

j∈N
(c
j
−z
j
)x
j
s.a.

j∈N
y
j
x
j
+ x
B
= b ≡

j∈N
y
j
x
j
≤ b
x
j
≥ 0 para j ∈ N, x
B
≥ 0 x
j
≥ 0 para j ∈ N
Cid de Souza – M´ etodo Simplex – p.18/63
Simplex: exemplo
z = max x
1
+ 2x
2
2x
1
+ x
2
≤ 4
x
1
+ 3x
2
≤ 6
x
1
+ x
2
≤ 3
x
1
, x
2
, ≥ 0
z = max x
1
+ 2x
2
2x
1
+ x
2
+ y
1
+ + = 4
x
1
+ 3x
2
+ y
2
+ = 6
x
1
+ x
2
+ y
3
= 3
x
1
, x
2
, y
1
, y
2
, y
3
≥ 0
Cid de Souza – M´ etodo Simplex – p.19/63
Simplex: exemplo
y1=0
x1=0
x2=0
y3=0
y2=0
(0,0)
(0,2)
(2,0)
(6/5,8/5)
Cid de Souza – M´ etodo Simplex – p.20/63
Simplex: exemplo
Primeira iteração: x
1
= x
2
= 0
variáveis básicas: y
1
, y
2
e y
3
:
z = x
1
+ 2x
2
y
1
= 4 −2x
1
−x
2
y
2
= 6 −x
1
−3x
2
y
3
= 3 −x
1
−x
2
_
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
_
x
2
entra na base e y
2
sai da base
Segunda iteração: x
1
= 0, x
2
= 2
variáveis básicas: y
1
, x
2
e y
3
:
z = 4 +
1
3
x
1

2
3
y
2
y
1
= 2 −
5
3
x
1
+
1
3
y
2
x
2
= 2 −
1
3
x
1

1
3
y
2
y
3
= 1 −
2
3
x
1
+
1
3
y
2
_
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
_
x
1
entra na base e y
1
sai da base
Cid de Souza – M´ etodo Simplex – p.21/63
Simplex: exemplo
Terceira iteração: x
1
=
6
5
, x
2
=
8
5
variáveis básicas: x
1
, x
2
e y
3
:
z =
66
15

1
5
y
1

9
5
y
2
. . .
_
_
_
solução ótima ! (c
j
< 0, ∀j ∈ N)
Cid de Souza – M´ etodo Simplex – p.22/63
Simplex: tableau
Segunda iteração:
x
1
x
2
y
1
y
2
y
3
RHS
z -
1
3
0 0
2
3
0 4
y
1
5
3
0 1 −
1
3
0 2
x
2
1
3
1 0
1
3
0 2
y
3
2
3
0 0 −
1
3
1 1
Terceira iteração:
tableau ótimo !
x
1
x
2
y
1
y
2
y
3
RHS
z 0 0
1
5
9
15
0
66
15
x
1
1 0
3
5

1
5
0
6
5
x
2
0 1 −
1
5
6
15
0
24
15
y
3
0 0 −
2
5

1
5
1
1
5
Pivoteamento, operações elementares e a inversa da base.
Cid de Souza – M´ etodo Simplex – p.23/63
Simplex: caso ilimitado
z = min −x
1
− 2x
2
3x
1
+ x
2
− y
1
= 3
−2x
1
+ x
2
+ y
2
+ = 3
x
1
− 2x
2
+ y
3
= 1
2x
1
− x
2
+ y
4
= 10
x
1
, x
2
, y
1
, y
2
, y
3
y
4
≥ 0
(0,3)
s
3
=
0
s
4
=
0 s
2
=
0
x
1
=
0
x2=0
(1,0)
(19/3,8/3)
Cid de Souza – M´ etodo Simplex – p.24/63
Simplex: caso ilimitado (cont.)
penúltima iteração:
vértice degenerado (1,0)
x
1
x
2
y
1
y
2
y
3
y
4
RHS
z 0
5
3
1
3
0 0 0 −1
x
1
1
1
3

1
3
0 0 0 1
y
2
0
5
3

2
3
1 0 0 5
y
3
0 −
7
3
1
3
0 1 0 0
y
4
0 −
5
3
2
3
0 0 1 8
última iteração:
vértice degenerado (0,3)
problema ilimitado !
direção extrema: d =
2
4
1
2
3
5
x
1
x
2
y
1
y
2
y
3
y
4
RHS
z 0 0
1
3

2
3
0 0 -6
x
1
1 0 −
1
5

2
15
0 0 0
x
2
0 1 −
2
5
2
5
0 0 3
y
3
0 0 −
3
5
14
15
1 0 7
y
4
0 0 0
2
3
0 1 13
Cid de Souza – M´ etodo Simplex – p.25/63
Dualidade
Primal:
(P)
max z

= cx
s.a Ax ≤ b
x ≥ 0
Dual:
(D)
min w

= ub
s.a uA ≥ c
u ≥ 0
Exemplo:
(P)
max z = x
1
+ x
2
+ x
3
s.a x
1
− 3x
2
+ 4x
3
= 6
x
1
− x
2
≤ 3
2x
2
− x
3
≥ 4
x
1
≥ 0 , x
2
≥ 0 , x
3
∈ R
Cid de Souza – M´ etodo Simplex – p.26/63
Dualidade (cont.)
(D)
min w = 6u
1
+ 3u
2
− 4u
3
s.a u
1
+ u
2
≥ 1
−3u
1
− u
2
− 2u
3
≥ 1
4u
1
+ u
3
= 1
u
1
∈ R , u
2
≥ 0 , u
3
≥ 0
Existe uma variável dual para cada restrição do primal e vice-versa.
Proposição: O dual do dual é o primal
Cid de Souza – M´ etodo Simplex – p.27/63
Dualidade (cont.)
Proposição: (Dualidade Fraca)
Se x é uma solução primal viável e u é uma solução dual
viável então cx ≤ z

≤ w

≤ ub.
Relação entre os valores ótimos primal e dual:
1. se z

→∞(P ilimitado) então D é inviável.
2. se w

→−∞(D ilimitado) então P é inviável.
3. se P e D são ambos limitados então z

= w

(Dualidade Forte) .
4. P e D são ambos inviáveis.
Cid de Souza – M´ etodo Simplex – p.28/63
Relações entre o primal e o dual
Primal: Ilimitado
max z = x
s.a x ≥ 1
x ≥ 0
1
Dual: Inviável
min w = −u
s.a u ≤ −1
u ≥ 0
−1 0
Cid de Souza – M´ etodo Simplex – p.29/63
Relações entre o primal e o dual
Primal: Inviável
max z = x
s.a x ≤ −3
x ≥ 0
−3 0
Dual: Ilimitado
min w = −3u
s.a u ≥ 1
u ≥ 0
1
Cid de Souza – M´ etodo Simplex – p.30/63
Relações entre o primal e o dual
Primal: Limitado
max z = x
s.a x ≤ 5
x ≥ 0
0 5
Dual: Limitado
min w = 5u
s.a u ≥ 1
u ≥ 0
1
Cid de Souza – M´ etodo Simplex – p.31/63
Relações entre o primal e o dual
Primal: Inviável
max z = x
1
−x
2
s.a x
1
+ x
2
≤ −1
x
1
+ x
2
≥ 1
x
1
, x
2
∈ R
Dual: Inviável
min w = −u
1
−u
2
s.a u
1
−u
2
= 1
u
1
−u
2
= −1
u
1
, u
2
≥ 0
Cid de Souza – M´ etodo Simplex – p.32/63
Complementaridade de Folgas
(P)
max z

= cx
s.a Ax + s = b
x ≥ 0, s ≥ 0
(D)
min w

= ub
s.a uA−t = c
u ≥ 0, t ≥ 0
Teorema das Folgas Complementares: (x

, s

) é uma solução ótima
de P e (u

, t

) uma solução ótima de D se e somente se, para todo
j ∈ {1, . . . , n}, x

j
t

j
= 0 e, para todo i ∈ {1, . . . , m}, u

i
s

i
= 0.
Prova: (⇒) u

é viável para D, logo u

A−t

= c.
Como x

≥ 0, (u

A−t

)x

= cx

.
Reescrevendo chega-se a: u

Ax

−t

x

= cx

.
Como x

é viável para P, tem-se: u

(b −s

) −t

x

= cx

.
Pela dualidade forte, conclui-se que: u

s

+ t

x

= 0.
Como x

, s

, u

, t

≥ 0 o resultado fica mostrado.
Cid de Souza – M´ etodo Simplex – p.33/63
Complementaridade de Folgas (cont.)
Prova: (⇐) Como (x

, s

) e (u

, t

) são viáveis para P e
D respectivamente, tem-se:
cx

= (u

A −t

)x

= u

Ax

−t

x

= u

Ax

ou ainda
cx

= u

(b −s

) = u

b −u

s

= u

b.
Pela dualidade fraca, (x

, s

) deve ser uma solu-
ção ótima de P e (u

, t

) deve ser uma solução
ótima de D.
Cid de Souza – M´ etodo Simplex – p.34/63
Bases duais viáveis
(P)
max z

= cx
s.a Ax = b, x ≥ 0
(D)
min w

= ub
s.a uA ≥ c
Solução básica primal: Ax = Bx
B
+ Nx
N
= b
z = cx = c
B
x
B
+ c
N
x
N
= c
B
B
−1
b + (c
N
−c
B
B
−1
N)
. ¸¸ .
custos reduzidos
x
N
.
Definir: u = c
B
B
−1
e t = uA−c (folgas duais).
Proposição: u é complementar a x =
2
4
x
B
x
N
3
5
, i.e., xt = 0.
Prova: x(uA−c) = (x
B
| x
N
)(uB −c
B
| uN −c
N
) =
(x
B
| x
N
)(c
B
B
−1
B −c
B
| c
B
B
−1
N −c
N
) = 0
Cid de Souza – M´ etodo Simplex – p.35/63
Bases duais viáveis
Definição: Se c
B
B
−1
N ≥ c
N
então B é uma base dual viável.
Nota 1: c
B
B
−1
N ≥ c
N
≡ custos reduzidos negativos.
Nota 2: Uma base pode ser só primal viável, só dual viável, nem
primal e nem dual viável ou simultaneamente primal e dual viável.
Proposição: Se B é uma base primal e dual viável então
(x
B
| x
N
) = (B
−1
b | 0) é ótima para P e u = c
B
B
−1
é ótima
para D.
Prova: z

≥ cx = c
B
B
−1
b e w

≤ ub = c
B
B
−1
b
Pela dualidade fraca, z

≤ w

, logo z

= w

Cid de Souza – M´ etodo Simplex – p.36/63
Primal-Simplex formalizado
Definição: as bases B e B

são adjacentes se |B \ B

| = |B

\ B| = 1.
Movendo de uma base para outra: aumenta uma variável não
básica mantendo-se as outras em zero.
x
B
+B
−1
Nx
N
= B
−1
b =⇒ x
B
+B
−1
a
•r
x
r
= b =⇒ x
B
+ y
r
x
r
= b
1. Se para todo i = 1, . . . , m, (y
r
)
i
≤ 0, x
r
cresce indefinidamente
e a base não muda.
2. Se para algum j ∈ {1, . . . , m}, (y
r
)
j
> 0, escolher
s ∈ {1, . . . , m} tal que:
b
s
(y
r
)
s
= min
_
b
i
(y
r
)
i
: (y
r
)
i
> 0
_
Cid de Souza – M´ etodo Simplex – p.37/63
Primal-Simplex (cont.)
x
r
entra na base com valor
b
s
(y
r
)
s
e (x
B
)
s
sai da base.
Definição: uma soluçao primal viável é degenerada se
x
B
= b e b
i
= 0 para algum i = 1, . . . , m.
Observação: se não existir nenhuma base degenerada então,
definida uma variável não-básica para entrar na base, só ha-
verá uma variável básica candidata a sair da base.
Cid de Souza – M´ etodo Simplex – p.38/63
Primal-Simplex (cont.)
Corolário: Seja B uma base não degenerada primal viável mas dual
inviável, i.e., existe x
r
não básica com custo reduzido
c
r
= c
r
−c
B
B
−1
a
•r
= c
r
−c
B
y
r
> 0.
1. Se y
r
≤ 0 então z

→∞(primal ilimitado).
2. Se ∃s tal que (y
r
)
s
> 0 então é possível mover para uma única base
B
(r)
de melhor custo.
Prova:
1. x
B
= b −y
r
x
r
, logo z = z
0
+ c
r
x
r
> z
0
e, portanto, z →∞quando
x
r
→∞.
2. Na base B
(r)
, o custo será c
B
(r) x
B
(r) = z
0
+ c
r
x
r
> z
0
= c
B
x
B
.
Cid de Souza – M´ etodo Simplex – p.39/63
Primal Simplex: Fase 2
Passo 1: encontrar base primal viável B ( FASE 1 ).
Passo 2: se (c
N
−c
B
B
−1
N) ≤ 0, PARE !
Retorne a solução ótima x
B
= B
−1
b, x
N
= 0.
Se não (pricing) escolher r tal que c
r
= c
r
−c
B
B
−1
a
•r
> 0.
Se y
r
= B
−1
a
•r
≤ 0, PARE ! Retorne “problema ilimitado”.
Se não, escolher s tal que (y
r
)
s
> 0 e
b
s
(y
r
)
s
= min
(y
r
)
i
>0
_
b
i
(y
r
)
i
_
.
(⋆ s sai da base e r entra na base ⋆)
Executar troca de base (pivoteamento): B ←B {B
•s
} ∪ {a
•r
}.
Voltar ao Passo 1.
Proposição: Não havendo soluções básicas degeneradas, o algoritmo
primal simplex temina em um número finito de passos.
Cid de Souza – M´ etodo Simplex – p.40/63
Primal Simplex: Fase 1
(P)
max z = cx
s.a Ax = b
x ≥ 0
(supor b ≥ 0)
(P
a
)
max z
a
= (−1)x
a
s.a Ax + Ix
a
= b
x ≥ 0, x
a
≥ 0
(x
a
: variáveis artificiais)
Observações:
P
a
é viável pois tem solução básica dada por x
a
= b e x = 0.
Pode ser resolvido pela Fase 2 !
P
a
é limitado (z
a
≤ 0), portanto tem solução ótima em um vértice.
(x, x
a
) é viável para P
a
e x viável para P se e somente se x
a
= 0.
Se z
a
< 0, P
a
não tem solução viável com x
a
= 0 e P é inviável.
Cid de Souza – M´ etodo Simplex – p.41/63
Primal Simplex: Fase 1 (cont.)
Observações:
Se z
a
= 0, toda solução ótima (x, x
a
) de P
a
satisfaz x
a
= 0 com
x viável para P.
No caso anterior, se todas as variáveis artificiais são não
básicas, a base ótima de P
a
é uma base viável para P.
Pode-se remover as variáveis artificiais do problema !
Mas, é possível que algumas variáveis artificiais fiquem na
base com o valor zero (base degenerada). Neste caso, se elas
não forem removidas por pivoteamento, existem restrições
redundantes no sistema Ax = b.
Cid de Souza – M´ etodo Simplex – p.42/63
Algoritmo Dual Simplex
Comparativo entre os algoritmos Primal e Dual Simplex:
Primal Simplex: visita bases primais viáveis até que a base corrente
se torne dual viável (custos reduzidos ≤ 0).
Dual Simplex: visita bases duais viáveis até que a base corrente se
torne primal viável (variáveis básicas ≥ 0).
Proposição: Se B uma base dual viável e b
s
< 0 para algum s, então
1. Se (y
s
)
j
≥ 0 para todo j ∈ N (não básica) então o problema é primal
inviável.
2. Se não, existe uma base dual viável B
(r)
adjacente à base B corrente
dada por B
(r)
= B ∪ {a
•r
} {B
•s
} satisfazendo r ∈ N, (y
s
)
r
< 0 e
r = arg min
j∈N
_
c
j
(y
s
)
j
: (y
s
)
j
< 0
_
.
Cid de Souza – M´ etodo Simplex – p.43/63
Algoritmo Dual Simplex (cont.)
Prova:
1. x
B
+ B
−1
Nx
N
= b =⇒(x
B
)
s
= b
s

j∈N
(y
s
)
j
x
j
= b
s
< 0
Se (y
s
)
j
≥ 0 para todo j ∈ N, toda solução com x
j
≥ 0 para todo j ∈ N
satisfaz (x
B
)
s
< 0.
2. Se x
r
entra na base e (x
B
)
s
sai, então
z = z
0
+
X
j∈N
c
j
x
j
− λ[(x
B
)
s
+
X
j∈N
(y
s
)
j
x
j
] + λb
s
| {z }
= 0 (linha do tableau !)
z = z
0
+ λb
s
+
X
j∈N
[c
j
−λ(y
j
)
s
]x
j
−λ(x
B
)
s
, onde λ =
c
r
(y
s
)
r
≥ 0.
A base B
(r)
é dual viável pois: λ ≥ 0 (custo reduzido de (x
B
)
s
),
c
j
− λ(y
s
)
j
≤ c
j
≤ 0 para todo j tal que (y
j
)
s
≥ 0 e, pela escolha de r,
c
j
−λ(y
s
)
j
≤ 0 para todo j satisfazendo (y
s
)
j
< 0.
Cid de Souza – M´ etodo Simplex – p.44/63
Algoritmo Dual Simplex
Passo 1: encontrar base dual viável B ( FASE 1 ).
Passo 2: se B é primal viável, i.e., se b = B
−1
b ≥ 0, PARE !
Retorne a solução ótima (primal) x
B
= B
−1
b, x
N
= 0.
Se não (pricing) escolher s tal que (x
B
)
s
< 0.
Se (y
s
)
j
≥ 0 para todo j ∈ N, PARE !
Retorne “problema inviável”.
Se não, escolher r tal que r = arg min
j∈N
_
c
j
(y
s
)
j
: (y
s
)
j
< 0
_
(⋆ s sai da base e r entra na base ⋆)
Executar troca de base (pivoteamento): B ←B{B
•s
}∪{a
•r
}.
Voltar ao Passo 1.
Cid de Souza – M´ etodo Simplex – p.45/63
Dual Simplex: (cont.)
Observações:
A função objetivo do problema primal é monotonamente
decrescente ao contrário do primal simplex.
O valor do decréscimo ao mudar a base é de
¸
¸
¸
c
r
b
s
(y
s
)
r
¸
¸
¸.
Não havendo degenerescência no problema dual, c
r
< 0
e o decréscimo é estrito.
Logo o algoritmo termina em tempo finito !
Cid de Souza – M´ etodo Simplex – p.46/63
Dual Simplex: exemplo
z = max − 2x
1
− 3x
2
− 4x
3
x
1
+ 2x
2
+ x
3
− x
4
= 3
2x
1
− x
2
+ 3x
3
− x
5
= 4
x
1
, x
2
, x
3
, x
4
x
5
≥ 0
x
1
x
2
x
3
x
4
x
5
RHS
z 2 3 4 0 0 0
x
4
−1 −2 −1 1 0 −3
x
5
−2 1 −3 0 1 −4
Cid de Souza – M´ etodo Simplex – p.47/63
Dual Simplex: exemplo (cont.)
x
1
x
2
x
3
x
4
x
5
RHS
z 0 4 1 0 1 −4
x
4
0 −
5
2
1
2
1 −
1
2
−1
x
1
1 −
1
2
3
2
0 −
1
2
2
x
1
x
2
x
3
x
4
x
5
RHS
z 0 0
9
5
8
5
1
5

28
5
x
2
0 1 −
1
5

2
5
1
5
2
5
x
1
1 0
7
5

1
5

2
5
11
5
solução ótima !
Cid de Souza – M´ etodo Simplex – p.48/63
Tableau e variáveis duais
z = c
B
x
B
+ c
N
x
N
= z
0
+

j∈N
(c
j
−c
B
B
−1
. ¸¸ .
u
a
•j
)x
j
Se existirem colunas na matriz original A que formam uma
matriz identidade e que correspondam a variáveis de folga
(custos nulos), no tableau ótimo teremos nestas colunas que:
c
j
= −u

j
,
ou seja, na linha correspondente à função objetivo e nas
colunas correspondentes à identidade teremos as variáveis
duais ótimas.
Cid de Souza – M´ etodo Simplex – p.49/63
Primal ou Dual Simplex ?
se c
j
≤ 0 para todo j ∈ N e b
i
≥ 0 para todo i ∈ B então a
solução é ótima. Nada há a fazer !
se c
j
≤ 0 para todo j ∈ N e ∃i ∈ B tal que b
i
< 0 então Primal
Simplex tem Fase 1 mas o Dual Simplex passa direto à Fase 2 !
se ∃j ∈ N tal que c
j
> 0 e b
i
≥ 0 para todo i ∈ B então Dual
Simplex tem Fase 1 mas o Primal Simplex passa direto à Fase
2 !
se ∃j ∈ N tal que c
j
> 0 e ∃i ∈ B tal que b
i
< 0 então Primal e
Dual Simplex tem Fase 1.
Cid de Souza – M´ etodo Simplex – p.50/63
Adição de nova restrição após otimização
(1)
max z = cx
s.a Ax = b (A : m×n)
x ≥ 0
(2)
max z

= cx
s.a Ax = b
dx ≤ d
0
x ≥ 0
Base ótima para (1): A = (B | N), x
B
= B
−1
b −B
−1
Nx
N
, x
N
= 0.
Folga da nova restrição: dx + x
n+1
= d
0
, x
n+1
≥ 0.
Uma base para (2): B

= B ∪ {a
•,n+1
}, onde a
•,n+1
=
_
¸
¸
¸
¸
¸
¸
_
0
.
.
.
0
1
_
¸
¸
¸
¸
¸
¸
_
= e
m+1
.
Cid de Souza – M´ etodo Simplex – p.51/63
Adição de nova restrição (cont.)
Usando a antiga base B podemos escrever x
n+1
como função de x
N
:
dx + x
n+1
= (d
B
|d
N
)
_
_
x
B
x
N
_
_
+ x
n+1
= d
B
x
B
+ d
N
x
N
+ x
n+1
= d
B
(B
−1
b −B
−1
Nx
N
) + d
N
x
N
+ x
n+1
= d
0
.
Linha do novo tableau: x
n+1
+ (d
N
−d
B
B
−1
N)x
N
= d
0
−d
B
b.
Novo tableau: (x
B
, x
N
, x
n+1
≥ 0 e c

N
= novos custos reduzidos)
z

+ 0x
B
+ 0x
n+1
+ c

N
x
N
= c
B
b
x
B
+ B
−1
Nx
N
= b
x
n+1
+ (d
N
−d
B
B
−1
N)x
N
= d
0
−d
B
b
Essa solução é primal viável ?
Cid de Souza – M´ etodo Simplex – p.52/63
Adição de nova restrição (cont.)
Proposição: A nova base B

é dual viável.
Prova:
B

=
_
¸
¸
¸
¸
¸
¸
_
B
0
.
.
.
0
d
B
1
_
¸
¸
¸
¸
¸
¸
_
=⇒ (B

)
−1
=
_
¸
¸
¸
¸
¸
¸
_
B
−1
0
.
.
.
0
−d
B
B
−1
1
_
¸
¸
¸
¸
¸
¸
_
custos reduzidos:
c

N
= c
N
−c
B
′ (B

)
−1
N

, onde N

=
_
_
N
d
N
_
_
e c
B
′ = [c
B
| 0].
Cid de Souza – M´ etodo Simplex – p.53/63
Adição de nova restrição (cont.)
Prova: (cont.)
c
B
′ (B

)
−1
= [c
B
| 0]
_
¸
¸
¸
¸
¸
¸
_
B
−1
0
.
.
.
0
−d
B
B
−1
1
_
¸
¸
¸
¸
¸
¸
_
= [c
B
B
−1
| 0].
Logo, c
B
′ (B

)
−1
N

= c
B
B
−1
N, ou seja, os custos reduzidos das
variáveis não básicas permanecem inalterados !
Portanto, a nova base ainda é dual viável.
Conclusão: após adicionar uma nova restrição, deve-se dar preferência ao
uso do algoritmo dual simplex !
Cid de Souza – M´ etodo Simplex – p.54/63
Adição de nova restrição: exemplo
z = max 3x
1
+ 5x
2
x
1
≥ 4
3x
1
+ 2x
2
≤ 18
x
1
, x
2
≥ 0
Folga da primeira restrição: y
1
.
Folga da segunda restrição: y
2
.
9
0 4
3
6
x2=0
x
1
=
0
6
y
1
=
0
y
2
=
0
Cid de Souza – M´ etodo Simplex – p.55/63
Adição de nova restrição: exemplo
Tableau ótimo !
Inversa da base: B
−1
x
1
x
2
y
1
y
2
RHS
z
9
2
0 0
5
2
45
y
1
1 0 1 0 4
x
2
3
2
1 0
1
2
9
Nova restrição:
x
2
≤ 6 ≡ x
2
+ y
3
= 6,
com y
3
≥ 0.
9
0 4
3
6
x2=0
x
1
=
0
6
y
1
=
0
y
2
=
0
2
y3=0
Cid de Souza – M´ etodo Simplex – p.56/63
Adição de nova restrição: exemplo
Novo Tableau:
Escrever y
3
em função das
variáveis não-básicas.
x
1
x
2
y
1
y
2
y
3
RHS
z
9
2
0 0
5
2
0 45
y
1
1 0 1 0 0 4
x
2
3
2
1 0
1
2
0 9
y
3
0 1 0 0 1 6
Base não é primal viável
mas é dual viável.
Usar o dual simplex !
(B

)
−1
: colunas y
1
, y
2
, y
3
.
x
1
x
2
y
1
y
2
y
3
RHS
z
9
2
0 0
5
2
0 45
y
1
1 0 1 0 0 4
x
2
3
2
1 0
1
2
0 9
y
3

3
2
0 0 −
1
2
1 −3
Cid de Souza – M´ etodo Simplex – p.57/63
Adição de nova restrição: exemplo
Base é primal viável
e é dual viável.
Tableau ótimo !
x
1
x
2
y
1
y
2
y
3
RHS
z 0 0 0 1 3 36
y
1
0 0 1 −
1
3
2
3
2
x
2
0 1 0 0 1 6
x
1
1 0 0
1
3

2
3
2
Cid de Souza – M´ etodo Simplex – p.58/63
Simplex para variáveis limitadas
(P)
max z = cx
s.a Ax = b (u)
x ≥ 0
x ≤ h (v)
(D)
min w = ub + vh
s.a uA + v ≥ c
v ≥ 0
Folgas:
_
_
_
Primal: s = h −x, s ≥ 0
Dual: t = uA + v −c, t ≥ 0
Definição: Uma partição das colunas de A tal que A = [B | N
1
| N
2
]
corresponde a uma solução básica [x
B
| x
N
1
| x
N
2
] se B é inversível,
x
N
1
= 0, x
N
2
= h
N
2
e x
B
= B
−1
b −B
−1
N
2
x
N
2
−B
−1
N
1
x
N
1
.
A solução básica será viável se 0 ≤ B
−1
(b −N
2
h
N
2
) ≤ h
B
.
Cid de Souza – M´ etodo Simplex – p.59/63
Simplex para variáveis limitadas (cont.)
Existem dois tipos de variáveis não básicas: as que estão no seu
limite inferior (x
N
1
) e as que estão no seu limite superior (x
N
2
).
Escrevendo a F.O. em função das variáveis não-básicas (VNB):
z = cx = [c
B
| c
N
1
| c
N
2
]
_
¸
¸
_
x
B
x
N
1
x
N
2
_
¸
¸
_
= c
B
x
B
+ c
N
1
x
N
1
+ c
N
2
x
N
2
ou ainda
z = c
B
B
−1
b + (c
N
2
−c
B
B
−1
N
2
)x
N
2
. ¸¸ .
custos reduzidos das
VNB no limite superior
+ (c
N
1
−c
B
B
−1
N
1
)x
N
1
. ¸¸ .
custos reduzidos das
VNB no limite inferior
Cid de Souza – M´ etodo Simplex – p.60/63
Simplex para variáveis limitadas (cont.)
Para uma solução básica temos as seguintes folgas:
Dual: t = [t
B
| t
N
1
| t
N
2
].
Primal: s = [s
B
| s
N
1
| s
N
2
] com s
N
1
= h
N
1
e s
N
2
= 0.
Proposição: Seja B uma base e u = c
B
B
−1
. Se v
B
= 0, v
N
1
= 0 e
v
N
2
= c
N
2
− c
B
B
−1
N
2
então (u, v) é complementar a x, ou seja, xt = 0 e
vs = 0.
Prova: t
B
= uB + v
B
−c
B
= c
B
B
−1
B + v
B
−c
B
= 0
t
N
1
= uN
1
+ v
N
1
−c
N
1
= c
B
B
−1
N
1
−c
N
1
t
N
2
= uN
2
+ v
N
2
−c
N
2
= c
B
B
−1
N
2
−c
N
2
+ c
N
2
−c
B
B
−1
N
2
= 0
Logo, xt = [x
B
| 0 | x
N
2
][0 | c
B
B
−1
N
1
−c
N
1
| 0]
t
= 0.
Por outro lado, vs = [0 | 0 | c
N
2
−c
B
B
−1
N
2
][s
B
| s
N
1
| 0]
t
= 0.

Cid de Souza – M´ etodo Simplex – p.61/63
Simplex para variáveis limitadas (cont.)
Proposição: As variáveis duais u e v com os valores definidos tais como
na proposição anterior formam uma solução dual viável se e somente se
c
N
2
−c
B
B
−1
N
2
≥ 0 e c
N
1
−c
B
B
−1
N
1
≤ 0.
Observação: (u, v) é dual viável se e somente se o custo reduzido das
variáveis no limite inferior é ≤ 0 e o custo reduzido das variáveis no limite
superior é ≥ 0.
Bases adjacentes:
1. B

= (B \ a
•s
) ∪ a
•r
onde x
r
é uma VNB e r ∈ N
1
∪ N
2
.
2. B

= B (a base não muda) mas |N

1
\ N
1
| +|N

2
\ N
2
| = 1, ou seja,
alguma VNB passa do seu limite superior para o seu limite inferior ou
vice-versa !
Cid de Souza – M´ etodo Simplex – p.62/63
Simplex para variáveis limitadas (cont.)
Observações finais:
Os algoritmos primal e dual simplex necessitam de pequenas
modificações para passarem a tratar o caso de variáveis limitadas.
A vantagem de usar esta versão modificada dos algoritmos é que
pode-se tabalhar com uma base de dimensão menor (m×m em vez
de (m + n) ×(m + n) . Menos memória !
As formulações de Programação Linear Inteira de problemas de
otimização combinatória usualmente trabalham com variáveis
binárias.
Os algoritmos de PLI resolvem vários PLs onde estas variáveis são
limitadas inferiormente por ZERO e superiormente por UM ! Logo
vale a pena usar o algoritmo modificado !
Cid de Souza – M´ etodo Simplex – p.63/63

Definições e Resultados Básicos
Definição (geométrica):
x é um ponto extremo de S se e somente se não existem pontos distintos x1 e x2 de S tal que αx1 + (1 − α)x2 = x com 0 < α < 1.

Definição (algébrica): Seja S = {x ∈ Rn : Ax ≤ b, x ≥ 0} x não vazio, A : m × n, m ≤ n e ρ(A) = m. Se x é ponto extremo de S então x satisfaz n desigualdades linearmente independentes de S na igualdade.

´ Cid de Souza – Metodo Simplex – p.3/63

Definições e Resultados Básicos
(algébrica =⇒ geométrica) Seja Gx ≤ g o subsistema linear de S com n desigualdades LI satisfeitas na igualdade, ou seja, Gx = g, G : n × n, ρ(G) = n. Supor por contradição que x = αx1 + (1 − α)x2 , x1 = x2 ∈ S. Isso implica que Gx = αGx1 + (1 − α)Gx2 = g. Como α > 0, 1 − α > 0, Gx1 ≤ g e Gx2 ≤ g, Gx1 = Gx2 = g. Uma vez que G é inversível, isso obriga que x = x1 = x2 . Logo, x deve ser extremo.

Definições e Resultados Básicos
(geométrica =⇒ algébrica) Supor que x satisfaz a apenas r < n desigualdades de S na igualdade. Sejam estas r desigualdades dadas por: Gx = g, G : r × n, ρ(G) = r < n. Afirmação: Existe d = 0 tal que Gd = 0 (as colunas de G são LD) Portanto, existe um escalar ǫ > 0 tal que (x − ǫd) e (x + ǫd) estão ambos em S. Como x = 1 (x − ǫd) + 1 (x + ǫd), x não é extremo. 2 2

´ Cid de Souza – Metodo Simplex – p.5/63

Representação de Poliedros
Teorema de Caratheodory: O poliedro não vazio S = {x ∈ Rn : Ax ≤ b, x ≥ 0} também pode ser representado na seguinte forma: S = {x ∈ R : x =
p i=1 p i=1

λi x i +

q j=1

µj dj ,

λi = 1, λi ≥ 0 para todo i = 1, . . . , p

µj ≥ 0 para todo j = 1, . . . , q}, onde {x1 , . . . , xp } são os pontos extremos de S e {d1 , . . . , dq } são os raios extremos de S.

. ρ(A) = m e n ≥ m. . x é uma solução básica se xi = 0 para todo i = m + 1. A•m ] é inversível. Supor que A : m × n. .7/63 Soluções básicas S = {x ∈ Rn : Ax = b. .Representação de Poliedros x1 x5 x2 POLIEDRO LIMITADO (POLITOPO) x4 x3 x2 d1 POLIEDRO ILIMITADO x1 x3 d2 ´ Cid de Souza – Metodo Simplex – p. x ≥ 0} Se y ∈ S então y é uma solução viável. (assume-se que as colunas de A e as componentes de x tenham sido rearranjadas apropriadamente). . . n e a matriz B = [A•1 A•2 . . Então.

7 6 . 7 = 6 . 6 3 0 x3 A=  0 1 1 1 1 0 0 1   x2=0 (0. 7 4 . 5 0 2 x1 3 3 7 7. 7 4 6 7 6 xN 6 0 7 7 6 6 .Soluções básicas 7 6 6 x2 7 7 6 6 . x2 x2 x2 ≤ 6 ≤ 3 ≥ 0 ≡ x1 x2 (0.9/63 Soluções básicas (exemplos) x1 x1 + .3) x1=0 x1 + .3) x4=0 = x4 x4 = ≥ . 5 onde xB são as variáveis básicas e xN são as variáveis não básicas. 7 7 6 xB 6 7 6 x = 6 .... 7 6 . x3=0 (3. 7 2 6 . x2 x2 x2 + x3 + .0) (6. Ax = [B N ]  xN ´ Cid de Souza – Metodo Simplex – p.   xB  = BxB + N xN = b =⇒ xB = B −1 b − B −1 N xN .0) x1 ..

0 1 32 54 6 3 3 5=4 2 6 −3 3 5 . xN = 4 2 x1 x4 3 5=4 2 0 0 3 5 5 = B −1 b = 4 2 ´ Cid de Souza – Metodo Simplex – p.Soluções básicas (exemplos) 1. xN = 4 2 x1 x3 3 5=4 2 0 0 3 5 4.11/63 Soluções básicas (exemplos) 3. B = [A•1 A•3 ] =  Solução inviável !  1 0 1 1   não é inversível. 1 −1 32 54 6 3 3 5=4 2 3 3 3 5 . −1 1 32 54 6 3 3 5=4 2 3 3 3 5 . B = [A•2 A•3 ] =  2 4 x2 x3 3  1 1 1 0 0 1   é inversível. B = [A•2 A•4 ] =  2 4 x2 x4 3 5 = B −1 b = 4 2  1 0 1 1 1 −1   é inversível. n! m!(n−m)! Número de soluções básicas: (exponencial !) . xN = 4 2 x3 x4 3 5=4 2 0 0 3 5 5 = B −1 b = 4 2 2. B = [A•1 A•2 ] =  2 4 x1 x2 3  1 1 0 1 1 0   é inversível.

zn     . ym+j = zm+j = 0 para todo j = 1.  xB   yB   zB      x=        . .  .Soluções Básicas e Pontos Extremos Teorema: Seja S = {x ∈ Rn : Ax = b. y. . x é um ponto extremo de S se e somente se x é uma solução básica viável. Logo. 0] = Bz B = b  Conclui-se que x não pode ser escrita como combinação convexa estrita de dois pontos distintos de S. 1). yn 0     .   ..   . Além disso.   . . zm+j ≥ 0 e 0 < α < 1.      + (1 − α)  zm+1     . .. Ay = [B N ][y B Az = [B N ][z B  0] = By B = b  =⇒ y B = z B = xB = B −1 b. n − m. z ∈ S − {x} e α ∈ (0.   . .. . Então.     ´ Cid de Souza – Metodo Simplex – p. x ≥ 0}.. . (básica =⇒ extremo) Seja x uma solução básica e assuma por contradição que x = αy + (1 − α)z..13/63 Soluções Básicas e Pontos Extremos Como ym+j ≥ 0.. x é ponto extremo. tem-se que. .      0  = α  ym+1    .

Se z tem valor finito então existe um ponto extremo ótimo. x ≥ 0}. Logo existem n − m equações da forma xi = 0 que são satisfeitas para i ∈ N ⊆ {1. é dado por: Ax = 4 2 B 0 N I 32 54 xB xN 3 5=4 2 b 0 3 5. ´ Cid de Souza – Metodo Simplex – p.15/63 Pontos extremos e otimalidade Teorema: S = {x ∈ Rn : Ax ≤ b. . na forma matricial. Além disso. Prova: Teorema de Caratheodory. portanto. xN = 0 que é satisfeito por x que. . se existir mais de um ponto extremo ótimo.Soluções Básicas e Pontos Extremos (extremo =⇒ básica) Como x é extremo. x ≥ 0} tem solução viável se e somente se S tem um ponto extremo. Considere o problema dado por z = min{cx : x ∈ S}. Este sistema tem solução única pois as linhas de A são LI. n}. Logo det(B) = det(A) e. Assim. . . . tem-se o sistema linear da forma Ax = b. B é inversível e a solução do sistema acima é básica. existem n restrições LI em S que são satisfeitas na igualdade. toda combinação convexa destes pontos será uma solução ótima também. . Teorema: Seja S = {x ∈ Rn : Ax = b.

a. j∈N j∈N (cj − zj )xj ≡ j∈N yj xj + xB = b yj xj ≤ b xj ≥ 0 para j ∈ N . x≥0 Ax = b ≡ BxB + N xN = b =⇒ xB = B −1 b − B −1 N xN .Idéia do algoritmo Simplex Encontrar um ponto extremo ( ≡ solução básica). Repetir o passo anterior enquanto for possível.17/63 Algoritmo do Simplex Escrever a função objetivo e as variáveis básicas em função das variáveis não básicas:   z = cx = cB xB + cN xN = (cB B −1 b − cB B −1 N xN ) + cN xN   −1 −1  z = cB B b + (cN − cB B N )xN   P z0 −1 j∈N (cj −cB B a•j )xj Reescrevendo o PL: (custos reduzidos) min z = z0 + s.a. xB ≥ 0 xj ≥ 0 para j ∈ N . xN = 0 xB = b − j∈N B −1 a•j xj yj ´ Cid de Souza – Metodo Simplex – p. Ax = b. Retornar o ponto extremo corrente (solução ótima !) Solução básica: min z = cx s. Sair do ponto extremo corrente e ir para um ponto extremo vizinho onde o valor da função objetivo é melhor.

19/63 Simplex: exemplo x1=0 y1=0 (0.Simplex: exemplo z = max x1 2x1 x1 x1 x1 .8/5) y2=0 x2=0 (0. z = max x1 2x1 x1 x1 x1 . y1 . y2 . + + + + 2x2 x2 3x2 x2 x2 . ≥ 0 ´ Cid de Souza – Metodo Simplex – p.2) (6/5.0) y3=0 .0) (2. + y1 + + y2 + + + y3 y3 = 4 = 6 = 3 ≥ 0 + + + + 2x2 x2 3x2 x2 ≤ 4 ≤ 6 ≤ 3 x2 .

x2 e y3 : z= .. x2 = 8 5 variáveis básicas: x1 . ∀j ∈ N ) . y2 e y3 :   z = x1 + 2x2     y1 = 4 − 2x1 − x2  x2 entra na base e y2 sai da base y2 = 6 − x1 − 3x2      y3 = 3 − x1 − x2  Segunda iteração: x1 = 0.Simplex: exemplo Primeira iteração: x1 = x2 = 0 variáveis básicas: y1 . 66 15 − 1 5 y1 − 9 5 y2    solução ótima ! (cj < 0. x2 = 2 variáveis básicas: y1 . x2 e y3 :  z = 4 + 1 x1 − 2 y2   3 3    5 1 y1 = 2 − 3 x1 + 3 y2  x1 entra na base e y1 sai da base 1 x2 = 2 − 3 x1 − 1 y2    3   2 1 y3 = 1 − 3 x1 + 3 y2  ´ Cid de Souza – Metodo Simplex – p..21/63 Simplex: exemplo 6 Terceira iteração: x1 = 5 .

y3 − y1 + y2 + + y3 + y4 y4 = = = = ≥ 3 3 1 10 0 s2= 0 (0. x1=0 − + + − − 2x2 x2 x2 2x2 x2 x2 .0) s4= (19/3. operações elementares e a inversa da base. ´ Cid de Souza – Metodo Simplex – p.23/63 Simplex: caso ilimitado z = min −x1 3x1 −2x1 x1 2x1 x1 .3) 0 s3= (1.8/3) 0 x2=0 . y1 . y2 .Simplex: tableau x1 z Segunda iteração: y1 x2 y3 1 -3 5 3 1 3 2 3 x2 0 0 1 0 x2 0 0 1 0 y1 0 1 0 0 y1 1 5 3 5 1 −5 −2 5 y2 2 3 1 −3 1 3 1 −3 y3 0 0 0 1 y3 0 0 0 1 RHS 4 2 2 1 RHS 66 15 6 5 24 15 1 5 x1 z Terceira iteração: tableau ótimo ! x1 x2 y3 0 1 0 0 y2 9 15 −1 5 6 15 −1 5 Pivoteamento.

3) problema ilimitado ! 2 direção extrema: d = 4 0 1 0 0 0 x1 z x1 3 5 x2 y3 y4 0 1 0 0 0 x2 5 3 1 3 5 3 −7 3 −5 3 y1 1 3 y2 0 0 1 0 0 y2 −2 3 2 − 15 2 5 14 15 2 3 y3 0 0 0 1 0 y3 0 0 0 1 0 y4 0 0 0 0 1 y4 0 0 0 0 1 RHS −1 1 5 0 8 RHS -6 0 3 7 13 −1 3 −2 3 1 3 2 3 x2 0 0 1 0 0 y1 1 3 −1 5 −2 5 −3 5 0 1 2 ´ Cid de Souza – Metodo Simplex – p.0) x1 y2 y3 y4 última iteração: vértice degenerado (0.a uA ≥ c u≥0 .a Ax ≤ b x≥0 Exemplo: max z = s.a (P ) x1 x1 x1 x1 ≥ 0 + − − .Simplex: caso ilimitado (cont.25/63 Dualidade Primal: max z ∗ = cx (P ) s. x3 x3 ∈ R + + x3 4x3 = ≤ ≥ 6 3 4 (D) Dual: min w∗ = ub s. x2 3x2 x2 2x2 x2 ≥ 0 − .) x1 z penúltima iteração: vértice degenerado (1.

) Proposição: (Dualidade Fraca) Se x é uma solução primal viável e u é uma solução dual viável então cx ≤ z ∗ ≤ w∗ ≤ ub. 4u3 ≥ 1 2u3 ≥ 1 u3 = 1 u3 ≥ 0 Existe uma variável dual para cada restrição do primal e vice-versa. Relação entre os valores ótimos primal e dual: 1. 3. se P e D são ambos limitados então z ∗ = w∗ (Dualidade Forte) . 4.) min w = s. se w∗ → −∞ (D ilimitado) então P é inviável. P e D são ambos inviáveis. 2. .Dualidade (cont.a (D) 6u1 + u1 + −3u1 − 4u1 u1 ∈ R . Proposição: O dual do dual é o primal ´ Cid de Souza – Metodo Simplex – p. se z ∗ → ∞ (P ilimitado) então D é inviável.27/63 Dualidade (cont. u2 ≥ 0 3u2 − u2 u2 − + .

Relações entre o primal e o dual Primal: Ilimitado max z = x s.a u ≥ 1 u≥0 −3 0 1 .a x ≥ 1 x≥0 Dual: Inviável min w = −u s.29/63 Relações entre o primal e o dual Primal: Inviável max z = x s.a x ≤ −3 x≥0 Dual: Ilimitado min w = −3u s.a u ≤ −1 u≥0 1 −1 0 ´ Cid de Souza – Metodo Simplex – p.

x2 ∈ R Dual: Inviável min w = −u1 − u2 s.a u ≥ 1 u≥0 0 5 1 ´ Cid de Souza – Metodo Simplex – p.a u1 − u2 = 1 u1 − u2 = −1 u 1 .31/63 Relações entre o primal e o dual Primal: Inviável max s.Relações entre o primal e o dual Primal: Limitado max z = x s.a z = x1 − x2 x1 + x2 ≤ −1 x1 + x2 ≥ 1 x1 .a x ≤ 5 x≥0 Dual: Limitado min w = 5u s. u2 ≥ 0 .

. ´ Cid de Souza – Metodo Simplex – p.33/63 Complementaridade de Folgas (cont. . logo u∗ A − t∗ = c.Complementaridade de Folgas max z ∗ = cx (P ) s.) Prova: (⇐) Como (x∗ . t∗ ≥ 0 o resultado fica mostrado. Reescrevendo chega-se a: u∗ Ax∗ − t∗ x∗ = cx∗ . para todo i ∈ {1. t∗ ) uma solução ótima de D se e somente se. para todo j ∈ {1. . (x∗ . s∗ ) deve ser uma solução ótima de P e (u∗ . . . s∗ ) e (u∗ . tem-se: u∗ (b − s∗ ) − t∗ x∗ = cx∗ . j j i i Prova: (⇒) u∗ é viável para D. tem-se: cx∗ = (u∗ A − t∗ )x∗ = u∗ Ax∗ − t∗ x∗ = u∗ Ax∗ ou ainda cx∗ = u∗ (b − s∗ ) = u∗ b − u∗ s∗ = u∗ b. x∗ t∗ = 0 e. s∗ . . m}.a uA − t = c u ≥ 0. t∗ ) são viáveis para P e D respectivamente. . t ≥ 0 Teorema das Folgas Complementares: (x∗ .a Ax + s = b x ≥ 0. Como x∗ . . s∗ ) é uma solução ótima de P e (u∗ . Como x∗ é viável para P . u∗ . u∗ s∗ = 0. Como x∗ ≥ 0. . n}. s ≥ 0 (D) min w∗ = ub s. Pela dualidade forte. t∗ ) deve ser uma solução ótima de D. Pela dualidade fraca. conclui-se que: u∗ s∗ + t∗ x∗ = 0. (u∗ A − t∗ )x∗ = cx∗ .

i. Prova: z ∗ ≥ cx = cB B −1 b e w∗ ≤ ub = cB B −1 b Pela dualidade fraca. Prova: x(uA − c) = (xB | xN )(uB − cB | uN − cN ) = (xB | xN )(cB B −1 B − cB | cB B −1 N − cN ) = 0 ´ Cid de Souza – Metodo Simplex – p. Proposição: Se B é uma base primal e dual viável então (xB | xN ) = (B −1 b | 0) é ótima para P e u = cB B −1 é ótima para D. custos reduzidos Definir: u = cB B −1 e t = uA − c (folgas duais). z ∗ ≤ w∗ . Nota 1: cB B −1 N ≥ cN ≡ custos reduzidos negativos. Proposição: u é complementar a x = 4 2 xB xN 3 5.Bases duais viáveis (P ) max s. x ≥ 0 (D) min w∗ = ub s.35/63 Bases duais viáveis Definição: Se cB B −1 N ≥ cN então B é uma base dual viável. nem primal e nem dual viável ou simultaneamente primal e dual viável.. Nota 2: Uma base pode ser só primal viável.a uA ≥ c Solução básica primal: Ax = BxB + N xN = b z = cx = cB xB + cN xN = cB B −1 b + (cN − cB B −1 N ) xN . logo z ∗ = w∗ .e.a z ∗ = cx Ax = b. só dual viável. xt = 0.

) xr entra na base com valor bs (yr )s e (xB )s sai da base. (yr )j > 0. só haverá uma variável básica candidata a sair da base.37/63 Primal-Simplex (cont. . . . Definição: uma soluçao primal viável é degenerada se xB = b e bi = 0 para algum i = 1. Observação: se não existir nenhuma base degenerada então. . Se para todo i = 1. . (yr )i ≤ 0. . m. m} tal que: bs = min (yr )s bi : (yr )i > 0 (yr )i ´ Cid de Souza – Metodo Simplex – p. . . m.Primal-Simplex formalizado Definição: as bases B e B ′ são adjacentes se |B \ B ′ | = |B ′ \ B| = 1. . Movendo de uma base para outra: aumenta uma variável não básica mantendo-se as outras em zero. xB +B −1 N xN = B −1 b =⇒ xB +B −1 a•r xr = b =⇒ xB + yr xr = b 1. definida uma variável não-básica para entrar na base. . . . m}. . . xr cresce indefinidamente e a base não muda. . 2. . Se para algum j ∈ {1. . escolher s ∈ {1.

39/63 Primal Simplex: Fase 2 Passo 1: encontrar base primal viável B ( FASE 1 ). portanto. PARE ! Retorne “problema ilimitado”. xB = b − yr xr . Se não (pricing) escolher r tal que cr = cr − cB B −1 a•r > 0.) Corolário: Seja B uma base não degenerada primal viável mas dual inviável. Proposição: Não havendo soluções básicas degeneradas. Na base B (r) . PARE ! Retorne a solução ótima xB = B −1 b. 1.Primal-Simplex (cont. Se ∃s tal que (yr )s > 0 então é possível mover para uma única base B (r) de melhor custo. o custo será cB (r) xB (r) = z0 + cr xr > z0 = cB xB . . Se yr = B −1 a•r ≤ 0. z → ∞ quando xr → ∞. 2. existe xr não básica com custo reduzido cr = cr − cB B −1 a•r = cr − cB yr > 0. 2. Prova: 1. bi Se não. logo z = z0 + cr xr > z0 e. ´ Cid de Souza – Metodo Simplex – p. Voltar ao Passo 1. xN = 0. Se yr ≤ 0 então z ∗ → ∞ (primal ilimitado).. (yr )i >0 (yr )i (⋆ s sai da base e r entra na base ⋆) Executar troca de base (pivoteamento): B ← B {B•s } ∪ {a•r }. escolher s tal que (yr )s > 0 e (ybrs)s = min . i. o algoritmo primal simplex temina em um número finito de passos.e. Passo 2: se (cN − cB B −1 N ) ≤ 0.

se elas não forem removidas por pivoteamento. portanto tem solução ótima em um vértice. Pa não tem solução viável com xa = 0 e P é inviável. (Pa ) max za = (−1)xa s. Neste caso. (x.Primal Simplex: Fase 1 max z = cx (P ) s.) Observações: Se za = 0. existem restrições redundantes no sistema Ax = b. a base ótima de Pa é uma base viável para P . xa ≥ 0 (xa : variáveis artificiais) ´ Cid de Souza – Metodo Simplex – p.a Ax = b x≥0 (supor b ≥ 0) Observações: Pa é viável pois tem solução básica dada por xa = b e x = 0. se todas as variáveis artificiais são não básicas. . No caso anterior. xa ) de Pa satisfaz xa = 0 com x viável para P . Se za < 0. xa ) é viável para Pa e x viável para P se e somente se xa = 0. Pode-se remover as variáveis artificiais do problema ! Mas.41/63 Primal Simplex: Fase 1 (cont. toda solução ótima (x. Pode ser resolvido pela Fase 2 ! Pa é limitado (za ≤ 0).a Ax + Ixa = b x ≥ 0. é possível que algumas variáveis artificiais fiquem na base com o valor zero (base degenerada).

então X X cj xj − λ[(xB )s + (ys )j xj ] + λbs z = z0 + j∈N j∈N | z = z0 + λbs + X = 0 {z (linha do tableau !) } cr (ys )r [cj − λ(yj )s ]xj − λ(xB )s . j∈N A base B (r) é dual viável pois: λ ≥ 0 (custo reduzido de (xB )s ). Se xr entra na base e (xB )s sai. r = arg min j∈N (ys )j ´ Cid de Souza – Metodo Simplex – p. onde λ = ≥ 0. então 1. existe uma base dual viável B (r) adjacente à base B corrente dada por B (r) = B ∪ {a•r } {B•s } satisfazendo r ∈ N . pela escolha de r. Se não. .43/63 Algoritmo Dual Simplex (cont. Dual Simplex: visita bases duais viáveis até que a base corrente se torne primal viável (variáveis básicas ≥ 0). 2. (ys )r < 0 e cj : (ys )j < 0 . 2. Proposição: Se B uma base dual viável e bs < 0 para algum s. cj − λ(ys )j ≤ 0 para todo j satisfazendo (ys )j < 0.) Prova: 1.Algoritmo Dual Simplex Comparativo entre os algoritmos Primal e Dual Simplex: Primal Simplex: visita bases primais viáveis até que a base corrente se torne dual viável (custos reduzidos ≤ 0). Se (ys )j ≥ 0 para todo j ∈ N (não básica) então o problema é primal inviável. toda solução com xj ≥ 0 para todo j ∈ N satisfaz (xB )s < 0. xB + B −1 N xN = b =⇒ (xB )s = bs − j∈N (ys )j xj = bs < 0 Se (ys )j ≥ 0 para todo j ∈ N . cj − λ(ys )j ≤ cj ≤ 0 para todo j tal que (yj )s ≥ 0 e.

Não havendo degenerescência no problema dual. ´ Cid de Souza – Metodo Simplex – p. O valor do decréscimo ao mudar a base é de cr bs (ys )r .. cj Se não. Se não (pricing) escolher s tal que (xB )s < 0.45/63 Dual Simplex: (cont. cr < 0 e o decréscimo é estrito. i. PARE ! Retorne a solução ótima (primal) xB = B −1 b.e. xN = 0.Algoritmo Dual Simplex Passo 1: encontrar base dual viável B ( FASE 1 ). Se (ys )j ≥ 0 para todo j ∈ N . Voltar ao Passo 1. se b = B −1 b ≥ 0.) Observações: A função objetivo do problema primal é monotonamente decrescente ao contrário do primal simplex. PARE ! Retorne “problema inviável”. Passo 2: se B é primal viável. escolher r tal que r = arg min : (ys )j < 0 j∈N (ys )j (⋆ s sai da base e r entra na base ⋆) Executar troca de base (pivoteamento): B ← B {B•s } ∪ {a•r }. Logo o algoritmo termina em tempo finito ! .

− + + 4x3 x3 3x3 x3 .47/63 Dual Simplex: exemplo (cont. x4 − x4 − x5 x5 = 3 = 4 ≥ 0 x1 z x4 x5 2 −1 −2 x2 3 −2 1 x3 4 −1 −3 x4 0 1 0 x5 0 0 1 RHS 0 −3 −4 ´ Cid de Souza – Metodo Simplex – p.Dual Simplex: exemplo z = max − 2x1 x1 2x1 x1 .) x1 z x4 x1 0 0 1 −5 2 −1 2 x2 4 x3 1 1 2 3 2 x4 0 1 0 x5 1 −1 2 −1 2 RHS −4 −1 2 x1 z x2 x1 0 0 1 x2 0 1 0 x3 9 5 1 −5 7 5 x4 8 5 −2 5 1 −5 x5 1 5 1 5 2 −5 RHS − 28 5 2 5 11 5 solução ótima ! . − + − 3x2 2x2 x2 x2 .

. j ou seja. na linha correspondente à função objetivo e nas colunas correspondentes à identidade teremos as variáveis duais ótimas.49/63 Primal ou Dual Simplex ? se cj ≤ 0 para todo j ∈ N e bi ≥ 0 para todo i ∈ B então a solução é ótima. ´ Cid de Souza – Metodo Simplex – p.Tableau e variáveis duais z = cB xB + cN xN = z0 + j∈N (cj − cB B −1 a•j )xj u Se existirem colunas na matriz original A que formam uma matriz identidade e que correspondam a variáveis de folga (custos nulos). Nada há a fazer ! se cj ≤ 0 para todo j ∈ N e ∃i ∈ B tal que bi < 0 então Primal Simplex tem Fase 1 mas o Dual Simplex passa direto à Fase 2 ! se ∃j ∈ N tal que cj > 0 e bi ≥ 0 para todo i ∈ B então Dual Simplex tem Fase 1 mas o Primal Simplex passa direto à Fase 2! se ∃j ∈ N tal que cj > 0 e ∃i ∈ B tal que bi < 0 então Primal e Dual Simplex tem Fase 1. no tableau ótimo teremos nestas colunas que: cj = −u∗ .

xn+1 ≥ 0 e c′ = novos custos reduzidos) N z′ + 0xB xB xn+1 + 0xn+1 + + + c′ xN N B −1 N xN (dN − dB B −1 N )xN = cB b = b = d0 − dB b Essa solução é primal viável ? . xN .  0   1 ´ Cid de Souza – Metodo Simplex – p. xB = B −1 b − B −1 N xN . Novo tableau: (xB .     = em+1 . onde a•.) Usando a antiga base B podemos escrever xn+1 como função de xN :  xB xN  dx + xn+1 = = dB (B −1 b − B −1 N xN ) + dN xN + xn+1 = d0 .51/63  Uma base para (2): B ′ = B ∪ {a•.Adição de nova restrição após otimização max z = cx (1) s.a z ′ = cx Ax = b dx ≤ d0 x≥0 Base ótima para (1): A = (B | N ). xN = 0. Folga da nova restrição: dx + xn+1 = d0 . .    =     0 . (dB |dN )   + xn+1 = dB xB + dN xN + xn+1 Linha do novo tableau: xn+1 + (dN − dB B −1 N )xN = d0 − dB b. .a Ax = b (A : m × n) x≥0 (2) max s. xn+1 ≥ 0.n+1 Adição de nova restrição (cont.n+1 }.

. os custos reduzidos das variáveis não básicas permanecem inalterados ! Portanto. a nova base ainda é dual viável.      0   1  B −1 −dB B −1 custos reduzidos: c′ = cN − cB ′ (B ′ )−1 N ′ . .      0   1  =⇒ (B ′ )−1    =      0 .Adição de nova restrição (cont. deve-se dar preferência ao uso do algoritmo dual simplex ! . ou seja. 0 −dB B −1 1      = [cB B −1 | 0]. . . Prova:    B ′ B =    dB  0 . .) Proposição: A nova base B ′ é dual viável.)    = [cB | 0]      0 .    cB ′ (B ′ )−1 B −1 Logo. Conclusão: após adicionar uma nova restrição.) Prova: (cont. ´ Cid de Souza – Metodo Simplex – p. . cB ′ (B ′ )−1 N ′ = cB B −1 N .53/63 Adição de nova restrição (cont. onde N ′ =  N  N dN  e cB ′ = [cB | 0].

com y3 ≥ 0.55/63 Adição de nova restrição: exemplo x1 Tableau ótimo ! Inversa da base: B −1 z y1 x2 9 2 x2 0 0 1 x1=0 y1 0 1 0 y2 5 2 RHS 45 4 9 1 3 2 0 1 2 9 y1=0 Nova restrição: x2 ≤ 6 ≡ x2 + y3 = 6. 3 =0 y2 Folga da segunda restrição: y2 . 0 4 6 x2=0 ´ Cid de Souza – Metodo Simplex – p. 6 y3=0 3 y2 =0 x2=0 0 2 4 6 . + + 5x2 ≥ 2x2 x2 ≤ ≥ 4 18 0 6 Folga da primeira restrição: y1 .Adição de nova restrição: exemplo 9 x1=0 y1=0 z = max 3x1 x1 3x1 x1 .

Usar o dual simplex ! (B ′ )−1 : colunas y1 . y2 .57/63 Adição de nova restrição: exemplo x1 Base é primal viável e é dual viável. y3 .Adição de nova restrição: exemplo x1 Novo Tableau: Escrever y3 em função das variáveis não-básicas. Tableau ótimo ! z y1 x2 x1 0 0 0 1 x2 0 0 1 0 y1 0 1 0 0 y2 1 −1 3 0 1 3 y3 3 2 3 RHS 36 2 6 2 1 −2 3 . z y1 x2 y3 9 2 x2 0 0 1 1 y1 0 1 0 0 y2 5 2 y3 0 0 0 1 RHS 45 4 9 6 1 3 2 0 1 2 0 0 Base não é primal viável mas é dual viável. x1 z y1 x2 y3 9 2 x2 0 0 1 0 y1 0 1 0 0 y2 5 2 y3 0 0 0 1 RHS 45 4 9 −3 1 3 2 3 −2 0 1 2 1 −2 ´ Cid de Souza – Metodo Simplex – p.

´ Cid de Souza – Metodo Simplex – p.a z = cx Ax = b x≥0 x≤h (v) (u) (D) min w = ub + vh s. s≥0 Folgas:  Dual: t = uA + v − c.Simplex para variáveis limitadas max (P ) s.O. em função das variáveis não-básicas (VNB):  xB    z = cx = [cB | cN1 | cN2 ]  xN1  = cB xB + cN1 xN1 + cN2 xN2   xN2 ou ainda z = cB B −1 b + (cN2 − cB B −1 N2 )xN2 custos reduzidos das VNB no limite superior + (cN1 − cB B −1 N1 )xN1 custos reduzidos das VNB no limite inferior . Escrevendo a F. A solução básica será viável se 0 ≤ B −1 (b − N2 hN2 ) ≤ hB .a uA + v ≥ c v≥0   Primal: s = h − x.59/63 Simplex para variáveis limitadas (cont. xN1 = 0. t ≥ 0 Definição: Uma partição das colunas de A tal que A = [B | N1 | N2 ] corresponde a uma solução básica [xB | xN1 | xN2 ] se B é inversível.) Existem dois tipos de variáveis não básicas: as que estão no seu limite inferior (xN1 ) e as que estão no seu limite superior (xN2 ). xN2 = hN2 e xB = B −1 b − B −1 N2 xN2 − B −1 N1 xN1 .

xt = 0 e vs = 0.Simplex para variáveis limitadas (cont. alguma VNB passa do seu limite superior para o seu limite inferior ou vice-versa ! . ou seja. v) é dual viável se e somente se o custo reduzido das variáveis no limite inferior é ≤ 0 e o custo reduzido das variáveis no limite superior é ≥ 0. Observação: (u. xt = [xB | 0 | xN2 ][0 | cB B −1 N1 − cN1 | 0]t = 0. Prova: tB = uB + vB − cB = cB B −1 B + vB − cB = 0 tN1 = uN1 + vN1 − cN1 = cB B −1 N1 − cN1 tN2 = uN2 + vN2 − cN2 = cB B −1 N2 − cN2 + cN2 − cB B −1 N2 = 0 Logo. ′ ′ 2. ´ Cid de Souza – Metodo Simplex – p. Primal: s = [sB | sN1 | sN2 ] com sN1 = hN1 e sN2 = 0. Proposição: Seja B uma base e u = cB B −1 . ou seja. v) é complementar a x.) Proposição: As variáveis duais u e v com os valores definidos tais como na proposição anterior formam uma solução dual viável se e somente se cN2 − cB B −1 N2 ≥ 0 e cN1 − cB B −1 N1 ≤ 0. vN1 = 0 e vN2 = cN2 − cB B −1 N2 então (u. Se vB = 0. Bases adjacentes: 1. B ′ = B (a base não muda) mas |N1 \ N1 | + |N2 \ N2 | = 1.61/63 Simplex para variáveis limitadas (cont.) Para uma solução básica temos as seguintes folgas: Dual: t = [tB | tN1 | tN2 ]. Por outro lado. B ′ = (B \ a•s ) ∪ a•r onde xr é uma VNB e r ∈ N1 ∪ N2 . vs = [0 | 0 | cN2 − cB B −1 N2 ][sB | sN1 | 0]t = 0.

A vantagem de usar esta versão modificada dos algoritmos é que pode-se tabalhar com uma base de dimensão menor (m × m em vez de (m + n) × (m + n) .) Observações finais: Os algoritmos primal e dual simplex necessitam de pequenas modificações para passarem a tratar o caso de variáveis limitadas. Menos memória ! As formulações de Programação Linear Inteira de problemas de otimização combinatória usualmente trabalham com variáveis binárias. Os algoritmos de PLI resolvem vários PLs onde estas variáveis são limitadas inferiormente por ZERO e superiormente por UM ! Logo vale a pena usar o algoritmo modificado ! ´ Cid de Souza – Metodo Simplex – p.Simplex para variáveis limitadas (cont.63/63 .