Otimizacao por Enxame de Particulas (PSO)

Professora

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.

Ant Colony System (ACS)

Professora

O que é o Ant Colony System (ACS)?

O Ant Colony System (ACS) é uma evolução do Ant System original, proposta por Dorigo e Gambardella em 1997. Ele melhora a exploração e a convergência usando mecanismos mais sofisticados. Diferentemente do AS, o ACS introduz uma regra de transição pseudo-aleatória. Essa regra equilibra exploração e explotação de forma mais agressiva. Além disso, o ACS usa evaporação local durante a construção da rota. Cada formiga evapora feromônio das arestas que acabou de percorrer. Isso reduz a atratividade de caminhos já usados, promovendo diversidade. Após todas as formigas terminarem, apenas a melhor formiga deposita feromônio globalmente. Essa atualização global é mais seletiva, acelerando a convergência para boas soluções. Portanto, o ACS é mais rápido e eficiente que o AS para problemas grandes.

Características fundamentais do ACS

O ACS possui quatro características distintas que o diferenciam do AS. Primeiro, a regra de transição usa um parâmetro q₀ (entre 0 e 1). Com probabilidade q₀, a formiga escolhe a aresta mais promissora (exploração). Caso contrário, ela faz uma escolha probabilística como no AS (exploração). Segundo, a evaporação local é aplicada imediatamente após cada passo da formiga. Ela reduz o feromônio da aresta percorrida por um fator ξ (geralmente 0.1). Isso incentiva outras formigas a buscar caminhos alternativos. Terceiro, a atualização global é realizada apenas pela melhor formiga da iteração. Ela deposita feromônio nas arestas da rota ótima global ou da melhor iteração. Quarto, os parâmetros α e β são frequentemente fixados em 1 e 2, respectivamente. O ACS também usa uma lista tabu para evitar repetição de cidades. Essas características tornam o ACS mais adaptativo e com melhor desempenho.

Vantagens e aplicações típicas

O ACS é amplamente usado em problemas de roteamento e logística. Ele converge mais rapidamente que o AS, especialmente em TSP com 50+ cidades. Além disso, ele lida melhor com dinâmicas e restrições temporais. Sua regra pseudo-aleatória evita estagnação prematura em ótimos locais. Contudo, o ACS tem mais parâmetros para ajustar (q₀, ξ, β). Isso pode tornar a calibração mais trabalhosa para iniciantes. Ainda assim, o ACS é a base de muitas aplicações comerciais de otimização. Ele é considerado o estado da arte entre os algoritmos de colônia de formigas.

O ACS foi projetado especificamente para melhorar o desempenho do AS no TSP. Ele introduziu a ideia de “exploração guiada” pela regra pseudo-aleatória. Quando q ≤ q₀, a formiga escolhe a aresta com maior τ * η^β (gulosa). Quando q > q₀, ela usa a distribuição de probabilidades clássica. Isso permite um controle fino entre seguir o melhor caminho ou explorar novos. A evaporação local é aplicada com fator ξ, reduzindo τ em (1-ξ)*τ. Esse mecanismo simula o efeito de várias formigas usando a mesma aresta. A atualização global deposita feromônio apenas na melhor rota encontrada. O depósito é proporcional a 1/L_best, onde L_best é o comprimento da melhor rota. O ACS também permite o uso da melhor solução global ou da iteração corrente. Na prática, usar a melhor global acelera a convergência significativamente. O ACS supera o AS em qualidade de solução e tempo de execução. Ele é frequentemente comparado a algoritmos genéticos e simulated annealing. Assim, o ACS é uma ferramenta robusta e confiável para otimização combinatória.

Um exemplo clássico é o TSP com 30 cidades distribuídas aleatoriamente. O ACS encontra rotas muito próximas do ótimo em poucas iterações. A regra pseudo-aleatória evita que todas as formigas sigam o mesmo caminho. A evaporação local garante que arestas recentes percam atratividade temporária. Esse equilíbrio resulta em soluções de alta qualidade de forma consistente.


Enunciado do exemplo clássico

Implemente o Ant Colony System para o TSP com 25 cidades em [0,100]². Use 25 formigas, 150 iterações, α=1, β=2, ρ=0.1 (evaporação global), ξ=0.1 (evaporação local), q₀=0.9. A atualização global deve usar a melhor rota global encontrada até o momento. Armazene o custo da melhor rota a cada iteração e a própria rota. Plote a convergência e a rota final sobre as cidades com setas indicando a direção.

Este código implementa o ACS com todos os seus mecanismos diferenciadores. A curva de convergência mostra uma queda acentuada e estável. A rota final é desenhada com setas, indicando a direção do percurso. A evaporação local e a regra pseudo-aleatória produzem soluções de alta qualidade. Para iniciantes, o ACS demonstra como pequenas melhorias geram grandes ganhos. O Ant Colony System é, portanto, um algoritmo maduro e eficiente.