重读 API 我发现多个 TerminationCondition 可以提供给 engine.evolvePopulation()。这让我可以编写一个递归函数,只要适应度继续提高,它就会继续运行。
process (Parameters params) {
result = engine.evolvePopulation(params.size, 0,
new Stagnation(params.stagnation, true),
new TargetFitness(params.target, true));
if (result.get(0).getFitness() >= params.target)
process(params.increase());
return;
}
在我的例子中,目标每次都会增加一个固定的量。尺寸和停滞随着目标立方体的增加而增加。这样,特定人群变得越好,投入的时间就越多。不确定这是最好的方法,但对于这个问题,它得到了我正在寻找的答案。
哦,顺便说一句,我的程序看起来并不像我上面粘贴的那样。我是一个非常糟糕的程序员,我的代码比这更难看。只是试图展示这个想法的要点。