Você está na página 1de 98

Otimização Linear

Profª : Adriana
Departamento de Matemática

adriana@fc.unesp.br
wwwp.fc.unesp.br/~adriana
Dualidade
✓ A Teoria da Dualidade é um dos mais importantes
tópicos da Programação Linear (PL).

✓ Estudos mostraram que associado a cada modelo


de PL (denominado Primal) há outro modelo
(denominado Dual ) com várias propriedades.

✓ A Dualidade possibilitou o surgimento de


variações do Método Simplex (Método Dual
Simplex ou Métodos Primais-Duais).
Relaxação lagrangiana e o
problema dual
Problema de otimização linear na forma padrão

Problema
Primal

matriz mxn
Relaxação lagrangiana e o
problema dual
Exemplo:
Deseja-se cortar bobinas de aço com largura L = 1 metro e
pesando 1 tonelada para produzir 108 toneladas de sub-
bobinas de 0,4m e 120 toneladas de 0,3m. O peso total das
bobinas em estoque cortadas deve ser mínimo.
Converter
em tonelada

Possíveis padrões
de corte

xj: quantidade (em toneladas) de bobinas cortadas segundo


o padrão de corte j.
Relaxação lagrangiana e o
problema dual
Relaxação lagrangiana e o
problema dual
x* = (35 200 0)T
f (x*) = 235

✓ Se houver um aumento na demanda de uma das sub-


bobinas, qual é o impacto disso sobre a necessidade de
cortar mais bobinas?
✓ Se considerarmos que o “vetor de recursos” b é
passível de perturbações (incerteza na previsão de
demanda), então a restrição b - Ax = 0 não precisa ser
satisfeita exatamente e podemos analisá-la como um
vetor y = b – Ax.
Relaxação lagrangiana e o
problema dual
y = b – Ax

Perturbação no vetor b  Ax = b–y (sinal de y é


irrelevante)

✓ Resíduo: y = b-Ax (yi = bi-aix, em que ai =linha i de A)


✓ Restrição original: y = 0
✓ “Penalidade” ou “custo” por desvio na equação i: i
✓ iyi : custo adicional de perturbar o recurso i em yi
unidades
Relaxação lagrangiana e o
problema dual
Problema lagrangiano – problema associado

Para cada  = (1, 2, ..., m)

Minimizar f(x) + 1y1 + 2y2 + ... + mym


sujeito a: x ≥ 0

em que y = b - Ax
Relaxação lagrangiana e o
problema dual
Função lagrangiana (f.o. do problema lagrangiano):
L(x,) = f(x) + 1y1+ 2y2 +...+mym (função lagrangiana)

= cT x +  T y
y = b - Ax
= cTx + T(b-Ax)
= (cT- TA)x+ Tb
Seja A = [a1, a2, ..., an] e c = (c1, c2, ..., cn)
(cT- TA) = (c1 - Ta1, c2 - Ta2 ... cn - Tan)

L(x1, ..., xn, ) = (c1 - Ta1)x1 + (c2 - Ta2 )x2 + ... + (cn - Tan)xn + Tb
Relaxação lagrangiana e o
problema dual
L(x1, ..., xn, ) = (c1 - Ta1)x1 + (c2 - Ta2 )x2 + ... + (cn - Tan)xn + Tb

Problema lagrangiano (função dual)

g() = min L(x,) g() = min [ (cT- TA)x+ Tb ]


x0 x0

g() = min {(c1 - Ta1)x1 + (c2 - Ta2 )x2 + ... + (cn - Tan)xn + Tb}
x0
Decomposição em subproblemas menores

g() = min𝑥1≥0 {(c1 - Ta1)x1} + min𝑥2≥0 {(c2 - Ta2 )x2} + ... +


+ min𝑥𝑛 ≥0 {(cn - Tan)xn}+ Tb
Relaxação lagrangiana e o
problema dual

Problema de corte
min x1  x2  x3
s.a.
4 2
x1  x2  0 x3  108
5 5
3 9
0 x1  x2  x3  120
5 10
x1  0, x2  0, x3  0
Relaxação lagrangiana e o
problema dual
Função dual
g ( )  min L( x,  )  x  x  x   y   y
1 2 3 1 1 2 2

x  0, x  0, x  0
1 2 3

4 2 3 9
g ( )  min L( x,  )  [ (1  1 ) x1  (1  1  2 ) x2  (1  2 ) x3 ]  1081  1202
5 5 5 10
x1  0, x2  0, x3  0

4 2 3 9
g ( )  min (1  1 ) x1  min (1  1  2 ) x2  min (1  2 ) x3  1081  1202
x1  0 5 x2  0 5 5 x3  0 10
Relaxação lagrangiana e o
problema dual
4 2 3 9
g ( )  min (1  1 ) x1  min (1  1  2 ) x2  min (1  2 ) x3  1081  1202
x1  0 5 x2  0 5 5 x3  0 10

✓ Se algum coeficiente das variáveis x1, x2, x3 for negativo,


