Notes from the Publisher

August 09, 2008

Projects / New Project - Evolving Algorithms

JB

Bartlett Publishing has just launched a project called Evolving Algorithms to determine the limits and requirements of evolutionary algorithms in computer science.

This project is essentially created to be a little like Avida, except with a much narrower focus.  Avida attempts to be several things at once, and winds up not being very good at any of them.  It attempts to model biology by making the organism self-replicating and using lots of biology metaphors in its production, it attempts to model cost theory through its use of environmental limits, and it attempts to model the possibility of evolution by mutating programs and seeing if they can evolve new algorithms de novo.

The problem is that it doesn't do any of these things well.  Despite the fact that Avida is a Turing-complete system, it can't even detect the evolution of an algorithm that requires those constructs!  The only construct that requires looping is the copy loop, and that is precoded in the original organism!  So, for instance, it can't even in theory give selection value to, say, a factorial function.  I was greatly disappointed when I found this out.  Likewise, it doesn't model biological cost theory well, because it gives an inordinate fitness advantage to new functions (for a good model of cost theory, see Mendel's Accountant).

Don't get me wrong, Avida was a great system to spur interest in this field.  This program probably wouldn't exist without Avida - we probably wouldn't have thought of it on our own.  However, the problem is that many view Avida as being able to answer their questions (which it generally can't - especially on cost theory or evolvability) instead of simply being the first iteration of a dynamic series of research questions.  

So, what we would like to research are the prerequisites for evolving new algorithms, not just logic functions.  Therefore, we are starting this project in order to determine what is required in order to do this.  We are chucking cost theory, non-teleology.  We know we are including teleologial concepts into evolution, because the question we want to answer is, in order to solve problem X, what prerequisites are required in order to construct a solution?

Therefore, the new project will have an easily-modifiable instruction set, a more flexible machine model, and a probably more teleological method of defining fit/unfit organisms.

Again, the new project is at http://code.google.com/p/evolving-algorithms/