On Mar 21, 2007, at 7:04 AM, Alberto Cuesta wrote:

> Hello all,
> why ec.Evolve setups some parameters of the EvolutionState?, namely:

Good question.  Some answers:

>        evolutionState.parameters

It's not easy to load the parameters parameter from a Parameter  
Database which is defined by the parameters parameter.  :-)

>        evolutionState.output

ECJ needs to be able to output messages if it fails in the very  
earliest loading time.  So this has to be preset.

>        evolutionState.evalthreads
>        evolutionState.breedthreads

These variable determine the number of random number generators, see  

>        evolutionState.random
>        evolutionState.randomSeedOffset

This is historical -- there's no particular reason we can't set the  
random number generators in EvolutionState I think.

So I think we can easily get rid of all but evolutionState.parameters  
and evolutionState.output.  Now one problem here is that output and  
parameters are both things that you'd want to swap out or subclass.   
One option would be to create an interface for each which you can  
implement.  The simplest option right now is for you to just subclass  
directly.  A problem with the interface mechanism is that Output has  
some static methods, so it'd probably have to be an abstract class