【发布时间】:2019-03-01 20:38:25
【问题描述】:
在 Google 上搜索遗传算法时,我遇到了 OneMax 问题,我的搜索表明这是应用遗传算法的第一个问题。但是,我不确定 OneMax 问题是什么。谁能解释一下。
感谢任何帮助
【问题讨论】:
标签: java algorithm genetic-algorithm
在 Google 上搜索遗传算法时,我遇到了 OneMax 问题,我的搜索表明这是应用遗传算法的第一个问题。但是,我不确定 OneMax 问题是什么。谁能解释一下。
感谢任何帮助
【问题讨论】:
标签: java algorithm genetic-algorithm
One-Max 问题的目标是创建一个长度为n 的二进制字符串,其中每个基因都包含一个 1。适应度函数非常简单,您只需遍历二进制字符串,计算所有的值。这就是您在帖子中提供的公式中的总和。它只是二进制字符串中的个数。您还可以将适应度表示为百分比,方法是将个数除以 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;
}
【讨论】:
int ones = chromosome.stream().filter(g -> g == 1).count();
n基因。最初,每个基因都是随机生成的,即。 e.一个基因有 50/50 的机会被创建为 0 或 1。在初始阶段之后,您应用遗传算子,例如交叉和突变,以创建具有更高适应度的新染色体。这样,您将获得越来越多的包含大量染色体的染色体。最终,如果创建了 100% 的染色体,或者在达到某一代之后,您将停止 GA。