1. HALKLA ĠLĠġKĠLER KAVRAMI ve TURĠZM ĠġLETMELERĠNDE
2.4. Turizmde Tanıtım Araçları
algoritmos disponíveis na literatura: o AG com Elitismo (GLOVER; KOCHENBERGER, 2003; MITCHELL, 1998) e o PSO (KENNEDY; EBERHART, 1995), motivo pelo qual estes dois algoritmos serão prontamente apresentados neste Capítulo.
5.2 PARTICLE SWARM OPTIMIZATION
Uma das grandes vantagens do PSO frente a outros algoritmos existentes na literatura se resume no fato de que esta técnica estocástica pode ser facilmente implementada computacionalmente, se destacando por ser rápida e eficiente nos mais diversos tipos de problemas de otimização encontrados na literatura (KENNEDY; EBERHART; SHI, 2001).
Proposto por Kennedy e Eberhart (1995), o PSO é um algoritmo inspirado e formulado a partir de observações no comportamento de um bando qualquer de pássaros. O mecanismo de otimização implementado no PSO se baseia na busca por alimentos e na interação entre as aves durante o voo. Fazendo analogia a um problema de otimização, uma determinada área sobrevoada por pássaros é equivalente a um espaço de busca enquanto que o local em que a comida é encontrada é o mesmo que encontrar uma solução ótima para o problema. Os pássaros são normalmente chamados de partículas (variáveis do problema) e devem fazer uso da experiência adquirida pelo próprio bando com o intuito de se determinar a melhor região no espaço de busca (KENNEDY; EBERHART; SHI, 2001).
Para uma formulação matemática para o PSO, inicialmente considere um espaço de busca de dimensão n. Suponha que cada partícula i no espaço de busca possa ser representada de acordo com sua posição atual xi(t) = [xi1(t), xi2(t), · · ·, xin(t)] e sua respectiva velocidade
vi(t) = [vi1(t), vi2(t), · · ·, vin(t)]. Durante o processo iterativo no espaço de busca, a cada passo
t, a posição atual de cada partícula é medida através de uma função objetivo (devidamente mostrada na equação (175)). A partir da análise da função de avaliação é verificado a cada passo t se a posição da partícula na iteração t é melhor que as demais verificadas anteriormente. Caso isso ocorra, a posição dessa partícula é armazenada no vetor Pbesti (t) = [Pi
best1(t), P i
best2(t), · · ·, P i
bestn(t)]. No decorrer do processo iterativo, a cada melhor avaliação fitness, este vetor é atualizado. Por fim, a melhor posição encontrada medida pela função de avaliação armazenada em Pbesti (t) é armazenada no vetor chamando Gbest. A função de Gbest
é influenciar diretamente no movimento de todas as partículas, direcionando-as na direção do melhor fitness a cada iteração do processo de busca.
No PSO, o que determina o movimento de uma determinada partícula i no passo(t + 1) é a sua velocidade vi(t) e pode ser analisada na equação (164).
Na equação (164), r1 e r2 são distribuições aleatórias entre 0 e 1. No mais, c1 e c2 são
denominadas constantes de aceleração e são responsáveis por ponderar o fator cognitivo coi(t)
e fator social soi(t), respectivamente.
O fator cognitivo e o fator social mostrados na equação (164) são representados pelas equações (165) e (166).
coi= Pbesti(t) − xi(t) (165)
soi= Gbest− xi(t) (166)
Nas equações (165) e (166) o fatores cognitivos (coi) estão relacionados com cada um
dos indivíduos com sua respectiva melhor posição (Pbesti(t)), os fatores sociais (soi) estão
relacionados com a melhor posição encontrada entre todos os indivíduos do enxame (Gbest)
e xi(t) é o vetor posição da partícula i na iteração t. No passo (t + 1), a posição da partícula
(xi(t + 1)) é atualizada conforme equação (168).
xi(t + 1) = xi(t) + vi(t + 1) (167)
Para exemplificar o deslocamento de uma partícula (xi(t)) após a iteração no algoritmo PSO
(xi(t + 1)), é apresentada a Figura 28.
Figura 28 - Deslocamento da posição de uma partícula.
xi(t) vPbesti vi(t) v(t + 1) vGbest xi(t + 1)
Fonte: Adaptado de Yoshida et al. (2000).
Na Figura 28, vi(t) é a velocidade corrente da partícula, enquanto que vPbesti e vGbest são as velocidades relacionadas a melhor posição individual e global das partículas do enxame.
Para melhorar o desempenho do PSO, Shi e Eberhart (1998) propuseram a introdução de um fator w, denominado fator de inércia, com o propósito de controlar o impacto das velocidades sobre as partículas do PSO. Segundo os autores, para melhor performance do algoritmo na busca de um ótimo local o ideal é considerar 0, 50 ≤ w ≤ 1, 50. Segundo Shi e Eberhart (1998)
5.2 PARTICLE SWARM OPTIMIZATION 89
o fator de inércia pode ser obtido a partir da equação (168). w= wmax− wmin
tmax
t (168)
Na equação (168) wmaxe wminsão respectivamente os valores máximos e mínimos do fator
de inércia, cujos valores são atribuídos de acordo com o problema de otimização. tmaxé número
máximo de iterações e t refere-se a iteração corrente utilizado no algoritmo.
Desta forma, conforme Shi e Eberhart (1998), pode-se rescrever a equação (164) de acordo com a equação (169).
vi(t + 1) = wvi(t) + c1r1coi(t) + c2r2soi(t) (169)
Em relação as constantes c1 e c2(constantes de aceleração) descritas na equações (164) e
(169), Bratton e Kennedy (2007) afirmam que se c1+ c2> 4, 0 a convergência do algoritmo
pode ser mais eficiente, sendo recomendado em muitas aplicações c1+ c2≈ 4, 0.
A partir da definição da equação de velocidade mostrada na equação (169) é recomendável que a velocidade inerentes as partículas (vi(t)) seja fixada em um intervalo predeterminado
[−vmax, vmax]. Isto se faz necessário, uma vez que pretende-se reduzir a probabilidade de que a
partícula possa sair do seu referido espaço de busca. Considere que para um dado problema de otimização o espaço de busca seja determinado em[−xmax, xmax] (valores mínimos e máximos
permitidos para uma partícula). Então, o valor de vmax é tipicamente ajustado de modo que
vmax= kpso· xmax, onde 0, 1 ≤ kpso≤ 1, 0 (CORNE; DORIGO; GLOVER, 1999).
O controle da velocidade e da posição de cada partícula no PSO é realizado segundo equações (170) e (171). vi(t + 1) = vi(t + 1) se −vmax ≤ vi(t + 1) ≤ vmax −vmax se vi(t + 1) < −vmax vmax se vi(t + 1) > vmax (170) xi(t + 1) = xi(t) + vi(t + 1) se xmin≤ xi(t) + vi(t + 1) ≤ xmax xmin se xi(t) + vi(t + 1) < xmin xmax se xi(t) + vi(t + 1) > xmax (171)
Nas equações (170) e (171) vmax é a velocidade máxima, enquanto que xmax e xmin são
respectivamente os valores máximos e mínimos para cada partícula pode assumir no problema de otimização.
Na simulações que foram realizadas neste trabalho, foram considerados c1= c2= 2, 05;
npop= 20 partículas.
No Algoritmo 1 é mostrado um pseudocódigo do PSO utilizado neste trabalho. Algoritmo 1 Particle Swarm Optimization
1: Especificar Parâmetros:w, c1, c2, xmin, xmax, vmax, npop; t← 0;
2: Determinar xi(0) e vi(0);
3: Determinar a função objetivo de todas as partículas: f(xi);
4: if f(xi(t + 1)) ≤ f (xi(t)) then
5: Determinar Gbest = xie Pbesti= xi; 6: else
7: Pbesti = xi; 8: end if
9: while condição de parada não for satisfeita do 10: Determinar e calcular coie soi;
11: Atualizar velocidade e a posição de cada partícula: vie xi;
12: Calcular e avaliar a função objetivo: f(xi)
13: if f(xi) ≤ f (Pbesti) then 14: f(Pbesti) = xi; 15: else 16: Pbesti = Pbesti; 17: end if 18: if f(xi) ≤ f (Gbest) then 19: f(Gbest) = xi; 20: else 21: Gbest = Gbest 22: end if 23: t← t + 1; 24: end while
Na linha 9 do Algoritmo 1 a frase “condição de parada não for satisfeita” é determinada por um número máximo de cálculos da função objetivo ou ainda pelo amortecimento mínimo desejado estipulado aos autovalores de interesse. Estes detalhes serão omitidos neste Capítulo e serão prontamente apresentados no Capítulo 6.