Ant Colony Optimisation (ACO) is a versatile population-based optimisation metaheuristic
based on the foraging behaviour of certain species of ant, and is part of the
Evolutionary Computation family of algorithms. While ACO generally provides good
quality solutions to the problems it is applied to, two key limitations prevent it from
being truly viable on large-scale problems: A high memory requirement that grows
quadratically with instance size, and high execution time. This thesis presents a parallelised
and vectorised implementation of ACO using OpenMP and AVX SIMD instructions;
while this alone is enough to improve upon the execution time of the algorithm,
this implementation also features an alternative memory structure and a novel candidate
set approach, the use of which significantly reduces the memory requirement of
ACO. This parallelism is enabled through the use of Max-Min Ant System, an ACO
variant that only utilises local memory during the solution process and therefore risks
no synchronisation issues, and an adaptation of vRoulette, a vector-compatible variant
of the common roulette wheel selection method. Through the use of these techniques
ACO is also able to find good quality solutions for the very large Art TSPs, a problem
set that has traditionally been unfeasible to solve with ACO due to high memory
requirements and execution time. These techniques can also benefit ACO when it
comes to solving other problems. In this case the Virtual Machine Placement problem,
in which Virtual Machines have to be efficiently allocated to Physical Machines in a
cloud environment, is used as a benchmark, with significant improvements to execution
time