Você está na página 1de 7

Particle Swarm Optimization

James Kennedy e Russell Eberhart


September 6, 2018

Abstract

1 Introduction
Este artigo introduz um método para otimizar funções contı́nuas não lineares.
Este método foi descoberto através da simulação de um modelo social
simplificado; por isto a metáfora social é discutida, porém o algoritmo se
sustenta sem tal metáfora.
Este artigo descreve o conceito do Particle Swarm Optimization (PSO)
em termos de seus precursores, revisando breve os estágios de seu desenvolvi-
mento de um simulador social até um otimizador.
A seguir, são discutidos alguns modelos que fazem parte do conceito.
Finalmente, a implementação de um dos modelos é discutida em mais
detalhes seguida de resultados obtidos de aplicações e testes do modelo que
se mostraram se desempenharam com êxito.
O PSO como desenvolvido pelos autores compreende de um conceito bem
simples e rotinas que podem ser implementadas em poucas linhas de código.
Requer apenas operações matemáticas básicas e é barato computacional-
mente em termos de memória e velocidade.

2 Simulating Social Behavior


Inúmeros cientistas criaram simulações computacionais de diversas inter-
pretações do movimento de organismos em bandos de pássaros e ”fish school”.
Mais notavelmente Reynolds e Heppener e Grenader apresentaram simulações
de bandos de pássaros.
Reynolds estava intrigado com a estética da coreografia do bando de pas-
saros e Hepner, um zoologista estava interessado em descobrir as regras que

1
permitem um grande número de pássaros voarem sincronizadamente, fre-
quentemente mudando de direção repentinamente, se seperar e agrupar e
etc.
Ambos os cientistas tiveram o insight que processos locais poderiam
ser responsáveis pela dinâmica imprevisı́vel do comportamento social dos
pássaros. Os modelos de ambos dependiam fortemente na manipulação da
distâncias entre indivı́duos, isto é, a sincronia do comportamento do bando
foi pensado como uma função do esforço dos pássaros em manter a melhor
distância possı́veis entre eles e seus vizinhos.
Assim como o Sociobiologista E. O. Wilson escreveu se referindo à ”fish
schooling” ”Pelo menos em teoria, indivı́duos da escola se beneficiam das
descobertas e experiências anteriores de todos os outros membros durante a
busca por comida. Esta vantagem se torna decisiva, superando as desvan-
tagens na competição por comida quando este recurso está distribuı́do im-
previsivelmente em trechos. Esta afirmação sugere que o compartilhamento
social de informação entre indivı́duos da mesma especie oferece vantagem
evolutiva: esta hipótese foi fundamental no desenvolvimento do PSO.

3 Precursors: The Etiology of PSO


Os agentes do algoritmo foram pensados como pássaros, sem colisões e a
proposta inicial foi simular graficamente um bando de pássaros.

3.1 Nearest Neighbor Velocity Matching and Crazi-


ness
IDEIA PRINCIPAL : nearest-neighbor velocity matching and “craziness.”
OBJETIVO: Essencialmente criar uma certa sincronia de movimento
Uma população de pássaros foi gerada aleatóriamente com uma posição
em um Toro e com velocidades X e Y aleatórias. A cada iteração do loop do
algoritmo, dado um agente A ele determinava qual era o outro agente mais
proximo a este, digamos B e designava à B as velocidades X e Y de A.
Infelizmente, o bando rapidamente estabilizou em uma direção ao qual
não mudava e era unanime entre todos os agentes. Assim, foi introduzida uma
variável aleatória craziness que a cada iteração era somada aleatoriamente à
velocidades X e Y escolhidas aleatoriamente.

2
3.2 The Cornfield Vector
A simulação de Heppner possuı́a uma caracterı́stica que introduziu uma
dinâmica à simulação. Seus pássaros se reuniam ao redor de um ”poleiro”,
uma posição no plano que os atraia até que eles finalmente ”pousassem” lá.
Isto eliminou a necessidade da variável craziness uma vez que a simulação
tinha ”vida própria”.
Enquanto os pássaros de Heppner sabiam onde o ”poleiro” deles estava,
porém, em situações reais os pásssaros pousam em qualquer arvore oi fio que
satisfaçam suas necessidades imediatas. Mais importante que isto, bandos
de pássaros pousam onde há comida. Como eles encontram comida? Parece
possı́vel que algo na dinamica do bando permite que membros de tal bando
se beneficiem no conhecimento um dos outros, como na citação de Wilson.
A segunda variação da simulação definia um ”Cornfield Vector” (Vetor
Milharal) um vetor bidimensional de coordenadas XY no plano. Cada agente
foi programado para avaliar sua posição atual em termos da equação
p p
Eval = (presentx − 100)2 + (presenty − 100)2

