Photo by Jeremy Bishop on Unsplash

Como Algoritmos Evolucionários se comparam?

Conheça o Evolutionary Algorithm Playground, um web app interativo para comparar Algoritmo Genéticos e Otimização por Enxame de Partículas

Alexandre Mundim
Data Hackers
Published in
3 min readDec 28, 2020

--

Computação Evolucionária é o nome coletivo para uma variedade de técnicas de resolução de problemas baseadas em princípios de evolução biológica, como a seleção natural e herança genética. [1]

Dois desses métodos são Algoritmos Genéticos e Otimização por Enxame de Partículas (Particle Swarm Optimization — PSO).

O Algoritmo Genético (GA) é baseado na teoria evolutiva desenvolvida por Charles Darwin. Através das gerações, processos de seleção, cruzamento, mutação e elitismo são aplicados à população para encontrar o indivíduo mais apto.

Particle Swarm Optimization (PSO) é um método computacional baseado no conceito de enxames, como cardumes de peixes e bandos de pássaros. Ele procura iterativamente pelo indivíduo mais apto dentro do cluster.

Ambos algoritmos são aplicados a problemas de otimização. Um problema de otimização é o tipo de problema que busca encontrar a melhor solução entre todas as soluções viáveis. De acordo com o problema, a melhor solução pode ser os argumentos que maximizem ou minimizem a saída de uma função objetivo. Exemplos de grandezas de maximização são lucros, desempenho, vendas, crescimento, etc. As grandezas de minimização podem ser perdas, gastos de material e muitas outras.

A partir desses conceitos, o Evolutionary Algorithm Playground foi desenvolvido.

https://evolutionary-algorithm-playground.streamlit.app/

É um aplicativo da web totalmente baseado em Python que permite aos usuários ajustar vários parâmetros e ver como os algoritmos funcionam. Os algoritmos foram construídos do zero usando Numpy. O aplicativo foi desenvolvido usando Streamlit.

O objetivo do aplicativo é melhorar a compreensão de algoritmos bioinspirados de uma forma amigável e interativa. Além disso, pretende-se divulgar os algoritmos, pouco abordados na comunidade de Data Science.

Que tal darmos uma olhada nos algoritmos?

Otimização por Enxame de Partículas

Uma população é construída dentro do intervalo de busca (definido pelo usuário). Diferentemente do Algoritmo Genético, aqui a população é contínua. Também leva em consideração o número de indivíduos e a dimensão do problema (ambos definidos pelo usuário).

Os indivíduos da população serão avaliados individualmente através da função de teste. Após a avaliação, eles se movimentarão de acordo com as velocidades cognitivas e sociais. A velocidade também é influenciada por um peso de inércia (definido pelo usuário), que normalmente diminui ao longo do processo evolutivo. A velocidade cognitiva é influenciada pelo parâmetro de autoconfiança e a velocidade social é influenciada pelo parâmetro de confiança social. Isso é repetido iterativamente até que o número de gerações seja atingido.

Indivíduos que ultrapassaram o intervalo máximo do intervalo serão “grampeados” para os limites do intervalo.

Algoritmo Genético

Em outra ocasião, detalhei a implementação do algoritmo genético, então encorajo a leitura detalhada do post a seguir:

Há muito espaço para melhorias no projeto, portanto fique à vontade para propor aperfeiçoamentos. Melhorias no código para ganho de velocidade, implementação de novos algoritmos, novas funções de teste e outros métodos são mais que bem vindos.

Código do Projeto:

Meu perfil no LinkedIn:

Fontes:

[1] A.E. Eiben, James E Smith, Introduction to Evolutionary Computing (2003), Springer-Verlag Berlin Heidelberg

Nota:

Esse é um post traduzido de um texto de minha própria autoria. O post original se encontra no meu perfil.

--

--