我使用了JGAp Java遗传算法库。当我评估染色体时,我在总体样本运行中发现染色体重复:
evaluation 0 A B C A D F S F W evaluation 1: A B C A D F A D F evaluation 2: A D F A D F A D F
和我使用的配置是:
conf.setKeepPopulationSizeConstant(true); conf.setRandomGenerator(new StockRandomGenerator()); conf.verifyStateIsValid();
我可以使用任何配置来获得独特的染色体吗?
您可以确保仅使用不允许重复的NaturalSelector。示例代码:
conf.getNaturalSelectors(false).clear(); BestChromosomesSelector bcs = new BestChromosomesSelector(conf, 1.0d); bcs.setDoubletteChromosomesAllowed(false); conf.addNaturalSelector(bcs, false);
请注意,仅使用SwappingMutationOperator可能会饿死总体的创造力。一项修改了JGAP的MinimizingMakeChange示例但仅使用SwappingMutationOperator的测试表明,该群体迅速停止生产以前从未见过的个体。