/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package examples.grid.mathProblemDistributed;
import org.jgap.distr.grid.*;
import org.jgap.distr.grid.gp.*;
import org.jgap.*;
import org.jgap.gp.impl.*;
/**
* Initializes the genotype on behalf of the workers in a grid.
*
* @author Klaus Meffert
* @since 3.2
*/
public class MyGenotypeInitializer
implements IGenotypeInitializerGP {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.5 $";
public GPGenotype setupGenotype(JGAPRequestGP a_req, GPPopulation a_initialPop)
throws Exception {
GPConfiguration conf = a_req.getConfiguration();
GPPopulation pop;
if (a_initialPop == null) {
pop = new GPPopulation(conf, conf.getPopulationSize());
/**@todo add a mechanism to allow workers to initialize the population
* they work with.
*/
}
else {
if (a_initialPop.isFirstEmpty()) {
throw new RuntimeException("Initial population must either be null"
+" or be completely filled with gp programs!");
}
pop = a_initialPop;
}
int size = conf.getPopulationSize() - pop.size();
IGridConfigurationGP gridConfig = a_req.getGridConfiguration();
GPGenotype result = new GPGenotype(conf, pop, gridConfig.getTypes(),
gridConfig.getArgTypes(),
gridConfig.getNodeSets(),
gridConfig.getMinDepths(),
gridConfig.getMaxDepths(),
gridConfig.getMaxNodes());
return result;
}
}