【发布时间】:2017-01-20 18:45:03
【问题描述】:
我在 scipy 的 optimize.minimize 函数中使用算法 'COBYLA'(为 cygwin 构建的 v.0.11)。我观察到在这种情况下似乎没有使用参数bounds。比如简单的例子:
from scipy.optimize import minimize
def f(x):
return -sum(x)
minimize(f, x0=1, method='COBYLA', bounds=(-2,2))
返回:
status: 2.0
nfev: 1000
maxcv: 0.0
success: False
fun: -1000.0
x: array(1000.0)
message: 'Maximum number of function evaluations has been exceeded.'
而不是 x 的预期 2。
有没有人察觉到同样的问题?是否存在已知的错误或文档错误?在 scipy 0.11 文档中,COBYLA 算法不排除此选项。事实上函数fmin_cobyla 没有bounds 参数。
感谢您的任何提示。
【问题讨论】:
-
听起来应该可以,但也许你必须使用
bounds=[(-2,2)]。不过,我没有可以尝试使用最小化的新 scipy。