1

我想知道如何触发 scipy 优化算法的提前停止,如差分进化、双重退火和盆地跳跃。

我知道你可以调用一个返回 True 或 False 的回调函数,但是,我想知道当适应度函数在几个迭代中收敛到相同的值时如何触发整个算法停止。例如,如果 maxiter 设置为 250,但适应度函数在 100 次迭代时收敛,当它不再进行任何改进时,我如何触发它停止?

4

1 回答 1

0

除了maxiter参数之外,还有一个公差决定了收敛性。所有算法一旦达到收敛标准就会停止。

differential_evolution个例子。它有两个公差参数(大多数只有第一个):

tol :浮动,可选

np.std(pop) <= atol + tol * np.abs(np.mean(population_energies))收敛的相对容差,当, where 和atoltol分别是绝对容差和相对容差时求解停止。

...

atol :浮动,可选

np.std(pop) <= atol + tol * np.abs(np.mean(population_energies))收敛的绝对容​​差,当, where 和atoltol分别是绝对容差和相对容差时求解停止。

于 2021-12-23T22:53:28.583 回答