You are on page 1of 5

Enxames de partículas (PSO

)
• Inspiração vem de um conjunto de conceitos bem diferentes dos de insetos sociais:

Enxames de Partículas
Computação Natural Gisele L. Pappa

– Psicologia social – Interações entre indivíduos – Inteligência é resultado de interações entre os indivíduos (e adaptação)

• Enxames de partículas consistem em um conjunto de algoritmos inspirados no comportamento natural de grupos

Idéias Básicas - PSO
• Em PSO, partículas não tem autonomia ou especialização – Assim, é uma metáfora em alto nível (pessoas são todas diferentes) • Com pessoas, interações levam a mudanças • Comportamento social ajuda os indivíduos de uma espécie a se adaptarem ao ambiente

Idéias Básicas - PSO
• Criados para simular sociedades de indivíduos – Esses indivíduos estão trabalhando em um problemas... – ... e sendo influenciados por seus vizinhos • Altamente influenciados por interações entre humanos e entre animais • Idéias são transmitidas, modificadas, afetam as pessoas e podem ser modificadas

Princípios básicos de adaptação cultural (de acordo com a psicologia)
• Avaliar – todo organismo precisa avaliar estímulos
– Pre-requisito para a aprendizagem – detectar estímulos positivos ou negativos

Idéia básicas - PSO
• Partícula representa um indivíduo com 2 tipos de informação:
– Experiência própria (ele sabe que escolhas foram as melhores no passado) – Conhecimento de outros indivíduos, suas escolhas e sucesso associado

• Comparar – as pessoas se comparam umas com as outras
– Essas comparações nos levam a melhorar

• Imitar – as pessoas tendem a imitar o comportamento de outras (especialmente das bem sucedidas)
– Poucos animais são capazes de imitar uns aos outros

• Utiliza o conceito de uma partícula com uma velocidade se movendo num hiperespaço de busca (velocidade e posição)

1

