Escolar Documentos
Profissional Documentos
Cultura Documentos
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).
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
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
g() = min {(c1 - Ta1)x1 + (c2 - Ta2 )x2 + ... + (cn - Tan)xn + Tb}
x0
Decomposição em subproblemas menores
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 ] 1081 1202
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 1081 1202
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 1081 1202
x1 0 5 x2 0 5 5 x3 0 10
g()= Min (c1 - T a1)x1 + Min (c2 - T a2)x2 +...+ Min (cn - Tan)xn + bT
x10 x20 xn0
Problema dual
Resolução dos subproblemas:
xij 0 se c j λ T a j 0
Min (cj - aj)xj
T
xj0 xij se c j λ T a j 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
x1 0, x2 0 x1 0, x2 0, x3 0
Problema Dual
Max g() = b11+b2 2 Max g() = b11+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
x1 0, x2 0 x1 0, x2 0, x3 0
Problema Dual
Max g() = b11+b2 2 Max g() = b11+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
Problema Dual
Max g() = b11+b2 2 Min -g() = b1(-1)+b2( -2) Min g() = b11 + 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
x1 0, x2 0 x1 0, x2 0
Problema Dual
Max g() = b11+b2 2 Min -g() = -b11 - b2 2 Min g() = b11 + 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
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 ( ) 31 52
21 32 1 ( x1 0)
1 42 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
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
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 1081 1202
Problema Primal 4
1 02 1
5
min x1 x2 x3 2 3
1 2 1
4 2 5 5
x1 x2 0 x3 108 9
5 5 01 2 1
3 9 10
0 x1 x2 x3 120
5 10 max 1081 120 2
x1 0, x2 0, x3 0 4
1 02 1 1
5
2 3
1 2 2 1
5 5
x* = (35 200 0)T
9
01 2 3 1
f (x*) = 235 10
1 0, 2 0, 3 0
Exemplo
max 1081 1202
4
1 02 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
01 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 02 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
Sejam xP 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 xP, f(x)= cTx = Tb = g().
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.
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)
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
Portanto:
F (b) cBt xB cBt B 1b t b b11 b22 ... bmm
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
B= a1 a2
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
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.
Problema primal:
Problema dual:
Minimizar f(x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
sujeito a: AT c
x0
dual 1 2 3
2 2
1 2
1 1 a3
a4
1 2 3 (a2T c2 )
Vértice ótimo:
21 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.
1 1 x1 2 1 5
2 1 x 1 ˆx1 , xˆ2 ,
2 3 3
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
B cB e1 B
T
T 1
cB B
T 1
e1 ˆ 1
em que 1 B 1 T
e1
1 22 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
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 ˆ bT1 g (ˆ) xB1
do exemplo...
13 1
g ( ) g (ˆ 1 ) g (ˆ ) xB1
3 3
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
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
x0
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
x0
Método dual simplex
Observações:
✓ Uma solução básica dual corresponde ao vértice da
região factível dual.
✓ 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
Problema primal:
Problema dual:
Minimizar f(x) = cTx
Maximizar g() = bT
sujeito a: Ax = b
sujeito a: AT c
x0
Método dual simplex
1
A solução primal ( xˆ B ( B )b ) não é factível para pelo
menos um índice básico xˆ Bk 0
Matricialmente: B cB ek B
T
T 1
cB B T 1
ek
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:
Como 𝜆መ é factível: aT
N
̂ cN j
j
cN j ˆT a N j cˆNj
Custo relativo da
variável x N j
k T aN j k T aN j
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