então g() = - .
5
✓ Se os coeficientes das variáveis forem nulos (𝜆1 = ,
4
5
𝜆2 = ) então os coeficientes de x1, x2 são nulos e podem
6
assumir quaisquer valores não-negativos sem que a
função dual g() se altere.
5 5
✓ Com 𝜆1 = e 𝜆2 = , o coeficiente de x3 > 0, o que
4 6
implica x3 = 0 para minimizar g().
Relaxação lagrangiana e o
problema dual
4 2 3 9
g ( )  min (1  1 ) x1  min (1  1  2 ) x2  min (1  2 ) x3  1081  1202
x1  0 5 x2  0 5 5 x3  0 10

✓ A primeira parte de L(x, ) , que depende de x1, x2, x3 é


sempre -  ou zero.
✓ Se for zero, então L(x, ) = 1081 + 120 2.
✓ A definição da função dual fornece uma desigualdade
fundamental da teoria da dualidade:
✓ limitantes inferiores para os problemas de minimização
(superiores para problemas de maximização).
✓ Essa estratégia é muito usada em otimização e é
chamada relaxação.
Problema dual
Exemplificando...
Considere R  S (R é uma relaxação de S)
Se x0S é tq f(x0) = min {f(x), x  S} então x0 também pode
ser um ponto de mínimo de f em R (como R  S, x0R) ,
ou um outro ponto de R pode ser ainda melhor.
 Min xR f(x)  Min xS f(x), R  S
Problema dual
Considere: R={xRn / x0}  S = {xRn / Ax=b, x0}

g() = Minx0 L(x,) = Minx0 [ cTx + T(b-Ax) ]

 MinAx=b, x0 [ cTx + T(b-Ax) ]


f(x)
= Min f(x) xS
b-Ax=0
sujeito a: Ax=b primal
x0
 f(x), xS
g() R
Teorema: g()  f(x), Rm e x tal que Ax=b, x0. dual

Definição: O maior limitante inferior para f(x), obtido pela


função dual, define o problema dual:
Maximizar g(), Rm
1,..., m são chamadas variáveis duais
Problema dual

Para cada escolha das variáveis duais, o problema


lagrangiano é facilmente resolvido como uma soma de n
subproblemas.

g() = Minimizarx0 L(x,) = [ (cT- TA)x+ Tb ]

g() = Minimizar [ (c1 - T a1)x1 + (c2 - T a2)x2+...+ (cn - Tan)xn ] + bT


x10, x20 ... xn0  variáveis independentes

g()= Min (c1 -  T a1)x1 + Min (c2 - T a2)x2 +...+ Min (cn - Tan)xn + bT
x10 x20 xn0
Problema dual
Resolução dos subproblemas:

 xij  0 se c j  λ T a j  0
Min (cj -  aj)xj  
T

xj0  xij   se c j  λ T a j  0

Se cj - Taj < 0  g() =   Limitante inferior óbvio!

Devemos escolher  tal que:


cj - Taj  0  g() = bT

Assim: Taj  cj j = 1, ..., n  TA  cT  AT  c


Problema dual

Problema primal: Problema dual:


Minimizar f (x) = cTx  Maximizar g() = bT
sujeito a: Ax = b, x ≥ 0 sujeito a: AT   c

P = {xRn | Ax=b, x0 } D = { Rm | AT   c}


Região factível primal Região factível dual

O conjunto de restrições AT   c é chamado de restrições


duais e todo vetor  que satisfaça as restrições duais é
chamado de solução dual factível
Problema dual ↔ Problema primal
min x1  x2  x3 max 1081  1202 max 1081  1202
4 2 4 4
x1  x2  0 x3  108 1  02  1 1  02  1 1
5 5 5 5
2 3 2 3
3 9 1  2  1 1  2  2  1
0 x1  x2  x3  120 5 5 5 5
5 10 9
x1  0, x2  0, x3  0 9 01  2  3  1
01  2  1 10
10
1  0, 2  0, 3  0

folgas
5 5
1  0,  2  0, 1  , 2 
4 6
g ( )  235
Problema dual ↔ Problema primal
Problema primal: Problema dual:
Minimizar f (x) = cTx  Maximizar g() = bT
sujeito a: Ax = b, x ≥ 0 sujeito a: AT   c

P = {xRn | Ax=b, x0 } D = { Rm | AT   c}

Podemos re-enunciar o teorema:


(g()  f(x), Rm e x | Ax=b, x0)
Teorema: g()  f(x), xP e D.

O problema dual é um problema de otimização linear. Qual é


o dual do dual?

Teorema: O dual do problema dual é o primal.


Problema dual ↔ Problema primal
Problema Primal: minimizar, var não-negativas e restrições do tipo 

Min f(x) = c1x1+c2x2 Min f(x) = c1x1+c2x2+0x3

a11x1+ a12x2 = b1 a11x1+ a12x2 + 0x3 = b1



a21x1+ a22x2  b2 a21x1+ a22x2 + 1x3 = b2

