在google上搜索遗传算法时,我遇到了onemax问题,我的搜索结果显示这是遗传算法应用到的第一个问题之一。但是,我不确定OneMax的问题到底是什么有人能解释一下吗。
如有任何帮助,我们将不胜感激
最佳答案
一个最大问题的目标是创建一个长度n
的二进制字符串,其中每个基因都包含一个1。fitness函数非常简单,您只需遍历二进制字符串来计算所有字符串这就是你在帖子中提供的公式中的总和。它只是二进制字符串中的个数。你也可以用百分比来表示健身,用n * 0.01
除以健身的次数。更高的身体素质会有更高的百分比。最终,你会得到一系列n
的人,在某一代适合度为100%。
double fitness(List<int> chromosome) {
int ones = chromosome.stream().filter(g -> g == 1).count();
return ones / chromosome.size() * 0.01;
}