Você está na página 1de 4

Otimização por Nuvem de Partículas

 Desenvolvido pelo psicólogo social James Kennedy e o


engenheiro eletricista Russel Eberhart em 1995;

 Inspirado no comportamento (dinâmica dos movimentos) dos


pássaros, alguns insetos e cardumes peixes na busca por
alimento. Observações sugerem que os indivíduos cooperam
entre si, compartilhando informações;

 Originalmente desenvolvido para problemas de otimização


com variáveis contínuas;

 Desempenho semelhante ao dos Algoritmos Genéticos,


entretanto, com implementação mais simples.

No início, as partículas “são espalhadas” aleatoriamente pelo espaço de busca.


Vantagens (relativamente aos métodos de descida)

Insensível a mudança de escala das variáveis;

Implementação computacional simples;

Fácil adaptação a computadores paralelos;

Não requer cálculo de derivadas;

Poucos parâmetros a serem definidos pelo usuário;

Bom para encontrar o ótimo global;

Desvantagens

Embora rápido para localizar a bacia de atração das boas soluções, é lento no
ajuste fino da solução (assim como os Algoritmos Genéticos).

Notação
xi, i=1, ..., m : vetor posição da partícula i, com n coordenadas;
vi, i=1, ..., m : velocidade da partícula i, com n coordenadas (𝛿𝐱 i );
pi, pbesti (personal best): vetor da melhor posição encontrada pela partícula i;
g, gbest (global best): vetor da melhor posição encontrada por todas as
partículas.
Atualização de Velocidade e Posição

v𝒕 𝟏
= 𝑊v 𝒕 + 𝐶 𝑟 𝐩 −𝐱 +𝐶 𝑟 𝐠 −𝐱

x𝒕 𝟏
= v𝒕 𝟏
+ x 𝒕 , i = 1, … , 𝑚

Na equação de velocidade, tem-se:

C1; C2: parâmetros cognitivo e social, ou taxas de aprendizado;


W: constante de ponderação de inércia;
r1j ; r2j: números aleatórios entre 0 e 1.

Componentes Cognitivo e Social

𝐩 − 𝐱 : Componente cognitivo - representa a experiência individual da


partícula, a distância para a sua melhor posição já obtida.
𝐠 − 𝐱 : Componente social - representa a experiência da nuvem, a distância
da partícula para a melhor posição já obtida por todas as partículas.

Algoritmo Nuvem de Partículas


inicialize a nuvem de partículas
repita
para i = 1 até m
se f (xi ) < f (pi ) então
pi = xi
se f (xi ) < f (g) então
g = xi
fim se
fim se
para j = 1 até n
r1 = rand() , r2 = rand()
vij = wvij + c1r1(pi - xij ) + c2r2(gj - xij )
fim para
xi = xi + vi
fim para
até satisfazer o critério de parada

Limites superior e inferior


x ϵ [xmin; xmax]. Caso xij atualizado, para qualquer coordenada j, viole o limite
especificado, seu valor deve ser fixado no limite violado e o valor
correspondente de velocidade deve ser anulado: xij = xmin ou xij = xmax
(conforme o caso). Fazer ainda vij = 0.
Velocidade máxima
Oscilações excessivas do algoritmo podem ser evitadas, especificando valores
máximos e mínimos para a velocidade: v ϵ [vmin; vmax].

Diversificação e Intensificação
O algoritmo Nuvem de Partículas apresenta um mecanismo bem balanceado
entre diversificação e intensificação:
çã çã

v = 𝑊v +𝐶 𝑟 𝐩 −𝐱 +𝐶 𝑟 𝐠 −𝐱

Redução Linear da Ponderação de Inércia


A cada iteração, a ponderação é reduzida:

𝑊 −𝑊
𝑊 =𝑊 − 𝑡.
𝑡

Shi e Eberhart (1998) concluíram que os valores abaixo produzem bons


resultados para uma grande variedade de funções, adotadas como padrão de
teste de desempenho de algoritmos de otimização:

𝑊 = 0,9; 𝑊 = 0,4; 𝐶 = 𝐶 = 2

Fator de Constrição, ꭕ
Esse fator foi proposto por Clerc e Kennedy (2002) e tem sido bastante
utilizado em algoritmos de Nuvem de Partículas:
Atualização da velocidade:
v𝒕 𝟏
= ꭕ. v 𝒕 + 𝐶 𝑟 𝐩 −𝐱 +𝐶 𝑟 𝐠 −𝐱
2𝜅
ꭕ= , com 𝜑 = 𝐶 + 𝐶 > 4
2−𝜑− 𝜑2 −4𝜑

Valores de referência:
𝐶 = 𝐶 = 2,05; 𝜅 = 1 ∴ 𝜑 = 4,1; ꭕ = 0,73

ѱꭕ

Você também pode gostar