pg) Onde: Pi = local onde a melhor fitness do indivíduo foi encontrada Pg= local onde a melhor fitness do melhor vizinho foi encontrada 3. ele se torna a melhor) b) Avaliação da vizinhança c) Determina a velocidade Vi d) Atualiza a partícula (aplica regra de atualização) O algoritmo PSO • Atualizando a posição da partícula: xi(t) = f(xi(t-1). vi(t-1). partículas são colocadas aleatoriamente nesse hiperespaço (com velocidades também aleatórias) • A cada interação: – Velocidade aumenta • em direção a melhor posição anterior (onde a partícula possuía altos valores de fitness) • E em direção a melhor posição de seus vizinhos (posição da maior fitness das partículas vizinhas) O algoritmo PSO • Indivíduos interagem com um número k de vizinhos • Uma partícula possui – Uma coordenada no espaço de busca (xi) – Uma velocidade (vi) • Conceito de melhor posição (fitness) – Altera a velocidade para nos levar a essa posição • Esquecer ou aprender são vistos como aumentar ou diminuir o valor da posição da partícula O Algoritmo PSO 1. Inicialização: cria uma população inicial aleatoriamente 2. Ciclo: repete o loop acima até convergir ou alcançar um critério de parada A Velocidade vi(t) = ωvi(t-1) + c1ϕ1(pi-xi(t-1)) + c2ϕ2(pg-xi(t-1)) • ω : constante de inércia (mantém partículas em movimento) • C1. pi. Loop para população: para cada partícula: a) Avalia o quão boa ela é (Se ela for melhor que a melhor partícula até o momento.Como funciona o algoritmo? • Inicialmente.2 : constantes que afetam o quanto cada uma das melhores partículas afetam a partícula atual • ϕ1 escalar aleatório (taxa de aprendizagem) Inicialização 2 .

devemos limitar a velocidade • Para cada dimensão (variável) j. …. então a equação acima pode ser reescrita como: para cada dimensão (variável) j. D: se vij(t) > Vmax então vij(t) = Vmax senão se vij(t) < –Vmax então vij(t) = –Vmax 3 .D: xij(t) = xij(t – 1) + vij(t) PSO para dados contínuos • Para evitar que a partícula “exploda”. j = 1. onde a cada interação o tempo é acrescido de 1) • A velocidade de uma partícula é influenciada pela melhor posição da partícula anteriormente. e a posição de seu melhor vizinho PSO para dados contínuos • Ajuste de posição: – xi(t) = xi(t – 1) + vi(t). xij.…. xi(t – 1) são as posições da partícula i nos tempos t e t –1 vi(t) é a velocidade da partícula i no tempo t • xi e vi são vetores de números reais. …. número de variáveis (número de dimensões: D) x2 Um exemplo simples de 3 partículas x12 x1 x3 em um espaço 2D x11 PSO para dados contínuos • A velocidade de uma partícula é um vetor de números reais adicionado a posição da partícula em um espaço de tempo (uma interação) Velocidade = “mudança de posição” (Velocidade = distância/tempo. j = 1.…. consequentemente.Vizinhança Tipos de PSO • Existem dois tipos de algoritmos básicos – Um para dados contínuos • Mais utilizado e.…. xiD> onde xij = o valor da cordenada j da partícula i e j = 1. onde xi(t). mais estudado – Outro para dados binários Geográfica Social PSO para dados contínuos • Uma partícula consiste em um vetor de números reais (valores das variáveis) • Notação para a partícula i: xi = < xi1.

gere um número aleatório rij(t). para cada bit j da partícula i. onde e = 2. mas mais lento o PSO vai ser // inicialização • LOOP (até o critério de parada ser satisfeito – ex. chamada função de “squashing”: 1 • prob(xij = 1)(t) = . a velocidade vij é utilizada para atualizar o valor de xij (estado do bit j na partícula i) de maneira probabilística: prob(xij = 1)(t) é calculada através de um mapeamento do valor da velocidade no intervalo [0…1]. – Isso também significa que prob(xij = 0) = 1 – prob(xij = 1). dimensão j receber o valor 1 Aplicações • Análise de dados – Agrupamento e classificação • Swarm bots • Swarm music Otimizando os parâmetros de um Jogo de Corrida 4 . Vmax] THEN modifique a velocidade de forma que ela esteja no intervalo END IF Atualiza a posição na dimensãio j. Número máximo de interações) FOR i = 1 to número de partículas // adaptação IF Fit(xi) > Fit(pi) THEN pi = xi // salva a melhor posição anterior de i em pi END IF pg = vizinho com a melhor fitness entre todos os vizinhos de i FOR j = 1 to número de dimensões Calcule a velocidade da partícula i na dimensão j.7 e diminuir esse valor linearmente ao longo das interações PSO para Dados binários • Uma solução candidata é representada por um string binário • prob(xij = 1) representa a probabilidade da partícula i. adicionando velocidade a posição • Fator de inércia w: menor que 1. variável (dimensão) j ter valor 1.Pseudocódigo do PSO para Dados Contínuos (versão sem fórmulas) • FOR i = 1 to número de partículas Crie aleatorimanete a partícula i Calcule a fitness de i (Fiti) Faça pi = xi Parâmetros do PSO • Número de partículas na população e número de interações – Em geral. fazendo com que a partícula seja atraída para a sua melhor posição até o momento e a posição de seu melhor vizinho IF velocidade não estiver no intervalo [–Vmax. mas não muito pequeno • O que acontece se: – w é maior que 1? • Velocidade aumenta rapidamente com o tempo – w é muito pequeno? • Partícula pára rápido. e: IF rij(t) < prob(xij = 1)(t) THEN xij(t) = 1. uma vez que a soma das probabilidades de um 1 e um 0 ocorrerem devem somar 1 por definição PSO para Dados binários • Em dados binários. ELSE xij(t) = 0 • As noções de “posição” e “velocidade” de uma partícula para dados contínuos são re-definidas • “posição” representa o estado da string de bits – xij= valor do bit da partícula i na dimensão j • “velocidade” é a tendência de se escolher o estado 1 – vij = tendência da partícula i. Podemos começar com w = 0. quanto mais partículas e quanto mais interações. maior a chance de encontrar uma solução (quase)-ótima.718… 1 + e(–Vij(t)) • Para converter a probabilidade em um estado de bit. levando a convergência prematura • w pode ser fixo ou variado durante a busca.

gamasutra. and Eberhart. a melhor partícula completava a volta em 63s. Piscataway.php • Kennedy. tornando o computador imbatível por um usuário humano Agradecimentos • Alguns desses slides foram retirados das aulas de computação natural de Alex A. R.Objetivo • Encontrar Parâmetros • Cada partícula representa um conjunto de 10 parâmetros que representam o caminho a ser percorrido • 20 partículas são distribuídas no espaço • O algoritmo roda 100 iterações • A fitness é dada pelo tempo que o carro leva para completar uma volta o melhor caminho a ser seguido pelos carros controlados pelo computador em um jogo de corrida Resultados • Jogador humano leva em média 70s para completar uma volta • Na primeira iteração do algoritmo.swarmintelligence. J.org/ http://www.shtml 5 . NJ. Particle swarm optimization. Freitas e Jon Timmis Bibliografia http://www.org/tutorials. pp.swarmintelligence. C.com/features/20051213/ villiers_01. 1995 • http://www. e a média de todas as partículas era de 115 s • Ao final da execução. Proceedings of IEEE International Conference on Neural Networks. a melhor partícula tinha um tempo de 80s. 1942-1948.