我遵循an example关于Java中的遗传算法。虽然我理解这个应用程序的概念,但我不明白我将如何应用我选择的公式,并让遗传算法发现它是x
(个体基因)的最高值。在Java中最大化功能
我尝试下面的代码,通过具有健身返回公式的值如下:
static int getFitness(Individual individual) {
int fitness = 0;
Integer x = Integer.parseInt(individual.toString(), 2);
fitness = calculateFormula(x);
return fitness;
}
public static int calculateFormula(int x) {
int result = (-x * x) + (7 * x);
return result;
}
但随着我跟着教程,你应该到指定开头的解决方案。但是当我这样做时,它将搜索该解决方案而不是x
的值,该值将返回最高的result
。通过没有指定解决方案,只要它找到代表0
的基因就会结束。
所以问题: 如何将一个公式应用到遗传算法中,所以它会查找公式最高的结果-x² + 7x
?
“指定解决方案在开始时“ - 这是什么意思?什么时候开始? –
@KevinHooke [The tutorial](http://www.theprojectspot.com/tutorial-post/creating-a-genenetic-algorithm-for-beginners/3)我在程序开始时使用了一个候选解决方案。程序找到该候选人后停止。我希望遗传算法在找到公式的最大结果或达到最大迭代时停止。 – Lars
Re。 “当它找到最大结果时停止” - 你的代码是从哪里调用的?你没有在代码中显示任何迭代,所以是在循环中调用你的代码的其他东西?确定最大结果的逻辑在哪里? –