Software

This page contains implementations of algorithms discussed on my current research page. The software was written in collaboration with Jason Brownlee from the Complex Intelligent Systems Laboratory and I thank him for his assistance. All software listed is implemented in JAVA(tm) and is intended for research and teaching purposes only and as such no support or guarantees can be provided, although comments and feedback are welcome!

Function Optimisation

This application contains a suite of function optimisation problems taken from mostly Evolutionary Computation literature over the last 30 years. The problems are all implemented in 2 dimensions, but vary in complexity from smooth gradients to noisy and multi-modal landscapes.

The algorithms included are:

Random search

- Samples the problem space according to uniformly random guesses.

Real-value Genetic Algorithm

- A canonical Genetic Algorithm implemented with real-valued (floats) genes.

Crossover: Probability of a standard one-point crossover operation.

Mutation: Probability of a mutation occurring.

Std Dev: Amount of mutation to apply (using a Gaussian distribution) if a mutation event occurs.

Pop Size: Number of chromosomes created each generation (uses a generational replacement).

Elites: Number of elite chromosomes.

Tournament bout size: Tournament parent selection bout size.

Crowding Genetic Algorithm

- Same parameters as Real-value Genetic Algorithm but with a crowding selective replacement operator.

Simple crowding: Child chromosomes are checked for closest match against entire population using a Euclidean distance measurement, replacing closest match if better.

Deterministic crowding: Child chromosomes are checked for closest match against parents using a Euclidean distance measurement, replacing closest match if better.

Fitness Sharing Genetic Algorithm

- A binary coded Genetic Algorithm which uses Fitness sharing to modify the fitness landscape.

Crossover: Probability of a standard one-point crossover operation.

Mutation: Probability of a bit being flipped.

Sharing Radius: Relative to the bounds of the function (0.2 = 20%).

Sharing shape: The power applied to the sharing function.

Encoding: Use a simple binary coded or Gray coded.

Population-based ACO

- An Ant-inspired algorithm implemented according to the work by Socha, K & Dorigo, M.

Number of ants: Number of solutions created each iteration.

History power: Value of exponent used to scale the artificial pheromone values by.

Standard Deviation: Amount of standard deviation applied to Gaussian probability functions.

History size: Number of artificial ants kept in history.

Population-based ACO with Fitness sharing

- Uses the Population-based ACO algorithm but applies a fitness sharing modification to solution fitness assignment.

Sharing Radius: Relative to the bounds of the function (0.2 = 20%).

Sharing Power: The power applied to the sharing function.

Population-based ACO with Simple Crowding

- Uses the Population-based ACO algorithm but applies a crowding replacement operator.

Random Sample: Initial Random Sample used to seed the population (ensures a diverse spread of initial solutions).

Download software here

Back to homepage