Você está na página 1de 12

  

  Universidade Estadual de Campinas - UNICAMP


 
   Instituto de Computação - IC
   MO824 - Tópicos em Otimização Combinatória

Algoritmos de Planos de Corte e Desigualdades Válidas


Cid Carvalho de Souza

2o semestre de 2005

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 1/1

Algoritmos de planos de corte


Idéia:
1 resolver a relaxação linear de z = max{cx : x ∈ Zn+ , Ax ≤ b }.
| {z }
X
2 seja x ∗ a solução ótima da relaxação.
Pergunta: x ∗ ∈ Zn+ ?
SIM ⇒ x ∗ é solução ótima do PLI. PÀRA.
NÃO ⇒ resolve o problema da separação para x ∗ e conv(X ).
3 se o problema da separação retornar uma desigualdade πx ≤ π0 que é
satisfeita por todos pontos de conv(X ) mas tal que πx ∗ > π0 , incluı́-la
na formulação e voltar ao Passo 1.
Se não, PÀRA.
Definição: Seja X ⊆ Rn . A desigualdade πx ≤ π0 válida para X se e
somente se πy ≤ π0 para todo y ∈ X .

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 2/1

handout.pdf — October 30, 2006 — 1


Algoritmos de planos de corte: observações

A cada iteração do algoritmo de planos de corte a formulação se


“aproxima mais” de conv(X ).
Em geral, na prática, para problemas N P-difı́ceis, o algoritmo deve
ser interrompido bem antes de se chegar a conv(X ). Por quê ?
Quais desigualdades levam o algoritmo a encerrar mais rapidamente ?
Como obtê-las ?
É SEMPRE possı́vel encontrar uma desigualdade no passo 3 e
garantir que o algoritmo pàra em um tempo finito ?

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 3/1

Exemplos de desigualdades válidas

Conjunto 0-1 puro:

X = {x ∈ B5 : 3x1 − 4x2 + 2x3 − 3x4 + x5 ≤ −2};


⇒ x2 e x4 não podem ser ambos nulos: x2 + x4 ≥ 1;
⇒ x1 = 1 implica x2 e x4 devem ser 1: 2x1 ≤ x2 + x4 .

Conjunto 0-1 misto:


X = {(x, y ) ∈ R × B : x ≤ 10y , 0 ≤ x ≤ 5};
Desigualdade válida: x ≤ 5y .
y x ≤ 5y
x ≤5

x ≤ 10y

Chegou-se à envoltória convexa !


C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 4/1

handout.pdf — October 30, 2006 — 2


Exemplos de desigualdades válidas

No caso do problema de localização de facilidades com capacidades,


tı́nhamos o modelo
P
Pi∈M xij ≤ bj yj , ∀j ∈ N
j∈N xij = ai , ∀i ∈ N
xij ≥ 0, yj ∈ {0, 1}.

Desigualdade válida: xij ≤ min{ai , bj }yj .


Conjunto inteiro misto:
X = {(x, y ) : x ≤ Cy , 0 ≤ x ≤ b, y ∈ Z+ } onde C não divide b.
Defina: γ = b − ⌈ Cb ⌉ − 1 C e k = ⌈ Cb ⌉.
Desigualdade válida: x ≤ b − γ(k − y ).
Por exemplo, se X = {(x, y ) : x ≤ 5y , 0 ≤ x ≤ 14, y ∈ Z+ },
γ = 4 e k = 3 e a desigualdade obtida é x ≤ 4y + 2;

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 5/1

Exemplos de desigualdades válidas


y x ≤ 5y x ≤ 4y + 2
0 x ≤0 x ≤2
1 x ≤5 x ≤6
2 x ≤ 10 x ≤ 10
3 x ≤ 15 x ≤ 14 (x ≤ 15 redundante)
y
y = ⌈b⌉
C A desigualdade válida é dada
pela reta que passa nos pontos
y = ⌈b⌉−1 x = Cy
C
x0 = b,
y0 = ⌈ Cb ⌉;
y = ⌈b⌉−2
C

x1 = ⌈ Cb ⌉ − 1 C ,
x ≤ b − γ(k − y )
b x
y1 = ⌈ Cb ⌉ − 1.

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 6/1

handout.pdf — October 30, 2006 — 3


Exemplos de desigualdades válidas

