我正在使用 JGAP 实现一种遗传算法来解决染色体是整数列表的问题(我想在结果中保留 N 个合适的解决方案,而不仅仅是最合适的解决方案)。
每个整数必须在染色体中只出现一次(我通过将 Fitness=0 设置为具有重复等位基因的染色体来做到这一点,这没关系......)
我的问题:
在我的问题中,数字出现在染色体中的顺序不计算在内(1 2 3 与 2 1 3 相同)。
所以在执行结束时,我列出了可能的解决方案
我使用此处报告的解决方案(使用 JGAp(遗传算法库)和重复的染色体)以这种方式删除重复的染色体:
conf.getNaturalSelectors(false).clear();
BestChromosomesSelector bcs = new BestChromosomesSelector(conf, 0.8d);
bcs.setDoubletteChromosomesAllowed(false);
conf.addNaturalSelector(bcs, false);
但它只删除相同的染色体,它不会删除例如:
A B C D
A C B D
B A C D
我的问题中的那些染色体代表相同的解决方案
所以我最终得到了一个染色体列表,这些染色体具有相同的适应度和相同的含义,但基因的顺序不同。
我如何删除代表相同解决方案的染色体,尽管它的表示顺序如何?
谢谢你,祝你有美好的一天。