/** * Cloning multiple times in a row must be possible. * * @throws Exception * @author Klaus Meffert * @since 3.2 */ public void testClone_1() throws Exception { Configuration conf = new Configuration(); conf.setFitnessFunction(new StaticFitnessFunction(2)); Gene gene = new BooleanGene(conf); conf.setSampleChromosome(new Chromosome(conf, gene, 5)); conf.addNaturalSelector(new WeightedRouletteSelector(conf), true); conf.setRandomGenerator(new StockRandomGenerator()); conf.setEventManager(new EventManager()); conf.setFitnessEvaluator(new DefaultFitnessEvaluator()); conf.addGeneticOperator(new MutationOperator(conf)); conf.setPopulationSize(1); Configuration theClone1 = (Configuration) conf.clone(); Configuration theClone2 = (Configuration) conf.clone(); assertEquals(conf, theClone1); assertEquals(conf, theClone2); assertEquals(theClone1, theClone2); }
/** * Clone after settings locked. * * @throws Exception * @author Klaus Meffert * @since 3.2 */ public void testClone_2() throws Exception { Configuration conf = new Configuration(); conf.setFitnessFunction(new StaticFitnessFunction(2)); Gene gene = new BooleanGene(conf); conf.setSampleChromosome(new Chromosome(conf, gene, 5)); conf.addNaturalSelector(new WeightedRouletteSelector(conf), true); conf.setRandomGenerator(new StockRandomGenerator()); conf.setEventManager(new EventManager()); conf.setFitnessEvaluator(new DefaultFitnessEvaluator()); conf.addGeneticOperator(new MutationOperator(conf)); conf.addGeneticOperator(new CrossoverOperator(conf, 2)); conf.setPopulationSize(1); conf.lockSettings(); Configuration theClone = (Configuration) conf.clone(); assertEquals(conf, theClone); assertEquals(2, theClone.getGeneticOperators().size()); assertEquals(MutationOperator.class, theClone.getGeneticOperators().get(0).getClass()); assertEquals(CrossoverOperator.class, theClone.getGeneticOperators().get(1).getClass()); }