Nuvem de Partículas
PSO - Particle Swarm Optimization (1995)
Desenvolvida por James Kennedy (psicólogo)
e Russell Eberhart (engenheiro), com base no
comportamento de pássaros em revoadas
modelado pelo biólogo Frank Heppner.
Inspirado no comportamento e na dinâmica
dos movimentos dos pássaros, insetos e
peixes;
Originalmente desenvolvido para problemas
de otimização com variáveis contínuas;
Desempenho similar ao dos Algoritmos
Genéticos;
Otimização Nuvem de
Partículas
Otimização Nuvem de
Partículas
PSO
Elementos do algoritmo:
A : população de agentes.
xi : posição do agente ai no espaço de soluções.
f : função de avaliação.
vi : velocidade do agente ai.
V(ai) : conjunto fixo de vizinhos do agente ai.
Todos os agentes estão conectados, direta ou
indiretamente
Otimização Nuvem de
Partículas
Vantagens
Insensível a mudança de escala das variáveis;
Implementação simples;
Adaptável a computadores paralelos;
Não requer cálculo de derivadas;
Poucos parâmetros para serem definidos pelo usuário;
Bom para encontrar o mínimo global;
Desvantagens
Rápido para localizar a bacia de atração das boas
soluções, mas lento no ajuste fino da solução (como nos
algoritmos genéticos).
Baseia-se no comportamento social dos pássaros em
revoadas, cardumes de peixes e enxames de abelhas
Algoritmicamente, tem-se um conjunto de partículas que
percorrem o espaço de busca apresentando comportamentos
aleatórios em relação à individualidade e à sociabilidade
A individualidade de uma partícula está relacionada à ênfase
dada, em seus movimentos, à melhor solução já encontrada por
ela mesma, enquanto sua sociabilidade reflete o grau de
importância dado por ela à melhor solução já encontrada por
seus vizinhos
O conceito de vizinhança em PSO não é o mesmo utilizado
pelas meta-heurísticas de busca por entornos, pois cada
partícula, associada a uma solução que evolui, é vizinha de um
conjunto de partículas que nunca é alterado
A estrutura de vizinhanças é construída de forma que os
progressos obtidos em cada região tenham influência,
potencialmente, em todas as partículas
Aplicações de PSO
Aplicações comuns:
Evolução de redes neurais artificiais
Extração de regras de RNAs
Escalonamento de tarefas (Multi-objective Job shop scheduling)
Roteamento de veículos (Capacitated Vehicle Routing)
Aplicação recente:
Bandwidth Minimization Problem - BMP (2003).
Algumas aplicações recentes (2004):
Caminho ótimo para operações de perfuração automatizadas.
Mineração de dados para tarefas de classificação.
Posicionamento de bases em computação móvel.
Aproximação poligonal ótima de curvas digitais.
Imitando a natureza
Separação: usada para evitar
aglomerações de partículas
Alinhamento: encaminhar a
busca para a partícula
“representante” do grupo
Coesão: uma partícula
movimenta-se na “média”
dos seus vizinhos
PSO é um método baseado em população, como o Algoritmo
Genético
Entretanto, o conceito básico é cooperação em vez da
rivalidade
Apesar da semelhança com AG, esta técnica não usa
operadores genéticos (crossover, mutação, etc)
Uma partícula movimenta-se com velocidade
Usando a própria experiência
Além da experiência de todas as partículas
A idéia é similar ao bando de pássaros (ou cardume de peixes
ou enxame de abelhas) procurando comida
Habilidade de troca de informações entre vizinhos
Habilidade de memorizar uma posição anterior
Habilidade de usar informações para tomada de decisões
Notação
Notação
Atualização da velocidade
Três termos definem uma nova velocidade para
uma partícula:
Força a partícula a mover-se na
mesma direção
Tendência para seguir a própria
direção com a mesma
1. Termo de inércia
velocidade
Melhora o indivíduo
Força a partícula a voltar a uma
2. Termo cognitivo
posição anterior que seja
melhor do que a atual
Tendência conservativa
3. Termo de
Força a partícula a seguir a
direção de seus melhores
aprendizado social
vizinhos
Como em todo rebanho, mas
seguindo os melhores
Idéia básica: comportamento
cognitivo
Qual a melhor
direção?
comida: 8
comida: 5
comida: 10
Um indivíduo lembra do conhecimento passado
Idéia básica: comportamento
social
pássaro 1
Qual a
melhor
direção?
pássaro 3
comida: 2
comida: 1
pássaro 2
comida: 3
pássaro 4
comida: 4
Um indivíduo adquire conhecimento dos
demais membros do grupo
Atualização de velocidade e posição
PSO tradicional – Eberhart, R. C. and Kennedy, J. (1995)
Para cada agente ai :
inércia
cognitivo
aprendizado social
vi = wvi + η1.rand().(pbesti - xi) + η2.rand().(gbesti - xi)
xi = xi + vi
onde:
pbesti é a melhor posição em que a partícula ai já esteve
gbesti é a melhor posição em que algum vizinho de ai já
esteve.
w é o peso de inércia
http://www.macs.hw.ac.uk/~dwcorne/mypages/a
pps/pso.html
Melhoramentos e Variantes
Redução linear da ponderação de inércia;
Fator de constrição;
Modelos com Vizinhanças.
Fator de Constrição
Fator de Constrição foi introduzido por Clerc e Kennedy
(2002).
Tornou-se muito popular nos algoritmos recentes de
nuvem de partícula.
Modelos com Vizinhanças
A cada partícula é atribuído uma vizinhança;
As vizinhanças tornam mais lento a transmissão da
melhor posição atráves da nuvem;
Converge mais lentamente, mas melhora a
diversificação.
Armadilhas da técnica PSO
As partículas tendem a se agrupar, ou seja,
devido a uma convergência rápida demais,
a solução fica presa em um ponto ótimo
local
O movimento de alguma partícula pode
ser levado a um ponto de solução
infactível
As partículas poder mapear um espaço
inapropriado de soluções factíveis
Problema: Partículas tendem a se agrupar, reduzindo a
capacidade de movimentos da nuvem para soluções melhores.
Solução: reiniciar algumas partículas em novas posições, as
quais podem mover-se para áreas com soluções melhores. As
demais partículas podem mover-se para estas áreas.
!
Início
Inicialize as partículas em posições
aleatórias e velocidades nulas
Calcule os valores fitness
SIM
Achou um critério
de busca local?
Busca
local
NÃO
Compare/atualize os valores dos
fitness pbest e gbest
Critério de
parada?
SIM
Fim
NÃO
Atualize velocidades e
posições das partículas
NÃO
Critério de
reinicialização?
SIM
Reinicialize algumas
partículas
Restrições da técnica
Mapeamento das partículas em direção às soluções
Dimensões
Função de fitness
Número de partículas
Estrutura do aprendizado social
Valores dos parâmetros (1 2 w)
Como eliminar partículas em regiões infactíveis
Critério de parada
Principais elementos
Intensificação é a exploração das soluções encontradas
em procuras anteriores
Diversificação é a busca por soluções ainda não visitadas
Intensificação
Encontra rapidamente a
melhor solução de uma
região
Encontrar
o equilíbrio
Diversificação
Identifica rapidamente
regiões com potencial para
melhores soluções
Exemplo
Utilizar o algoritmo de PSO para encontrar pontos de mínimo
da função abaixo, usando as 3 partículas dadas abaixo:
partículas
x
1 2,5
2 5,6
3 10,5
v
1
2
3
1
600
0
0
0
500
400
300
200
Minimizar
f(x)=(x-4)^2-(x-8)^3+5
100
0
-100 0
1
2
3
4
5
6
7
8
9 10 11 12 13
pso
Pesquisas atuais de PSO
PSO com termos sociais múltiplos
Diferentes índices de medidas para PSO
Partículas heterogêneas
PSO hierárquico
PSO para o problema de escalonamento de tarefas(JSS)
PSO para roteamento de veículos
PSO para extração de regras de RNA
PSO para problemas com restrições de recursos
Adaptações da PSO para o PCV
[M. Clerc, 2004; T. R. Machado e H. S. Lopes, 2005]
Partículas
Em PCV procuramos ciclos com N+1 vértices. Logo uma partícula
consiste em um ciclo com as cidades do PCV:
x = (n1, n2, …, nN, nN+1)
Esta partícula somente é aceita se todos os arcos (ni, ni+1) existem
Função de fitness
N
c
Velocidade
i 1
ni , ni 1
Definir um operador v que quando aplicado a uma partícula retorna
uma outra posição.
Definimos então uma lista de transposições de elementos da
partícula. Estas transposições são trocas de 2 a 2:
v = {(ik, jk)}, onde ik, jk {1, 2,…, N}
que significa: troque os elementos (i1, j1), depois (i2, j2), até k.
Movimento
O movimento da partícula é obtido aplicando-se a velocidade à
partícula: x’=x + v.
Exemplo: x=(1, 2, 3, 4, 5, 1), v={(1, 2), (2, 3)}
com a primeira troca (1, 2), temos: x’=(2, 1, 3, 4, 5, 2)
com a segunda troca (2, 3), temos x’=(3, 1, 2, 4, 5, 3)
Subtração
A diferença xi – xj é definida como a velocidade que deve ser aplicada
na posição xj para obter a posição xi. Quando xi = xj, temos v = 0
Adição
O resultado da soma de duas velocidade vi + vj é a lista de
transposições primeiro de vi, depois de vj.
Multiplicação de escalar por vetor
quando c = 0, temos cv =
quando c [0, 1], trunca-se v.
Exemplo:
c = 0,6; e v = {(1, 2), (3, 5), (17, 23), (7, 3), (8, 19)}
logo, cv = {(1, 2), (3, 5), (17, 23)}
quando c > 1, defina c = k + c’, onde k N, e c’ [0, 1].
logo, cv = v + v +…+ v + c’v
k vezes
vi = wvi + η1.rand().(pbesti - xi) + η2.rand().(pgbesti xi)
xi = xi + vi
PSO com estruturas de
múltiplos grupos sociais
[Pongchairerks, Kachitvichyanukul, 2006]
A combinação dos vetores pbest, pgbest, lbest e nbest
direciona uma partícula para melhores posições do que
um PSO padrão.
pbest
PSO padrão
pbest
PSO com múltiplas
estruturas sociais
pgbest
pgbest
nbest
lbest
Mais aplicações
PSO trata-se de uma técnica atrativa, porque é:
computacionamente “barata”
robusta
simples
Outras aplicações:
Controle de veículos por controle remoto
Controle para detectar e eliminar tumores
O filme da Disney “O Rei Leão” foi o primeiro a usar tecnologia de
nuvem de partículas para fazer a cena da debandada de pássaros. O
filme da New Line Cinema “O Senhor dos Anéis” também utilizou
técnicas semelhantes nas cenas de batalhas.
Réplica de dados em grade