Conjunto Combinatório:
X = {vetores dePincidência dos emparelhamentos de um grafo} ou
X = {x ∈ Zn+ : e∈δ(i) xe ≤ 1, ∀i ∈ V }.
Se T ⊆ V e |T | é ı́mpar, temos a seguinte desigualdade válida:
P |T |−1
e∈E (T ) xe ≤ 2 .
Arredondamento inteiro:
X = {x ∈ Z4+ : 13x1 + 20x2 + 11x3 + 6x4 ≥ 72}.
A seguinte desigualdade é válida para X :
13 20 11 6 72
x1 + x2 + x3 + x4 ≥ .
11 11 11 11 11
Como estamos no ortante positivo, outra desigualdade válida seria:
6
2x1 + 2x2 + x3 + x4 ≥ 6 .
11
E como as variáveis x são inteiras, chega-se a desigualdade válida
2x1 + 2x2 + x3 + x4 ≥ 7.
C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 7/1

Como gerar desigualdades válidas

Como encontrar desigualdades válidas para P = {x ∈ R+ : Ax ≤ b} ?


(Programação Linear !)

Proposição 1:
A desigualdade πx ≤ π0 é válida para P 6= ∅ se e somente se
existem vetores u e v não negativos tais que uA − v = π e
ub ≤ π0 (ou u ≥ 0 tal que uA ≥ π e ub ≤ π0 ).

Prova:
Primal: z = max{πx : Ax ≤ b , −x ≤ 0, x irrestrito}.
| {z } | {z }
u v
Dual: w = min{ub : uA − v = π, u ≥ 0, v ≥ 0}.
Desigualdade Válida: z ≤ π0 ≡ w ≤ π0 ≡ ub ≤ π0 , onde
uA − v = π, u ≥ 0, v ≥ 0. 

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 8/1

handout.pdf — October 30, 2006 — 4


Como gerar desigualdades válidas

Para PL toda desigualdade válida é obtida a partir de combinações lineares


não-negativas das desigualdades em Ax ≤ b.
E para PLI ?

Observação trivial: arredondamento


Se X = {y ∈ Z : y ≤ b} então y ≤ ⌊b⌋ é válida para X .

Gerando desigualdades válidas para PLI (I)


Combinação linear não-negativa de desigualdades válidas seguida de
arredondamento inteiro do RHS.

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 9/1

Exemplo: emparelhamento em grafos


P
desigualdades originais: e∈δ(i) xe ≤ 1, ∀i ∈ V ;
Seja T ⊆ V com T ı́mpar. Multiplicar todas as desigualdades
originais dos vértices em T por 1/2 e somar:
X 1 X |T |
xij + xij ≤ .
2 2
i6=j,{i,j}⊂T i∈T , j6∈T

Como o segundo termo do LHS é não-negativo, chega-se a


P |T |
e∈E (T ) xe ≤ 2 .

Considerando que as variáveis são inteiras, pode-se concluir que a


seguinte desigualdade é válida para o politopo dos emparelhamentos:
X |T |
xe ≤ ⌊ ⌋.
2
e∈E (T )
C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 10 / 1

handout.pdf — October 30, 2006 — 5


Gerando desigualdades válidas para PLI (II)
Arredondamento dos coeficientes das variáveis inteiras mantendo a direção
da desigualdade.

Exemplo 1:
X = {5.27x ≤ 11.32, com x ∈ Z}.
Desigualdade válida: 5x ≤ 11.32 =⇒ 5x ≤ 11 =⇒ x ≤ ⌊ 11
5 ⌋ = 2.

Exemplo 2:
−x1 + 2x2 ≤ 4 (5/11) (4/11)
5x1 + x2 ≤ 20 (3/22) (3/11)
−2x1 − 2x2 ≤ −7 (0) (0)
x1 , x2 ∈ Z+ .
Desigualdade válida 1: (5/22)x1 + (23/22)x2 ≤ (100/22) ou, após
arredondamento, x2 ≤ ⌊(100/22)⌋ = 4.
Desigualdade válida 2: x1 + x2 ≤ 6.
C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 11 / 1

Procedimento de Chvátal-Gomory

Procedimento de Chvátal-Gomory
Seja X = P ∩ Zn , onde P = {x ∈ Rn+ : Ax ≤ b}, A : m × n e u ∈ Rm
+.
P
1 (ua.j )xj ≤ ub é válida para X ;
Pj∈N
2 ⌊ua.j ⌋xj ≤ ub é válida para X ;
Pj∈N
j∈N ⌊ua.j ⌋xj ≤ ⌊ub⌋ é válida para X ;
3

Teorema 2
Toda desigualdade válida para X pode ser obtida pela aplicação do
procedimento de Chvàtal-Gomory em um número finito de vezes.

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 12 / 1

