我正在使用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
1条答案
按热度按时间qqrboqgw1#
参考https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html并向下滚动到多变量标量函数的约束最小化(minimize),您可以发现
该算法允许处理以下形式的约束最小化问题:
其中不等式的形式为
C_j(x) >= 0
。因此,当您将约束定义为
并将约束的类型指定为
它会自动假定约束的标准形式为
x[0]+x[1]+x[2]+x[3]-1>=0
,即x[0]+x[1]+x[2]+x[3]>=1