我實現了與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