• Sonuç bulunamadı

TACİZ VE TECAVÜZLERE YÖNELİK BASIN AÇIKLAMASI GERÇEKLEŞTİRİLDİ

As heur´ısticas gulosas e o algoritmo de subida de colina apresentados nas se¸c˜oes anteriores podem ser combinados de forma bastante simples: basta gerar uma solu¸c˜ao inicial por meio de uma das heur´ısticas gulosas e ent˜ao fornecˆe-la como entrada para o algoritmo de subida de colina. Al´em disso, esse procedimento pode ser executado repetidamente, selecionando-se, ao final, a melhor solu¸c˜ao dentre todas aquelas produzidas durante as repeti¸c˜oes.

A estrat´egia acima ´e bastante semelhante `a da meta-heur´ıstica GRASP (6, 7, 8). O GRASP ´e um procedimento iterativo gen´erico no qual, em cada itera¸c˜ao, uma solu¸c˜ao vi´avel ´e constru´ıda e depois fornecida como entrada para um procedimento de busca local; ao final do processo, a melhor solu¸c˜ao encontrada ´e retornada. A solu¸c˜ao vi´avel inicial de cada itera¸c˜ao do GRASP ´e obtida por meio de um algoritmo guloso, aleat´orio e adaptativo, que constr´oi a solu¸c˜ao incrementalmente, como segue. Supondo que cada solu¸c˜ao do conjunto de solu¸c˜oes vi´aveis V do problema em quest˜ao ´e um subconjunto de um conjunto-base B, o algoritmo guloso parte de uma solu¸c˜ao vazia e, enquanto a solu¸c˜ao corrente S n˜ao estiver completa —isto ´e, n˜ao for um elemento de V —, adiciona a S um elemento e∈ B ∖ S. A escolha do elemento e ´e feita em dois passos, um guloso e o outro aleat´orio. O primeiro passo consiste em escolher os melhores elementos de B ∖ S de acordo com alguma fun¸c˜ao de avalia¸c˜ao f, e o segundo consiste em escolher aleatoriamente um desses elementos e adicion´a-lo `a solu¸c˜ao corrente S. A ideia da fun¸c˜ao de avalia¸c˜ao f ´e que, dado um elemento e∈ B ∖ S, f(e) esteja associado `a diferen¸ca entre os valores das solu¸c˜oes parciais S∪ {e} e S; assim, por exemplo, no caso de um problema de maximiza¸c˜ao, se f(e) < f(e′), ent˜ao o elemento e ´e considerado melhor que o elemento e′, por levar (de forma precisa ou estimada) a uma solu¸c˜ao de menor valor. Observe que a fun¸c˜ao de avalia¸c˜ao f ´e adaptativa, no sentido de que o valor por ela atribu´ıdo a cada elemento do conjunto-base B pode variar entre diferentes itera¸c˜oes do algoritmo guloso, j´a que esse valor depende da solu¸c˜ao corrente S.

Observe que as heur´ısticas de ordena¸c˜ao por inser¸c˜ao ´otima e de ordena¸c˜ao via limite aproximativo n˜ao se enquadram exatamente no molde apresentado acima de procedimento a ser utilizado para a gera¸c˜ao da solu¸c˜ao inicial de cada itera¸c˜ao do GRASP. De fato, em cada itera¸c˜ao de ambas as heur´ısticas, nem todas as possibilidades de expans˜ao da solu¸c˜ao

corrente (isto ´e, nem todos os elementos do conjunto B∖S) s˜ao levadas em considera¸c˜ao, pois, no caso da primeira heur´ıstica, apenas uma coluna ´e levada em considera¸c˜ao, e, no caso da segunda heur´ıstica, apenas inser¸c˜oes ao final da solu¸c˜ao corrente s˜ao consideradas. Em ambos os casos, o motivo da escolha ´e n˜ao tornar excessivamente demorada a cons- tru¸c˜ao da solu¸c˜ao inicial de cada itera¸c˜ao do GRASP. Al´em disso, apesar das diferen¸cas, os aspectos guloso, aleat´orio e adaptativo da gera¸c˜ao da solu¸c˜ao est˜ao presentes em ambas as heur´ısticas, e por essa raz˜ao n´os daqui para a frente nos referimos aos algoritmos que implementamos como a nossa implementa¸c˜ao do GRASP para o problema SMSP e sua varia¸c˜ao de m´aximo.

4.4.1

Religa¸c˜ao de Caminho

O procedimento GRASP original pode ser incrementado por meio da opera¸c˜ao de religa¸c˜ao de caminho (path-relinking) (8, ➜4). Mais uma vez supondo que toda solu¸c˜ao vi´avel do problema em quest˜ao ´e um subconjunto de um conjunto-base B, essa opera¸c˜ao recebe duas solu¸c˜oes vi´aveis S1e S2e, partindo de S1, iterativamente adiciona/remove da solu¸c˜ao

corrente elementos da diferen¸ca sim´etrica S1⊖S2=(S1∖S2)∪(S2∖S1), at´e que a solu¸c˜ao

S2 seja atingida; em cada itera¸c˜ao, todas as poss´ıveis mudan¸cas no sentido partindo da

solu¸c˜ao corrente para a solu¸c˜ao final s˜ao avaliadas, e aquela que leva `a solu¸c˜ao de melhor valor ´e escolhida; ao final do processo, a melhor solu¸c˜ao encontrada ´e retornada. O prop´osito de se aplicar tal procedimento ´e, dadas duas boas solu¸c˜oes para um problema, tentar encontrar uma solu¸c˜ao intermedi´aria que, combinando as boas caracter´ısticas das duas solu¸c˜oes, seja melhor que ambas.

