Automatic Design of Algorithms Through Evolution

Automatic Design of Algorithms Through Evolution (ADATE) is a system for automatic programming i.e., inductive inference of algorithms. ADATE can automatically generate non-trivial and novel algorithms. Algorithms are generated through large scale combinatorial search that employs sophisticated program transformations.

Some Selected ADATE Publications

Reference [2] in the list below gives an overview of ADATE. For the time being, the best source of information about the internal details of the ADATE system is [1] which is an edited version of my Dr. Scient. thesis.
  1. J. R. Olsson, Inductive functional programming using incremental program transformation and Execution of logic programs by iterative-deepening A* SLD-tree search, Research report 189, Dr scient thesis, ISBN 82-7368-099-1, University of Oslo, October 1994.
  2. J. R. Olsson, Inductive functional programming using incremental program transformation, Artificial Intelligence, volume 74, number 1, March 1995, pp. 55-83.
  3. J. R. Olsson, Population management for automatic design of algorithms through evolution, International Conference on Evolutionary Computation, IEEE Press, 1998.
  4. J. R. Olsson, The art of writing specifications for the ADATE automatic programming system, Genetic Programming 1998, Morgan Kaufmann.
  5. J. R. Olsson, Låt datorn skriva programmen!, popular paper in Swedish, HOIT, number 1, 1998.
  6. J. R. Olsson, How to Invent Functions, European workshop on genetic programming, Springer Verlag, 1999.
  7. J. R. Olsson and B. Wilcox, Self-Improvement for the ADATE Automatic Programming System, A more preliminary version of this paper was published at the 3rd WSES International Conference on Evolutionary Computation, WSES Press, 2002.
  8. J.R. Olsson and D. M. W. Powers, Machine Learning of Human Language through Automatic Programming, International Conference on Cognitive Science, University of New South Wales, July 2003, pp. 507-512.

Available software

Version 0.50 of ADATE is the newest one and available in source code form in the files main1.sml and main2.sml. A user manual written by Geir Vattekar explains how to compile it. The ADATE system is still an unfinished research prototype but may still sometimes provide better results than any other machine learning method not only on automatic programming problems but also on classical machine learning data sets. A utility called c5conv that converts a data set in C5.0 format to an ADATE specification is included in the latest ADATE distribution.

Old examples of specifications and synthesized programs

A small and simple example - List sorting.

Examples of specifications, synthesized programs and log files listed in order of increasing syntactic complexity.

External links

General information about program induction. If you are interested in automatic programming, please consider joining our community.

A Standard ML compiler for Microsofts .NET framework which makes it possible to use code generated by ADATE in any .NET application.

Stephen Week's MLton compiler and other tools used for developing the current version of the ADATE system.

CLEAN, a functional language with purely functional I/O, GUI and arrays. Shows that "real world" programs can easily be written in a pure style.

Comments, suggestions or questions?