Status ReportThere are three issues present in considering the status of the project - size, functionality, and quality of the toolkit. The Statement of Requirements demanded support for a variety of genetic algorithm techniques and also suggested that others would be helpful. As a top priority a core toolkit was defined to allow the classic genetic algorithm to be implemented using the toolkit. This first target was reached, to achieve it approximately 20 components had to function in cooperation. Although the basic algorithm performs perfectly well there are some design decision, such as the Attach method for Fitness and Selector classes, which, in retrospect, might have been made differently. One current difficultly with the toolkit is that Individual objects are never disposed of and because of this any genetic algorithm built using the toolkit will eventually run out of memory. There were a number of other suggested techniques such as vector, ordered list, and number representations which have also been completed to provide support for the more complex example algorithms. Work on reproduction operators, particularly for crossover, has not reached the range discussed during the design stage. Amongst numerous breeding techniques which could have been used only the simplest, the generational model, was implemented. Another section of the Statement of Requirements gives a list of other facilities which might be useful in a genetic algorithm toolkit. These were all considered during the design stage and should be possible within the confines of the current design but none have been implemented. There are two areas in which this is a particular disappointment - family trees provided by a History class and the saving the status of an active genetic algorithm. The demonstration algorithms proved that the toolkit was capable of speeding the creation of genetic algorithm by a combination of predefined and extensible components. However, none of these examples are good examples of a genetic algorithm. The Blues is only a toy suitable for the teaching of ideas. My implementation of the Travelling Salesman Problem produces very poor results compared to other techniques and the violin music notation algorithm is only likely to perform well with small data sets but does show scope for improvement.
|