Success and Failure

The aim in creating MUTANTS was to allow fast prototyping of any genetic algorithm. However, the very first algorithm implemented went beyond the toolkits capabilities. In its original design The Blues used two parent selection methods. Every individual was to be selected at least once for breeding, either by crossover or mutation. The element of chance was introduced with the roulette wheel selector which picked the second parent in the case of a crossover. Although the toolkit allows the selection method to be changed this can only be done between reproductions, not during as required in this algorithm.

Ada 95 allows object-oriented implementation and generic package instantiation, both helpful in creating a flexible, extensible toolkit. During the implementation of the toolkit Ada's strong typing system hindered some previous design choices. To overcome this problem typecasting and unchecked access types (pointers) were used. Although functional the toolkit depends on sensible use by the programmer because Ada can no longer catch as many mistakes. Also full advantage was not made of default parameters available in the language. If used these would have lessened the burden of creating simple genetic algorithm by offering predetermined choice for some components to novices.

Although limited in extent MUTANTS does provide a fast-prototyping toolkit for some genetic algorithms. Classic algorithms using binary vector representation with random initialisation, mutation, and single point crossover controlled by the generational model are easy to implement. Both The Blues and Violin Music Notation fall into this category. The Travelling Salesman Problem required different components - ordered list representation and appropriate reproduction operators which are also provided. Easier and faster implementation leaves more time for experimentation and the chance of getting better results. Writing new toolkit classes is simple, each class does only a limited amount of work in the overall algorithm and once written classes can be reused in other related projects.

Further Work

Only a few from the dozens of components suggested during initial research have been implemented in the final toolkit. If all these missing components were completed the scope of the toolkit to help in the creation of good genetic algorithms would be greatly enhanced. Other languages might also be investigated to extend the toolkits application areas even further.

The interaction of creator and selector class currently lacks the flexibility needed for all algorithms. Considering this problem is a good opportunity to look at the design of the entire toolkit. Another project should consider not just a single toolkit organisation but try to find the best organisation. Many algorithm techniques were consider for the current design but no actual algorithms implementations were examined. To create the best toolkit many algorithms would have to be collected and disected. Their requirements would then form the basis of the next toolkit design.


Genetic algorithms are based on systems seen to work in nature, systems that have produced the diverse life around us. In borrowing these ideas for searching solution spaces many separate techniques have appeared. Each combination of techniques produces a different effect and it is difficult and slow to optimise the algorithms to a particular problem.

MUTANTS the generic genetic algorithm toolkit specifies a range of connectable components. An algorithm constructed using these components will be smaller and its implementation will take less time. With this extra time other possibilities presented by the toolkit can be explored and every additional option explored gives a better chance of finding the perfect algorithm.