首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenetics库默认初始人口和适应度计算

Jenetics库默认初始人口和适应度计算
EN

Stack Overflow用户
提问于 2018-02-13 11:42:43
回答 1查看 503关注 0票数 0

我使用Jenetics是为了得到最好的个人,最大限度地解决问题。人口规模对个体有何影响?

想象一下,我把最初的人口从文件中读取到列表中

代码语言:javascript
复制
while( (line = bf.readLine())!=null){
String[] tokens = line.split(",");
chromossomes.add(IntegerChromosome.of(
  IntegerGene.of(Integer.parseInt(tokens[0]),0,100),                                            
  IntegerGene.of(Integer.parseInt(tokens[1]),0,100),                                                  
  IntegerGene.of(Integer.parseInt(tokens[2]),0,100)); 
}

如果文件中包含10个染色体,然后我将种群设置为100个,那么剩下的90个个体是随机产生的吗?

我也想知道这个健身功能是否正确。

代码语言:javascript
复制
private static int eval(Genotype<IntegerGene> gt) {
   int best=0,fitness=0;
   for(int i=0;i<gt.length();i++) {
       fitness = getFitness(gt.getChromosome(i));
       if (fitness > best){
           best = fitness;
       }
   }
 return best;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-13 12:10:53

第一个问题的答案是肯定的。人口中失踪的个体是随机产生的。但更重要的是,在从文件创建初始填充时,您犯了一个错误。我想你会喜欢这样做的。

代码语言:javascript
复制
final String[] lines = ...;
final ISeq<Genotype<IntegerGene>> population = Arrays.stream(lines)
    .mapToInt(Integer::parseInt)
    .mapToObj(i -> IntegerChromosome.of(IntegerGene.of(i, 0, 100)))
    .map(ch -> Genotype.of(ch))
    .collect(ISeq.toISeq());

这将创建一个个人(Genotype)每行。

第二个代码片段看起来像是在试图从一个个体的染色体中计算出最佳值。我认为你混淆了Genotype (一个个体)和人群,一个基因型的列表。适应度函数始终计算单个个体(Genotype)的适应度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48766037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档