x1 0, x2  0 x1 0, x2  0, x3  0

Problema Dual
Max g() = b11+b2 2 Max g() = b11+b2 2
a11 1 + a21 2  c1 a11 1 + a21 2  c1
a12 1 + a22 2  c2 a12 1 + a22 2  c2
0 1 + 1 2  0 2  0

Restrição primal   variável dual associada à restrição  0


Problema dual ↔ Problema primal
Problema Primal: minimizar, var não-negativas e restrições do tipo 

Min f(x) = c1x1+c2x2 Min f(x) = c1x1+c2x2+0x3

a11x1+ a12x2 = b1 a11x1+ a12x2 + 0x3 = b1



a21x1+ a22x2  b2 a21x1+ a22x2 - 1x3 = b2

x1 0, x2  0 x1 0, x2  0, x3  0

Problema Dual
Max g() = b11+b2 2 Max g() = b11+b2 2
a11 1 + a21 2  c1 a11 1 + a21 2  c1
a12 1 + a22 2  c2 a12 1 + a22 2  c2
0 1 - 1 2  0 2  0

Restrição primal   variável dual associada à restrição  0


Problema dual ↔ Problema primal
Problema Primal: maximizar, var não-negativas e restrições de igualdade

Max f(x) = c1x1+c2x2 Min - f(x) = - c1x1-c2x2-0x3


a11x1+ a12x2 = b1  a11x1+ a12x2 + 0x3 = b1
a21x1+ a22x2  b2 a21x1+ a22x2 + 1x3 = b2
x1 0, x2  0 x1 0, x2  0, x3  0

Problema Dual
Max g() = b11+b2 2 Min -g() = b1(-1)+b2( -2) Min g() = b11 + b2 2
a11 1 + a21 2  - c1 a11 (-1) + a21 ( -2) ≥ c1 a11 1 + a21 2  c1

a12 1 + a22 2  - c2 a12 (-1) + a22 ( -2) ≥ c2 a12 1 + a22 2  c2
2  0 -2 ≥ 0 2  0
1  - 1 2  - 2 e g  - g
Primal (max) : Restrição primal ≤  variável dual associada à restrição 
Problema dual ↔ Problema primal
Problema Primal: maximizar, var não-negativas e restrições de igualdade

Max f(x) = c1x1+c2x2 Min - f(x) = - c1x1 - c2x2

a11x1+ a12x2 = b1 a11x1+ a12x2 = b1



a21x1+ a22x2 = b2 a21x1+ a22x2 = b2

x1 0, x2  0 x1 0, x2  0

Problema Dual
Max g() = b11+b2 2 Min -g() = -b11 - b2 2 Min g() = b11 + b2 2
a11 1 + a21 2  - c1 - a11 1 - a21 2  - c1 a11 1 + a21 2  c1

a12 1 + a22 2  - c2 - a12 1 - a22 2  - c2 a12 1 + a22 2  c2
1  - 1 2  -  2

Primal (max) : Restrição primal =  variável dual associada à restrição é livre


Resumindo
Regras para construção do
problema dual
Primal (dual) Dual (primal)

Minimização Maximização
Vetor de recursos Gradiente do objetivo
Gradiente do objetivo Vetor dos recursos
= Livre
Restrição   Variável
≥ ≥
≥ 
Variável  ≥ Restrição
Livre =
Exemplo
Escreva o dual a partir do problema primal:

max f ( x)  x1  2 x2
 2 x1  x2  x3  3
3x1  4 x2 5
x1  0, x2 livre, x3  0
Exemplo
Dual:
min g ( )  31  52
 21  32  1 ( x1  0)