handout.pdf — October 30, 2006 — 6


Inclusão de desigualdades válidas a priori

Formulação: P = {x ∈ Rn+ : Ax ≤ b}, X = P ∩ Zn .


Qx ≤ d: conjunto de desigualdades válidas para X .
Nova formulação: P ′ = P ∩ {Qx ≤ d}.
Usar P ′ como entrada para o branch-and-bound !
vantagem: se a formulação P ′ for muito melhor que a formulação P,
permitirá que o pruning seja feito mais cedo !
desvantagem: se o número de desigualdades em Qx ≤ d for muito
grande, tornará muito lenta a resolução das relaxações lineares !

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 13 / 1

Como encontrar desigualdades válidas a priori


Decomposição de X : X = X1 ∩ X2 .
Encontrar desigualdades válidas para conv(X2 ) é mais fácil do que para
conv(X ).

Exemplo: uncapacitated facility location


Pn
Formulação: xij = 1, i = 1, . . . , m,
 Pj=1 m
(Pj ) i=1 xij ≤ myj , j = 1, . . . , n, .
xij ≥ 0, 1 ≥ yj ≥ 0
A envoltória convexa dos pontos inteiros de Pj (Xj ) é dada por:

conv(Xj ) = {xij ≤ yj , xij ≥ 0, 1 ≥ yj ≥ 0, i = 1, . . . , m, j = 1, . . . , n}.

Substituindo Pj por conv(Xj ) chega-se a uma formulação forte !


Os limitantes melhoram muito e as soluções da relaxação são quase
inteiras.
C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 14 / 1

handout.pdf — October 30, 2006 — 7


Algoritmo de planos de corte
Especializando para uma famı́lia de desigualdades
Seja X = P ∩ Zn , onde P = {x ∈ Rn+ : Ax ≤ b}.
Seja F uma famı́lia de desigualdades válidas para X e considere o
problema de PLI dado por z = max{cx : x ∈ X }.
Passo 0: t ← 0 e P 0 ← P;
Passo 1: resolver a relaxação linear (LP t ): z t = max{cx : x ∈
P t }, obtendo a solução ótima x t .
Passo 2: Se x t é inteira, retorne (z t , x t ) e pare.
Se não, resolver o problema de separação para x t e F e ir para
o passo 3.
Passo 3: Se não encontrou desigualdade violada por x t em F,
pare e retorne o limitante superior z t .
Se não, seja π t x ≤ π0t a desigualdade violada por x t em F.
Faça P t+1 = P t ∩ {x ∈ Rn+ : π t x ≤ π0t }, t ← t + 1 e volte ao
passo 1.
C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 15 / 1

Algoritmo de planos de corte (cont.)

Comentários:

P 0 ⊃ P 1 ⊃ P 2 ⊃ . . . ⊃ P t ⊃ . . .;
Com a adição de cortes o limite superior decresce a cada iteração;
A partir da segunda relaxação linear, resolver o LP usando o dual
simplex;
Se for conhecido um limitante inferior z t , o algoritmo pode ser
interrompido na k-ésima iteração usando um pruning por otimalidade
quando z t − z t ≤ ǫ (fixado a priori).
Usando limitantes inferiores, é possı́vel ainda fixar variáveis por custo
reduzido;
IMPORTANTE: na prática, é melhor adicionar várias desigualdades
violadas a cada iteração do que uma única !

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 16 / 1

handout.pdf — October 30, 2006 — 8


Como garantir que uma solução inteira seja atingida ?

F = {todas desigualdades obtidas de P pelo procedimento CG};


Ou seja, no passo 2, se x t não é inteira, ela viola uma desigualdade
CG;
Preciso de um algoritmo para encontrar esta desigualdade !

O corte fracionário de Gomory


