Wednesday, July 14, 2004

Update

Since my last post I have added a lot of little things. The most significant additions are:

1. I can now use NEVT (NeuroEvolution Visualization Toolkit http://nevt.sourceforge.net ) to generate SVG files from the neural networks and statistics files.

2. The desired behaviors are written in Lua script files. I'm still not sure if this is the best way to do things. Maybe users should just be able to decide how to implement the "fitness evaluation" functions on their own. They could have the choice of scripting them or deriving evaluator objects from a base class provided by Verve.

3. A high level Training Script XML file (for each behavior) contains info about evolution stages, among other things. It also contains the location of a Lua script containing evaluation functions for that behavior. It might still be better to have a single Lua script per behavior that specifies evolution stages and contains all the functions needed to evaluate the behavior.

Besides that, I have tweaked and rewritten chunks of the NEAT source code.

The main problem I have now is trying to get walking behavior easily. I can get decent results with "training wheels" (forces that keep the body from falling; see the Reil & Massey papers). Once I take off the training wheels, the fittest individuals die off because of the sudden change in the environment. I've tried gradually removing the training wheels, but I haven't had much better results yet.

My next big tasks are the following:

1. Get walking behavior to evolve more easily and reliably. This is such a fundamental behavior for simulated humans that I don't want to move to other behaviors until it works well.

2. Reimplement NEAT. I have been using Ken Stanley's NEAT source code for a while. The problem is that his code is under the GPL license, and Verve will use a less-restrictive license. There is a chance that he could change it for me, but that would probably be complicated since others have probably already used it in GPL-license projects. Also, implementing NEAT myself would give me an even better understanding of how the algorithm works.

Tyler

No comments: