Você está na página 1de 35

Programao Inteira

Assunto: Soluo de PPIs / Mtodo Branch-and-Bound


baseado em Programao Linear
Ormeu Coelho da Silva Jnior, D.Sc.
Departamento de Engenharia de Produo

CONJUNTO DE SOLUES DE UM PPI

Em PPLs o conjunto de solues, quando no vazio, possui infinitas


solues, seja ele limitado ou ilimitado.

Alm disso, o conjunto de solues contnuo e fechado.

Num PPI, o conjunto de solues discreto e enumervel (finito ou no).

Ex.: Vejamos a regio de viabilidade de dois PPIs.


r2

x2

Conjunto finito de
solues

x2

r3

r1

Conjunto infinito
de solues
r3

r1

x1

x1

FORMULAES ALTERNATIVAS

Um dado PPI, possui um determinado conjunto discreto de solues, que


pode ser descrito por mais de uma formulao.

Ex.: Um dado PPI possui o seguinte conjunto de solues X, tal que


X = {(1,3),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(4,2)}, o qual pode ser descrito
por duas formulaes P1 e P2:
P1

x2

P1 {x : A1 x b1}
P2 {x : A2 x b2 }
P2

r1

x1

FORMULAES ALTERNATIVAS

Qual formulao melhor, P1 ou P2?


Combinao linear convexa (Definio): Dados p vetores x , x ,..., x ,
diz-se que x uma combinao linear convexa (c.l.c.) destes vetores, sse:
1

x i 1 i xi

i1 i 1

1 , 2 ,..., p 0

Dados dois x e x vetores em n, o lugar geomtrico de todas as c.l.c.


segmento de reta que os une. Vejamos um exemplo em
:
x2
x e c.l.c. de x1 e x 2 x 1 x1 2 x 2 , 1 2 1, 1 , 2 0.

x1
x1 x2

Seja 1 ( 0) 2 1 .
Logo, x x1 (1 ) x 2 x 2 ( x1 x 2 ).

x2
x1

FORMULAES ALTERNATIVAS

Conjunto convexo (Definio): Um conjunto X n dito convexo se,


dados x1 , x 2 n ( x1 x,2 ) ento x X para x x1 (1 ) x 2 .

Ex.: Alguns conjuntos convexos em 2.

x2

x1

Ex.: Alguns conjuntos no-convexos em 2.

x2

x1

FORMULAES ALTERNATIVAS

Envoltria (ou casca) convexa (Definio): Dado um conjunto X ,


define-se como envoltria convexa de X ( conv( X ) ) a interseo de todos
os conjuntos convexos que o contm. Ou seja, o menor conjunto convexo
que o contm.
n

Dado um conjunto discreto de p vetores, x , x ,..., x , a envoltria


convexa definida como o conjunto de todas as c.l.c. destes vetores.
1

Ex.: Comparao da envoltria convexa com as formulaes P1 e P2


x2

x2
P1

P1

P2

x1

conv(X)

P2

x1

FORMULAES ALTERNATIVAS

No exemplo anterior, note que os pontos extremos da envoltria convexa


so solues (inteiras) viveis.

Tal fato pode ser demonstrado vlido para qualquer PPI.

Logo, para encontrar a soluo tima, basta procurar entre os vrtices da


envoltria convexa Mtodo Simplex para PL (por exemplo).

Porm, determinar a envoltria convexa , em geral, to difcil quanto


resolver o PPI original.

Todavia, pode-se tentar obter uma formulao o mais prxima o possvel


dela. Em outras palavras uma formulao mais justa.

FORMULAES ALTERNATIVAS

No caso das formulaes alternativas P1 e P2 no trivial dizer de


antemo, pelo menos no caso geral, qual delas melhor.

Todavia, pode-se dizer que P1 melhor que P2 se P1 P2 .

Note ainda que, dada uma formulao P, o conjunto (discreto) de suas


solues X tal que X conv( X ) P .

Ex.: Problema No-Capacitado de Localizao de Facilidades

Considere duas formulaes alternativas mostradas a seguir.

A estratgia da demonstrao, consiste em mostrar que h solues em P1


que satisfazem P2, mas que o contrrio nem sempre verdade.

FORMULAES ALTERNATIVAS
Formulao P1:

Formulao P2:

min z f i yi cij xij

min z f i yi cij xij

iI

iI jJ

s.a.:

s.a.:

xij 1,

j J

xij 1,

j J

iI

iI

xij yi ,

i I , j J

0 xij 1,

i I , j J

yi [0,1],

i I

xij nyi ,

i I

jJ

0 xij 1,

i I , j J

yi [0,1],

i I