1  42  2 ( x2 livre)
1  0 ( x3  0)
1  0, 2  0 (1a rest  e a 2a rest )
Relações primais - duais
Problema primal: Problema dual:
Minimizar f (x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
x≥0 sujeito a: AT   c

P = {xRn | Ax=b, x0 } D = { Rm | AT   c}


Região factível primal Região factível dual

Propriedade 1: Suponha que P  ( solução factível primal). O


problema primal não tem solução ótima se e somente se D= (i.e., no
caso de minimização, f(x) - se e somente se não existir solução
factível dual).
Relações primais - duais
Propriedade 2: Suponha que D   ( solução factível
dual). O Problema dual não tem solução ótima se e
somente se P= (i.e. g()  se e somente se não existir
solução factível primal).

Ambos os problemas (primal e dual) podem ser


infactíveis, ou seja: P = e D=.
Relações primais - duais

Propriedade 3: O problema primal tem solução ótima se


e somente se o dual tiver solução ótima.

Propriedade 4: Sejam x*  P e *  D. Se f(x*)=g(* ), então


x* é solução ótima primal e * é solução ótima dual.

A recíproca da propriedade 4 também é verdadeira.


(Teoria das folgas complementares)
Folgas complementares
P = {xRn | Ax=b, x0 } D = { Rm | AT   c}
Região factível primal região factível dual

Sejam xP e D e suponha que f(x)=g( ), isto é: cTx = Tb.


Substituindo Ax=b, segue-se que cTx = TAx, o que implica :
(cT- TA)x=0.

vetor das
variáveis de
folga do dual
a1T   c1 a1T   1  c1
 T  T
a 2   c2 a 2   2  c2
A c
T
 , 1  0, 2  0, , n  0
 
 aT   c aT     c
 n n  n n n
Folgas complementares
a1T   c1 a1T   1  c1
 T  T
a 2   c2 a 2   2  c2
A c
T
 , 1  0, 2  0, , n  0
 
 aT   c aT     c
 n n  n n n

ajT  = Taj e (cT- TA)=(c1- Ta1, c2- Ta2,..., cn- Tan), segue que:
(cT- TA)x=0  (c1- Ta1)x1+ (c2- Ta2)x2+...+( cn- Tan)xn= 0 
1x1+  2x2 +...+  nxn = 0 em que j= cj- Taj ≥0.
Como xj = 0, j = 1, 2, ..., n, cada uma das parcelas é não-negativa

Logo: 1x1 = 0, 2x2 = 0, ...,  nxn = 0

Essa relação entre soluções ótimas primal e dual é chamada


de folgas complementares.
Folgas complementares

Teorema (folgas complementares): As soluções xRn e  


Rm são ótimas, primal e dual respectivamente, se e
somente se:

Ax  b, x  0 ( x é primal factível)
AT     c,   0 ( é dual factível)
 j x j  0, j  1,..., n (folgas complementares)

Equações não-lineares
Exemplo Problema Dual
max 1081  1202
Problema Primal 4
1  02  1
5
min x1  x2  x3 2 3
1  2  1
4 2 5 5
x1  x2  0 x3  108 9
5 5 01  2  1
3 9 10
0 x1  x2  x3  120
5 10 max 1081  120 2
x1  0, x2  0, x3  0 4
1  02  1 1
5
2 3
1  2  2 1
5 5
x* = (35 200 0)T
9
01  2  3  1
f (x*) = 235 10
1  0,  2  0,  3  0
Exemplo
max 1081  1202
4
1  02  1 1
5 Uma solução dual para verificar as
2 3
1  2  2 1 folgas complementares consiste
5 5 em 1x1= 0, 2x2= 0 e 3x3= 0.
9
01  2  3  1
10
1  0,  2  0, 3  0 Devido a solução do problema
primal, 1= 0, 2= 0 (x1 > 0 e x2 > 0).
1= 0, 2= 0
4
1  02  1
5
2 3 Com esta solução, a terceira
1  2  1
5 5 restrição dual é satisfeita com folga
(3= 1/4), logo é factível dual.
5 5
1  , 2 
4 6
Exemplo
Resumindo...

Solução
Primal x* = (35 200 0)T
factível Satisfazem as
folgas
complementares
Solução 5 5
Dual
1  , 2 
4 6
factível

5 5 Solução
Solução x* = (35 200 0)T 1  , 2 
4 6 ótima
ótima
primal
f (x*) = 235 g ( )  235 dual

f (x*) = 235 = g(*)


Dualidade Forte
P = {xRn | Ax=b, x0 } D = { Rm | AT   c}
Região factível primal região factível dual

Sejam xP e   D.
Das folgas complementares temos que Tx = 0 e T=(cT-
TA). Substituindo  temos (cT- TA) x=0 ou cTx= TAx .
Como Ax = b para xP, f(x)= cTx = Tb = g().

Teorema (dualidade forte) : As soluções x*  P e *  D são


ótimas, primal e dual respectivamente, se e somente se
f(x*) = g(* ).

OBS: As folgas complementares fornecem um caminho para


se calcular uma solução ótima de um dos problemas,
quando se conhece a solução ótima do outro.
Exemplo
Propriedade: O vetor multiplicador simplex na solução
ótima primal é uma solução ótima dual.

Problema Primal 4 2
min x1  x2  x3 B= 5 5 𝑥1
→ 𝑥𝐵 = 𝑥 =
108
3 2 200
4 2 0
x1  x2  0 x3  108 5
𝑥𝑁 = (𝑥3 )=(0)
5 5
3 9
0 x1  x2  x3  120
5 10 x* = (35 200 0)T
x1  0, x2  0, x3  0
f (x*) = 235
Multiplicador simplex (Dual)
5 −5
4 6 5 5
T = cBB-1= (1 1) 5 = 4 6
0
3
Exemplo
Como o vetor multiplicador simplex é uma solução dual
factível, os objetivos primal e dual coincidem.

g() = Tb = cBTB-1b = cBTxb+cBTxn = f(x)

Além disso, as restrições duais associadas as variáveis básicas


são satisfeitas com igualdade (supondo uma base ótima)

Custos relativos: cj = Taj ≥ 0 (para todo j não-básico)

Todas as restrições
duais são satisfeitas e,
Taj ≤ cj
portanto, T = cBTB-1 é
uma solução factível
dual.
Análise de sensibilidade (pós-
otimização)

Qual o efeito de perturbar os dados de um problema de


otimização linear?

✓ Perturbação no vetor de recursos b.


✓ Perturbação no vetor de custos c.
Perturbação no vetor de recursos

Problema Primal

F (b)  Min f ( x)  ct x
Valor mínimo da fo para
um vetor de recursos b  Ax  b
sujeito a 
x  0

Se o vetor b for alterado, então a solução ótima também


se altera e F(b) também é modificado.

Como as variáveis duais fornecem subsídios para


estudar as modificações em F(b)?
Perturbação no vetor de recursos
Para um b particular

xB  B1b, xN  0 Solução básica primal ótima

 t  cBt B1 Solução básica dual ótima (vetor


multiplicador simplex)

Portanto:
F (b)  cBt xB  cBt B 1b   t b  b11  b22  ...  bmm
F (b) O vetor multiplicados
 i , i  1, 2,..., m simplex fornece derivadas
bi
parciais da função F em b
F é diferenciável se (taxa de variação do valor da
pequenas variações em b função objetivo com relação
não altera a base ótima ao vetor de recursos)
Perturbação no vetor de recursos

Se fizermos um pequena perturbação em bi (bi + i), sem


que a solução básica atual deixe de ser factível, então:

F (b1,..., bi  i ,..., bm )  b11  ...  (bi  i )i  ...  bmm  F (b)  i i

Deve ser a mesma


unidade da fo

As variáveis duais fornecem a taxa de variação da


função objetivo ( ii) quando b é perturbado
Exemplo – problema de corte

B=  a1 a2 

Para as demanda b1=108 e b2=120, é mais interessante


estimular a demanda de sub-bobinas do tipo 2 do que do tipo
1!!!! (OBS: esses valores de  representam tendências...)
Exemplo – problema de corte
Qual o valor de  2 que mantém essa tendência?
Consideremos a perturbação:
Podemos
1  0  0  acrescentar 42 un.
     
 2  0 2  na demanda tipo 2

1 5 / 4 5 / 6 
B  
 0 5 / 3 
 0   35   5 / 6 
  2 
1 1 1
Nova Solução: xB  B (b  )  B b  B     

 2  200   5 / 3 
 35  5 / 6 2   0 
xB      120   2  42
 200  5 / 3 2   0 
Assim, para b2  [0,162] a base ótima é dada por B=  a1 a2 
Representação da variação do vetor
de recursos no espaço dual
Perturbação nos custos

Imagine que uma solução básica ótima tenha sido


encontrada e deseja-se analisar o efeito da alteração de
algum coeficiente na função objetivo
ck  ck’ = ck + 

Essa alteração não torna infactível a solução ótima já


encontrada, porém, a solução pode deixar de ser ótima.

✓ A variável xk pode ser básica ou não básica


Perturbação nos custos
✓ A variável xk é não-básica
Neste caso, o vetor cB não é alterado, de modo que o
vetor multiplicador simplex T  c TBB 1 associado a
partição básica ótima não se altera e apenas o custo
relativo 𝑐𝑘Ƹ da variável xk é alterado:

cˆk  c'k t ak  ck     t ak  cˆk  


Aplicar o algoritmo simplex – Fazer a
 < - 𝑐𝑘Ƹ variável xk tornar básica.
Exemplo anterior...
o Um fabricante de geladeiras precisa decidir quais modelos
deve produzir em uma nova fábrica recentemente instalada.

o O departamento de marketing verificou que no próximo mês


podem ser vendidas no máximo 1.500 unidades do modelo
luxo e 6.000 unidades no modelo básico.

o A empresa dispõe de uma força de trabalho de 25.000


homens-hora por mês. Cada modelo de luxo requer 10
homens-hora e cada modelo básico requer 8 homens-hora
para ser montado.

o Além disso, uma mesma linha de montagem é compartilhada


pelos dois modelos. Considere que a capacidade de produção
desta linha seja de 4.500 geladeiras por mês.
Exemplo anterior...
o O lucro unitário do modelo de luxo é de R$ 100,00 e do
modelo básico é de R$ 50,00. Deseja-se determinar
quanto produzir de cada modelo de modo a maximizar o
lucro da empresa.
Variável de decisão
xj : quantidade de geladeiras do tipo j, j = luxo, básico

Maximizar f(xluxo, xbásico) = 100xluxo + 50xbásico


Sujeito a:
10xluxo + 8xbásico + x1 = 25.000
xluxo + xbásico + x2 = 4.500
xluxo + x3 = 1.500
xbásico + x4 = 6.000
xbásico ≥ 0, xluxo ≥ 0, j = 1, ..., 4
Exemplo anterior...
o A base ótima e as soluções básicas ótimas, primal e dual
são:
Exemplo
o Suponha que um novo modelo superluxo está em estudo e
deseja-se saber qual é o lucro unitário mínimo desse produto
que torna sua produção viável economicamente em relação
aos demais produtos.

o O modelo superluxo requer 16 homens-hora para ser


montado e, compartilha a linha de montagem com os demais
modelos.

✓xsluxo: quantidade produzida do novo modelo


✓lsluxo: lucro unitário.
Exemplo
Maximizar f(xluxo, xbásico) = 100xluxo + 50xbásico + lsluxoxsluxo
Sujeito a:
10xluxo + 8xbásico + 16xsluxo + x1 = 25.000
xluxo + xbásico + xsluxo + x2 = 4.500
xluxo + x3 = 1.500
xbásico + x4 = 6.000
xbásico ≥ 0, xluxo ≥ 0, xsluxo ≥ 0, j = 1, ..., 4

A variável xsluxo é economicamente viável se pertencer a base


ótima deste novo problema, caso contrário, será não básica e
seu nível de produção será nulo. Para isso, devemos calcular
o custo relativo, que deve ser não negativo (problema de
maximização).
Exemplo
Custo relativo da variável xsluxo:

Se lsluxo ≥ 100, então o modelo superluxo é viável


economicamente (em relação aos demais produtos) e
contribuirá para o lucro da empresa se for produzido.
Caso contrário, a empresa precisa aumentar seu preço no
mercado ou reduzir seu custo unitário de produção de
modo que seu lucro unitário de produção resulte em lsluxo
≥ 100. Para lsluxo = 100, o custo relativo é nulo, indicando
soluções ótimas alternativas.
Perturbação nos custos
✓ A variável xk é básica

Como xk é básica, suponha que seja a r-ésima variável básica:


xBr = xk.
Neste caso, c’Br= cBr+ e o vetor multiplicador simplex
associado à base encontrada se altera por:

T  cB B1  cB B1  ekT B1  T  ekT B1

✓ er é a r-ésima coluna da matriz identidade m x m

✓ Os custos relativos de todas as variáveis devem ser


recalculados.
Perturbação nos custos
✓ Cálculo dos novos custos relativos:

erTyj fornece o r-ésimo elemento do vetor yj denotado


por yrj, de modo que o novo custo relativo é dado por:

Neste caso, todos os custos relativos se alteram.


Método dual simplex
Método dual simplex

✓ Aplicação do método simplex ao problema dual.


✓ Principais uso: reotimização de problemas de
programação linear:
Após o problema inicial ter sido resolvido, novas
restrições são adicionadas. Se a solução ótima do
problema original satisfaz as restrições, então ela
também é ótima para o novo problema.
Caso contrário, a solução ótima do problema original é
infactível para o novo problema e uma reotimização
desse problema usando o método simplex necessita da
introdução de variáveis artificiais (Fase I).
Método dual simplex

✓ Do ponto de vista do problema dual, novas


restrições no primal implicam novas variáveis duais,
de modo que a solução dual não perde a
factibilidade, porém deixa de ser ótima.

✓ A solução ótima do problema dual original, em


geral, é uma boa solução inicial para o problema
dual novo.

✓ Para resolver o novo problema  método dual


simplex.
Método dual simplex

Problema primal:
Problema dual:
Minimizar f(x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
sujeito a: AT   c
x0

P = {xRn | Ax=b, x0 } D = { Rm | AT   c}


Região factível primal região factível dual
Método dual simplex

Problema primal Problema dual


min f ( x)  2 x1  3x2  2 x3  x4 max g ( )  21  2
 x1  x2  2 x3  x4  2  1  22  2
2 x1  x2  x3 1 1  2  3
x1  0, x2  0, x3  0, x4  0 21  2  2
 1 1

As colunas da matriz de restrições (a1, a2, a3, a4) do problema


primal definem as restrições do problema dual.
Método dual simplex
max 21  2 a2
    2  2 a1
 1 2

dual  1  2  3
2    2
 1 2
 1 1 a3
a4

Restrições duais 2 e 3: restrições ativas

1  2  3 (a2T   c2 )
Vértice ótimo: 
21  2  2 (a3T   c3 )
5 4 14
1*  , *2  , g (* ) 
3 3 3
Restrições duais 1 e 4: restrições inativas.
Método dual simplex
A solução ótima primal pode ser obtida observando que o vetor b
é uma combinação positiva das colunas a2 e a3.

O vetor b está no cone


gerado pelos vetores a2
e a3, o que significa que
b é uma combinação
positiva desses vetores

O sistema linear a2x2 + a3x3 = b


Método dual simplex
Esta solução primal fornece a partição básica ótima do problema
primal:
B = [a2 a3] e N = [a1 a4]

Formada pelos coeficientes Vetor multiplicado


das restrições ativas no dual. simplex associado à
partição básica ótima

Restrições ativas no dual:


1  2  3 a2T   c2
  T B T   cB
21  2  2 a3   c3 Forma matricial

✓ O vértice dual ótimo é obtido de um conjunto de restrições duais


ativas aiT = ci, em que ai é a i-ésima coluna da matriz A.
✓ As colunas de A, associadas as restrições ativas duais, definem uma
base ótima, a qual permite determinar a solução ótima primal.
Método dual simplex
Analise de outro vértice dual factível (não ótimo)
Restrições ativas duais:
4 5 13
1  22  2 a1T   c1 1  ,  2  e g ( )=
   T 3 3 3
1  2  3 a2   c2
Não é vértice ótimo dual

O vetor b não está no cone gerado por a1 e a2


Uma das variáveis do sistema linear
a1x1 + a3x3 = b será negativa

 1 1  x1   2  1 5
 2 1  x    1  ˆx1   , xˆ2  ,
  2    3 3

A partição básica não é primal factível


B = [a1 a2] e N = [a3 a4]
Método dual simplex
✓ Procurar outro vértice melhor (maior valor para a f.o. dual)
✓ Perturbar 𝜆መ em uma direção  de modo que leve a outro
vértice melhor.

perturbação de 𝜆መ na direção 1

  ˆ  1,   0
✓ As direções 1 e 2 (direções dual simplex) permitem
perturbar a solução 𝜆መ ao longo das arestas da região
factível dual
Método dual simplex
Para determinar 1 usa-se a estratégia dual simplex para
perturbar 𝜆መ
a) A restrição 1 dual deixa de ser ativa
b) A restrição 2 permanece ativa

