Python Scipy.optimize.minimize忽略边界
下面是一个虚拟示例,我希望答案为0.8,但它输出的值接近0:Python Scipy.optimize.minimize忽略边界,python,scipy,minimization,Python,Scipy,Minimization,下面是一个虚拟示例,我希望答案为0.8,但它输出的值接近0: from scipy.optimize import minimize, Bounds minimize(lambda chi: chi**2, 1, method='nelder-mead', bounds=Bounds(0.8,1.2,True) ) 此方法不支持边界。@sascha这似乎不是问题所在,因为约束是一个单独的参数。无论如何,如果我用COBYLA optimizer(constrained)运行相同的东西,结果仍然
from scipy.optimize import minimize, Bounds
minimize(lambda chi: chi**2, 1, method='nelder-mead', bounds=Bounds(0.8,1.2,True) )
此方法不支持边界。@sascha这似乎不是问题所在,因为约束是一个单独的参数。无论如何,如果我用COBYLA optimizer(constrained)运行相同的东西,结果仍然不在范围内,这就是问题所在。Cobyla可能也不支持它(如果我没记错的话,只有ineq约束)。试着用一些实际支持它的东西,比如
method=“L-BFGS-B”
,然后感到惊讶;-)编辑并阅读关于如何传递初始点的文档->提示:1->[1]
实际上,L-BFGS-B是有效的。尽管如此,Powell方法并不尊重边界,但根据文档,它应该遵守