de maneira que na posição (100,100) este valor seria 0.


Cara agente ”lembrava” o melhor valor da função e qual posição (x,y)
resultou naquele valor. Estes valores eram guardados em pbest[], pbestx[],
pbesty[]
Bem como os agentes se moviam através do plano avaliando posições,
suas velocidades X e Y eram ajustadas de uma maneira simples.
Se ele estivesse à direita de seu pbestx, então sua velocidade X (vx) era
ajustada subtraindo um valor aleatório balanceado por um paramêtro do
sistema. vx[] = vx[] − rand() ∗ pi ncrement. Se estava à esquerda do pbestx,
rand()∗pi ncrement era adicionado à vx[]. De maneira similar, as velocidades
Y eram ajustas para cima ou para baixo dependendo se o agente estava acima
ou abaixo de seu pbesty.
Em seguida, cada agente ”sabia” a melhor posição ”global” que algum
dos membros do bando encontrou e seu valor. Isto foi feito atribuindo os
valores do melhor agente à uma matriz pbestx[gbest] sendo a coordenada X
da posição do melhor agente e pbesty[gbest] sua posição Y e esta informação
estava disponivel para todos os membros do bando.
Assim, as velocidades vx e vy de todos os agentes eram atualizadas da
seguinte maneira, onde gi ncrement é um parametro do sistema.

3
se presentx[] > pbestx[gbest] então vx[] = vx[] − rand() ∗ g increment
se presentx[] < pbestx[gbest] então vx[] = vx[] + rand() ∗ g increment

se presenty[] > pbesty[gbest] então vy[] = vy[] − rand() ∗ g increment


se presenty[] < pbesty[gbest] então vy[] = vy[] + rand() ∗ g increment

Com p increment e g increment relativamente altos, o bando parecia ser


sugado violentamente para o milharal. Em poucas iterações, todo o bando,
de normalmente 15 a 30 pássaros estava concentrado dentro de um pequeno
cı́rculo ao redor do objetivo.
Já com valores menores, o bando se movimentou ao redor do objetivo,
alcançando-o realisticamente, oscilando ritmicamente com subgrupos sin-
cronizados e finalmente ”pousando” no objetivo.

3.3 Eliminating ancilliary (auxiliares) variables


Os autores removeram a variável craziness pois perceberam que o algoritmo
funcionava tão bem e parecia tão ”real” quanto sem tal variável.
Foi mostado que o o processo de otimização ocorria ligeiramente mais
rápido quando nearest neighbor velocity matching era removido, porém o
efeito visual mudava. Ao invés de parecer um bando de passáros, agora
parecia um enxame, mas ainda era capaz de encontrar o milharal.
As variáveis pbest e gbest e seus incrementos são ambos necessários.
pbest funciona como uma memória pessoal, onde cada indivı́duo lembra
sua própria experiência e o ajuste da velocidade associado à pbest está as-
sociado à tendencia do individuo de voltar ao lugar que mais o satisfez no
passado.
gbest pode ser simbolizado como um conhecimento publico, ou um padrão
que os indivı́duos querem atender.
Nas simulações, um alto valor de p increment relativo à g increment
resultou um numero grande de indivı́duos isolado vagando pelo espaço, en-
quanto o contrário (g increment maior) resultou no bando avançando rapip-
damente para um minimo local. Valores aproximadamente iguais para ambos
os incrementos se mostraram os mais efetivos na busca no domı́nio do prob-
lema.

4
3.4 Multidimensional Search
Enquanto o algoritmo parecia modelar impressionantemente um bando procu-
rando por um milharal, a maioria dos problemas de otimização não são nem
lineares nem bi-dimensionais. Como o objetivo de um dos autores era mod-
elar comportamento social, que é multi-dimensional e sem colisões, parecia
simples mudar presentx presenty de uma dimensão para matrizes DxN onde
D é número de dimensões e N o número de agentes.

3.5 Acceleration by Distance


Apesar do algoritmo funcionar bem, havia algo que era esteticamente de-
sagradável e dificil de entender sobre ele. A velocidade era ajustada baseada
em uma desigualdade grosseira. Se presentx > bestx diminua-a, se presentx <
bestx aumente-a.
Experimentos mostraram que revisando o algoritmo o fizeram mais facil
de entender e melhorar sua performance.
Ao invés de simplesmente testar o sinal da desigualdade, velocidades eram
ajustadas de acordo com as suas diferenças, por dimensão, até suas melhores
posições.

vx[][] = vx[][] + rand() ∗ p increment ∗ (pbestx[][] − presentx[][])

3.6 Current Simplified Version


