Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computao.
Rio de Janeiro
Fevereiro de 2012
ALGORITMOS PARA PROGRAMAO NO LINEAR INTEIRA MISTA
SISTEMAS E COMPUTAO.
Examinada por:
a
Prof . Marcia Helena Costa Fampa, D.Sc.
a
Prof . Fernanda Maria Pereira Raupp, D.Sc.
a
Prof . Laura Silvia Bahiense da Silva Leite, D.Sc.
FEVEREIRO DE 2012
Melo, Wendel Alexandre Xavier de
UFRJ/COPPE, 2012.
XI, 96 p. 29,7cm.
Orientadores: Marcia Helena Costa Fampa
iii
Agradecimentos
Agradeo a Deus por ter conseguido chegar at aqui. Se por um lado ao olhar para
frente ainda vejo meus objetivos a uma certa distncia, por outro, quando olho para
trs, me sinto incentivado a prosseguir com convico ao ver tudo o que j caminhei.
Agradeo s minhas avs, Lenir e Vanda pelo apoio na manuteno dos meus
duao. Agradeo tambm a toda minha familia que deposita muita esperana no
de curso do ensino mdio, professora Maria Amlia Costa, da minha saudosa Escola
das grandes responsveis, se no a mais responsvel, pela viso que tenho hoje da
cincia e do mundo acadmico. Este trabalho de mestrado feito nos dias de hoje
certamente teria pior qualidade se no fosse a sua orientao h quase dez anos
atrs. Juntamente com Maria Amlia, sou grato a toda a equipe de professores e
mar a vida de aluno at ento sem viso, sem personalidade e sem opinio prpria.
Se hoje sou o que sou, graas essa escola, com seus prossionais um tanto quanto
atrs de uma das minhas maiores decincias acadmicas, que a diculdade com
Teria sido bem mais difcil chegar at aqui se no fosse a abenoada ajuda de al-
(Escazi). Apesar de no ter mais o contato dirio com esse carinhas, tenho uma
iv
dvida de gratido eterna com eles, e sempre me lembrarei de seu gesto onde quer
que eu chegue.
mento de Cincia da Computao da UFRJ. Sua boa vontade e dedicao so, sem
dvida, os grandes pilares que hoje sustentam aquele departamento. Tia Deise foi
grato por ter tido essa oportunidade nica que tanto me fez crescer. Ainda hoje, Tia
Deise sempre quem me socorre quando preciso de alguma coisa relativa s aulas,
enorme.
No poderia deixar de agradecer a minha amiga Clarissa Christiano, que tem sido
uma companhia de valor inestimvel nesses ltimos anos, mais que uma verdadeira
em mim!
de Aviao de Moscou) por nos oferecer o solver livre GLPK. Tomo o trabalho de
Andrew como uma referncia para mim, que tenciono tambm manter um solver
aberto. Nesse mesmo contexto, agradeo tambm a Andreas Wchter (IBM) pelo
tambm rduo trabalho em desenvolver o solver livre Ipopt. Softwares como es-
meio de seu uso. Agradeo tambm a Peter Spellucci por disponibilizar uma cpia
com usurios estudantes como eu, tambm forneceu uma licena acadmica de seu
solver.
Finalmente, agradeo aos professores Nelson Maculan e Laura Bahiense pela
v
Resumo da Dissertao apresentada COPPE/UFRJ como parte dos requisitos
Fevereiro/2012
dos e heursticas. Propomos ainda duas novas abordagens para PNLIM: uma aplica-
PNLIM, o solver Muriqui, que tem por misso agregar todo o contedo gerado por
vi
Abstract of Dissertation presented to COPPE/UFRJ as a partial fulllment of the
February/2012
In this work, we discuss the current main algorithms for solving convex Mixed
propose further two new approaches for MINLP: a application of local branching
algorithm, originally proposed to linear case, and a new hybrid algorithm that mixes
has like last objective the presentation of a new open computational package for
MINLP, called Muriqui solver, which has the mission of aggregating all contents
vii
Sumrio
Lista de Tabelas x
1 Introduo 1
3 Algoritmos de Branch-and-Bound 18
3.1 Branch-and-Bound padro . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Algoritmos Hbridos 33
4.1 Algoritmo de branch-and-bound PL/PNL . . . . . . . . . . . . . . . 35
5 Heursticas 44
5.1 Heurstica de mergulho ( diving ) . . . . . . . . . . . . . . . . . . . . . 45
viii
6.1.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8 Concluses 84
Referncias Bibliogrcas 86
A Instncias de teste 92
B Cdigos de retorno 96
ix
Lista de Tabelas
x
6.1 Resultados computacionais de aproximao externa, branch-and-bound e
particionamento local (continuao da pgina anterior ). . . . . . . . . . . 64
xi
Captulo 1
Introduo
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0 (1.1)
x X, y Y Zny
(1.1) seja dito convexo [1], embora a presena da varivel inteira y torne (1.1) no
PNLIM tem sido objeto de extensa pesquisa por parte da comunidade acadmica
nos ltimos anos (para um apanhado geral, o leitor interessado pode consultar [2, 3])
como, por exemplo, cadeias de suprimentos [4], sntese de processos qumicos [5],
[5, 814]. De modo geral, estes algoritmos tm como critrio de parada uma tolern-
cia mxima para a diferena entre os limites primais (superiores) e duais (inferiores)
viveis, ao passo que limites duais advm de limites inferiores para o valor da funo
1
a partir da resoluo de algum tipo de relaxao do problema. Neste trabalho,
seguintes categorias:
Algoritmos hbridos.
ximaes lineares visam atirar proveito de todo o avano obtido na rea de PLIM nas
ltimas dcadas atravs do uso de poderosos softwares como GUROBI [15], CPLEX
[16] e XPRESS [17]. Dada a convexidade, estes problemas PLIM funcionam como
importante mencionar que, a parte desses trs tipos de algoritmos, um novo ca-
minho tem sido pesquisado para a abordagem de problemas de PNLIM nos ltimos
de restries devem ser satisfeitos ou no. Este tipo de abordagem de PNLIM por
PNLIM convexa mais populares. Buscamos, dessa forma, ajudar a preencher uma
lacuna presente na literatura cientca por estudos que comparem as diversas abor-
mentaes prprias das abordagens consideradas, que foram feitas sobre a mesma
mento local ( local branching ), originalmente proposto para PLIM em [22], de forma
integrada com o algoritmo de aproximao linear denominado aproximao externa
2
( outer approximation ) [5]. Por ltimo, e no menos importante, este trabalho tem
oferecendo uma nova ferramenta computacional que poder contribuir para o tra-
de PNLIM para os aspectos do novo pacote computacional gerado por este estudo.
3
Captulo 2
Algoritmos de Aproximao Linear
problema:
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0 (2.1)
x X, y Y Zny
onde X e Y Rnx e Rny , respectivamente, e Y
so subconjuntos polidricos de
m
limitado. As funes f : X Y R e g : X Y R so convexas e duplamente
tal neste tipo de metodologia: graas ela, o problema mestre se constitui em uma
relaxao do problema de PNLIM original, o que gera limites inferiores vlidos para
GUROBI [15], CPLEX [16] ou XPRESS [17], eles se valem diretamente de toda
4
nos casos onde o conjunto T possui um nico ponto de linearizao, os problemas
mestres gerados oferecem limites inferiores mais fortes que a relaxao contnua de
casos, mesmo para os softwares mais avanados disponveis. Esta caracterstica des-
favorvel pode se tornar bastante crtica quando for necessrio um nmero elevado
(P ) minimizar,x,y
sujeito a: f (x, y)
(2.2)
g(x, y) 0
x X, y Y Zny
5
Note que o ponto (
x, y) no necessariamente satisfaz as desigualdades de P ou mesmo
em sua soluo tima fornece um limite inferior para P . Tomando a soluo tima
de (2.5) como (
, x, y), temos ainda que se
= f (
x, y) e (
x, y) for vivel para o
problema de PNLIM original P , esta soluo tambm ser tima para este problema,
pois temos um limite superior igual a um limite inferior. Note ainda que, dada
Conforme a Figura 2.1 sugere, a medida que novos pontos de linearizao so adi-
blema (2.2), pois a regio vivel de (2.2) est contida na regio vivel do problema
longo de suas iteraes de modo a fortalecer a relaxao dada pelo problema mestre
e a cortar a soluo tima do ltimo problema mestre resolvido, caso essa soluo
Figura 2.1: Linearizao de uma funo convexa em um (i), dois (ii) e trs (iii)
pontos.
6
iterao, o algoritmo AE resolve o problema mestre (2.5) construdo a partir do
xX
(
x, y) uma soluo vivel para P , e, consequentemente, o valor f (
x, y) um limite
superior vlido para esse problema. Nesse caso, o ponto ( x, y) adicionado a T . Se
o problema Py for invivel, o algoritmo resolve o seguinte problema de viabilidade
Pm
(PyV ) minimizaru,x ui
i=1
sujeito a: g(x, y) u
(2.7)
u 0,
x X, u Rm
Seja (
u, x) uma soluo tima de PyV no contexto descrito. Ento, o ponto (x, y)
adicionado ao conjunto T. Aps a atualizao de T, com a incluso de (
x, y) se o
problema Py for vivel, ou com a incluso de (
x, y) caso contrrio, o algoritmo inicia
uma nova iterao, tendo como critrio de parada uma tolerncia mxima para a
for soluo vivel para P. Caso essa soluo tima do problema mestre seja vivel
no tima para P, ela deixar de ser soluo tima do problema mestre com a
nova linearizao da funo objetivo f. Assim, foi demonstrado que essa estratgia
garante que uma determinada soluo yk para a varivel inteira no seja visitada
mais que uma vez pelo algoritmo, exceto se a mesma for soluo tima de P (nesse
caso a soluo poderia ser visitada no mximo duas vezes). Como o nmero de
Note que, uma vez que a cada iterao um novo ponto includo em T , a resoluo
dos problemas mestre ao longo das iteraes fornece uma sequncia no decrescente
7
Entrada: P : Problema de PNLIM (2.1) abordado, T0 : conjunto inicial de pontos de
linearizao (possivelmente vazio), : tolerncia de convergncia
Sada: (x , y ): soluo tima de P (se existir)
1 z U = + ;
2 z L = ;
3 Seja (x0 , y 0 ) uma soluo tima de P (relaxao contnua de P ) ;
4 T = T0 {(x0 , y 0 )} ;
5 k=1;
6 Seja P AE (T ) o problema mestre (2.5) construdo a partir de P sobre os pontos em T ;
7 Seja Py o problema PNL (2.6) obtido ao xar a varivel y de P em y ;
8 Seja PyV o problema PNL de viabilidade (2.7) obtido a partir de Py ;
9 enquanto z U z L > e P AE (T ) vivel faa
10 Seja ( , y) uma soluo tima de P AE (T ) ;
, x
11 zL = ;
12 y = y ;
k
13 se Py vivel ento
14 Seja xk uma soluo tima de Py ;
15 se f (xk , y k ) < z U ento
16 z U = f (xk , y k ) ;
17 (x , y ) = (xk , y k ) ;
18 seno
19 Seja xk uma soluo tima de PyV ;
20 T = T (xk , y k ) ;
21 k =k+1 ;
seguinte corte binrio no problema mestre quando (Py) for invivel [5]:
X X
yj yj |B k | 1 (2.8)
jB k jN k
onde B k = {j| yjk = 1}, N k = {j| yjk = 0} e yk a parte inteira (binria) da soluo
do problema mestre. Note que cada restrio (2.8) adicionada corta apenas a soluo
inteira yk sobre a qual foi construda. De fato, pode-se tambm adicionar este corte
mesmo quando (Py) for vivel. Entretanto, ao incluir este corte no problema mestre
quando existem solues viveis para o problema de PNLIM tendo valor yk para
parte inteira, o problema mestre deixa de ser, a rigor, uma relaxao (e tambm
8
2.2 Algoritmo de Decomposio de Benders Gene-
ralizada
Proposto por Georion no ano de 1972 em [8] como uma generalizao do mtodo
decomposio de Benders, esta verso generalizada tem como losoa chave a ideia
feita com uma soluo tima de Py, se este for vivel, ou a partir da soluo tima
KV e KI :
y f (xk , y k )T (y y k ) + f (xk , y k )
(2.11)
+(k )T (y g(xk , y k )T (y y k ) + g(xk , y k ))
9
sio generalizada de Benders como:
(P DBG ) minimizar,y
sujeito a: y f (xk , y k )T (y y k ) + f (xk , y k )
+(k )T (y g(xk , y k )T (y y k ) + g(xk , y k )), k KV
0 (k )T (y g(xk , y k )T (y y k ) + g(xk , y k )), k KI
y Y Zny
(2.13)
algoritmo uma vez que o nmero de solues inteiras nito. Note que o nmero
10
mestre do algoritmo de Aproximao Externa, o que tende a tornar sua resoluo um
pouco mais rpida. Entretanto, podemos encontrar em [5] uma demonstrao de que
fazer com que este ltimo mtodo precise de mais iteraes para convergir. Por
este. Por ltimo, observamos que o Algoritmo 2.2 pode ser adaptado para tambm
receber como entrada um possvel conjunto inicial de pontos a ser utilizado para as
lund e Pettersson em [12] como uma extenso do mtodo de plano de corte de Kelley
para PNL convexa [27]. Este algoritmo tem como peculiaridade a resoluo apenas
relevante, uma vez que, em alguns casos, resolver problemas PNL pode ser bastante
uma diculdade notvel em alguns casos para a obteno da soluo desejada com
preciso considervel. Por essa razo, em muitos casos, algoritmos desse tipo so
os problemas PNL contnuos Py e PyV e, por isso, o conjunto de pontos sobre as quais
minimizarx,y cT x + d T y
sujeito a: g(x, y) 0 (2.14)
x X, y Y Zny
Note que ao se trabalhar com uma funo objetivo linear, no h perda de
11
generalidade em relao ao problema P, pois conforme feito na formulao de (2.2),
possvel acrescentar uma nova varivel contnua e uma nova restrio ao problema
(2.1) para se obter uma funo objetivo desse tipo. Assim, o problema mestre
minimizarx,y cT x + dT y !
x xk
sujeito a: g(xk , y k )T + g(xk , y k ) 0, (xk , y k ) T (2.15)
y yk
x X, y Y Zny
Ressaltamos novamente que, nos respectivos pontos sobre os quais foram cons-
tivas funes originais, isto , dada uma funo h(x) e sua aproximao linear
h(x) = h( T
x) (x x) + h(
x), temos que h( x). Desse modo, ao lineari-
x) = h(
zarmos as restries g(x, y) 0 sobre um ponto (
x, y) invivel, estamos cortando
(
x, y) do problema mestre. Assim, a ideia do algoritmo PCE , resolver o problema
se novamente o problema mestre (2.15), at se obter uma soluo tima para (2.15)
que seja vivel para (2.14) segundo a tolerncia adotada. Note que essa soluo tam-
bm ser tima para o problema de PNLIM (2.14), visto que as funes objetivo so
[12] com novas linearizaes apenas sobre a restrio mais violada em cada soluo
obtida. Isto levanta uma discusso oportuna, pois ao se linearizar todas as restries
de (2.14) fortalecemos a relaxao dada pelo problema mestre, o que pode levar
ainda que, nesse algoritmo, no existe a garantia de que um determinado valor para
sobre a prpria soluo do seu problema mestre, conforme faz o algoritmo PCE.
12
2.4 Resultados computacionais
A seguir, apresentamos resultados computacionais gerados pela aplicao de uma
Ubuntu Linux 10.04.2 LTS cuja verso do kernel 2.6.32-31-generic. Para a resolu-
o dos problemas PLIM, foi utilizado o pacote Gurobi 4.6.1 [15] e para a resoluo
dos problemas PNL, foi utilizado o pacote Ipopt 3.10 [29]. Quando o pacote PNL
vivel. Os algoritmos foram congurados para rodar em modo thread nica, isto ,
mximo de iteraes foi ajustado em 100 para AE e em 10000 para PCE. Em ambos
temos a numerao das instncias, seguido de seu respectivo nome e das colunas re-
ferentes aos resultados de cada algoritmo. Para cada algoritmo, temos o cdigo de
retorno oferecido pela sua aplicao (Cod), o valor da funo objetivo na soluo
retorno gerado pelo mesmo zero (sucesso). Caso contrrio, um cdigo de erro
diferente de zero gerado. Nestes casos, a coluna Soluo traz o valor da soluo
(funo objetivo) na melhor soluo vivel encontrada ou - quando nenhuma solu-
o vivel foi obtida nas condies dadas. Os cdigos de erro mais comuns so -107
O Apndice B traz uma tabela com todos os cdigos de retorno utilizados neste
trabalho. Eventuais diferenas nas colunas Soluo quando ambos os algoritmos ob-
computacionais utilizados.
13
Tabela 2.1: Resultados computacionais de aproximao externa
e plano de corte estendido.
14
Tabela 2.1: Resultados computacionais de aproximao externa
e plano de corte estendido (continuao da pgina anterior ).
15
Tabela 2.1: Resultados computacionais de aproximao externa
e plano de corte estendido (continuao da pgina anterior ).
tima de 133 dos 152 problemas teste (87,5%), enquanto PCE apenas atestou a
soluo tima de 55 (36,2%). AE pde encontrar ao menos uma soluo vivel para
146 problemas (96,1%), ao passo que PCE s o fez para 61 (40,1%). Denimos
uma mtrica de avaliao de efetividade sobre uma instncia de teste P a partir dos
16
seguintes critrios:
mais efetiva;
Utilizando os critrios mencionados, podemos dizer que AE foi mais efetivo que PCE
em 133 instncias (87,5%), ao passo que PCE foi melhor em 11 (7,2%) instncias.
Podemos notar ainda que, em geral, essas 11 instncias de teste onde PCE foi mais
efetivo so, em geral, pequenas, sendo a maior delas a instncia CLay0305H que
lineares e 400 restries lineares. Deve-se mencionar ainda que AE tambm foi
algoritmo.
bre o conjunto de instncias de teste. Uma vez que a principal diferena entre os
sultados sugerem fortemente que esse esforo a mais em resolver problemas PNL a
mais fceis de serem resolvidos em AE, o que favorece este ltimo algoritmo. Por
outro lado, esse grau baixo de no-linearidade tende a fazer com que o problema
17
Captulo 3
Algoritmos de Branch-and-Bound
programao inteira nos dias atuais. Os bons resultados obtidos na rea de Pro-
gramao Linear Inteira Mista (PLIM) faz com que seja natural a aplicao dos
rea de atuao traz novos desaos para a construo de uma abordagem eciente
desse tipo, uma vez que algumas estratgias adotadas com xito em BB para PLIM
desempenho.
(PNLIM) abordado:
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0 (3.1)
x X, y Y Zny
de P.
O algoritmo BB resolve sucessivas relaxaes contnuas de subproblemas de (3.1).
x X, y Y Zny
18
onde Y um subconjunto polidrico de Y. O subconjunto Y originado do partici-
des no contexto de PNLIM. Aproveitamos essa seo para discutir alguns aspectos
sobre algoritmos de Branch and Cut para essa rea. A Seo 3.2 apresenta a rami-
na Seo 3.3.
Land e Doig apresentaram em [30] o que parece ser o primeiro algoritmo BB para
tado como Algoritmo 3.1. Note que neste algoritmo bsico, uma rvore de busca
superior corrente e (xk , y k ) uma soluo tima de PY k , caso este seja vivel. Temos
2. f (xk , y k ) z U : neste caso, uma vez que o valor f (xk , y k ) um limite inferior
3. f (xk , y k ) < z U e y k inteira : neste caso, temos uma soluo vivel melhor
19
4. f (xk , y k ) < z U e y k no inteira : neste caso, precisamos avaliar os subpro-
blemas de PY k , pois existe a possibilidade de algum deles nos fornecer uma
soluo vivel que melhore o limite superior. Escolhemos uma varivel yj para
blemas.
26 seno
27 N = N \{k} ; // Poda por limite
com PLIM. Diversas razes contribuem para isso. Uma delas, que a carga com-
PLIM pode-se obter um considervel ganho de ecincia por meio de uso de tcnicas
de incio promissor ( hot start ), onde aproveita-se a base tima do subproblema pai
como base inicial na resoluo dos respectivos lhos via mtodo dual simplex. No
20
contexto de PNLIM, no possvel usar tcnicas de incio promissor to ecien-
tes. Para piorar a situao, pode ser bastante difcil atestar a inviabilidade de um
bm perde a sua conabilidade, pois podem ocorrer podas indevidas se uma falsa
do caso PLIM. E temos ainda o fato de que o pacote PNL pode falhar em convergir
inteiras, a nica opo seria declarar incapacidade de encontrar uma soluo tima.
vez que exige o clculo de limites inferior e superior para cada ramicao possvel a
simultnea sobre mais de uma varivel. Em PLIM, a principal motivao para ra-
n pai na resoluo do n lho via mtodo dual simplex. Uma vez que em PNLIM
perde-se o benefcio do incio promissor efetivo, pode-se ento ramicar sobre sobre
um conjunto (no vazio) de variveis que tenham adquirido valor fracionrio na solu-
de problemas PNL e aumentaria a ecincia, conforme pode ser vericado nas Figu-
ras 3.1 e 3.2. Ambas as guras referem-se a uma rvore de enumerao de solues
inteiras para um problema com apenas duas variveis inteiras binrias. Na Figura
3.1 temos o esquema padro com ramicao sobre uma nica varivel, enquanto na
Figura 3.2 temos o esquema com ramicao sobre duas variveis simultaneamente
21
a cada n (ramicao dupla). Note que dois ns a menos foram gerados no segundo
nmero de variveis tomadas para cada ramicao, temos que a cada processo deste
do consumo de memria, uma vez que o nmero de novos ns a cada iterao uma
otimalidade.
Figura 3.1: Arvore de enumerao padro (com ramicao sobre uma nica varivel
em cada n) para duas variveis inteiras binrias.
Figura 3.2: Arvore de enumerao com ramicao sobre duas variveis em cada n
para duas variveis inteiras binrias.
blemas nessa rea. Seria natural a aplicao deste tipo de abordagem a PNLIM,
22
apenas na fronteira da regio vivel (para o caso onde a funo objetivo no cons-
rao desses pontos discretos. Para contornar essa diculdade, Stubbs e Mehrotra
minimizarx,y cT x + d T y
sujeito a: g(x, y) 0 (3.3)
x X, y Y Bny
problema P pode ser levado a este atravs da introduo de uma varivel auxiliar
preciso resolver um novo problema PNL, cujo esforo necessrio para resoluo
linha de atuao, pelo menos segundo nosso humilde conhecimento, indicam que a
subproblema em prol de se obter uma rvore menor. Como veremos na Seo 3.2,
trabalhos mais recentes sobre BB para PNLIM tem caminhado em direo contrria
23
consiste em ramicar o n corrente antes de resolver seu respectivo problema PNL
detectado que alguma varivel inteira est convergindo para uma soluo tima com
precoce foi feita, apenas com a mudana de limite para uma das variveis imposta
pela nova ramicao e com o novo valor inicial para a mesma. Note que dessa
por solues inteiras na rvore BB, o que faz com que menos esforo seja empregado
O mtodo empregado por Borchers e Mitchell adota como algoritmo PNL o al-
como, por exemplo [33]) que um algoritmo iterativo que resolve uma srie de
aplica-se uma iterao PQS de cada vez at que a ramicao precoce possa ser
Para detectar se, aps a aplicao de uma ou mais iteraes PQS, uma rami-
heurstica:
2. O valor de alguma varivel inteira yi est entre 0,001 e 0,999, com a diferena
entre o valor atual de yi e o valor anterior menor que uma pequena tolerncia
inteiro.
ria soluo tima inteira para sua relaxao contnua (o que provocaria a sua poda
por otimalidade) pode fazer com que o algoritmo decida fazer a ramicao precoce
e continue expandindo rvore a partir desse n. Apesar de indesejado, note este fato
Leyer utiliza duas heursticas para decidir sobre a ramicao precoce. A primeira
24
de utilizar o critrio da primeira, toma tambm o critrio p > 1,5 e ||dk || < ,
ln(||dk || )
onde p= ln(||dk1 || )
a ordem de convergncia experimental do algoritmo PQS, e
partir de observaes por parte dos autores de que uma regra que levasse em conta
demos garantir que a soluo obtida em cada n fornecer um limite inferior para
ritmo BB uma vez que a poda por limite se torna inaplicvel. Para remediar essa
situao, Leyer considera em [10] uma restrio de corte de nvel objetivo nos
f (x, y) z U c (3.4)
Note que a incorporao de (3.4) ao problema de PNLIM abordado faz com que
podas que antes ocorreriam por limite passem a ocorrer por inviabilidade. De qual-
quer modo, ainda que a restrio (3.4) seja considerada, ainda existe nesse contexto
explorao por melhor limite, que escolhe o prximo n a ser explorado pelo limite
inferior mais alto (consulte [32] para mais detalhes), que utilizada com sucesso em
tes computacionais PQS livres disponveis, e mesmo alguns pacotes comerciais que
que torna a computao desse frequente tipo de problema mais lenta), inecincia
inviabilidade. Leyer utilizou em [10] como pacote PQS, o solver comercial Fil-
terSQP, que, infelizmente, no nos foi disponibilizado, mesmo sob requisio para
25
Entrada: P : Problema de PNLIM (3.1) abordado, c : tolerncia de otimalidade, :
tolerncia para integralidade na ramicao precoce
Sada: (x , y ): soluo tima de P (se existir)
1 z U = + ;
2 Seja P c o problema obtido de P com o acrscimo da restrio (3.4) sobre z U ;
3 Seja PYc k a relaxao contnua de PYc k ;
4 Y0 =Y ;
5 Seja N = {0} a lista inicial de ns em aberto;
6 i = 0;
7 Escolha uma soluo (x0 , y 0 ) para iniciar o algoritmo PQS em PYc 0 ;
8 enquanto N 6= faa
9 Selecione um n k de N ;
10 repita
11 Execute uma iterao de PQS sobre o problema PYc k partindo da soluo (xk , y k )
para obter a direo (dkx , dky ) ;
12 se o problema quadrtico resolvido for invivel ento
13 N = N \{k} ; // Poda por inviabilidade
14 V para a linha 8 ;
15 (xk , y k ) = (xk , y k ) + (dkx , dky ) ;
16 se a soluo (xk , y k ) tima para PY k ento
17 se y k inteira ento
18 (x , y ) = (xk , y k ) ; z U = f (xk , y k ) ;
19 N = N \{k} ; // Poda por otimalidade
20 seno
// Ramificao padro
21 Selecione uma varivel yj com valor yjk no inteiro ;
22 Y i+1 = Y k {y Rny : yj byj c} ;
23 Y i+2 = Y k {y Rny : yj dyj e} ;
24 N = N {i + 1, i + 2}\{k} ;
25 (xi+1 , y i+1 ) = (xi+2 , y i+2 ) = (xk , y k ) ; yji+1 = byj c ; yji+2 = dyj e ;
26 i=i+2 ;
27 V para a linha 8 ;
28 Seja a maior distncia de integralidade dentre as variveis inteiras ;
29 se > ento
// Ramificao precoce
30 Selecione uma varivel yj com valor no inteiro ;
31 Y i+1 = Y k {y Rny : yj byj c} ;
32 Y i+2 = Y k {y Rny : yj dyj e} ;
33 N = N {i + 1, i + 2}\{k} ;
34 (xi+1 , y i+1 ) = (xi+2 , y i+2 ) = (xk , y k ) ; yji+1 = byj c ; yji+2 = dyj e ;
35 i=i+2 ;
36 V para a linha 8 ;
37 at critrio de parada do pacote PQS ser alcanado ;
26
uso acadmico.
PNL de Plano de Corte Sequencial (PCS), proposto pelos mesmos autores em [34].
algoritmo no nosso contexto de BB para PNLIM consiste no fato de que, uma vez
aproximativo para o PNL ser uma relaxao deste, e, sua resoluo fornecer um
limite inferior vlido para este PNL, e por consequncia, para o subproblema de
PNLIM abordado em cada n. Dessa forma, ainda que seja aplicada apenas uma
mite inferior vlido para o mesmo, e, assim, possvel utilizar a poda por limite e
a estratgia de explorao por melhor limite de modo natural, conforme pode ser
fato dessa relaxao linear usada por PCS fornecer limites inferiores fracos de modo
geral, e, alm disso, como um tpico algoritmo de plano de corte, o algoritmo PCS
alguns casos, uma alta tolerncia de viabilidade para encontrar uma soluo tima
que esta abordagem tambm pudesse ter resultados considerados aqui. Desse modo,
27
Tabela 3.1: Resultados computacionais de aproximao externa
e branch-and-bound.
Inst. AE BB padro BB (ramif. dupla)
Cod Soluo Tempo Cod Soluo Tempo Cod Soluo Tempo
1 0 769.440,40 4,40 0 769.440,40 47,10 0 769.440,40 56,70
2 0 1.241.125,47 3,64 0 1.241.125,47 108,94 0 1.241.125,47 77,86
3 0 1.543.472,33 8,68 0 1.543.472,33 420,99 0 1.543.472,33 335,99
4 0 2.295.348,74 118,74 0 2.295.348,73 712,56 0 2.295.348,73 626,49
5 -108 - 26,31 0 41.573,30 2,80 0 41.573,30 2,59
6 0 41.573,26 0,50 0 41.573,26 3,11 0 41.573,26 2,08
7 0 6.545,00 1,25 0 6.545,00 33,55 0 6.545,00 20,35
8 0 6.545,00 0,32 0 6.545,00 18,13 0 6.545,00 14,75
9 0 8.092,50 44,77 0 8.092,50 616,41 0 8.092,50 557,29
10 0 8.092,50 11,25 0 8.092,50 294,58 0 8.092,50 270,57
11 -108 28.351,45 21,24 0 26.669,13 3,39 0 26.669,13 3,22
12 0 26.669,11 0,65 0 26.669,11 4,34 0 26.669,11 3,16
13 -108 58.760,94 40,71 0 40.262,42 371,17 0 40.262,42 123,81
14 0 40.262,39 5,07 0 40.262,39 60,17 0 40.262,39 46,89
15 -108 - 322,87 0 8.092,50 612,54 -112 - 0,32
16 0 8.092,50 12,75 0 8.092,50 211,24 0 8.092,50 266,39
17 0 37,95 0,04 0 37,95 0,05 0 37,95 0,05
18 0 37,95 0,03 0 37,95 0,04 0 37,95 0,04
19 0 48,99 0,43 0 48,99 0,55 0 48,99 0,50
20 0 48,99 0,14 0 48,99 0,47 0 48,99 0,42
21 0 54,41 23,45 0 54,41 23,64 0 54,41 22,92
22 0 54,41 7,03 0 54,41 14,56 0 54,41 17,39
23 0 64,50 2.088,42 0 64,50 928,98 0 64,50 1.151,29
24 0 64,50 388,32 0 64,50 724,45 0 64,50 839,66
25 -107 66,93 18.661,90 -107 66,93 14.400,56 -107 66,93 14.400,41
26 -107 66,93 16.494,97 -107 66,93 14.400,38 -107 66,93 14.400,70
27 0 17,75 51,19 -107 17,75 14.400,27 -107 25,28 14.400,37
28 0 20,73 168,07 -107 32,38 14.400,28 -107 27,66 14.400,59
29 0 22,38 559,89 -107 32,38 14.400,36 -107 35,21 14.400,56
30 0 23,46 17.045,35 -107 - 14.400,01 -107 - 14.400,01
31 0 116,95 5.647,73 -107 135,06 14.400,29 -107 145,61 14.400,61
32 0 131,65 12.250,10 -107 143,20 14.400,37 -107 140,41 14.401,39
33 0 -7.174,22 22,45 -107 -7.128,22 14.400,93 -107 -6.390,50 14.401,50
34 0 -1.296,12 1,04 -107 -1.286,24 14.400,41 -107 -1.286,24 14.400,33
35 0 -2.238,40 1,15 0 -2.238,40 7,60 0 -2.238,39 7,21
36 0 -2.238,40 85,24 -107 -2.238,40 14.400,18 -107 -2.238,40 14.400,67
37 0 -3.068,93 0,94 0 -3.068,93 15,02 0 -3.068,93 18,38
38 0 -3.068,93 60,34 -107 -2.973,08 14.400,51 -107 -2.900,38 14.401,22
39 0 -7.174,22 1,40 0 -7.174,22 9,61 0 -7.174,22 10,25
40 0 -7.174,22 22,43 -107 -7.128,22 14.400,48 -107 -6.390,50 14.400,52
41 0 -6.581,93 233,08 -107 -5.914,69 14.400,33 -107 -5.665,58 14.400,28
42 0 -1.721,45 0,87 -107 -1.714,81 14.400,43 -107 -1.711,57 14.400,87
43 0 -1.741,39 1,11 0 -1.741,39 24,56 0 -1.741,38 12,94
44 0 -1.741,39 53,38 -107 -1.705,63 14.400,34 -107 -1.726,52 14.400,24
45 0 -2.722,45 2,12 0 -2.722,45 73,12 0 -2.722,45 86,53
46 0 -2.722,45 319,58 -107 -2.524,15 14.400,24 -107 -2.485,10 14.400,19
47 0 -6.581,94 1,72 0 -6.581,94 14,00 0 -6.581,94 19,16
48 0 -6.581,93 232,26 -107 -5.914,69 14.400,40 -107 -5.665,58 14.401,31
49 0 -3.410,85 729,34 -107 -2.193,14 14.400,54 -107 -2.834,31 14.402,57
50 0 -1.269,93 0,43 -107 -1.266,91 14.400,33 -107 -1.181,21 14.401,59
51 0 -1.774,40 0,76 0 -1.774,40 8,40 0 -1.774,40 6,90
52 0 -1.774,40 26,44 -107 -1.506,81 14.400,34 -107 -1.662,82 14.400,23
53 0 -2.827,93 2,80 0 -2.827,93 66,55 0 -2.827,93 63,52
Continua na prxima pgina
28
Tabela 3.1: Resultados computacionais de aproximao externa
e branch-and-bound (continuao da pgina anterior ).
29
Tabela 3.1: Resultados computacionais de aproximao externa
e branch-and-bound (continuao da pgina anterior ).
30
Ubuntu Linux 10.04.2 LTS cuja verso do kernel 2.6.32-31-generic. Para a resolu-
o dos problemas PLIM, foi utilizado o pacote Gurobi 4.6.1 [15] e para a resoluo
dos problemas PNL, foi utilizado o pacote Ipopt 3.10 [29]. Quando o pacote PNL
vivel. Os algoritmos foram congurados para rodar em modo thread nica, isto ,
das geradas sobre linearizaes das funes no lineares. Esta rotina, chamada
bela, temos a numerao das linhas, seguida das colunas referentes aos resultados de
cada algoritmo. Para cada algoritmo, temos o cdigo de retorno oferecido pela sua
capaz de convergir para uma soluo tima, o cdigo de retorno gerado pelo mesmo
zero (sucesso). Caso contrrio, um cdigo de erro diferente de zero gerado. Nestes
31
casos, a coluna Soluo traz o valor da soluo (funo objetivo) na melhor soluo
vivel encontrada ou - quando nenhuma soluo vivel foi obtida nas condies
dadas. Os cdigos de erro mais comuns so -107 (tempo mximo de execuo al-
com todos os cdigos de retorno utilizados neste trabalho. Eventuais diferenas nas
tima de 133 dos 152 problemas teste (87,5%), enquanto BB apenas atestou a so-
dupla. AE pde fornecer ao menos uma soluo vivel para 146 instncias (96,1%),
enquanto que para BB, esse nmero foi de 150 instncias (98,7%) na verso padro
padro foi mais efetiva que a com ramicao dupla em 65 problemas (42,8%),
enquanto a verso com ramicao dupla foi mais efetiva em 63 (41,4%). Estes
resultados indicam que ramicar sobre mais de uma varivel pode ser de fato mais
for insuciente, razo pela qual no pudemos testar a ramicao sobre trs vari-
mostrado que a ramicao sobre trs variveis pode trazer, em diversos casos, re-
maioria dos casos onde o tempo limite de execuo foi alcanado, a verso padro
(com ramicao sobre uma nica varivel) encontrou soluo vivel melhor.
Em comparao com aproximao externa, podemos dizer que AE foi mais efetivo
em 130 problemas (85,5%), ao passo que BB padro foi mais efetivo em 12 (7,8%).
(88,8%), enquanto esta verso de BB foi mais efetiva em 11 (7,2%). Podemos notar
que desses 12 problemas onde BB padro foi mais efetivo, 11 foram em casos onde
apenas em 4 este algoritmo foi mais efetivo que BB padro. Estes ltimos resultados
indicam que BB pode ter um desempenho mais satisfatrio nos casos em que AE
lineares, o que pode estar favorecendo o algoritmo AE, j que o mesmo aproxima os
32
Captulo 4
Algoritmos Hbridos
teira Mista (PNLIM), isto , algoritmos para PNLIM que misturam os conceitos de
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0 (4.1)
x X, y Y Zny
de P.
Nesse captulo, trabalharemos com problemas denidos a partir de P apresenta-
dos nos captulos anteriores. Iniciamos com o subproblema de PNLIM cuja relaxao
x X, y Y Zny
33
relaxao contnua por PY . Seguimos com o problema mestre utilizado em AE:
(P AE (T )) min,x,y !
x xk
sujeito a: f (xk , y k )T + f (xk , y k ) , (xk , y k ) T
y yk
!
x xk
g(xk , y k )T + g(xk , y k ) 0, (xk , y k ) T
y yk
x X, y Y Zny
(4.3)
de P em um determinado valor y:
xX
Denominamos o problema acima por Py. Por m, denimos o problema de viabili-
Pm
(PyV ) minimizaru,x ui
i=1
sujeito a: g(x, y) u
(4.5)
u 0,
x X, u Rm
PNL [11] na Seo 4.1 e o algoritmo hbrido proposto em [1] na Seo 4.2. Resultados
34
4.1 Algoritmo de branch-and-bound PL/PNL
Em [11], Quesada e Grossmann apresentam um algoritmo para PNLIM baseado
do algoritmo AE. Note que a cada iterao deste algoritmo, um problema PLIM
(problema mestre) precisa ser resolvido. Essas resolues geralmente so feitas por
dagem como um todo poderia ser melhorada se o procedimento PLIM pudesse ser
AE, para:
(a) Cortar qualquer soluo para o problema mestre que possua yk como
valor para y , caso no exista nenhuma soluo vivel para P tendo y esse
valor;
(b) Evitar que alguma soluo tima do problema mestre possua yk como
valor para y, caso no exista soluo tima para P tendo y esse valor;
(c) Atestar que existe uma soluo tima para P tendo yk como valor para
35
2. Um determinado sub-ramo da rvore s pode ser podado por limite se seu
limite inferior for maior ou igual que o limite superior do problema de PNLIM
22 seno
23 Seja ( ) a soluo tima de PyVk ;
u, x
24 T = T {(x, y k )} ;
25 Seja ( , x , y ) uma soluo tima de PYAE
k k k
k (T ) ;
26 se k < z U ento
// Ramificao
27 Selecione uma varivel yj com valor yjk no inteiro ;
28 Y i+1 = Y k {y Rny : yj byj c} ;
29 Y i+2 = Y k {y Rny : yj dyj e} ;
30 Li+1 = Li+2 = k ;
31 N = N {i + 1, i + 2}\{k} ;
32 i=i+2 ;
33 seno
34 N = N \{k} ; // Poda por limite
36
tries passam a ser exigidas em todos os subproblemas PL resolvidos desse ponto
ponto de vista terico, em comparao com AE, esta abordagem traz a expectativa
[2], esta abordagem mais recomendada que AE em casos onde a resoluo dos
si a tarefa de resoluo do problema mestre, essa vantagem perdida. Uma vez que
AE que faz uso dessas ferramentas. Todavia, ressaltamos que este algoritmo tem
branch-and-bound puder ser feita com qualidade equiparvel a dos principais solvers
de PLIM. Diante desse contexto, e por no nos julgarmos capazes de realizar uma
para apresentar um dos algoritmos para PNLIM utilizados pelo solver BONMIN. O
37
Entrada: P : Problema de PNLIM (4.1) abordado, : parmetro para a determinao dos
ns resolvidos com PNL
Sada: (x , y ): soluo tima de P (se existir)
1 z U = + ;
2 Seja (x0 , y 0 ) uma soluo tima de P ; T = (x0 ; y 0 ) ; Y 0 = Y ;
3 enquanto Tempo de busca local no excedido faa
4 Execute iteraes do Algoritmo de Aproximao Externa 2.1, salvando os pontos de
linearizao no conjunto T . ;
5 Seja N = {0} a lista inicial de ns em aberto ;
6 Seja Li o limite inferior do n i ;
7 L0 = ;
8 i = 0 ; b = 0;
9 enquanto N 6= faa
10 Selecione um n k de N ;
11 se b 1 (mod ) ento
12 Seja (
x, y) a soluo tima de PY k ;
13 se y inteira e f (
x, y) < z U ento
14 z U = f ( x, y) ;
15 (x , y ) = ( x, y) ;
16 N = N \{j : Lj z U } ; // Podas por limite
17 T = T ( x, y) ;
18
se PY k (T ) invivel ento
AE
29 seno
30 Seja ( ) a soluo tima de PyVk ;
u, x
31 T = T {(x, y k )} ;
32 Seja ( , x , y ) uma soluo tima de PYAE
k k k
k (T ) ;
33 se k < z U ento
// Ramificao
34 Selecione uma varivel yj com valor yjk no inteiro ;
35 Y i+1 = Y k {y Rny : yj byj c} ;
36 Y i+2 = Y k {y Rny : yj dyj e} ;
37 Li+1 = Li+2 = k ;
38 N = N {i + 1, i + 2}\{k} ;
39 i=i+2 ; b=b+1 ;
40 seno
41 N = N \{k} ; // Poda por limite
38
Os pontos de linearizao obtidos por esse algoritmo tambm sero utilizados
um limite inferior mais alto para o ramo, o que pode aumentar o nmero de
tgia foi adotada pelos autores a cada ns explorados (os autores adotaram
verso baseada no artigo original [1] onde os autores reportam ainda o uso de cortes
uma vez que esta abordagem usa o algoritmo da Seo 4.1 como espinha dorsal, ela
herda sua principal diculdade: a de conseguir uma resoluo eciente para o PLIM
abordado sem uso de pacotes computacionais ecientes para este m. Por esta razo,
este algoritmo tambm no pde ser implementado neste estudo. Observamos ainda
processadores 64 bits Intel Xeon X5472 de frequncia de 3,0 GHz e cache de 6 MB,
AE utilizou pacote GUROBI 4.6.1, enquanto BONMIN fez uso do pacote CPLEX
12.3. Ambos os cdigos utilizaram o pacote Ipopt 3.10 como rotina PNL. Congu-
39
Tabela 4.1: Resultados computacionais de aproximao externa,
branch-and-bound padro e branch-and-bound PL-PNL h-
brido.
Inst. AE BB padro Bonmin-1.5.1 (B-Hyb)
Cod Soluo Tempo Cod Soluo Tempo Cod Soluo Tempo
1 0 769.440,40 4,40 0 769.440,40 47,10 0 769.440,38 13,13
2 0 1.241.125,47 3,64 0 1.241.125,47 108,94 0 1.241.125,45 23,47
3 0 1.543.472,33 8,68 0 1.543.472,33 420,99 0 1.543.472,31 51,57
4 0 2.295.348,74 118,74 0 2.295.348,73 712,56 0 2.295.348,68 94,27
5 -108 - 26,31 0 41.573,30 2,80 0 41.573,30 2,18
6 0 41.573,26 0,50 0 41.573,26 3,11 0 41.573,25 1,35
7 0 6.545,00 1,25 0 6.545,00 33,55 0 6.545,00 4,90
8 0 6.545,00 0,32 0 6.545,00 18,13 0 6.545,00 1,62
9 0 8.092,50 44,77 0 8.092,50 616,41 0 8.092,50 40,87
10 0 8.092,50 11,25 0 8.092,50 294,58 0 8.092,50 9,56
11 -108 28.351,45 21,24 0 26.669,13 3,39 0 26.669,13 4,78
12 0 26.669,11 0,65 0 26.669,11 4,34 - 26.669,10 0,65
13 -108 58.760,94 40,71 0 40.262,42 371,17 0 40.262,42 36,95
14 0 40.262,39 5,07 0 40.262,39 60,17 - 58.907,30 2,33
15 -108 - 322,87 0 8.092,50 612,54 0 8.092,50 54,46
16 0 8.092,50 12,75 0 8.092,50 211,24 0 8.092,50 8,25
17 0 37,95 0,04 0 37,95 0,05 0 37,95 0,25
18 0 37,95 0,03 0 37,95 0,04 0 37,95 0,24
19 0 48,99 0,43 0 48,99 0,55 - 48,99 1,81
20 0 48,99 0,14 0 48,99 0,47 - 48,99 1,15
21 0 54,41 23,45 0 54,41 23,64 0 54,41 6,30
22 0 54,41 7,03 0 54,41 14,56 0 54,41 1,76
23 0 64,50 2.088,42 0 64,50 928,98 0 64,50 328,01
24 0 64,50 388,32 0 64,50 724,45 0 64,50 85,76
25 -107 66,93 18.661,90 -107 66,93 14.400,56 T 66,93 14.411,87
26 -107 66,93 16.494,97 -107 66,93 14.400,38 0 66,93 9.779,21
27 0 17,75 51,19 -107 17,75 14.400,27 0 17,75 92,43
28 0 20,73 168,07 -107 32,38 14.400,28 0 20,73 174,92
29 0 22,38 559,89 -107 32,38 14.400,36 0 22,38 418,39
30 0 23,46 17.045,35 -107 - 14.400,01 0 23,46 2.734,64
31 0 116,95 5.647,73 -107 135,06 14.400,29 0 116,95 605,39
32 0 131,65 12.250,10 -107 143,20 14.400,37 0 131,65 2.936,49
33 0 -7.174,22 22,45 -107 -7.128,22 14.400,93 - -7.103,11 44,21
34 0 -1.296,12 1,04 -107 -1.286,24 14.400,41 0 -1.296,12 2,01
35 0 -2.238,40 1,15 0 -2.238,40 7,60 0 -2.238,40 1,93
36 0 -2.238,40 85,24 -107 -2.238,40 14.400,18 0 -2.238,40 25,54
37 0 -3.068,93 0,94 0 -3.068,93 15,02 0 -3.068,93 2,11
38 0 -3.068,93 60,34 -107 -2.973,08 14.400,51 - -2.943,42 14,61
39 0 -7.174,22 1,40 0 -7.174,22 9,61 0 -7.174,22 3,37
40 0 -7.174,22 22,43 -107 -7.128,22 14.400,48 - -7.103,11 44,24
41 0 -6.581,93 233,08 -107 -5.914,69 14.400,33 0 -6.581,94 98,42
42 0 -1.721,45 0,87 -107 -1.714,81 14.400,43 0 -1.721,45 1,45
43 0 -1.741,39 1,11 0 -1.741,39 24,56 0 -1.738,41 2,34
44 0 -1.741,39 53,38 -107 -1.705,63 14.400,34 0 -1.741,39 151,68
45 0 -2.722,45 2,12 0 -2.722,45 73,12 0 -2.722,45 6,67
46 0 -2.722,45 319,58 -107 -2.524,15 14.400,24 - -2.619,98 49,74
47 0 -6.581,94 1,72 0 -6.581,94 14,00 0 -6.581,94 5,39
48 0 -6.581,93 232,26 -107 -5.914,69 14.400,40 0 -6.581,94 98,22
49 0 -3.410,85 729,34 -107 -2.193,14 14.400,54 0 -3.410,85 3.335,67
50 0 -1.269,93 0,43 -107 -1.266,91 14.400,33 0 -1.269,93 2,12
51 0 -1.774,40 0,76 0 -1.774,40 8,40 0 -1.774,40 3,03
52 0 -1.774,40 26,44 -107 -1.506,81 14.400,34 0 -1.774,40 70,16
Continua na prxima pgina
40
Tabela 4.1: Resultados computacionais de aproximao externa,
branch-and-bound padro e branch-and-bound PL-PNL h-
brido (continuao da pgina anterior ).
41
Tabela 4.1: Resultados computacionais de aproximao externa,
branch-and-bound padro e branch-and-bound PL-PNL h-
brido (continuao da pgina anterior ).
42
A Tabela 4.1 traz os resultados computacionais. Na primeira coluna desta tabela,
temos a numerao das instncias de teste, seguida das colunas referentes aos resul-
tados de cada algoritmo. Para cada algoritmo, temos o cdigo de retorno oferecido
pela sua aplicao (Cod), o valor da funo objetivo na soluo obtida (Soluo)
capazes de convergir para uma soluo tima, o cdigo de retorno gerado pelos mes-
mos zero (sucesso). Caso contrrio, um cdigo de erro diferente de zero gerado.
Nestes casos, a coluna Soluo traz o valor da soluo (funo objetivo) na melhor
soluo vivel encontrada ou - quando nenhuma soluo vivel foi obtida nas con-
dies dadas. Os cdigos de erro mais comuns so -107 (tempo mximo de execuo
foi capaz de atestar otimalidade, preenchemos a coluna Cod com T (tempo mximo
capazes de atestar a soluo tima foi de, respectivamente, 133 (87,5%) e 94 (61,8%),
soluo vivel em 146 instncias (96,1%), enquanto que, para BB, esse nmero foi
de 150 (98,7%).
mos armar que BB foi mais efetivo que o algoritmo hbrido em 44 casos (28,9%),
com AE, podemos dizer que AE foi mais efetivo que o algororitmo hbrido em 113
(74,3%) dos problemas, ao passo que o algoritmo hbrido foi mais efetivo em 34
mesma rotina base de PNL, e, assim, podemos concluir que o principal fator res-
ponsvel pelo melhor desempenho de AE foi o uso, por parte deste algoritmo, de
um pacote extremamente eciente para resolver problemas de PLIM que faz uso das
43
Captulo 5
Heursticas
near Inteira Mista (PLIM). Seu uso pode trazer solues viveis de modo bastante
encontrar alguma soluo vivel para o problema considerado, o que pode inclu-
pode ser to grande quanto na rea de PLIM, ou talvez ainda maior, dadas as novas
diculdades deste universo. Tendo uma soluo vivel em mos, temos tambm um
limite superior para um problema de minimizao, e estes dois elementos podem ser
linearizao;
44
Em suma, uma soluo vivel de boa qualidade obtida da forma mais rpida possvel
beram a devida ateno por parte dos pesquisadores, e, de modo geral, os poucos
um problema e devolver uma soluo vivel para o mesmo, podendo possuir, ou no,
as heursticas de melhora, que no geram soluo vivel, sendo voltadas apenas para
a melhora (busca local) de uma soluo vivel j recebida como entrada.
PNLIM:
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0 (5.1)
x X, y Y Zny
onde X e Y Rnx e Rny , respectivamente, e Y
so subconjuntos polidricos de
m
limitado. As funes f : X Y R e g : X Y R so convexas e duplamente
integralidade, de P.
Este captulo est organizado como se segue: a Seo 5.1 dedicada heurstica
diving heuristic )
( para PNLIM. A ideia principal dessa heurstica simular um
abordado desde o n raiz at um n folha que represente uma soluo inteira vivel.
tgias:
45
sente o menor valor |
yj [
yj ]|, onde [
yj ] representa o inteiro mais prximo de
yj ) f
yj e
(d y
(
y)
+ 106 f (
yj )
Aj +1
j
, se
yj 0
(5.2)
yj ) f
yj c
(b (
yj
y)
+ 10 6
Aj +1 , caso contrrio
de uma varivel inteira poderia ser xada a cada iterao, uma vez que no contexto
que usa o mtodo dual simplex a partir da base tima do subproblema pai. Desse
modo, o algoritmo xa at outras K variveis inteiras na iterao corrente cujo valor
assim o problema continuar invivel, ento o algoritmo para declarando falha, con-
forme pode ser constatado no Algoritmo 5.1. Bonami e Gonalves apresentam ainda
em [36] uma verso que tira proveito de problemas de PNLIM que apresentam uma
na funo objetivo e nas restries. Nessa verso, o mergulho feito apenas xando
blema PLIM que resolvido para se obter a soluo vivel desejada. Uma ideia
46
Entrada: P : Problema de PNLIM (5.1) abordado, z: limite superior para a soluo, K :
nmero mximo de variveis com valores inteiros a serem xadas em cada
iterao
Sada: ( x,y ): soluo vivel para P (ou erro de convergncia)
1 Y = Y ;
2 Seja PY o subproblema P com Y em Y ;
3 Seja PY a relaxao contnua de PY ;
4 x, y) uma soluo tima de PY ;
Seja (
5 F = {j : yj fracionrio} ;
6 I = {j : yj inteiro} ;
7 iter = 1;
8 enquanto F 6= e iter maxIter faa
9 se f (
x, y) z ento
// Soluo no pode melhorar o limite superior z
10 Soluo vivel no localizada ;
11 encerrar algoritmo ;
12 Y = Y ;
13 Selecione j F ;
14 Y = Y = Y {y Rny : yj = arredonda( yj )} ;
15 nF ixas = 0 ; i = 0 ; S = ; tamI = |I| ;
16 enquanto nF ixas < K e i < tamI faa
// Fixando variveis com valor yk inteiro
17 Selecione k I ;
18 I = I \ {k} ;
19 Y = Y {y Rny : yk = (yk )} ;
20 S =Sk ;
21 i=i+1 ;
22 se PY invivel ento
// Desafixando as variveis com valores inteiros
23 Y = Y ;
24 se PY invivel ento
// Mudando o arredondamento de yj (backtracking )
25 Y = Y {y Rny : yj = arredondaOposto(
yj )} ;
26 se PY invivel ento
27 Soluo vivel no localizada ;
28 encerrar algoritmo ;
29 Seja (
x, y) uma soluo tima de PY ;
30 F = {j : yj fracionrio} ;
31 I = {j : yj inteiro} ;
32 iter = iter + 1;
47
5.2 Feasibility pump
A heurstica feasibility pump foi proposta por Fischetti et al. para PLIM em [38]. A
de pontos, uma em cada linha de viabilidade, com a esperana de que ambas con-
virjam para um mesmo ponto, que assim, atenderia ambas s linhas, e, portanto,
seria uma soluo vivel para o problema P. Assim, cada ponto gerado em uma das
Nesta subseo, apresentamos uma adaptao de feasibility pump para PNLIM feita
por Bonami e Gonalves em [36]. O algoritmo, descrito como Algoritmo 5.2, toma
(P F P (
y k )) minimizarx,y (y, yk )
sujeito a: g(x, y) 0 (5.3)
x X, y Y
ny
X
(y, y) = |yj yj | (5.4)
i=1
que, no caso de todas as variveis inteiras serem binrias, pode ser escrita como:
X X
(y, y) = yj + (1 yj ) (5.5)
j:
yj =0 j:
yj =1
48
mais prximo soluo (invivel) inteira xk , yk ),
( ao passo que xk+1 , yk+1 ) ser a
(
soluo inteira (no necessariamente vivel) mais prxima xk+1 , yk+1 ).
a (
subsequncias de ( xk , yk ) e (
xk , yk ). Para a deteco de um ciclo, compara-se a solu-
xk , yk ) com as obtidas nas ltimas trs iteraes. Quando o ciclo detectado,
o (
7 xk , yk ) ;
(x , y ) = (
8 retorna (x , y ) ;
9 yk = [yk ] ;
10 se y = yk1 ento
k
17 k =k+1 ;
Bonami et al. tambm propem uma heurstica feasibility pump em [39]. A principal
49
(P M F P ) minimizarx,y ||y yk ||1 !
x xi
sujeito a: xi , yi )T
g( xi , yi ) 0, i = 0, . . . , k
+ g(
y yi
x X, y Y Zny
(5.6)
MF P k+1 k+1
Denotamos o problema (5.6) como P . Ento, a prxima soluo (
x , y )
x X, y Y
uma implementao prpria das heursticas descritas nesse captulo sobre nosso
sadores 64 bits Intel Xeon X5472 de frequncia de 3,0 GHz e cache de 6 MB, 16
50
Tabela 5.1: Resultados computacionais das heursticas de mer-
gulho e feasibility pump.
51
Tabela 5.1: Resultados computacionais das heursticas de mer-
gulho e feasibility pump (continuao da pgina anterior ).
52
Tabela 5.1: Resultados computacionais das heursticas de mer-
gulho e feasibility pump (continuao da pgina anterior ).
foi utilizado o pacote Gurobi 4.6.1 [15] e para a resoluo dos problemas PNL, foi
utilizado o pacote Ipopt 3.10 [29]. Os algoritmos foram congurados para rodar em
53
modo thread nica, isto , utilizando apenas um dos processadores disponveis na
igual a 500, ao passo que as heursticas de feasibility pump rodaram com nmero
cada algoritmo. Para cada algoritmo, temos o valor da funo objetivo na soluo
- na tabela se referem a casos onde o respectivo algoritmo no foi capaz de encontrar
tidade de instncias em que cada abordagem conseguiu fornecer soluo vivel, bem
[36] forneceu os melhores resultados para o grupo de instncias de teste, pois teve
por m que das 152 instncias de teste, apenas as instncias 15 (CLay0305H) e 143
54
Captulo 6
Nossas contribuies tericas
Ao longo deste trabalho, discutimos sobre variadas abordagens propostas para Pro-
contribuies prprias para esta rea atravs da proposio de dois algoritmos. Em-
bora o termo contribuio terica possa no ser o mais apropriado para descrever o
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0 (6.1)
x X, y Y Zny
P .
Na Seo 6.1, apresentamos a aplicao de um algoritmo de particionamento
local (local branching ) para problemas de PNLIM. Na Seo 6.2, propomos uma
55
6.1 Um algoritmo de particionamento local para
PNLIM
6.1.1 Algoritmo
de Programao Linear Inteira Mista (PLIM). Mais do que uma simples heurstica
a aplicao desta abordagem neste universo, seja ela de forma isolada ou integrada
aos algoritmos de PNLIM discutidos nesse texto. Todavia, o recente trabalho [40]
traz uma heurstica para PNLIM no convexa baseada em vizinhanas cuja denio
Note que, em primeiro lugar, particionamento local j parte de uma soluo vivel
para P. Esta soluo pode ser obtida, por exemplo, atravs do uso de heursticas de
LIM exatos com parada forada assim que os mesmos obtiverem a primeira soluo
vivel. Em segundo lugar, temos o fato curioso de que necessrio ter em mos um
a este. Desse modo, o algoritmo aposta suas chas no fato de que a resoluo desses
subproblemas poder ser feita de modo bem mais eciente do que a de P, uma vez
56
Um algoritmo de branch-and-bound utilizado para guiar a gerao dos subpro-
componentes diferentes de y
, ao passo que na segunda partio, estaro as solues
y com mais que k componentes diferentes de y, segundo expresso pelas restries
onde (y, y) uma funo que mede a "distncia"de y at y, aqui descrita como o
X X
(y, y) = (1 yj ) + yj (6.4)
jB k jN k
onde B k = {j : yj = 1} N k = {j : yj = 0}.
e Note que nos casos onde
no existem variveis binrias, necessria uma outra funo de distncia que leve
[22]).
devem ser feitas sobre solues de referncia xk , yk ) viveis para P , o que justica a
(
necessidade de obteno de uma soluo desse tipo para iniciar o algoritmo. Observe
que sob a ramicao esquerda, temos um problema cuja regio vivel reduzida
para resolver os respectivos subproblemas gerados (ns pares da gura 6.1), enquanto
57
Figura 6.1: Esquema bsico de particionamento local (sem diversicao). A sigla
res. signica resoluo.
Figura 6.2: Particionamento local com limite de tempo. A sigla res. signica reso-
luo.
58
os mesmos fornecem solues melhores que as anteriores. Quando uma soluo de
melhora no pode ser obtida, ento o algoritmo chama o procedimento para PNLIM
para solucionar o problema resultante na ramicao direita mais recente. Note que
ltimo algoritmo, para o caso binrio, escolhe, ao longo da rvore, variveis inteiras
pode no tomar as melhores decises com relao a quais variveis xar em cada n,
Devido a isso, costuma-se xar um tempo limite para cada resoluo de ramicao
(Figura 6.2);
59
Entrada: P : Problema de PNLIM (6.1) abordado, (x0 , y 0 ): soluo inicial (vivel) para
P , AE(T, z U ): procedimento de aproximao externa que recebe um conjunto
de pontos de linearizao iniciais T como argumento (Algoritmo 2.1) e um limite
superior z U para o problema, k0 : valor inicial para k, t_max_esq : tempo
mximo em ns de ramicao esquerda
Sada: (x , y ): soluo tima de P
1 k = k0 ; z U = f (x0 , y 0 ) ;
2 Adicionar restrio de particionamento local 1 (y, y 0 ) k ;
3 T = T {(x0 , y 0 )} ;
4 (x , y ) = (x0 , y 0 ) ;
5 n_diversif = 0 ; iter = 0 ;
6 enquanto n_diversif < max_diversisf e iter < max_iters faa
7 Rode AE(T, z U ) com tempo limite t_max_esq ;
8 Seja status o estado da aplicao de AE(T, z U ) ;
9 se status = soluo tima encontrada ento
10 Reverta a ltima restrio de particionamento local para (y, y) k + 1 ;
11 Seja (
x, y) a soluo tima do n corrente ;
12 se f (
x, y) < z U ento
13 (x , y ) = ( x, y) ;
14 z U = f ( x, y);
15 Insira restrio de particionamento local 1 (y, y) k ;
16 T = T {( x, y)} ;
17 se status = inviabilidade provada ento
18 k = k dk0 /4e ;
19 n_diversif = n_diversif + 1 ;
20 se n_diversif < max_diversif s ento
21 Atualize a ltima restrio de particionamento local com o novo valor de k ;
22 se status = parada por tempo mximo com soluo vivel ento
23 Seja ( y ) a melhor soluo vivel obtida no n corrente ;
x,
24 se f (
x, y) < z U ento
25 z U = f ( x, y) ;
26 (x , y ) = ( x, y) ;
27 Troque a ltima restrio de particionamento local por 1 (y, y) k ;
28 x, y)} ;
T = T {(
29 se status = parada por tempo mximo sem soluo vivel ento
30 k = max{1, bk k0 /2c} ;
31 se n_diversif < max_diversif s ento
32 Atualize a ltima restrio de particionamento local com o novo valor de k ;
33 iter = iter + 1 ;
34 se iter < max_iters ento
35 rode AE(T, z U ) no subproblema da ltima ramicao direita ;
36 Seja status o estado da aplicao de AE(T, z U ) ;
37 se status = soluo tima encontrada ento
38 Seja (
x, y) a soluo tima do n corrente ;
39 se f (
x, y) < z U ento
40 (x , y ) = ( x, y) ;
41 z U = f ( x, y);
60
para obteno de novas solues e, assim, prosseguir com o esquema de ramica-
encontrar outra soluo vivel para P (ainda que no traga melhora), e us-la como
nossa proposta de particionamento local para PNLIM toma por base o algoritmo
resolvedor de problemas de PNLIM possa ser utilizado, optamos por esse algoritmo
tomando por base o bom desempenho apresentado nos testes aqui mostrados e a
aposta de que, pelo fato dos subproblemas apresentarem regio vivel reduzida, as
tria em poucas iteraes. Ademais, estas regies viveis reduzidas podem tambm
tes para o sucesso de (AE). Assim, cada nova soluo de referncia encontrada na
zao que passado por parmetro ao algoritmo AE. Desse modo, o algoritmo AE
cido zU para AE para melhorar a ecincia do algoritmo PLIM utilizado (este valor
ser usado para limitar a varivel no problema mestre). Por ltimo, inserimos
os ns da rvore para evitar que as solues de referncia sejam viveis nos futuros
subproblemas.
nosso conjunto de 152 instncias de teste, retiradas de [28], cujos detalhes adicionais
61
Tabela 6.1: Resultados computacionais de aproximao externa,
branch-and-bound e particionamento local.
62
Tabela 6.1: Resultados computacionais de aproximao externa,
branch-and-bound e particionamento local (continuao da
pgina anterior ).
63
Tabela 6.1: Resultados computacionais de aproximao externa,
branch-and-bound e particionamento local (continuao da
pgina anterior ).
C++, compiladas com o compilador G++ do pacote GCC verso 4.4.3 e rodaram
64
operacional Ubuntu Linux 10.04.2 LTS cuja verso do kernel 2.6.32-31-generic.
Para a resoluo dos problemas PLIM, foi utilizado o pacote Gurobi 4.6.1 [15] e
para a resoluo dos problemas PNL, foi utilizado o pacote Ipopt 3.10 [29]. Quando
para rodar com um tempo mximo de execuo de quatro horas em cada instncia
teste. Para a obteno das solues viveis inicias, foram usadas as heursticas
primeira coluna desta tabela, temos os nmeros das instncias, seguida das colunas
referentes aos resultados de cada algoritmo. Para cada algoritmo, temos o cdigo
de retorno oferecido pela sua aplicao (Cod), o valor da funo objetivo na soluo
retorno gerado pelo mesmo zero (sucesso). Caso contrrio, um cdigo de erro
diferente de zero gerado (o Apndice B traz uma tabela com todos os cdigos
de retorno utilizados neste trabalho). Nestes casos, a coluna Soluo traz o valor
instncias (78,9%), enquanto que para BB e AE, esse nmero foi de 94 (61,8%) e
local foi mais efetivo (segundo os critrios apresentados na Seo 2.4) em 120 ins-
com AE, particionamento local foi mais efetivo em 19 instncias (12,5%), enquanto
AE foi mais efetivo em 123 (80,9%). Podemos perceber ento que partionamento
65
6.1.3 Resultados computacionais - Parte II
mximo de trs iteraes. Note que, neste caso, apenas subproblemas de ramicaes
66
Tabela 6.2: Resultados computacionais de branch-and-bound
com e sem uso de particionamento local (continuao da p-
gina anterior ).
67
Tabela 6.2: Resultados computacionais de branch-and-bound
com e sem uso de particionamento local (continuao da p-
gina anterior ).
68
Tabela 6.2: Resultados computacionais de branch-and-bound
com e sem uso de particionamento local (continuao da p-
gina anterior ).
caes sobre uma nica varivel, com e sem o uso da heurstica de particionamento
foi a proposta por Bonami et al. em [1] (apresentada na Seo 4.2), onde autores
tomam por base o algoritmo de branch-and-bound baseado em Programao Linear
utiliza nenhum conceito de aproximao linear, enquanto que Bonami et al. tomam
69
aproximao do problema P em um problema de PLIM. Desse modo, a cada iterao,
x X, y Y Zny
aproximao externa em algumas parties deste espao, isto , sobre alguns dos
subproblemas PY por um tempo limitado. Note que isso feito por Bonami et al.
uma nica vez em seu algoritmo antes do particionamento do espao comear, ou
seja, sobre o problema de PNLIM original no n raiz da rvore. Aqui, adotamos esta
colabora com esquema de enumerao fornecendo limites inferiores mais fortes para
superiores mais fortes para o problema P como um todo. Note que ambos os fatos
destacados contribuem para um nmero maior de podas por limite e uma explorao
separadamente.
determinado diversas vezes sobre o problema original P e uma nica vez, tambm
70
Entrada: P : Problema de PNLIM (6.1) abordado, c : tolerncia de convergncia
AE(P , T I , z U , tempo): Procedimento de aproximao externa que roda sobre P ,
com conjunto inicial de pontos de linearizao T I , limite superior z U no tempo
tempo. AE retorna: status: estado da aplicao, ( x, y): melhor soluo obtida
para P , T F : conjunto nal de pontos de linearizao, zL : limite inferior para P
Sada: (x , y ): soluo tima de P (se existir)
1 z U = + ; Seja Li o limite inferior do n i ; Seja (x0 , y 0 ) a soluo tima de P ;
2 se y 0 for inteira ento (x , y ) = (x0 , y 0 ) ; retorna;
3 T P = (x0 , y 0 ) ; // Pontos de linearizao iniciais para P
4 [status, ( x, y), T F , zL ] = AE(P , T P , z U , tempo_AE) ;
5 se status = soluo tima ou status = soluo vivel ento
(x , y ) = ( y );z U = f (
x, y );
x,
6 se status = soluo tima ento retorna;
7 Selecione uma varivel yj com valor yj0 no inteiro
8 Y 1 = Y {y Rny : yj byj c} ; Y 2 = Y {y Rny : yj dyj e} ;
L1 = L2 = max{f (x0 , y 0 ), zL } ;
9 Seja N = {1, 2} a lista inicial de ns em aberto ; i = 2 ; iter = 0 ;
10 enquanto N 6= faa
11 Selecione um n k de N ; iter = iter + 1 ;
12 se PY k invivel ento N = N \{k} ; // Poda por inviabilidade
13 seno
14 Seja (xk , y k ) uma soluo tima de PY k ;
15 se f (xk , y k ) < z U ento
16 se y k for inteira ento
17 z U = f (xk , y k ) ; (x , y ) = (xk , y k ) ; T P = T P {(xk , y k )} ;
18 N = N \ ({k} {j : Lj z U c }) ; // Podas por otimalidade e
limite
19 seno
20 = f (xk , y k ) ;
L
21 se iter 0 (mod f req _AE _subprob) ento
// Aplicando AE ao subproblema
22 T S = {(xk , y k )} ;
23 [status, ( x, y), T F , zL ] = AE(PY k , T S , z U , tempo_AE) ;
24 se status = soluo tima ou status = soluo vivel ento
25 se f ( x, y) < z U ento
26 z U = f ( x, y) ; (x , y ) = (
x, y) ;
27 N = N \ {j : L z c } ;
j U
// Podas por limite
28 x, y)} ;
T P = T P {(
29 se status = soluo tima ou status = problema invivel ento
30 N = N \ {k} ; V para a linha 10 ;
31 = max{L,
L zL } ;
32 Selecione uma varivel yj com valor yjk no inteiro ; // Ramificao
33 Y i+1 = Y k {y Rny : yj byj c} ; Y i+2 = Y k {y Rny : yj dyj e} ;
34 Li+1 = Li+2 = L ; N = N {i + 1, i + 2} \ {k} ; i = i + 2 ;
71
2. Se o subproblema em questo no puder ser resolvido at a otimalidade com-
onde o sub-ramo for invivel ou no possuir soluo inteira melhor que o limite
Observe que todas as vantagens descritas podem fazer grande diferena no desem-
penho de BB. Ns tambm devemos mencionar que, a melhor soluo obtida por
rente (linhas 21-31), enquanto que a cada f req _AE _prob iteraes o algoritmo
f req _AE _prob iteraes de BB, seria, em princpio, como se estivssemos resol-
vendo P com AE dando pausas na execuo deste algoritmo (durante essas pau-
sas, executamos f req _AE _prob iteraes de BB). Entretanto, na realidade isto
BB, esperando assim que consigamos acelerar a execuo de AE, isto , poupar
algumas de suas iteraes. Em nossos testes, usamos f req _AE _subprob = 100 e
gundos (por exemplo, 30s) para executar. Assim, nosso algoritmo tem desempenho
prtico igual que AE nos casos onde este ltimo consegue resolver o problema abor-
72
6.2.2 Resultados computacionais
Tendo em vista que nossa abordagem fornecer os mesmos resultados que AE nos
processadores 64 bits Intel Xeon X5472 de frequncia de 3,0 GHz e cache de 6 MB, 16
foi utilizado o pacote Gurobi 4.6.1 [15] e para a resoluo dos problemas PNL, foi
utilizado o pacote Ipopt 3.10 [29]. Os algoritmos foram congurados para rodar
na mquina. Para nossa proposta hbrida, utilizamos f req _AE _subprob = 100,
f req _AE _prob = 1000, tempo_AE = 30 e p = 2.
A Tabela 6.3 traz os resultados da aplicao de nossa abordagem hbrida (BB +
nmero da instncia seguido das colunas referentes aos resultados de cada algoritmo.
Para cada algoritmo, temos o cdigo de retorno oferecido pela sua aplicao (Cod),
para uma soluo tima, o cdigo de retorno gerado pelo mesmo zero (sucesso).
Caso contrrio, um cdigo de erro diferente de zero gerado. Nestes casos, a coluna
Soluo traz o valor da soluo (funo objetivo) na melhor soluo vivel encontrada
ou - quando nenhuma soluo vivel foi obtida nas condies dadas. Os cdigos de
erro mais comuns so -107 (tempo mximo de execuo alcanado) e -108 (mximo
Podemos perceber ento que, nossa abordagem hbrida (BB + AE) foi capaz de
11 problemas (22%) e 48 problemas (96%), enquanto que para AE, foram, respec-
73
Tabela 6.3: Resultados computacionais de aproximao externa,
branch-and-bound e nosso algoritmo hbrido (BB + AE).
Inst BB + AE BB AE
Cod Soluo Tempo Cod Soluo Tempo Cod Soluo Tempo
4 0 2.295.348,74 430,21 0 2.295.348,73 712,56 0 2.295.348,74 118,74
5 0 41.573,30 8,95 0 41.573,30 2,80 -108 - 26,31
9 0 8.092,50 41,68 0 8.092,50 616,41 0 8.092,50 44,77
11 0 26.669,13 35,85 0 26.669,13 3,39 -108 28.351,45 21,24
13 0 40.262,42 420,97 0 40.262,42 371,17 -108 58.760,94 40,71
15 -112 - 0,31 0 8.092,50 612,54 -108 - 322,87
23 0 64,50 1.248,47 0 64,50 928,98 0 64,50 2.088,42
24 0 64,50 968,96 0 64,50 724,45 0 64,50 388,32
25 -107 66,93 14.410,06 -107 66,93 14.400,56 -107 66,93 18.661,90
26 -107 66,93 14.400,24 -107 66,93 14.400,38 -107 66,93 16.494,97
27 -107 17,75 14.400,22 -107 17,75 14.400,27 0 17,75 51,19
28 -107 20,73 14.400,34 -107 32,38 14.400,28 0 20,73 168,07
29 -107 22,38 14.400,23 -107 32,38 14.400,36 0 22,38 559,89
30 -107 48,69 14.400,04 -107 - 14.400,01 0 23,46 17.045,35
31 -107 116,95 14.419,99 -107 135,06 14.400,29 0 116,95 5.647,73
32 -107 131,65 14.404,38 -107 143,20 14.400,37 0 131,65 12.250,10
36 0 -2.238,40 11.856,04 -107 -2.238,40 14.400,18 0 -2.238,40 85,24
38 0 -3.068,93 37,60 -107 -2.973,08 14.400,51 0 -3.068,93 60,34
41 0 -6.581,93 20,93 -107 -5.914,69 14.400,33 0 -6.581,93 233,08
44 -107 -1.741,39 14.400,17 -107 -1.705,63 14.400,34 0 -1.741,39 53,38
46 -107 -2.722,45 14.400,73 -107 -2.524,15 14.400,24 0 -2.722,45 319,58
48 0 -6.581,93 20,89 -107 -5.914,69 14.400,40 0 -6.581,93 232,26
49 -107 -3.392,73 14.400,12 -107 -2.193,14 14.400,54 0 -3.410,85 729,34
54 -107 -2.820,93 14.416,22 -107 -2.734,56 14.400,50 0 -2.827,92 240,59
56 -107 -3.404,85 14.400,07 -107 -2.193,14 14.400,48 0 -3.410,85 731,20
57 -107 -2.446,77 14.400,22 -107 -1.209,58 14.400,15 0 -2.450,77 829,44
60 -107 -1.092,09 14.400,18 -107 -483,64 14.400,51 0 -1.092,09 74,67
62 -107 -2.028,81 14.400,11 -107 -1.325,76 14.400,32 0 -2.028,81 272,06
64 -107 -2.431,67 14.400,29 -107 -1.209,58 14.400,25 0 -2.450,77 828,86
65 -107 -2.512,07 14.400,04 -107 -1.984,69 14.400,32 -107 -2.529,07 14.648,33
68 -107 -730,51 14.400,14 -107 -536,55 14.400,27 0 -730,51 252,84
70 -107 -1.543,06 14.400,11 -107 -1.327,54 14.400,48 0 -1.543,06 990,10
72 -107 -2.512,07 14.400,24 -107 -1.984,69 14.400,34 -107 -2.529,07 14.673,29
73 -107 -2.546,59 14.423,66 -107 -1.535,05 14.400,22 -107 -2.538,28 14.427,36
76 -107 -734,66 14.427,13 -107 -241,59 14.400,43 0 -734,98 72,10
78 -107 -2.742,65 14.400,17 -107 -2.092,75 14.400,35 0 -2.742,65 214,76
80 -107 -2.546,59 14.400,44 -107 -1.535,05 14.400,16 -107 -2.538,28 14.417,53
89 -107 84.960,21 14.418,09 -107 84.960,21 14.400,14 0 84.960,21 89,51
91 -107 107.805,75 14.400,05 -107 107.805,75 14.400,30 -107 107.805,75 14.767,91
92 -107 107.805,75 14.402,72 -107 107.805,75 14.400,22 0 107.805,75 114,01
93 -107 129.579,88 14.405,30 -107 129.579,88 14.400,53 -107 129.965,05 14.490,31
94 -107 129.579,88 14.400,02 -107 129.675,85 14.400,30 -107 129.761,14 17.829,20
143 -107 0,00 14.400,08 -107 - 14.400,09 -107 - 25.520,42
145 -107 8,30 14.400,18 -107 8,30 14.400,31 0 8,30 440,68
146 -107 10,30 14.406,00 -107 10,30 14.400,42 -107 - 16.580,04
147 -107 23,50 14.409,04 -107 21,50 14.400,09 -107 - 16.579,70
148 -107 23,50 14.431,40 -107 20,30 14.400,24 -107 - 16.586,11
149 0 125,20 93,56 0 125,20 26,49 -108 125,22 192,65
151 0 207,99 333,70 0 207,99 256,62 -108 207,99 378,50
152 0 424,54 296,32 0 424,54 490,04 0 424,54 57,83
efetivadade apresentada na Seo 2.4, podemos armar que nosso algoritmo hbrido
foi mais efetivo que BB em 31 instncias (62%), ao passo que BB foi mais efetivo
74
que este em 10 (20%). Em comparao com AE, nossa proposta foi mais efetiva em
18 instncias (38%), enquanto que AE foi mais efetivo que esta em 28 (56%).
necessidade por estudos para obteno do melhor ajuste dos parmetros da aborda-
gem. Finalmente, ressaltamos que nossa abordagem pode ser beneciada por futuras
75
Captulo 7
Nossa contribuio prtica: o solver
Muriqui
7.1 Apresentao
Neste captulo, discutimos aspectos da grande contribuio prtica deste trabalho:
at esse ponto, uma grande carga de aprendizado que seria difcil de ser obtida
de outro modo;
76
isto , deixam de fornecer ferramentas que poderiam ser interessantes para
mos que um pas realmente soberano precisa obter o real domnio das tecno-
(P ) minimizarx,y f (x, y)
sujeito a: g(x, y) 0
h(x, y) = 0
(7.1)
A(x, y) b
(lx , ly ) (x, y) (ux , uy )
x Rnx , y Zny
listagem mais abrangente desses pacotes com breves descries pode consultar [41]).
Destacamos aqui o pacote BONMIN [1], um solver de PNLIM aberto que implementa
como Pierre Bonami, Jon Lee, Andreas Wchter, Ignacio Grossmann e Andrea Lodi,
dentre outros. O pacote BONMIN tem sido uma referncia para o desenvolvimento
de Muriqui.
aberto, de utilizao totalmente livre, que faz uso das melhores subrotinas livres e
lado, temos pesquisadores, estudantes e usurios com poucos recursos, sem acesso
a pacotes comerciais caros. Pensando nesse perl de usurio, Muriqui est sendo
construdo de modo a poder ser utilizado somente com subrotinas que tambm so
77
abertas, universalizando assim a sua possibilidade de uso. Por outro lado, temos
de ltima gerao, e, se fossem obrigados a rodar com as subrotinas livres, que ge-
recursos disponveis. Assim, Muriqui est sendo construdo de modo a tambm utili-
Note que atendemos a duas gamas de usurios que possuem pers completamente
opostos.
Tambm existem interfaces experimentais com outros pacotes PNL que no apre-
do mtodo de plano de corte estendido para PNL [34]. Observamos que ao se tra-
forma plena, alm de dar aos mesmos a possibilidade de troca nas situaes onde os
Para facilitar o uso efetivo do solver Muriqui, implementamos uma interface com
possvel aplicar Muriqui a modelos oriundos desse sistema. Tambm existe a possi-
implementadas no solver.
Os seguintes algoritmos para PNLIM j esto incorporados em Muriqui:
1. Aproximao externa;
3. Branch-and-bound padro;
78
4. Branch-and-bound com ramicao precoce;
6. Particionamento local;
1. Mergulho;
LIM.
de PNLIM.
BONMIN (verso 1.5.1) sobre as 152 instncias de PNLIM utilizadas neste estudo,
PLIM, Muriqui utilizou pacote GUROBI 4.6.1, enquanto BONMIN fez uso do pa-
cote CPLEX 12.3. Ambos os pacotes utilizaram o pacote Ipopt 3.10 como rotina
79
Tabela 7.1: Resultados computacionais de Muriqui e BONMIN.
Instncia Muriqui (BB + AE) BONMIN-1.5.1 (B-Hyb)
Cod Soluo Tempo Cod Soluo Tempo
1 BatchS101006M 0 769.440,40 5,79 0 769.440,38 13,13
2 BatchS121208M 0 1.241.125,47 8,06 0 1.241.125,45 23,47
3 BatchS151208M 0 1.543.472,33 13,05 0 1.543.472,31 51,57
4 BatchS201210M 0 2.295.348,74 430,21 0 2.295.348,68 94,27
5 CLay0203H 0 41.573,30 8,95 0 41.573,30 2,18
6 CLay0203M 0 41.573,26 0,45 0 41.573,25 1,35
7 CLay0204H 0 6.545,00 1,84 0 6.545,00 4,90
8 CLay0204M 0 6.545,00 0,40 0 6.545,00 1,62
9 CLay0205H 0 8.092,50 41,68 0 8.092,50 40,87
10 CLay0205M 0 8.092,50 10,43 0 8.092,50 9,56
11 CLay0303H 0 26.669,13 35,85 0 26.669,13 4,78
12 CLay0303M 0 26.669,11 1,64 - 26.669,10 0,65
13 CLay0304H 0 40.262,42 420,97 0 40.262,42 36,95
14 CLay0304M 0 40.262,39 6,25 - 58.907,30 2,33
15 CLay0305H -112 - 0,31 0 8.092,50 54,46
16 CLay0305M 0 8.092,50 14,20 0 8.092,50 8,25
17 FLay02H 0 37,95 0,05 0 37,95 0,25
18 FLay02M 0 37,95 0,04 0 37,95 0,24
19 FLay03H 0 48,99 0,50 - 48,99 1,81
20 FLay03M 0 48,99 0,19 - 48,99 1,15
21 FLay04H 0 54,41 42,00 0 54,41 6,30
22 FLay04M 0 54,41 8,47 0 54,41 1,76
23 FLay05H 0 64,50 1.248,47 0 64,50 328,01
24 FLay05M 0 64,50 968,96 0 64,50 85,76
25 FLay06H -107 66,93 14.410,06 T 66,93 14.411,87
26 FLay06M -107 66,93 14.400,24 0 66,93 9.779,21
27 fo7_2 -107 17,75 14.400,22 0 17,75 92,43
28 fo7 -107 20,73 14.400,34 0 20,73 174,92
29 fo8 -107 22,38 14.400,23 0 22,38 418,39
30 fo9 -107 48,69 14.400,04 0 23,46 2.734,64
31 o7_2 -107 116,95 14.419,99 0 116,95 605,39
32 o7 -107 131,65 14.404,38 0 131,65 2.936,49
33 RSyn0805H 0 -7.174,22 15,86 - -7.103,11 44,21
34 RSyn0805M 0 -1.296,12 1,04 0 -1.296,12 2,01
35 RSyn0805M02H 0 -2.238,40 1,52 0 -2.238,40 1,93
36 RSyn0805M02M 0 -2.238,40 11.856,04 0 -2.238,40 25,54
37 RSyn0805M03H 0 -3.068,93 2,10 0 -3.068,93 2,11
38 RSyn0805M03M 0 -3.068,93 37,60 - -2.943,42 14,61
39 RSyn0805M04H 0 -7.174,22 2,87 0 -7.174,22 3,37
40 RSyn0805M04M 0 -7.174,22 16,05 - -7.103,11 44,24
41 RSyn0810H 0 -6.581,93 20,93 0 -6.581,94 98,42
42 RSyn0810M 0 -1.721,45 1,01 0 -1.721,45 1,45
43 RSyn0810M02H 0 -1.741,39 2,28 0 -1.738,41 2,34
44 RSyn0810M02M -107 -1.741,39 14.400,17 0 -1.741,39 151,68
45 RSyn0810M03H 0 -2.722,45 3,19 0 -2.722,45 6,67
46 RSyn0810M03M -107 -2.722,45 14.400,73 - -2.619,98 49,74
47 RSyn0810M04H 0 -6.581,94 3,67 0 -6.581,94 5,39
48 RSyn0810M04M 0 -6.581,93 20,89 0 -6.581,94 98,22
49 RSyn0815H -107 -3.392,73 14.400,12 0 -3.410,85 3.335,67
50 RSyn0815M 0 -1.269,93 1,21 0 -1.269,93 2,12
51 RSyn0815M02H 0 -1.774,40 1,34 0 -1.774,40 3,03
52 RSyn0815M02M -107 -1.774,40 14.400,12 0 -1.774,40 70,16
53 RSyn0815M03H 0 -2.827,93 3,58 0 -2.827,93 6,52
54 RSyn0815M03M -107 -2.820,93 14.416,22 0 -2.827,93 172,21
Continua na prxima pgina
80
Tabela 7.1: Resultados computacionais de Muriqui e BONMIN
(continuao da pgina anterior ).
81
Tabela 7.1: Resultados computacionais de Muriqui e BONMIN
(continuao da pgina anterior ).
AE, Seo 6.2), ao passo que o algoritmo utilizado por BONMIN o algoritmo h-
O tempo mximo de execuo nos dois aplicativos foi ajustado em quatro horas para
82
cada instncia de teste.
temos a numerao das instncias de teste, seguido de seu nome e das colunas
referentes aos resultados de cada pacote. Para cada pacote, temos o cdigo de
retorno oferecido pela sua aplicao (Cod), o valor da funo objetivo na soluo
Muriqui capaz de convergir para uma soluo tima, o cdigo de retorno gerado
pelo mesmo zero (sucesso). Caso contrrio, um cdigo de erro diferente de zero
gerado. Nestes casos, a coluna Soluo traz o valor da soluo (funo objetivo) na
melhor soluo vivel encontrada ou - quando nenhuma soluo vivel foi obtida
nas condies dadas. Os cdigos de erro mais comuns so -107 (tempo mximo
traz uma tabela com todos os cdigos de retorno utilizados por Muriqui. Quando
A Tabela 7.2 traz a compilao dos resultados da Tabela 7.1. A segunda linha
ao menos uma soluo vivel e, nalmente, a quarta linha informa o nmero de ins-
tncias onde cada pacote foi mais efetivo que o outro, segundo nosso critrio de
efetividade apresentado na Seo 2.4. Podemos perceber que Muriqui foi mais efe-
tivo que BONMIN em 96 instncias (63,2%), ao passo que BONMIN foi mais efetivo
empreitada.
83
Captulo 8
Concluses
avanos desta j amadurecida rea de pesquisa. Esta abordagem que tambm faz
tretanto, que esse conjunto de instncias de teste apresenta apenas variveis binrias
necessrios para traar o perl dos problemas que podem ser melhor abordados com
BB, caso esse perl realmente exista, o que exige a coleta de mais instncias de teste
para anlise. Esta busca por novas instncias de teste uma tarefa um tanto quanto
84
incio promissor (warm start ) mais apuradas. A utilizao destes elementos em uma
forma mais renada que a deste estudo pode melhorar sensivelmente o desempenho
do algoritmo de branch-and-bound.
Embora no tenham sido capazes de superar o desempenho geral de AE, nossas
possvel perl de problemas onde nossas abordagens sejam mais efetivas do que as
disponvel para realizar esta pesquisa de mestrado, no foi possvel sequer avaliar
estudos, que devem ser realizados futuramente, podero melhorar os resultados aqui
cional para PNLIM aberto, o solver Muriqui. Muriqui tem como misso agregar
trabalhos. Embora esse curso de mestrado se encerre com a aprovao dessa disser-
Pretendemos por meio deste solver atender necessidades no supridas por outros
PNLIM que conta com a colaborao de alguns dos maiores pesquisadores do mundo
Em resumo, a grande carga de trabalho contida neste estudo serviu para indi-
car que muito mais esforo necessrio em novas pesquisas nessa rea to pouco
explorada. Esperamos, com esse estudo, ter dado uma humilde contribuio para a
85
Referncias Bibliogrcas
[1] BONAMI, P., BIEGLER, L. T., CONN, A. R., et al. An algorithmic framework
[3] BONAMI, P., KILIN, M., LINDEROTH, J. Algorithms and Software for Con-
vex Mixed Integer Nonlinear Programs. Relatrio Tcnico 1664, Computer
Sciences Department, University of Wisconsin-Madison, 2009.
dels and Algorithms for Large-Scale Supply Chain Design with Stochastic
<http://pubs.acs.org/doi/abs/10.1021/ie800257x>.
org/10.1007/BF02592064>. 10.1007/BF02592064.
[7] LEYFFER, S., LINDEROTH, J., LUEDTKE, J., et al. Applications and
<http://stacks.iop.org/1742-6596/180/i=1/a=012014>.
86
[8] GEOFFRION, A. M. Generalized Benders decomposition, Journal of Optimi-
zation Theory and Applications, v. 10, pp. 237260, 1972. ISSN: 0022-
10.1007/BF00934810.
[9] BORCHERS, B., MITCHELL, J. E. An improved branch and bound al-
cfm?id=185620.185621>.
[10] LEYFFER, S. Integrating SQP and Branch-and-Bound for Mixed Integer Non-
<http://dl.acm.org/citation.cfm?id=380781.380829>.
[11] QUESADA, I., GROSSMANN, I. An LP/NLP based branch and bound al-
sciencedirect.com/science/article/pii/0098135492800288>. An
sciencedirect.com/science/article/pii/009813549587027X>. Eu-
10.1007/s10589-005-3076-x.
s101070050103>. 10.1007/s101070050103.
[15] GU, Z., ROTHBERG, E., BIXBY, R. Gurobi 4.6.1. software, dez. 2011.
87
[16] ILOG CPLEX. Disponvel em: <http://www.ilog.com/products/
cplex/>.
DMTools/Pages/FICO-Xpress-Optimization-Suite.aspx>.
10.1007/978-1-4614-1927-3_4.
[19] LEE, S., GROSSMANN, I. E. New algorithms for nonlinear generalized dis-
article/pii/S0098135400005810>.
10.1023/A:1025154322278.
sciencedirect.com/science/article/pii/0098135493E00107>. An
doi.org/10.1007/s10107-003-0395-5>. 10.1007/s10107-003-0395-5.
BF01581153>. 10.1007/BF01581153.
88
[24] BENDERS, J. F. Partitioning procedures for solving mixed-variables program-
s10287-004-0020-y>. 10.1007/s10287-004-0020-y.
[26] LI, D., SUN, X. Mixed-Integer Nonlinear Programming. In: Nonlinear Integer
Programming, v. 84, International Series in Operations Research & Mana-
gement Science, Springer US, pp. 373395, 2006. ISBN: 978-0-387-32995-
6. Disponvel em: <http://dx.doi.org/10.1007/0-387-32995-1_13>.
10.1007/0-387-32995-1_13.
link.aip.org/link/?SMM/8/703/1>.
cheme.cmu.edu/ibm/page.htm>.
10.1007/s10107-004-0559-y.
[30] LAND, A. H., DOIG, A. G. An Automatic Method of Solving Discrete Pro-
1910129>.
1533.abstract>.
em: <http://books.google.com.br/books?id=x7RvQgAACAAJ>.
89
[33] NOCEDAL, J., WRIGHT, S. Numerical optimization. Springer series in ope-
<http://books.google.com.br/books?id=epc5fX0lqRIC>.
science/article/pii/S0377221705002456>.
//joc.journal.informs.org/content/6/4/445.abstract>.
[36] BONAMI, P., GONALVES, J. Heuristics for convex mixed integer nonli-
s10589-010-9350-6>. 10.1007/s10589-010-9350-6.
[38] FISCHETTI, M., GLOVER, F., LODI, A. The feasibility pump, Mathematical
Programming, v. 104, pp. 91104, 2005. ISSN: 0025-5610. Disponvel em:
<http://dx.doi.org/10.1007/s10107-004-0570-3>. 10.1007/s10107-
004-0570-3.
[39] BONAMI, P., CORNUJOLS, G., LODI, A., et al. A Feasibility Pump for
org/10.1007/s10107-008-0212-2>. 10.1007/s10107-008-0212-2.
[40] LIBERTI, L., MLADENOVI, N., NANNICINI, G. A recipe for nding good
org/10.1007/s12532-011-0031-y>. 10.1007/s12532-011-0031-y.
1002/9780470400531.eorms0527>.
90
[42] MAKHORIN, A. GLPK: GNU Linear Programming Kit. Disponvel em:
<http://www.gnu.org/software/glpk/>.
com/>.
em: <http://www.ampl.com/>.
[45] MELO, W., FAMPA, M., RAUPP, F. Evoluo Diferencial Aperfeioada para
91
Apndice A
Instncias de teste
lizadas neste trabalho foram retiradas de [28]. Todas as instncias possuem apenas
traz detalhes sobre cada problema. A coluna nx traz o nmero de variveis con-
G(x, ) = m
P nl
i=1 i gi (x). Uma vez que informaes sobre as solues timas no so
disponibilizadas em [28], a coluna Melhor Sol traz o melhor valor conhecido (funo
92
Tabela A.1: Informaes sobre as instncias de teste (continua-
o da pgina anterior )
93
Tabela A.1: Informaes sobre as instncias de teste (continua-
o da pgina anterior )
94
Tabela A.1: Informaes sobre as instncias de teste (continua-
o da pgina anterior )
95
Apndice B
Cdigos de retorno
Cdigo Situao
2 Aplicao de heurstica bem sucedida
1 Convergncia de evoluo diferencial
0 Soluo tima encontrada
-101 Problema invivel
-102 Problema ilimitado
-103 Algoritmo no aplicvel
-104 Inconsistncia de denio
-105 Erro de memria
-106 Erro indenido
-107 Parada por tempo mximo
-108 Parada por nmero mximo de iteraes
-109 Erro de funo de avaliao
-110 Parada por solicitao do usurio
-111 Erro no pacote PLIM
-112 Erro no pacote PNL
-113 Soluo inicial invlida
-114 Erro no algoritmo PNLIM
-115 Falha de heurstica
-116 Erro de falta de progresso
96