Note que o terceiro grupo de restries em P2 corresponde a uma soma de | J | = n


restries em P1. Logo, uma soluo de P1 tambm soluo de P2, ou seja, P1 P2 .

Porm a soluo xij = 1 possvel em P2 para yi = 0,5 e se n 2. Tal soluo,


entretanto, no pertence a P1. Logo, P1 P2 . Portanto, P1 uma formulao mais justa
para X.

CLASSIFICAO DAS TCNICAS DE


SOLUO DE PPIs

Mtodos exatos: garantem a convergncia para solues timas em um


nmero finito de passos, mas tm custo computacional mais elevado.

Algoritmos de branch-and-bound;

Algoritmos de planos cortantes;

Branch-and-prince, branch-and-cut, branch-and-cut-and-prince;

Decomposio de Benders, etc.

Mtodos heursticos: no garantem a convergncia para solues timas.


Procuram gerar boas solues com baixo custo computacional.

Heursticas especializadas;

Heursticas gulosas e busca local;

Metaheursticas: Algoritmos Genticos, Simulated Annealing, GRASP, Colnia


de Formigas, Enxame de Partculas, etc...

SOLUO DE PPIs
Relaxao

Relaxar um problema de Otimizao retirar uma ou mais de suas restries.

O conjunto de solues de uma relaxao contm ou igual ao conjunto de solues


do problema original.

Logo, a soluo do problema relaxado pelo menos to boa quanto a soluo do


problema original.

Exemplo: Vejamos o efeito relaxao de uma das restries de um PPL.


z > z

z > z
r2

r2

x2

x2
r3
Relaxao da restrio 3

x1

OBS: caso de
maximizao

r1

x1

SOLUO DE PPIs
Relaxao de Programao Linear

A Relaxao de Programao Linear (RPL) consiste na retirada das restries de


integralidade das variveis de um PPI.

O valor da RPL, zRPL, ento o valor da soluo do PPL resultante.

Logo, dado um PPI:

Se o RPL invivel PPI invivel (No se pode afirmar o inverso!).

Se o RPL vivel e possui timo finito e o PPI vivel z*RPL z*

Ou seja, o valor da soluo da relaxao um limite superior para o valor da


soluo do problema original (caso maximizao).

A concluso anterior uma das bases do mtodo de Branch-and-Bound


baseado em PL, que ser estudado a seguir.

SOLUO DE PPIs

Em geral, uma boa estratgia resolver um PPI, arredondando solues fracionrias


geradas por um mtodo para PL (ex.: Simplex)?

A resposta NO! Veja porque:


x2

Soluo tima da RPL:


x*1 1,95; x*2 4,92 e z* 5,1

max z x1 0.64 x2
s.a.:
50 x1 31x2 250
3x1 2 x2 4
x1 , x2

x1

SOLUO DE PPIs

Veja o que pode acontecer em uma tentativa de arredondar a soluo tima da RPL:
Ponto

x1

x2

F.O.

Viabilidade

3,56

Invivel

4,2

Invivel

4,56

Vivel

5,2

Invivel

Concluses:

No h garantia de que as solues sejam viveis;

No h garantia de que a melhor soluo seja tima (isto raramente ocorre).

O mtodo simplex, por exemplo, procura solues entre os vrtices do poliedro,


e a soluo inteira pode estar no interior.

Neste caso, em particular, a soluo tima x1* = 5; x2* = 0 e z* = 5,0. Um ponto


que no vrtice (apesar de se encontrar na periferia do poliedro).

Por fim, observe que a soluo inteira tima pior (neste caso, menor) que a
soluo tima da RPL, pois o problema inteiro mais restritivo.

MTODOS DE BRANCH-AND-BOUND:
Consideraes Preliminares

Adicionando restries a um problema, duas coisas podem acontecer:

CASO 1: O novo problema invivel.

CASO 2: O novo problema tem soluo tima de valor pior (menor, se


maximizao; e maior, se minimizao) que o problema original.

CASO 1: Duas possibilidades.


A.

Conjunto de restries lineares vazio.

B.

Conjunto de restries lineares no-vazio, mas no contm soluo inteira.

CASO 2: Piora do valor da soluo tima.

MTODOS DE BRANCH-AND-BOUND:
Consideraes Preliminares

CASO 1 - A: Conjunto de restries lineares vazio.

CASO 1 - B: Conjunto de restries lineares no-vazio, mas no contm


soluo inteira.
x2

x2

x1

x1

MTODOS DE BRANCH-AND-BOUND:
Consideraes Preliminares

CASO 2: Reduo do valor da soluo tima (caso de maximizao).

zRPL*
x2

x2

x1

