【发布时间】:2021-01-29 00:57:14
【问题描述】:
让我们最小化函数
f =lambda x: (x+1)**2
在 scipy 中使用鲍威尔方法
如果我们使用
scipy.optimize.minimize(f, 1, method='Powell', bounds=None)
回报是
direc: array([[1.]])
fun: array(0.)
message: 'Optimization terminated successfully.'
nfev: 20
nit: 2
status: 0
success: True
x: array(-1.)
即最小值应为-1。如果我们提供界限
scipy.optimize.minimize(f, 1, method='Powell', bounds=[(0,2)])
又来了
direc: array([[1.]])
fun: array(0.)
message: 'Optimization terminated successfully.'
nfev: 20
nit: 2
status: 0
success: True
x: array(-1.)
现在是错误的!正确答案应该是 0。就像没有考虑边界一样。我正在使用 scipy '1.4.1' 和 python 3.7.6。 有人知道吗?
【问题讨论】:
-
如果我的回答对你有帮助,你可以考虑accepting it。
-
很有帮助!抱歉,我是堆栈溢出的“新手”.. 并且不知道如何接受它.. 再次感谢
标签: python scipy minimize boundary