You'd also do well to read my previous posting about Evolve.java  
earlier this month. I'm concerned I may be repeating myself a bit.


On Jan 24, 2006, at 11:44 AM, Eric Pascual wrote:

> I've some ideas about how to implement this, but I'm not sure they are
> "compliants" with ECJ philosophy and architecture. Here they are :
>
> 1/ sub-class Evolve and implement a method doing more or less what  
> main
> does, buth replacing the command line args mechanism with something  
> using
> webapp properties for instance. This method will be called by the
> doPost/doGet handler

This is pretty straightforward to do.  More or less the args have two  
functions.  First, ECJ uses them to determine if you're starting up  
from checkpoint.  Second, ECJ passes ALL the args (if you're *not*  
starting from checkpoint) into the ParameterDatabase, which uses them  
to load itself from the provided file and tack on some command-line- 
provided arguments.

That's it!

There's no reason you can't start up ECJ from a parameter database  
you've constructed on your own.  At the very least you can just make  
a blank database and dump a bunch of runtime arguments into it which  
you've gathered through some other means, and then fire up ECJ using  
that database.


> 2/ have the end-users inputs be transmitted as an object stored  
> into the
> statics vector of EvolutionState before firing ECJ search

statics will be going away soon probably.  It had exactly one  
purpose: to let you stash pointers to statically-declared objects in  
order to guarantee they'd get serialized.  We've since gotten rid of  
all of our statically-declared objects.  Thus no more need for statics.

Don't use statics.  If you want to make a global variable, stick in  
the prototype of your Problem instance.  Or if you must, subclass  
SimpleEvolutionState (or whatnot) and add an instance variable.


> 3/ when iterations are over, scan population to get the fittest  
> individual.
> I have a problem with this, because since ECJ is quite a powerfull and
> flexible software, I would have imagined that there was some  
> qhicker way to
> retreive the best individual of a population. I'm pretty sure I'm  
> overlooked
> something and that there is a built-in way to do this

SimpleStatistics maintains the fittest individual of each  
population.  SimpleStatistics.finalStatistics(...) prints it out at  
the end.  Subclass from SimpleStatistics to do something else: or you  
can make your own Statistics object to maintain this information.

Sean