alternativ 2.4 og 2.1
7. Diskusjon
7.4. Hvordan kan planprosessene for hovedveger forbedres?
Como Benoist et al. (2011) notaram, o maior obst´aculo encontrado na execu¸c˜ao de uma busca local para Programas Bin´arios ´e a detec¸c˜ao autom´atica de relacionamentos entre as vari´aveis de decis˜ao. Programas Bin´arios s˜ao normalmente modelados com um grande n´umero de vari´aveis de decis˜ao e de vari´aveis auxiliares, de modo que ´e bem prov´avel que a altera¸c˜ao do valor de uma vari´avel por vez produzir´a somente solu¸c˜oes infact´ıveis. Dessa forma, ´e necess´ario desenvolver m´etodos para detectar vari´aveis relacionadas e alterar seus valores simultaneamente, de modo que seja poss´ıvel corrigir uma solu¸c˜ao in- fact´ıvel ou saltar de uma solu¸c˜ao fact´ıvel para outra. A detec¸c˜ao e altera¸c˜ao de vari´aveis relacionadas ´e chamada de cadeia de movimentos.
Como exemplo, considere o Programa Bin´ario PB da se¸c˜ao anterior. Uma solu¸c˜ao que poderia ser retornada pelo m´etodo construtivo ´e a ativa¸c˜ao das vari´aveis x1 e x4,
com custo 17. Uma vez que essa ´e uma solu¸c˜ao fact´ıvel, um m´etodo que utiliza uma busca local que inverte (f lip) o valor de uma vari´avel por vez pode ficar preso em um ´otimo local, cercado de solu¸c˜oes infact´ıveis. Um resolvedor inteligente, ao tentar ativar a vari´avel x2, por exemplo, poderia detectar automaticamente que x1 e x4 deveriam ser
desativadas, para remover os conflitos causados nas restri¸c˜oes 4.7 e 4.10. Al´em disso, outra vari´avel deve ser ativada para satisfazer a restri¸c˜ao 4.8, por exemplo x3. Assim,
ao tentar ativar a vari´avel x2, o resolvedor poderia detectar uma cadeia de movimentos:
x2 → {x1, x4} → x3. Cada movimento representa uma invers˜ao (ou flip) do valor da
26
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao de Programas Bin´arios
anterior. Essa cadeia de movimentos gerada produz uma solu¸c˜ao melhor, de custo 16. O Algoritmo 4.1 descreve a implementa¸c˜ao desenvolvida para detectar uma cadeia de movimentos. Esse algoritmo realiza um backtracking com profundidade d e largura limitada f . Em cada recurs˜ao, um conjunto ˆJ de vari´aveis tˆem seus valores inverti- dos: a vari´avel atual j e todas as vari´aveis conflitantes a ela, se j for ativada. Essas vari´aveis s˜ao colocadas em um estado “congelado” (conjunto S) nesta e nas itera¸c˜oes seguintes. Vari´aveis que devem ter seus valores invertidos s˜ao escolhidas de um con- junto ˜J. Somente as vari´aveis que aparecem no conjunto de restri¸c˜oes C podem ajudar a corrigir novas infactibilidades. Essas s˜ao as vari´aveis candidatas a compor a cadeia de movimentos, denotadas por ˜j, que s˜ao avaliadas em rela¸c˜ao `a quantidade de infac- tibilidade que conseguem diminuir ao terem seus valores invertidos. Os valores obtidos pela avalia¸c˜ao das vari´aveis candidatas s˜ao armazenados nas vari´aveis e˜j. As vari´aveis
mais promissoras s˜ao avaliadas recursivamente nas linhas 18 a 22 e se o efeito final for positivo (diminui¸c˜ao da infactibilidade), elas s˜ao inseridas no conjunto J∗ de cadeias de movimentos recomendados, atualizando a melhor cadeia de movimentos encontrada at´e o momento. A computa¸c˜ao eficiente de e˜j ´e a chave para o sucesso do m´etodo, uma vez
que valores grandes para d e f poderiam resultar em tempos computacionais proibiti- vos. Nesse sentido, observou-se que tamb´em ´e necess´ario incluir, nessa avalia¸c˜ao, uma prioridade maior para as vari´aveis que diminuam infactibilidades em restri¸c˜oes com um n´umero reduzido de candidatos.
A implementa¸c˜ao da busca local realiza sucessivas chamadas do Algoritmo 4.1 (chain-
Flip), utilizando vari´aveis selecionadas aleatoriamente. Os crit´erios de parada s˜ao o
n´umero de itera¸c˜oes sem melhora e o tempo de execu¸c˜ao. Se a solu¸c˜ao continuar in- fact´ıvel, a busca se concentra em vari´aveis contidas em restri¸c˜oes que ainda n˜ao foram satisfeitas. Nesse caso, uma restri¸c˜ao que ainda n˜ao foi satisfeita ´e selecionada, e ent˜ao uma de suas vari´aveis ´e selecionada, ambas de forma aleat´oria. Uma cadeia de movi- mentos ´e aceita de acordo com a regra do m´etodo RNA (Randomized Non-Ascendent
Method ), ou seja, esta cadeia de movimentos s´o ´e aceita se o valor da fun¸c˜ao objetivo
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao
de Programas Bin´arios 27
Algoritmo 4.1: Algoritmo chainFlip para gerar cadeias de movimentos. Entrada:
x: solu¸c˜ao atual;
j: vari´avel cujo valor ser´a invertido; J: vari´aveis com valores j´a invertidos; C: restri¸c˜oes a serem verificadas; S: vari´aveis “congeladas”;
d: profundidade corrente; d: profundidade m´axima;
f: n´umero m´aximo de invers˜oes de valores por chamada recursiva (largura m´axima);
Sa´ıda: (z∗, J∗): custo e vari´aveis da melhor cadeia de movimentos encontrada. se d ≥ d ent˜ao retorne (∞, ∅) 1 ˆ J = {j}; 2 se xj = 0 ent˜ao 3
S ← S ∪ {j′}, ∀j′ : j tem conflito com j′;
4
ˆ
J ← ˆJ∪ {j′}, ∀j′ : j tem conflito com j′ e xj′ = 1;
5 x′ = x; 6 para j′ ∈ ˆJ fa¸ca 7 x′j = 1 − x′j 8 J ← J ∪ ˆJ; 9 z∗ ← f (x′); 10 J∗ ← J; 11
C← C ∪ {i}, ∀i: i ´e uma restri¸c˜ao onde uma ou mais vari´aveis de ˆJ aparecem;
12
˜
J ← j, ∀j: j ´e uma vari´avel que aparece em alguma restri¸c˜ao do conjunto C e n˜ao
13 est´a em S; e˜j = 0, ∀˜j ∈ ˜J; 14 para ˜j ∈ ˜J fa¸ca 15
calcule o impacto e˜j de inverter a vari´avel ˜j, considerando as restri¸c˜oes de C; 16
para k = 1 at´e min(f , | ˜J|) fa¸ca
17
˜j ← vari´avel de ˜J com o k−´esimo melhor e˜j; 18 (z′, J′) ← chainFlip(x′, ˜j, J, C, S, d+ 1, d, f ); 19 se z′ < z∗ ent˜ao 20 z∗ ← z′; 21 J∗ ← J; 22 retorne (z∗, J∗); 23
Cap´ıtulo 5
Experimentos Computacionais
Todo o trabalho foi desenvolvido na linguagem de programa¸c˜ao C/C++ e compilado com o GCC/G++ vers˜ao 4.6.3. Foram utilizadas as bibliotecas de c´odigo aberto do
COIN-OR, que permitem a leitura, cria¸c˜ao e manipula¸c˜ao de Problemas de Programa¸c˜ao
Inteira, al´em da integra¸c˜ao com resolvedores para esse paradigma (Lougee-Heimer, 2003). Os experimentos foram executados em um computador Core i7 3.4GHz com 16 GB de
RAM sobre o sistema operacional Linux Ubuntu 12.04 64-bits. As pr´oximas se¸c˜oes
apresentam as caracter´ısticas das instˆancias trabalhadas, bem como os experimentos realizados.
5.1
Caracteriza¸c˜ao das instˆancias
Foram utilizados trˆes conjuntos de instˆancias nos experimentos computacionais. O pri- meiro conjunto apresenta instˆancias de benchmark da MIPLIB 2010 (Koch et al., 2011), contendo 87 instˆancias. Desde a sua introdu¸c˜ao em 1992, a MIPLIB tornou-se uma biblioteca padr˜ao de testes, usada para comparar o desempenho dos resolvedores de PI. Ela cont´em uma cole¸c˜ao de problemas reais, sendo na maior parte aplica¸c˜oes industri- ais. O segundo conjunto de instˆancias foi obtido da formula¸c˜ao usada por Santos et al. (2014) para resolver problemas da International Nurse Rostering Competition (INRC) (Haspeslagh et al., 2014), contendo 60 instˆancias. Trata-se de uma competi¸c˜ao realizada para incentivar e comparar pesquisas relacionadas ao Problema de Escalonamento de Enfermeiras. O terceiro conjunto consiste de problemas de planejamento de rotas para o Telebus (Bornd¨orfer et al., 1999), um servi¸co de transporte de pessoas com deficiˆencia
30 Experimentos Computacionais
f´ısica localizado em Berlim, contendo 28 instˆancias. Esses problemas apresentam for- mula¸c˜oes de PI baseadas no problema de particionamento de conjuntos.
Todos os conjuntos de instˆancias foram escolhidos com o intuito de diversificar a experimenta¸c˜ao, utilizando instˆancias que possam produzir desde grafos de conflitos ricos em informa¸c˜ao (densos) at´e grafos com pouca informa¸c˜ao (esparsos). Al´em disso, todas as instˆancias representam problemas de minimiza¸c˜ao. A Tabela 5.1 apresenta um resumo sobre as caracter´ısticas dos conjuntos de instˆancias utilizados: a coluna Qtde
Instˆancias indica o n´umero de instˆancias presentes no conjunto, Restri¸c˜oes o n´umero de restri¸c˜oes, Vari´aveis o n´umero de vari´aveis de decis˜ao, Bin´arias o n´umero de vari´aveis de decis˜ao bin´arias e Nzs o n´umero de elementos n˜ao-nulos que aparecem na matriz de restri¸c˜oes. As nota¸c˜oes min, max e med indicam valores m´ınimos, m´aximos e m´edios para cada uma dessas caracter´ısticas. Uma descri¸c˜ao mais detalhada das instˆancias ´e dada no Apˆendice A.1.
Tabela 5.1: Resumo das caracter´ısticas dos conjuntos de instˆancias.
Dimens˜ao Conjunto
MIPLIB INRC Telebus
Qtde Instˆancias 87 60 28
min 32 3.032 338
Restri¸c˜oes max 624.166 29.210 1.771
med 32.077,91 11.249,00 1.202,50
min 100 9.783 1.814
Vari´aveis max 164.547 63.620 146.715
med 13.755,10 28.785,45 44.709,11
min 0 9.783 1.814
Bin´arias max 129.180 63.620 146.715
med 8.682,79 28.785,45 44.709,11
min 666 201.123 3.119
Nzs max 27.678.735 1.068.150 545.337
Experimentos Computacionais 31