首页 > 解决方案 > gtol 参数问题 [神秘]

问题描述

我正在尝试使用 Python 中的神秘库优化函数,并且对gtol参数有一个一般性的问题。

我正在搜索的参数空间是高维(30-40),因此,设置gtol = 40000似乎适合我。奇怪的是,算法似乎在 30000 次迭代后停止,尽管我指定了gtol为 40000,这(据我所知)意味着该算法在停止运行之前应该有 40000 次相同的迭代。

我的函数调用非常基本:

stepmon = VerboseLoggingMonitor(1, 1)
result  = diffev2(utilss, x0=[1/value]*value, bounds=[(0,0.2)] * value,  npop=150, gtol=40000, disp=True, full_output=True, itermon=stepmon

我检查了评价函数的演变,它在第 29000 次迭代时持平。最后 1000 次迭代是相同的,但它已经停止,而不是运行其余 39000 次所需的gtol迭代。

我是否误解了gtol参数?或者我在这里错过了什么?

提前致谢。

标签: pythonoptimizationmystic

解决方案


我是mystic作者。这是对 的正确解释gtol,但是,您可能忽略了maxiter(and maxfun),这是要执行的最大迭代次数(和函数评估)。

如果您不设置maxiter(默认为None),那么我相信默认设置diffev210 * nDim * nPop。尝试设置maxiter=100000,或类似的东西。

如果终止消息显示Warning: Maximum number of iterations has been exceeded,则maxiter导致它停止。


推荐阅读