- Versão em C++20 do algoritmo genético feito em python pelo grupo ProTεuS com algumas alterações e utilizando do OpenMP. Portanto, tem o mesmo objetivo: minimizar funções de benchmark para otimização.
- Há um bug com a função Sphere ao atingir certas condições específicas, então, excepcionalmente para esta, a paralelização interna será desativada.
-
O algoritmo conta com as funções de:
-
Seguem os parâmetros necessários e opções disponíveis, que devem ser passados no formato em que atualmente estão no arquivo de texto disponibilizado (funcionará para qualquer arquivo
.txt
no mesmo formato deparameters.txt
):-
Número de iterações
-
Tamanho da população
-
Taxa de mutação inicial e final
-
Força da mutação inicial e final (distribuição gaussiana)
-
Porcentagem do número de indivíduos para manter na próxima geração
-
Função de otimização
-
Número de dimensões
-
Método de seleção:
- Torneio (tournament)
- Seleção proporcional ao fitness (fps)
- Seleção por ranking (ranking)
-
Número de pontos para recombinação:
- Um ponto (one) (automaticamente se 2 dimensões)
- Dois pontos (two)
- Recombinação uniforme (uniform)
-
Número de casas decimais desejadas para exibição no terminal
-
Número de algoritmos a serem executados
O resultado exibido será a melhor solução em n execuções (diz-se n execuções o último parâmetro mencionado acima).
-
Para executar este projeto, siga os passos abaixo:
- Clone o repositório:
git clone https://github.com//xLowZ/genetic-algorithm-optimization/.git
- Navegue até o diretório do projeto:
cd genetic-algorithm-optimization
- Usando o CMake sem a extensão do VSCode:
mkdir build cd build
- Padrão (gera solução do VisualStudio no Windows):
cmake .. cmake --build .
- Com o MinGW:
cmake -G "MinGW Makefiles" .. cmake --build .
OBS:
- Para simplificação das 3 últimas etapas, recomendo as extensões
CMake
eCmake Tools
do Visual Studio Code.
Para executar o algoritmo genético, utilize o seguinte comando:
.\gao.exe [caminho_arquivo_de_configurações] # Windows
./gao [caminho_arquivo_de_configurações] # Linux
Opcionalmente, pode-se executar o programa com o argumento --help
para descrição adicional:
.\gao.exe --help # Windows
./gao --help # Linux
- Está disponibilizada minha pasta
.vscode
com tasks configuradas de debug e release para o compilador gcc para Windows. Se estiver utilizando o mesmo OS, basta verificar e ajustar o caminho para o compilador e para o debugger nos arquivos.json
. - Está disponibilizado também um arquivo Make separado pronto para uso.
- Há também um arquivo de texto adicional com algumas flags opcionais + uso do Makefile separadamente.