Otimizacao por Enxame de Particulas (PSO)

O que é a otimização por enxame de partículas?

A otimizaçao por enxame de partículas (PSO) é um algoritmo meta-heurístico inspirado no comportamento social. Ela foi proposta por Kennedy e Eberhart em 1995, simulando bandos de pássaros ou cardumes. Cada partícula representa uma solução candidata no espaço de busca contínuo. Essas partículas voam pelo espaço ajustando suas posições com base em duas referências. A primeira é a melhor posição que a própria partícula já visitou (memória individual). A segunda é a melhor posição encontrada por qualquer partícula do enxame (memória social). A combinação dessas influências guia o enxame em direção ao ótimo global. Diferentemente dos algoritmos genéticos, o PSO não usa seleção ou crossover. Ele é simples, rápido e requer poucos parâmetros para ser configurado. Portanto, o PSO é uma ferramenta popular para otimização contínua e multimodal.

Características fundamentais do PSO

O PSO possui três características principais que definem seu comportamento. Primeiro, cada partícula tem uma posição (x) e uma velocidade (v) no espaço. A velocidade é atualizada usando uma equação com três componentes: inércia, cognitiva e social. O componente inercial mantém a direção anterior, evitando mudanças bruscas. O componente cognitivo puxa a partícula em direção ao seu melhor histórico pessoal (pbest). O componente social a atrai para a melhor posição global do enxame (gbest). Dois coeficientes (c₁ e c₂) controlam a força de cada componente. Além disso, números aleatórios introduzem estocasticidade para explorar novas regiões. Segundo, o PSO não tem operadores de mutação ou recombinação. Terceiro, ele é completamente paralelizável, pois cada partícula é independente. Essas características tornam o PSO eficiente e fácil de implementar.

Vantagens e aplicações típicas

O PSO é amplamente usado em engenharia, finanças e aprendizado de máquina. Ele é excelente para funções contínuas com muitas variáveis e mínimos locais. Uma grande vantagem é a convergência rápida nas primeiras iterações. Além disso, ele requer pouca memória e é facilmente adaptável a restrições. Contudo, o PSO pode convergir prematuramente para ótimos locais em alguns casos. Para evitar isso, variantes com inércia adaptativa ou enxames multi-objetivo foram criadas. Ainda assim, o PSO é uma das meta-heurísticas mais usadas na indústria.

A dinâmica do PSO é governada por equações de atualização simples. A velocidade é calculada como: v(t+1) = w*v(t) + c₁*r₁*(pbest – x) + c₂*r₂*(gbest – x). A posição é atualizada por: x(t+1) = x(t) + v(t+1). O parâmetro w (inércia) controla o equilíbrio entre exploração e explotação. Valores altos de w incentivam a busca global; valores baixos refinam a busca local. Os coeficientes c₁ e c₂ geralmente são iguais (≈ 1.5 a 2.0) para equilíbrio. As variáveis r₁ e r₂ são números aleatórios uniformes entre 0 e 1. O pbest é atualizado sempre que a partícula encontra uma posição melhor. O gbest é atualizado quando qualquer partícula supera o melhor global atual. Esse mecanismo simples produz um comportamento emergente surpreendente. O enxame converge para o mínimo (ou máximo) sem controle centralizado. O PSO também pode ser usado para problemas com restrições usando penalidades. Ele é frequentemente comparado a algoritmos genéticos e estratégias evolutivas. Assim, o PSO é uma abordagem elegante e poderosa para otimização.

Um exemplo clássico é minimizar a função de Rastrigin em 2 dimensões. Ela tem muitos mínimos locais, mas o mínimo global está em (0,0). O PSO encontra esse ponto com alta precisão após algumas dezenas de iterações. A inércia e os componentes social/cognitivo guiam as partículas até o vale central.


Enunciado do exemplo clássico

Implemente o PSO para minimizar a função de Ackley em 2 dimensões: f(x,y) = -20*exp(-0.2*sqrt(0.5*(x²+y²))) – exp(0.5*(cos(2πx)+cos(2πy))) + 20 + e, com domínio [-5,5]. Use 30 partículas, 200 iterações, w=0.7, c₁=c₂=1.5. Armazene o melhor fitness global e a posição correspondente a cada iteração. Plote a curva de convergência e a trajetória de todas as partículas no plano 2D (com contornos).

Este código implementa o PSO clássico com inércia constante. A curva de convergência mostra uma rápida queda do erro nas primeiras iterações. O gráfico de trajetórias exibe como as partículas exploram o espaço e convergem. Mesmo com muitos mínimos locais, o enxame encontra o ótimo global. Para iniciantes, o PSO demonstra a inteligência coletiva de forma visual e intuitiva. A otimização por enxame de partículas é, portanto, uma técnica acessível e eficaz.

Deixe um comentário