当前,我正在寻找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优化器软件包吗?