我实现了与jenes库(Tutorial 5: ObjectChromosome)一起提供的Java示例。我发现人群中的个体都是一样的(即没有随机化发生);重复同一人群中的个人
我添加以下代码OCProblem类ga.evolve();
后打印每个个体在群体:
ga.evolve();
Population pop= ga.getCurrentPopulation();
ArrayList population_test= pop.getIndividuals();
for(int n=0; n < population_test.size(); n++){
Individual<ObjectChromosome> individual=(Individual<ObjectChromosome>) population_test.get(n);
ObjectChromosome chrom = individual.getChromosome();
int i1 = (Integer)chrom.getValue(0);
int i2 = (Integer)chrom.getValue(1);
double i3= (double)chrom.getValue(2);
boolean i4= (boolean)chrom.getValue(3);
Color i5= (Color)chrom.getValue(4);
System.out.println("[ "+ i1+" , "+ i2+" , "+ i3+" , "+ i4+" , "+ i5+" ] ");
}
输出是令人震惊的个体被复制! 这是从前面的代码
教程5的输出:查找最接近目标的颜色的顺序。 [6, ,20,0.5623470035526044,false,(RED)] [6,,0.5623470035526044,false,(RED)] [6,20,0.5623470035526044, false,(RED)] [6,20,0.5623470035526044, ,(RED)] [6 ,20,0.5623470035526044,false,(RED)] [6,20 ,0.5623470035526044,false,(RED)] [6,20,0.5623470035526044, false,(RED)] [6, 20,0.5623470035526044,假的,(RED)] [6 ,20,0.5623470035526044,假的,(RED)] [6,20 ,0.5623470035526044,假的,(RED)
有谁知道为什么随机方法在jenes库中doesn'在人口上工作?
我编辑了帖子中的代码“我的坏,我错误地复制了代码”。不幸的是这不是问题。我相信这是随机化方法中的一些事情,因为当我调试和跟踪代码时,我总是有这些重复的个体。无论如何感谢您的评论:) – Abreal 2012-07-20 15:14:24