zRPL*

x1

MTODOS DE BRANCH-AND-BOUND

So algoritmos de enumerao implcita.

Branch-and-Bound = Ramificar e Podar.

Pode-se dizer que sua estratgia central dividir para conquistar.

Em outras palavras: dividir (branch) o problema original em vrios subproblemas


mais fceis de resolver.

Entretanto: o nmero de subproblemas pode ser muito grande.

Logo: preciso algum mecanismo que evite a soluo de todos os


subproblemas, permitindo assim que alguns sejam podados (bound).

Este mecanismo deve ser capaz de provar que a soluo tima no


pertence ao conjunto de solues de um determinado subproblema, sem
ele tenha que ser resolvido.

MTODOS DE BRANCH-AND-BOUND

Isto permite o descarte (poda) deste subproblema.

Estes mecanismos estimam o melhor valor que uma soluo de um


determinado subproblema poderiam atingir (limite ou limitante).

Tipos de poda de um subproblema:

Por otimalidade: quando uma soluo inteira vivel encontrada num


subproblema.

Por limite: quando o limite pior que a melhor soluo inteira conhecida.

Por inviabilidade: quando o subproblema invivel.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR

Os algoritmos de branch-and-bound mais conhecidos e usados se


baseiam em Programao Linear.

Eles usam mtodos de soluo de PPLs (como o Mtodo Simplex) para


calcular os limites em cada subproblema.

Vejamos como ele funciona atravs de um exemplo:

max z 4 x1 x2
s.a.:
7 x1 2 x2 14
x2 3
2 x1 2 x2 3
x1 , x2

BB BASEADO EM PROGRAMAO
LINEAR

Comecemos resolvendo a RPL do problema original :

Soluo tima da RPL: x1 = 20/7 2,86; x2 = 3 e z = 59/7 8,43.

Esta soluo no vivel, pois x1 tem valor fracionrio.

Vamos tentar forar x1 a ter valores inteiros incluindo no problema original


duas restries: x1 2 e x1 3.

Tem-se assim dois novos subproblemas disjuntos (S1 e S2).

59/7
S
x1 2
OBS: At este ponto
no se tem uma soluo
inteira vivel. S um
limite superior.

S1

-
x1 3
S2

rvore de Branch-and-Bound

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR

Escolhamos um subproblema no examinado e o resolvamos como no n raiz da


rvore n S1;

Soluo tima da RPL: x1 = 2; x2 = ; e z = 15/2.

Novamente, no se tem uma soluo (inteira) vivel.

Logo necessrio, criar dois novos subproblemas a partir do n S1.

Estes subproblemas so obtidos com a insero das restries: x2 0 ( = 0) e


x2 1.
59/7

x1 2

x1 3

15/2

-
0 = x2
S3

S1

S2
x2 1
S4

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR

Agora h trs subproblemas no explorados (ns ativos) S2, S3 e S4.

Escolhamos arbitrariamente um deles para explorar S2.

Neste caso, a RPL neste n invivel z = -.

RPL invivel conjunto de restries vazio problema inteiro invivel.

Logo, o n S2 pode ser cortado da rvore devido inviabilidade.


59/7
S

x1 2

x1 3

15/2

-
0 = x2
S3

S1

S2
x2 1
S4

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR

Agora h dois subproblemas no explorados S3 e S4.

Escolhamos arbitrariamente um deles para explorar S4.

Soluo tima da RPL: x1 = 2; x2 = 1; e z = 7 Soluo (inteira) vivel.

Logo, o n S4 pode ser cortado da rvore, pois qualquer soluo em ns que


nasam dele tem valor pior (neste caso, menor) que o seu.
59/7
S

x1 2

x1 3

15/2

-
0 = x2
S3

S1

S2

N podado por inviabilidade.

x2 1
S4

7
7*

Melhor soluo corrente /


N podado por otimalidade.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR

Agora h apenas um n no explorados S3.

Soluo tima da RPL: x1 = 1,5 ; x2 = 0; e z = 6 Soluo fracionria de valor


pior do que a melhor soluo inteira (7).

Logo, o n S3 pode ser cortado da rvore, pois qualquer soluo inteira em


ns que nasam dele tem valor pior que o seu (< 6).

59/7
S

x1 2

x1 3

15/2

-
0 = x2

N podado por
limite

6
-

S3

S1

S2

N podado por inviabilidade.

x2 1
S4

7
7*

Melhor soluo corrente /


N podado por otimalidade.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR

Com no h mais ns no explorados, o algoritmo termina a execuo.

A rvore foi completamente enumerada e a soluo tima x*T = (2,1)


