Scipy.optimize Inequality Constraint - 不平等的哪一方被考虑?

try*_*uff 9 python minimize scipy

我正在使用scipy.optimize模块来查找最小化输出的最佳输入权重.从我看到的例子中,我们用单侧方程定义约束; 然后我们创建一个'不等式'类型的变量.我的问题是优化包如何知道我的约束中的变量之和是否需要小于1或大于1?

...

def constraint1(x):
    return x[0]+x[1]+x[2]+x[3]-1
Run Code Online (Sandbox Code Playgroud)

....

con1 = {'type': 'ineq', 'fun': constraint1}
Run Code Online (Sandbox Code Playgroud)

链接到我在我的例子中使用的完整解决方案:http: //apmonitor.com/che263/index.php/Main/PythonOptimization

谢谢.

San*_*Dey 16

如果你参考https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html并scrool到约束最小化多变量标量函数(最小化),你可以发现

该算法允许处理形式的约束最小化问题:

在此输入图像描述

不平等的形式C_j(x) >= 0.

因此,当您将约束定义为

def constraint1(x):
    return x[0]+x[1]+x[2]+x[3]-1
Run Code Online (Sandbox Code Playgroud)

并将约束的类型指定为

con1 = {'type': 'ineq', 'fun': constraint1}
Run Code Online (Sandbox Code Playgroud)

它会自动假定约束是标准形式,x[0]+x[1]+x[2]+x[3]-1>=0x[0]+x[1]+x[2]+x[3]>=1