1  22  2 a1T   c1   ,   0  a1T  c1   


   T   T       
1  2  3 a2   c2  a2  c2  0 

Denotando B   a1 a2  , cB  (c1 c2 )T , e1  (1 0)T

B   cB   e1     B
T

T 1
cB    B 
T 1
e1  ˆ  1

em que 1   B   1 T
e1

Direção dual simplex


1 é a primeira coluna de -(B-1)T
Método dual simplex
No exemplo:

 1  22  2 a1   c1
T

  T
1  2  3 a2   c2

 1 1
1  B e
 1 1  
3
1 T
B  a1 a2    B 1   3
 1
, 1
 2 1 2
 
 3 3
1  2 
3 3
1    B  e1    ,
T 1
2    B  e2   
T 1

 1   1 
 3   3 
Método dual simplex

Propriedade 2.15: Considere uma partição básica A=[B,


N], a solução básica primal associada 𝑥ො𝐵 = 𝐵−1 𝑏 e a
direção i definida por i  ( B1)T ei . Então
𝑏 𝑇 𝜂𝑖 = −𝑥ො𝐵𝑖

Do Exemplo :

 1/ 3  1
b 1  (2
T
1)      xB1   xˆ1
 1/ 3  3
Método dual simplex
A nova solução dual é dado por:   ˆ  1,   0
Avaliação da nova f.o. dual: determinando g() :
g ( )  g (ˆ  1 )  bT (ˆ  1 )  bT ˆ   bT1  g (ˆ)   xB1

