The *multi* in MultibreedingPipeline does not refer to subpopulations.
(Each subpopulation has its own operators, which rely on different pipelines.)
It refers to multiple pipelines. The javadoc comment for
MultiBreedingPipeline says that
MultiBreedingPipeline is a BreedingPipeline [that] stores some <i>n</i>
* each time it must produce an individual or two,
* it picks one of these sources at random and has it do the production.
So it picks one of the pipelines at random. Each pipeline can have a
probability associated with it (inherited from
BreedingSource.probability), so you should change those if you want to
dynamically increase (decrease) the prob of xover over mutation for
//If you want to change the rate of mutation (instead of 1/L, 1/L+0.003)
or what have you, then this not the best place. Look at defaultCrossover, defaultMutate
in (in your case) DoubleVectorIndividual.
Let me know if it works out for you. If not, send me some code (please
strip down what's not relevant), and I'll look into it.
On Tue, 12 Jun 2007, Anura Rabel wrote:
> Dear Sean,
> I have been trying to use the ECJ Toolkit to adaptively control the crossover and mutation probabilities. adaptive
> priobabilities are based on average fitness values of the population before and after breeding. According to the
> information I received from the ECJ-interest earlier, I calculate the average fit values by subclassing the breeder class
> and overriding the breederpopulation method. How can I use this calculated values to modify the crossover and mutation
> probabilities in DoubleVectorIndividuals class. I have been asked to use the MultibreedingPipeline class. However if I am
> using a singel subpopulation for the problem. is it necessary to use the MultibreedingPipeline ? If I have to use
> this how can I use the calculated values in this class.
> Thank you
> Anura Rabel
> Play games, earn tickets, get cool prizes. Play now–it's FREE!