Rapidamente percebeu-se que não há uma boa maneira de decidir se p increment
ou g increment deviam ser maiores. Assim, estes termos foram removidos
do algoritmo.
O fator aleatório foi multiplicado por 2 para que este tivesse média 1 de
maneira que os agente ”sobrevoassem” o ”alvo aproximadamente metade das
vezes.
Pesquisas futuras mostrarão se existe um valor ótimo” para esta con-
stante, se ela deve ser atualizada para cada problema ou se pode ser deter-
minada a partir de algum conhecimento de um problema particular.
A versão atualizada do PSO agora ajusta velocidades baseadas na seguinte
fórmula:

vx[][] = vx[][]+2∗rand()∗(pbestx[][]−presentx[][])+2∗rand()∗(pbestx[][gbest]−presentx[][])

5
3.7 Other Experiments
Outras variações do algoritmos foram testadas mas nenhuma delas parecia
melhorar a versão simplificada atual.
Por exemplo, parecia que o agente era impulsionado para um ponto que
era a média ponderada dos dois melhores pontos no espaço o pbest e gbest.
Uma versão do algoritmo reduzia os dois pontos à um, em cada dimensão
tomando o meio termo entre pbest e gbest. Esta versão, porém, tinha a
infeliz tendencia de convergir para este ponto, sendo este um ponto fosse ele
ótimo ou não.
Outra versão considerava a utilização de dois tipos de agentes denomina-
dos ”exploradores” e ”colonizadores”.
Exploradores utilizavam o teste da desigualdade o que faziam com eles
passassem pelo objetivo à uma grande distância, enquanto os colonizadores
utilizavam o termo com a diferença. A hipótese era de que os exploradores
iriam extrapolar a região conhecida enquanto os colonizadores utilizariam
hill-climb ou micro-exploração de regiões que já são conhecidas por serem
boas. Mais uma vez, este método não mostrou nenhuma melhora sobre a
atual versão simplificada.

4 Swarms and Particles


Durante a simplificação do algoritmo ficou claro que o comportamento da
população se tornou mais próximo de um enxame do que de um bando.
Em particular, os autores usam este termo de acordo com Millonas, que
articulou os cinco principios básicos de Swarm Intelligence.
• O primeiro é o principio da proximidade. A população deve ser capaz
de realizar operação simples sobre o tempo e espaço.
• O segundo é o principio da qualidade. A população deve ser capaz de
responder à fatores de qualidade no ambiente.
• O terceiro é o principio da resposta variada. A população não deve
se cometer a realizar atividades ao longo de caminhos excessivamente
estreitos.
• O quarto é o principio da estabilidade. A população não deve mudar
seu modo de comportamento toda vez que o ambiente muda.
• O quinto é o principio da adaptatividade. A população deve ser ca-
paz de mudar seu comportamento quando valer a pena pelo seu custo
computacional.

6
O conceito do PSO e sua implementação apresentada atende todos os
5 principios. O algoritmo se baseia em calculos realizados em um espaço
n-dimensional que são levados ao longo de etapas de tempo. A população
responde à fatores de qualidade pbest e gbest. A alocação de respostas entre
pbest e gbest garantem diversidade na resposta. A população muda seu
comportamento apenas quando gbest muda, assim, aderindo ao principio da
estabilidade. A população se adapta pois ela muda quando gbest muda.

5 Conclusions
Além das suas relações com Inteligencia Artificial, PSO tem relações obvias
com computação evolutiva. Conceitualmente, ele parece ficar em algum lu-
gar entre algoritmos genéticos e programação evolutiva. Ele é altamente
dependende de processos aleatórios como programação evolutiva.
Os ajustes em relação à pbest e gbest pelo PSO é conceitualmente similar
aos operadores de crossover utilizado por algoritmos genéticos.
Ele utiliza o conceito de fitness, assim como todas as implementações de
computação evolutiva.
Unico em relação ao conceito do PSO é ”voar” soluções em potencial
através do hiperespaço, acelerando-as na direcão de melhores solucões. Out-
ras propostas de computação evolutiva operam diretamente em possiveis
soluções representadas por posições no hiperespaço.
Muito do sucesso do PSO parece estar relacionado na tendencia dos
agentes em se deslocarem em direção ao seu alvo.
O capitulo de Holland sobre ”alocação otima de tentativas” releva um
delicado balanço entre testes conservadores de regiões conhecidas versus ex-
ploração arriscadas do desconhecido. Parece que a versão atual do algoritmo
aloca as tentativas proximas do otimo.
Os fatores aleatórios permitem uma pesquisa extensiva em regiões do
espaço de pesquisa que são conhecidamente boas e o efeito do momento
causando pela modificação da velocidade existente ao inves de trocar seus
resultados resultam em extrapolações da região conhecidas e exploração de
regiões desconhecidas.

Você também pode gostar