do exemplo...
13 1
g ( )  g (ˆ  1 )  g (ˆ )   xB1   
3 3

Perturbar a solução dual na direção  i faz crescer a função


dual na taxa de :
bTi  xB i
Método dual simplex

Revisão:
መ é obtido por um
✓ Um vértice dual factível (𝜆)
conjunto de restrições duais ativas, as quais
definem uma partição A=[B, N], em que as colunas
de B definem as restrições duais ativas.
✓ Se a solução primal básica associada à partição
መ é ótima
básica for não-negativa, então a solução (𝜆)
dual.
✓ Se não, isto é, se a solução primal tiver alguma
componente negativa, digamos xBk, então uma
estratégia chamada de dual simplex permite
perturbar a solução 𝜆መ para encontrar uma nova
solução melhor.
Método dual simplex

✓ A estratégia dual simplex determina uma direção que é


a transposta da k-ésima linha de (-1)B-1, que
denotamos k, que fornece uma forma de perturbar a
solução dual 𝜆መ , ou seja,   ˆ  k que faz a função
objetivo dual crescer a uma taxa de – xBk.

Como determinar o passo  e obter um novo vértice


com valor maior para a função objetivo dual?
Método dual simplex
Considere:
Min f ( x)  c t x Max g ( x)  bt 
 Ax  b
 A   c
