2024-10-03 06:18:37 发布
网友
我在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)。有没有办法让这一步更有效?
I=range(2500)
J=range(2500)
目前,除了使用addCons()方法之外,没有其他方法可以添加约束。quicksum()与Python的内置sum()相比,它大大减少了所需的时间,因为只创建了一个表达式实例,然后用单个项进行迭代更新。否则,将创建大量新的表达式对象,这是非常昂贵的。在
addCons()
quicksum()
sum()
(很可能)这个命令需要花费一些时间的原因是,您正在尝试添加一个系数为625万的约束—假设covfinal是一个密集矩阵。在
covfinal
另外,请务必始终使用latest PySCIPOpt version from GitHub:
目前,除了使用
addCons()
方法之外,没有其他方法可以添加约束。quicksum()
与Python的内置sum()
相比,它大大减少了所需的时间,因为只创建了一个表达式实例,然后用单个项进行迭代更新。否则,将创建大量新的表达式对象,这是非常昂贵的。在(很可能)这个命令需要花费一些时间的原因是,您正在尝试添加一个系数为625万的约束—假设
covfinal
是一个密集矩阵。在另外,请务必始终使用latest PySCIPOpt version from GitHub:
相关问题 更多 >
编程相关推荐