Who can do genetic programming with Python

Erik Max Francis max at alcyone.com
Fri Nov 23 14:39:46 EST 2001


Martijn Faassen wrote:

> Cool; I've recently been thinking about that. Any results, info, etc,
> you
> have on your experiments?

They look to be at least as good as using LISP as the genetic language
as in Koza's work.  How you repopulate the population each generation
can get tricky, however; a wholesale approach can lead to diversity
problems.  A stabilizing approach is during the fitness tests to
randomly select two programs, evaluate their fitness (perhaps by trial
against each other), then perform crossover and mutation and replace the
less fit program with their offspring (and doing this n times in a
population size of n you call a generation).

Even though this seems strange at first, it's really necessary since
diversity problems (where many of the programs start resembling each
other) can lead to a degenerate case where more and more resemble each
other with small defects; after a few generations programs start looking
like stutterers (a bunch of programs that look like A B C D E will
result in programs that might look like A B B B D C C D D C D D E ...).

There's a paper called "Stack-based genetic programming" by Perkis I
could send you (via email) if you're interested.

> I've worked with a simple virtual machine designed to the same
> constraints too (every sequence of instructions is a legal program),
> but this VM didn't have a stack *or* a set of registers; instead there
> were some instructions to move read/insert/delete heads onto their
> own instruction set. This allowed me to write an ancestor replicator
> would
> copy itself. That's different from genetic programming though, moving
> more towards artificial life.

I also have another artificial life system that involves a virtual
machine language as well, although it has a full instruction set,
registers including some shared registers, the ability for processes to
fork into new ones, always-legal instructions (well, illegal
instructions set an exception register, but they don't halt the
process), indirection, and an assembler with labels support (!).

The two systems are called Qu and Jupiter, respectively, by the way;
I've been planning on releasing them publicly for quite some time but
haven't quite had the energy to package them up.  Maybe someone with
sufficient interest in playing could light a fire under my butt.

-- 
 Erik Max Francis / max at alcyone.com / http://www.alcyone.com/max/
 __ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE
/  \ Laws are silent in time of war.
\__/ Cicero
    Esperanto reference / http://www.alcyone.com/max/lang/esperanto/
 An Esperanto reference for English speakers.



More information about the Python-list mailing list