为什么quicksum在SCIP python中非常慢

2024-10-03 06:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在ubuntu上使用scipython接口。我尝试使用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)。有没有办法让这一步更有效?


Tags: inforubunturange原因办法quicksumaddcons
1条回答
网友
1楼 · 发布于 2024-10-03 06:18:37

目前,除了使用addCons()方法之外,没有其他方法可以添加约束。quicksum()与Python的内置sum()相比,它大大减少了所需的时间,因为只创建了一个表达式实例,然后用单个项进行迭代更新。否则,将创建大量新的表达式对象,这是非常昂贵的。在

(很可能)这个命令需要花费一些时间的原因是,您正在尝试添加一个系数为625万的约束—假设covfinal是一个密集矩阵。在

另外,请务必始终使用latest PySCIPOpt version from GitHub

相关问题 更多 >