t

x  0

A  B N  : partição básica
Reorganização das restrições duais:
   cB : restrições básicas
 t
B
A   c  t
T

 N   cN : restrições não-básicas
Método dual simplex
Definição (solução básica dual). Considere uma partição
básica A=[B,N]. Chamamos de solução básica dual,
associada a partição básica, a solução do sistema BT 𝜆መ = cB
Se as demais restrições duais (restrições não-básicas) são
satisfeitas, ou seja, N 𝜆መ  cN , então 𝜆መ é uma solução
básica dual factível.

Problema primal:
Problema dual:
Minimizar f(x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
sujeito a: AT   c
x0

OBS: Se existir um i tal que: aNi


T
  cNi , a solução é dita ser
dual degenerada
Método dual simplex

Teorema: Seja ˆ  D    R m
/ AT   c.
ˆ é um vértice de D  ˆ é uma solução básica factível.

Problema primal:
Problema dual:
Minimizar f(x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
sujeito a: AT   c
x0
Método dual simplex
Observações:
✓ Uma solução básica dual corresponde ao vértice da
região factível dual.

✓ A solução básica dual BT 𝜆መ = cB é o vetor multiplicador


simplex associado a partição básica e os custos
cˆNj  crelativos
  T
aNj
das variáveis não básicas são dados por: Nj

✓ A factibilidade dual:
 N ˆ  c 
T
N
é equivalente a:
cˆNj   cNj   T aNj   0, j  1,..., n  m
ou seja, os custos relativos são não-negativos, portanto, a
condição de otimalidade é satisfeita
Método dual simplex

✓ O método simplex trabalha com a solução básica primal


factível e admite algum custo relativo reduzido negativo
(infactibilidade dual). Quando todos os custos relativos
são não-negativos, a solução básica dual é factível e uma
solução ótima primal é encontrada.

✓A factibilidade dual é verificada pelos custos relativos


não-negativos, mas não exige que a solução básica primal
seja factível. Neste caso, a solução dual não é ótima e é
possível aumentar a função objetivo dual.
Método dual simplex
Propriedade 2.16 (Condição de otimalidade)
Considere a partição básica A=[B,N] em que a
solução dual associada 𝜆መ = (B-1)TcB é factível. Se a
solução primal básica associada é factível
( xˆB  B 1b  0 ), então ambas as soluções duais e
primais resolvem o problema dual e primal,
respectivamente.

Problema primal:
Problema dual:
Minimizar f(x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
sujeito a: AT   c
x0
Método dual simplex

Estratégia dual simplex ( xˆBk  0 )


Considere a partição básica A=[B, N] em que a solução
dual é factível: ˆ  ( B 1 )T cB

Restrições básicas são ativas : aTBi ˆ  cBi , i  1...m

Restrições não básicas são inativas : a N j ̂  c N j , j  1...n  m


T

1
A solução primal ( xˆ B  ( B )b ) não é factível para pelo
menos um índice básico xˆ Bk  0

aBTi   cBi , i  1...m, i  k


Estratégia dual simplex:  T
aBk   cBk   ,   0
Método dual simplex
aBTi   cBi , i  1...m, i  k
Estratégia dual simplex:  T
aBk   cBk   ,   0

Matricialmente: B   cB   ek    B
T
 
T 1
 
cB   B T 1
ek

Direção dual simplex: k   B  


T 1
ek ou BTk  ek 
Nova solução:   ˆ  k
Função objetivo dual:

g ( )  g (ˆ   k )  bT ˆ   bT k
g ( )  g (ˆ )   ( xB k ), com  xB k  0
Método dual simplex
Quanto maior o , maior o valor da função dual.
Até que ponto podemos aumentar o ?

Tamanho do passo
Todas as restrições duais são satisfeitas e devem continuar
satisfeitas. A análise é dividida em dois casos:

Restrições duais básicas: B T   c B

Por construção, a estratégia dual simplex não viola


as restrições básicas:
B T   cB   ek  cB ,   0

O passo  não é limitado pelas restrições duais básicas


Método dual simplex
Restrições duais não-básicas: N T   c N

A análise é feita para cada uma das restrições não-básicas:


aT   cN , j = 1, ..., n-m.
Nj j

Subdividindo  ˆ  k nas restrições não-básicas:


T

ˆ T
 ˆ
 a N j  cN j     k a N j  cN j   a N j   k a N j  cN j
T T

Como 𝜆መ é factível: aT
N
̂  cN j
j

Assim, se  k a N j  0, j  1,..., n  m  ̂T a N   k T a N  c N


T
j j j

Será sempre satisfeita para todo  ≥ 0 e a função dual


cresce indefinidamente (o dual não tem solução ótima).
Método dual simplex
Se  k a N j  0, então  é limitado superiormente.
T

De ˆT aN j  k T aN j  cN j segue que:


 cN j  ˆT a N j  cˆNj
Custo relativo da
variável x N j
k T aN j k T aN j

O maior valor possível para  é:


 cˆNr  cˆ 
  T  mínimo  Nj , T a  0 
k aNr j 1,...,nm  T a k Nj 
 k Nj 
Método dual simplex
 cˆNr  cˆ 
  T  mínimo  Nj
, T
a  0 
k aNr j 1,...,nm  T a k Nj 
 k Nj 

Com este valor para o passo, a r-ésima restrição dual não


básica (inativa em ) torna-se ativa na nova solução 𝜆′ = 𝜆መ +
መ 𝑘 , juntamente com todas as restrições básicas., exceto a k-
𝛿𝜂
ésima, que deixa de ser ativa: a Bk  '  cBk  ˆ
T

De acordo com a estratégia dual simplex:

aTB    cB , i  1...m, i  k
 i i
 T
a Nr    cNr
Método dual simplex

Atualização:

r-ésima coluna

r-ésimo componente
Algoritmo dual simplex
Algoritmo dual simplex
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo

Você também pode gostar