com valor z* = 7.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR
Busca em Largura e Busca em Profundidade

Na resoluo do exerccio anterior, ignorou-se a ordem em que os ns no


explorados foram escolhidos;

H basicamente duas formas de se fazer isso:

Busca em Profundidade;

Busca em Largura.

Qual das duas usar?

Resposta: Depende de cada problema em particular.

Ento como saber?

Resposta: Analisando a estrutura do problema para identificar semelhanas


com problemas para os quais h alguma informao sobre a estratgia mais
eficiente; realizando testes em com vrios casos do problema.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR
Busca em Profundidade

A idia descer o mais rpido possvel na rvore de busca, pois isto aumenta a
chance de que uma soluo vivel seja encontrada;

De posse de uma soluo vivel se pode podar da rvore os ns cujo limite pior
(menor, no caso de maximizao, e maior, no caso de minimizao) que o valor da
soluo corrente;

Alm disso, um n pai e seus descendentes imediatos diferem apenas por uma
restrio, o que torna fcil a resoluo computacional dos descendentes;

No exemplo anterior, se a busca em profundidade fosse aplicada a ordem de


explorao dos ns seria S1, S3 (ou) S4, S2.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR
Busca em Largura

A idia explorar primeiro os ns com melhor (maior, no caso de maximizao, e


menor, no caso de minimizao) limite;

Isto garante que um nunca se explorar um n com limite pior que a soluo tima,
o que pode acontecer na busca em profundidade;

Espera-se assim enumerar um menor nmero de ns;

No exemplo anterior, a seqncia na qual os ns foram explorados (S1, S2, S3 ou


S4) ilustra uma busca em largura.

BRANCH-AND-BOUND BASEADO EM
PROGRAMAO LINEAR
Busca em Profundidade x Busca em Largura: comentrio final

Na maioria das vezes uma combinao das duas estratgias adotada.

SOFTWARES PARA RESOLUO DE


PROBLEMAS DE OTIMIZAO DISCRETA

A maior parte dos softwares comerciais para otimizao discreta usa o


algoritmo de branch-and-bound;

Nestes sistemas as estratgias de busca so estabelecidas com base em


testes feitos sobre milhares de casos de diversos problemas;

Eles tambm associam ao mtodo a tcnicas capazes de melhor o


desempenho computacional;

Busca-se com estas sofisticaes:

Ramificar de forma inteligente;

Resolver os subproblemas lineares da forma mais rpida possvel.

SOFTWARES PARA RESOLUO DE


PROBLEMAS DE OTIMIZAO DISCRETA

A maior parte destes softwares oferece:

Um pr-processador que simplifica o modelo, eliminando variveis e restries


desnecessrias.

Vrias opes de pivoteamento para o mtodo simplex e algoritmos de pontos


interiores para programao linear.

Regras de prioridade entre variveis.

Escolha das regras para branch e escolha dos ns a serem explorados.

Alguns softwares tambm oferecem:

Heursticas para obteno de solues iniciais;

GUB/SOS branching;

Strong branching;

Reduced cost fixing.

Algoritmos para gerao de desigualdades vlidas.

APLICANDO O MTODO BB NO
PROBLEMA DA MOCHILA
Considere a seguinte formulao geral para o problema da mochila:
n

max z

p x
j

j 1

s.a.:
n

a x
j

j 1

x j {0,1},

j 1,..., n

Pode-se obter a soluo da RPL de uma forma bem simples. Considere a


seguinte proposio.

APLICANDO O MTODO BB NO
PROBLEMA DA MOCHILA
Proposio: Considere os itens dispostos em ordem no-crescente de custobenefcio, isto , pi1/ai1 pi2/ai2 ... pir/air ... pin/ain, tal que:
r 1

a x
j

j 1

Ento, a soluo tima da RPL ser, para r primeiras variveis do


ordenamento, xi1* = xi2* = ... = xi(r-1)* = 1, sendo xir* = (b - j=1,...,(r-1)aj)/ar, e as
demais nulas, ou seja, xi(r+1)* = xi(r+2)* = ... = xi(r-1)* = 0.
Prova: vide Arenales et al (2007).

BIBLIOGRAFIA

ARENALES, M. et al., Pesquisa Operacional para Cursos de Engenharia.


Rio de Janeiro: Elsevier, 2007.

GOLDBARG, M.C. e LUNA, H.P., Otimizao Combinatria e


Programao Linear, Rio de Janeiro: Elsevier, 2005.

TAHA, H.A., Pesquisa Operacional, 8. ed.. So Paulo: Pearson Prentice


Hall, 2008.

WOLSEY, L.A., Integer Programming. New York: John Wiley & Sons,
1998.