Ph.D. Thesis

This page contains downloads and errata relating to my PhD thesis Disambiguating Evolutionary Algorithms: Composition and Communication with ESDL, completed in 2012.

Any questions or feedback can be sent to my email address shown here.


Evolutionary Computation (EC) has been developing as a field for many years. Encompassing a range of intelligent and adaptive search, optimisation and decision-making algorithms, there is a wealth of potential for EC to be applied to problems in many domains. People who are new to the field may want to learn, understand or apply EC, while those who are more experienced are looking to extend, develop and teach. Unfortunately, it is not clear how best to approach these tasks. Ideally, students should have guidance through the field, including how EC works and approaches to algorithm design; researchers should have canonical structures, implementations, presentation formats and comparison frameworks; developers should have easy access to interested users, as well as the potential to differentiate their work in terms of performance, flexibility and aesthetics.

This thesis provides a model of the structure of Evolutionary Algorithms (EAs) based on operator composition. A small number of discrete element types and their interactions are defined, forming an algorithm architecture that supports existing concepts and provides direction for those looking to understand, use and improve EAs. A simple description language based on these elements is created to support communication between authors, readers, designers and software. Implementation concerns, ideas and potential are discussed to assist those with an interest in developing the simulation tools and frameworks used within the field. The model and description language are shown to concisely and unambiguously describe EAs in a directly publishable form.



All links will open in a new tab or window.

  • esec, the ESDL-based framework shown in Chapter 6 and Appendix E.
  • esdlc, the ESDL compiler used in esec and shown in appendices C and D.
  • esecui, the graphical front-end for esec mentioned in Appendix E.
  • Python, the programming language used by esec and examples throughout.
  • Visual Studio 11, required for the C++ AMP support described in Appendix D
  • ECJ, reviewed in Chapter 5 and used in Chapter 6.
  • HeuristicLab, reviewed in Chapter 5.


None yet…