【问题标题】:Scipy Optimization Algorithms: Early stoppingScipy 优化算法:提前停止
【发布时间】:2022-01-24 19:07:08
【问题描述】:

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

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

【问题讨论】:

  • maxiter 是当它收敛(即失败)时停止的时间。如果您多次获得相同的号码,它将终止。这就是重点。

标签: python optimization scipy differential-evolution early-stopping


【解决方案1】:

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

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

tol : 浮动,可选

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

...

atol : 浮动,可选

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

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多