On Oct 12, 2010, at 5:43 AM, Darren Williams wrote:

> I'm looking at implementing Hornby's ALPS (See
> for more info), which an
> age layering technique for helping overcome premature convergence, in
> ECJ.
> While ALPS itself doesn't seem that hard to implement, one of the
> reasons I'm looking to do it is to get more familiar with ECJ, and
> figured rewriting bits of it (how some of the breeding works to allow
> for ALPS) would be a good way to learn.

I sent a back-channel message to Darren already, but would like to pass along advice to anybody who's working on an ALPS system in ECJ proper: If you haven't read Michael Schmidt's and Hod Lipson's facepalm-making paper from GECCO 2010, you should.

Basically what Michael did was school all of us who have been using the convoluted original ALPS architecture (Greg included) on how much simpler and more effective it can be to simply:

* keep track of the "age" (I prefer "progress") of every solution in the population
** randomly generated solutions have progress=0
** solutions generated by applying search operators are one more than the max progress of any contributing parent
* select for minimum error AND minimum progress using your favorite multiobjective approach

That's it.

This is enough to maintain a Pareto front containing a diversity of new, relatively poor-performing but diverse "exploratory" solutions, and at the same time foster a high-performance refined "exploitation" solutions. No subpopulations, no layers, none of that other infrastructure.

Hope that's useful.
Bill Tozier
AIM:[log in to unmask]  Twitter:Vaguery

"The future arises out of what goes on in the present."
  -- Norman Spinrad