• Nenhum resultado encontrado

5.4 Algoritmo Predador-Presa

5.4.2 Partículas batedoras

O optimizador predador-presa, só por si, é já um OEP heterogéneo, uma vez que a partícula predador é actualizada usando uma equação diferente da utilizada pelo en- xame. No OPPB existe, no entanto, um segundo nível de heterogeneidade, dada a inclusão de partículas batedoras no enxame. As partículas batedoras, ou batedores, são um subconjunto do enxame que implementa estratégias de exploração diferentes da utilizada pelo enxame principal. Tal como o predador, têm uma inspiração bioló- gica, já que é comum, tanto em enxames de abelhas, como em colónias de formigas, existirem elementos batedores, com comportamentos específicos, cujos resultados são posteriormente aproveitados pelo grosso da colónia/enxame.

Na forma em que as idealizámos, as partículas batedoras podem ser utilizadas tanto para introduzir aperfeiçoamentos no algoritmo global, por exemplo um sub-algoritmo de procura local, como para implementar mecanismos dependentes do problema. Es- tes permitem melhor adaptar o algoritmo para um problema específico, sem alterar todo o comportamento do enxame, já que não modificam directamente as regras de actualização gerais.

Uma vez que a interacção com o enxame principal é feita essencialmente através da partilha do melhor valor encontrado pelas partículas, a introdução de batedores, mesmo que o seu comportamento individual não seja produtivo, não vai perturbar substanci- almente o comportamento global do enxame. Neste sentido, a utilização de partículas batedoras constitui uma forma muito flexível de introduzir novas capacidades no algo- ritmo de optimização, ou mesmo de o hibridizar com um optimizador completamente diferente.

Para ilustrar esta ideia, iremos utilizar três partículas batedoras para melhorar o de- sempenho do algoritmo predador-presa em problemas de optimização contínua. O funcionamento dessas partículas é descrito nos algoritmos 5.5, 5.6 e 5.7 e discutido nas próximas três subsecções. Na nossa implementação, estas partículas são actuali- zadas pelas suas próprias regras antes do ciclo geral de actualização do enxame. De um ponto de vista prático, uma partícula batedora pode ser, numa mesma iteração do enxame, actualizada pelas suas próprias regras e pela regra geral do enxame, embora frequentemente tal seja evitado, poupando assim avaliações da função objectivo.

Batedor que realiza procura local

A estratégia de procura escolhida para o primeiro batedor que vamos utilizar consiste na utilização de uma forma de procura local, que já sabemos ser uma forma comum de hibridização em muitos algoritmos de optimização evolucionários, sendo estes híbridos frequentemente chamados algoritmos meméticos. Seleccionamos para batedor a melhor partícula do enxame, já que é em torno desta que é mais promissor fazer uma procura local.

Algoritmo 5.5 Algoritmo para uma partícula batedora que realiza uma procura local.

1: . . . 2: . . . 3: . . .

4: para cada partícula i faz

5: se f(pi) < f (pg) então 6: g i 7: fim se 8: fim para 9: d t mod m 10: x0 p g 11: x0d x0 d+ n(0, ) 12: se f(x0) < f (p g) então 13: pg x0 14: s s + 1 15: fim se 16: se ((t + 1) mod 100) = 0 então 17: se s > 20 então 18: ⇥ 2 19: senão se s < 20 então 20: ÷ 2 21: fim se 22: s 0 23: fim se 24: . . . 25: . . . 26: . . .

Em cada iteração do algoritmo é realizada uma mutação aleatória numa das dimensões de pg, pgd, usando a equação (5.14), onde n(0, ) é um número aleatório com distribui-

5.4. ALGORITMO PREDADOR-PRESA 91 somente se f(p0

g) < f (pg), i.e., se a posição resultante for melhor do que a anterior.

p0gd = pgd+ n(0, ) (5.14)

O parâmetro tem como valor inicial xmax/10 e é actualizado durante a execução

utilizando a regra do 1/5 frequentemente usada nas estratégias evolutivas [Beyer and Schwefel, 2002]. Depois de cada 100 iterações, é dobrado se a taxa de sucesso da mutação for superior a 1/5 e é reduzido para metade no caso contrário. Este mecanismo de mutação permite que uma procura local seja feita em torno de pg ao longo do tempo.

Note-se que, embora esta seja uma estratégia simples (mas mesmo assim capaz de bons resultados, como veremos), na prática poderia ser substituída por qualquer outra estratégia de procura local, de qualquer nível de sofisticação, sem alterar o restante do algoritmo.

Batedor que realiza procura por oposição

A segunda partícula batedora utiliza uma regra de actualização inspirada pela apren- dizagem baseada em oposição5 [Tizhoosh, 2005]. A ideia central por trás da ABO é

que por vezes pode ser útil considerar, não apenas uma determinada posição no espaço de procura, mas também a posição oposta. Esta heurística mostrou-se inicialmente útil em tarefas de aprendizagem, acelerando algoritmos de aprendizagem por reforço e de treino de redes neuronais por retro-propagação do erro [Ventresca and Tizhoosh, 2006]. Posteriormente foram desenvolvidas extensões dos algoritmos de optimização por enxames de partículas [Wang et al, 2007] e de evolução diferencial [Rahnamayan et al, 2008], as quais mostraram melhorias significativas em relação aos algoritmos base. Para esta partícula seleccionamos a partícula com pior avaliação, pw, com base na

ideia de que a área oposta à posição actual da pior partícula pode constituir uma área interessante para explorar. Calculamos a posição oposta p0

w utilizando a equação (5.6)

para cada dimensão d, sendo que hde ldrepresentam, respectivamente, o valor máximo

e mínimo do enxame nessa dimensão (linhas 8-15 do algoritmo 5.6). Mais uma vez pw

é apenas actualizado para p0

w se f(p0w) < f (pw).

p0wd = hd+ ld u(0, 1)pwd (5.15)

Algoritmo 5.6 Algoritmo para uma partícula batedora que realiza uma procura ba- seada em oposição.

1: . . . 2: . . . 3: . . .

4: para cada partícula i faz 5: se f(pi) > f (pw)então

6: w i

7: fim se

8: para cadadimensão d faz 9: se xid > hd então 10: hd xid 11: fim se 12: se xid < ld então 13: ld xid 14: fim se 15: fim para 16: fim para

17: para cada dimensão d faz 18: x0 d ud+ ld u(0, 1)pwd 19: fim para 20: se f(x0) < f (p w)então 21: pw x0 22: fim se 23: se f(x0) < f (p g) então 24: g w 25: fim se 26: . . . 27: . . . 28: . . .

Batedor que utiliza conhecimento específico sobre o problema

O terceiro batedor que iremos utilizar em algumas das experiências realizadas, em vez de utilizar mecanismos genéricos para melhorar o desempenho do optimizador, procura capitalizar o conhecimento específico sobre o problema para o fazer. Para simular esta situação, iremos deslocar o óptimo de algumas função de teste, de maneira a que em cerca de 80% das dimensões este seja 0, em cerca de 10% se encontre em xmax, e nos

5.4. ALGORITMO PREDADOR-PRESA 93 O batedor aproveita este conhecimento deslocando uma diferente dimensão da partícula batedora, em cada iteração, para um dos extremos do domínio, tal como é descrito no algoritmo 5.7 (linhas 9-15). Para este batedor escolhemos a segunda melhor partícula do enxame (linhas 4-8 do algoritmo 5.7).

A utilização deste batedor cumpre um objectivo duplo. Por um lado, permite investigar se a adição de uma partícula batedora baseada em informação sobre o problema é viável, no sentido de produzir uma melhoria de desempenho que compense as avaliações adicionais da função a optimizar. Por outro lado, permite-nos simular as vantagens deste tipo de partícula para o nosso problema em particular, a optimização de máquinas de vector de suporte. Isto porque a situação sintética criada, nomeadamente a colocação de 80% do vector solução a 0, e apenas 10% de valores espalhados pelo domínio, mimetiza o tipo de soluções típicas das MVS.

Algoritmo 5.7Algoritmo para uma partícula batedora específica para problemas com soluções nos extremos do espaço de procura.

1: . . . 2: . . . 3: . . .

4: para cada partícula i faz

5: se i 6= g e f(pi) < f (pk)então 6: k i 7: fim se 8: fim para 9: d t mod m 10: x0 p k 11: se u(0, 1) > 0.8 então 12: x0 d xmax 13: senão 14: x0d 0 15: fim se 16: se f(x0) < f (p k) então 17: pk x0 18: fim se 19: se f(x0) < f (p g) então 20: g k 21: fim se 22: . . . 23: . . . 24: . . .