N´os n˜ao implementamos o procedimento de religa¸c˜ao de caminho como descrito acima, acreditando que ele seria custoso no contexto do problema SMSP. Entretanto, foi imple- mentada uma vers˜ao mais leve desse procedimento, em cada itera¸c˜ao da qual apenas uma modifica¸c˜ao da solu¸c˜ao corrente ´e considerada e realizada. Mais especificamente, dadas uma matriz m× n M1 e uma permuta¸c˜ao M2 das colunas de M1, o procedimento imple-

mentado parte de M1 e realiza n itera¸c˜oes, numeradas de 0 a n−1; em cada itera¸c˜ao i, se

a coluna M2[i] est´a na posi¸c˜ao j da matriz corrente M, ent˜ao as colunas i e j de M s˜ao

trocadas.

Para a utiliza¸c˜ao do procedimento acima, a nossa implementa¸c˜ao do GRASP mant´em, como sugerido na literatura (8, ➜4), um pequeno conjunto de solu¸c˜oes de elite, que ´e inicialmente vazio e nunca possui mais que max elite elementos. (O valor deste e outros parˆametros ´e discutido a seguir.) Na nossa implementa¸c˜ao, o parˆametro max elite ´e sempre maior ou igual a 1, pois a melhor solu¸c˜ao j´a encontrada ´e armazenada como uma solu¸c˜ao de elite. Toda solu¸c˜ao retornada pelo procedimento de subida de colina ´e considerada para inser¸c˜ao no conjunto de solu¸c˜oes de elite, e o crit´erio que decide a inser¸c˜ao ´e o seguinte:

1. Se o conjunto est´a vazio, a solu¸c˜ao candidata ´e inserida.

2. Se o conjunto n˜ao est´a vazio mas tem menos que max elite elementos, a solu¸c˜ao candidata ´e inserida sse for suficientemente diferente (segundo o crit´erio explicado abaixo) das solu¸c˜oes de elite que s˜ao melhores do que ela.

3. Se o conjunto possui max elite elementos, a solu¸c˜ao candidata ´e inserida sse for melhor do que pelo menos uma das solu¸c˜oes de elite e al´em disso for suficientemente diferente das solu¸c˜oes de elite que s˜ao melhores do que ela; nesse caso, a pior solu¸c˜ao de elite ´e removida do conjunto, o qual continua portanto com max elite elementos. A diferen¸ca entre duas permuta¸c˜oes M1 e M2 das colunas de uma matriz M ´e calculada

como o n´umero pares de colunas (M[i], M[j]) tais que M[i] ocorre `a esquerda de M[j] em M1 mas `a direita de M[j] em M2. Para matrizes m× n, a maior diferen¸ca entre duas

permuta¸c˜oes ´e portanto n(n − 1)/2, e duas permuta¸c˜oes s˜ao consideradas suficientemente diferentes se a diferen¸ca entre elas ´e pelo menos elite percent porcento deste m´aximo. Na nossa implementa¸c˜ao, o procedimento de religa¸c˜ao de caminho ´e utilizado a cada path relinking period itera¸c˜oes do GRASP, recebendo como origem uma solu¸c˜ao de elite escolhida aleatoriamente e como destino a solu¸c˜ao retornada pelo procedimento de subida de colina. Por restri¸c˜oes de tempo, n˜ao foram realizados experimentos formais para avaliar o benef´ıcio obtido pela utiliza¸c˜ao da opera¸c˜ao de religa¸c˜ao de caminho, e nem para calibrar os parˆametros max elite, elite percent e path relinking period. Ao inv´es disso, os seguintes valores ad hoc foram utilizados: max elite = 5, elite percent = 10 e path relinking period = 5. Entretanto, em experimentos informais (e portanto inconclusivos) com instˆancias aleat´orias, a nossa implementa¸c˜ao da opera¸c˜ao de religa¸c˜ao de caminho aparentou levar a melhorias pequenas (de 1% ou menos) e pouco frequentes em rela¸c˜ao `as solu¸c˜oes obtidas pela busca local. Por outro lado, medi¸c˜oes de tempo tamb´em informais indicaram que a opera¸c˜ao implementada ´e relativamente pouco custosa, executando mais rapidamente que ambos os algoritmos gulosos implementados.

Benzer Belgeler