Applying Ant Colony Optimisation to travelling salesman problems in C#

Some results of applying a C# / WPF implementation of the ant colony optimisation algorithm to the travelling salesman problem (TSP). My initial observation is that it finds fairly reasonable solutions within a given number of iterations, but falls short of algorithms such as two-opt, Lin-Kernighan etc. The software is built around the Model-View-ViewModel (MVVM) architecture, thereby keeping the graphical display and data separate. For an explanation of the ant colony algorithm see the Wikipedia page. Edge selection Each ant iteratively finds a path from the source node, visiting every other node until it reaches the start node again. The intermediate solutions (node choices) are referred to as solution states. At each iteration, each ant moves from a state x to state y, corresponding to a more complete intermediate solution. Thus, each ant k computes a set of feasible expansions to its current state in each iteration, and moves to one of these in probability. For ant k, the probability of moving from state x to state y depends on the combination of two values: 1. the "attractiveness" of the move, as computed by some heuristic indicating the a priori desirability of that move and the trail level of the move, indicating how proficient it has been in the past to make that particular move. The trail level represents a posteriori indication of the desirability of that move. Trails are updated when all ants have completed their path, increasing or decreasing the level of trails corresponding to moves that were part of "good" or "bad" solutions, respectively. In general, the kth ant moves from state x to state y with probability Demonstration of algorithm as follows: https://player.vimeo.com/video/294008591 Obtain the Visual Studio project from here:

Comments

Popular posts from this blog

Using the Supervisor Controller Pattern to access View controls in MVVM

Getting started with client-server applications in C++

How to send an e-mail via Google SMTP using C#