带有约束的python中的Nelder-Mead优化

时间:2020-06-01 15:11:30

标签: python optimization scipy-optimize scipy-optimize-minimize

当前,我正在寻找python中的Nelder-Mead优化器,该优化器还接受变量的范围和约束。 Scipy具有Nelder-Mead优化器,但是它没有任何限制。

在搜索过程中,我遇到了constrNMPy软件包,这应该使之成为可能。

以下是如何使用constrNMPy的示例:

# Define initial guess
x0=[2.5,2.5]

# Define lower and upper bounds (None indicates no bound)
LB=[2,2]
UB=[None,3]

# Call optimizer
import constrNMPy as cNM 
res=cNM.constrNM(cNM.test_funcs.rosenbrock,x0,LB,UB,full_output=True)

# Print results
cNM.printDict(res)

但是,此示例仅说明如何定义边界,而不能定义约束。在上面的示例中,我希望具有以下约束,以便变量仅接受总和为5的值:

cons = {'type':'eq', 'fun':lambda x0: 5 - sum(x0)}

如何将此约束传递给constrNM调用?

或者还有其他带有约束的Nelder-Mead优化器软件包吗?

0 个答案:

没有答案