我正在使用 scipy.optimize 模块来查找最佳输入权重,以最小化我的输出。从我见过的例子来看,我们用单边方程定义约束;然后我们创建一个“不等式”类型的变量。我的问题是优化包如何知道约束中变量的总和是否需要小于 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 http://apmonitor.com/che263/index.php/Main/PythonOptimization
参考https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html向下滚动到多元标量函数的约束最小化(最小化),您可以发现
该算法可以处理约束最小化问题
形式:
其中不等式的形式为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
i.e., x[0]+x[1]+x[2]+x[3]>=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)