scipy 不等式约束-考虑不等式的哪一边?

5kgi1eie  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(166)

我正在使用scipy.optimize模块来寻找最佳的输入权重,使我的输出最小化。然后我们创建一个类型为'equality'的变量。我的问题是优化包如何知道我的约束中变量的和需要小于1还是大于1?
...

def constraint1(x):
    return x[0]+x[1]+x[2]+x[3]-1

....

con1 = {'type': 'ineq', 'fun': constraint1}

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

qqrboqgw

qqrboqgw1#

参考https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html并向下滚动到多变量标量函数的约束最小化(minimize),您可以发现
该算法允许处理以下形式的约束最小化问题:

其中不等式的形式为C_j(x) >= 0
因此,当您将约束定义为

def constraint1(x):
    return x[0]+x[1]+x[2]+x[3]-1

并将约束的类型指定为

con1 = {'type': 'ineq', 'fun': constraint1}

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

相关问题