我在ubuntu上使用scip python接口。我正在尝试使用quicksum添加一个约束:
m.addCons(quicksum(covfinal[i,j]*weightVars[i]*weightVars[j] \
for i in I for j in J)<=z)
由于某些原因,此步骤需要很长时间。我有
I=range(2500)
,J=range(2500)
。有什么方法可以使这一步骤更有效? 最佳答案
当前,除了addCons()
方法外,没有其他方法可以添加约束。与Python内置的quicksum()
相比,sum()
大大减少了所需的时间,因为仅创建了一个表达式实例,然后使用单个术语对其进行迭代更新。否则,将创建许多新的表达式对象,这非常昂贵。
该命令花费一些时间的(可能)原因是因为您尝试添加具有625万个系数的约束-假定covfinal
是一个密集矩阵。
另外,请确保始终使用latest PySCIPOpt version from GitHub: