我有一个函数想要用 scipy.optimize.fmin
进行最小化。请注意,在评估我的函数时,我会强制进行一次 print
。
我的问题是,当我开始最小化时,打印的值会下降到达某个点(值为 46700222.800),然后以非常小的步骤继续下降,例如 46700222.797、46700222.765、46700222.745、46700222.699、46700222.688、46700222.678。因此,直觉上,我已经达到了最小值,因为每个步骤的长度都小于1。但是算法继续运行,直到出现 "Maximum number of function evaluations has been exceeded
" 错误。
我的问题是:当函数评估到达一个不再真正发展的值时(例如,我在迭代后没有获得超过1的增益),如何强制我的算法接受参数值?我读过选项 ftol
可以使用,但它对我的代码没有任何影响。事实上,我甚至不知道应该给 ftol
设置什么值。我尝试过 0.00001 到 10000 的所有值,仍然没有收敛。
xtol
和ftol
,但需要对它们施加约束以停止。请参见我的回答。 - gg349