aco é um algoritmo ISO C++ Ant Colony Optimization (ACO) (uma técnica de otimização metaheurística inspirada no comportamento das formigas) para o problema do caixeiro viajante. Ele libera um número incremental de formigas enquanto atualiza a concentração de feromônios e calcula a melhor rota gráfica. No final, a melhor rota é impressa na linha de comando.
aco foi desenvolvido há alguns anos para fins acadêmicos e de pesquisa com base em " Computational Intelligence: An Introduction " (primeira edição de 2002) de Andries Engelbrecht. Este algoritmo está disponível para qualquer pessoa interessada em métodos ACO, então fique à vontade para explorá-lo e ajustar os parâmetros.
aco foi desenvolvido com bibliotecas padrão e um arquivo Randoms.cpp
adicional que implementa métodos de geração de números pseudo-aleatórios. Além disso, o programa pode ser facilmente compilado e executado com o seguinte comando em uma linha de comando localizada em src
:
g++ -Wall *.cpp -o aco; ./aco
. O método main
está incluído no arquivo main.cpp
que contém alguns parâmetros do algoritmo ACO que podem ser alterados conforme achar necessário. Esse arquivo também define programaticamente as conexões das cidades que compõem o gráfico da cidade. Os métodos do algoritmo ACO são implementados na classe ACO
localizada nos arquivos ACO.h
e ACO.cpp
.
@dfernan__