SwarmTSP

SwarmTSP is a library of swarm intelligence algorithms for the Traveling Salesman Problem (TSP). Currently, it implements Ant Colony Optimization (ACO) and Consultant-Guided Search (CGS) algorithms.

The following ACO algorithms are supported: Ant System (AS), Ant Colony System (ACS), MAX-MIN Ant System (MMAS), Elitist Ant System (EAS), Rank-Based Ant System (RAS) and Best-Worst Ant System (BWAS). The implementation of these algorithms is basically a port to Java of Thomas Stützle's ACOTSP program.

Consultant-Guided Search is a recent metaheuristic inspired by the way real people make decisions based on advice received from consultants. A presentation of CGS can be found in this paper.

The aim of SwarmTSP is to encourage the study of new and existing swarm intelligence algorithms for the Traveling Salesman Problem. It provides a modular architecture that allows building algorithms by combining different components. In many cases, all you need to do in order to create a new hybrid algorithm is to specify the desired components in a configuration file. Of course, if you want to implement a novel algorithm, then you will have to write your own components, but you will still be able to reuse some building blocks and you will further benefit from using the SwarmTSP framework.

By using the AgSysLib library, SwarmTSP facilitates experimentation with population-based algorithms. For example, you can provide lists of parameter values and specify a set of problem instances and let SwarmTSP automatically run your algorithms for each problem instance, with each possible combination of the given parameter values. You can also specify a list of formulas in your configuration file and compare the behavior of your algorithms when using each of these formulas. You can even configure lists of components and let SwarmTSP generate and run the algorithms corresponding to each combination of these components. If your algorithm doesn't behave as expected, you can use the Groovy inspector tool provided by AgSysLib, which allows to query and modify the state of your program.