为什么我的 scipy.optimize.minimize 失败? [英] Why my scipy.optimize.minimize fails?

查看:210
本文介绍了为什么我的 scipy.optimize.minimize 失败?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用 fmin_bfgs 找到绝对函数 abs(x) 的局部最小值.初始点设置为100.0;预期的答案是 0.0.但是,我得到:

I try with fmin_bfgs to find the local minimum of the absolute function abs(x). The initial point is set to 100.0; the expected answer is 0.0. However, I get:

In [184]: op.fmin_bfgs(lambda x:np.abs(x),100.0)
Warning: Desired error not necessarily achieved due to precision loss.
         Current function value: 100.000000
         Iterations: 0
         Function evaluations: 64
         Gradient evaluations: 20
Out[184]: array([100.0])

为什么?

推荐答案

像 fmin_bfgs 和 fmin_slsqp 这样的方法需要平滑(连续导数)函数才能提供可靠的结果.abs(x) 的最小值有一个双连续导数.在这种情况下,像 Nelder-Mead 单纯形这样不需要连续导数的方法可能会提供更好的结果.

Methods like fmin_bfgs and fmin_slsqp require smooth (continuous derivative) functions in order to provide reliable results. abs(x) has a dicontinuous derivative at its minimum. A method like the Nelder-Mead simplex, which doesn't require continuous derivatives, might provide better results in this case.

这篇关于为什么我的 scipy.optimize.minimize 失败?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