Seja B uma base ótima da relaxação. Reescrevendo a formulação:
P
max z = z0 + j∈N c j xj∗ (c j = cj − cB B −1 a.j )
∗ +
P ∗ −1 a )
s.a. xB,u j∈N auj xj = au0 , u ∈ M (a.j = B .j

x ≥0 −1
(au0 = [B b]u )

Se x ∗ 6∈ Zn , existe u ∈ M tal que xB,u


∗ é fracionário (a não é inteiro);
u0
Aplicar o procedimento CG nesta linha do tableau !

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 17 / 1

Corte fracionário de Gomory


Aplicando CG à linha u
∗ +
P ∗
xB,u j∈N auj xj = au0
∗ +
P ∗
xB,u j∈N ⌊auj ⌋xj ≤⌊au0 ⌋

Subtraindo-se as duas expressões chega-se a:


P ∗
j∈N (auj − ⌊auj ⌋) xj ≥ (a u − ⌊au ⌋),
| 0 {z 0 }
| {z }
fuj fu0

onde 0≤fuj ≤ 1 e 0<fu0 < 1 (parte fracionária).

Corte fracionário de Gomory


X
fuj xj ≥ fu0
j∈N

Para x inteiro, a folga desta restrição é inteira ! (Por quê ?)


C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 18 / 1

handout.pdf — October 30, 2006 — 9


Exemplo
max z = 3x1 + 4x2
s.a. x1 + 2x2 ≤ 11 x1 + 2x2 + x3 = 11
7x1 + x2 ≤ 21 7x1 + x2 + x4 = 21
x1 , x2 ∈ Z+

x1 x2 x3 x4 RHS x1 x2 x3 x4 RHS
z -3 -4 0 0 0 z -1 0 2 0 22
x3 1 2 1 0 11 x2 1/2 1 1/2 0 11/2
x4 7 1 0 1 21 x4 13/2 0 -1/2 1 31/2
x1 x2 x3 x4 RHS 1o corte de Gomory:
z 0 0 25/13 2/13 317/13
x2 0 1 7/13 -1/13 56/13 12 2 5
x3 + x4 ≥ .
x1 1 0 -1/13 2/13 31/13 13 13 13
Inserindo a variável de folga: (tem que ser inteira)
− 12
13 x3 −
2
13
5
+ x5 = − 13 (restrição da forma ≤)

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 19 / 1

Exemplo (cont.)
x1 x2 x3 x4 x5 RHS
z 0 0 25/13 2/13 0 317/13
x2 0 1 7/13 -(1/13) 0 56/13
x1 1 0 -(1/13) 2/13 0 31/13
x5 0 0 -(12/13) -(2/13) 1 -(5/13)

Usar o dual simplex !


x1 x2 x3 x4 x5 RHS
z 0 0 1 0 1 24
x2 0 1 1 0 -(1/2) 9/2
x1 1 0 -1 0 1 2
x4 0 0 6 1 -(13/2) 5/2

2o corte de Gomory:

(1/2)x5 ≥ 1/2 ou − (1/2)x5 + x6 = −(1/2).


C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 20 / 1

handout.pdf — October 30, 2006 — 10


Exemplo (cont.)
x1 x2 x3 x4 x5 x6 RHS
z 0 0 1 0 1 0 24
x2 0 1 1 0 -(1/2) 0 9/2
x1 1 0 -1 0 1 0 2
x4 0 0 6 1 -(13/2) 0 5/2
x6 0 0 0 0 -(1/2) 1 -(1/2)

Dual simplex ...


Próxima iteração: x1∗ = 1, x2∗ = 5 e z ∗ = 23.
Solução ótima inteira !
Cortes de Gomory em função das variáveis originais:
1o : 2x1 + 2x2 ≤ 13;
2o : x1 + x2 ≤ 6;

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 21 / 1

Gráfico
7x1 + x2 ≤ 21
6

4
x1 + 2x2 ≤ 11
3

2
1o corte
1
2o corte

1 2 3

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 22 / 1

handout.pdf — October 30, 2006 — 11


Proposição
−1
P β a u-ésima linha de B e q = β − ⌊β⌋. Então, a desigualdade
Seja
j∈N fj xj ≥ f0 escrita em função
P das variáveis originais é o corte de
Chvátal-Gomory dado por j∈N ⌊qaj ⌋xj ≤ ⌊qb⌋ (⌊qA⌋x ≤ ⌊qb⌋).

Exemplo

Obtendo o corte 1 do exemplo anterior ...


β = [−(1/13) 2/13], β − ⌊β⌋ = q = [12/13 2/13].
⌊qa1 ⌋x1 + ⌊qa2 ⌋x2 ⇒
⌊[12/13 2/13][1 7]t ⌋x1 + ⌊[12/13 2/13][2 1]t ⌋x2
≤ ⌊[12/13 2/13][11 21]t ⌋ ⇒
⌊26/13⌋x1 + ⌊26/13⌋x2 ≤ ⌊174/13⌋ ⇒
2x1 + 2x2 ≤ 13.

C. C. de Souza (IC-UNICAMP) Algoritmos de Planos de Corte 2o semestre de 2005 23 / 1

handout.pdf — October 30, 2006 — 12

Você também pode gostar