python - 为什么 SCIP python 接口(interface)中的 Quicksum 非常慢

标签 python scip

我在 ubuntu 上使用 scip python 接口(interface)。我正在尝试使用快速求和添加约束:

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 内置 sum() 相比,quicksum() 显着减少了所需时间,因为只创建一个表达式实例,然后使用单个项迭代更新该实例。否则,将会创建大量新的表达式对象,这是非常昂贵的。

该命令需要一些时间的(可能)原因是您尝试添加包含 625 万个系数的约束 - 考虑到 covfinal 是一个密集矩阵。

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

关于python - 为什么 SCIP python 接口(interface)中的 Quicksum 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38434300/

相关文章:

python - 如何在pygame中控制单个子弹

python - 带有日语字符的 re.sub

python - 基本 UDP 和 TCP 程序

c++ - 如何复制 SoPlex 模型?

python - 如何找到字符串中字符的ascii值?

python - Pandas Dataframe - 具有条件/行迭代/上一行计算的最小函数

python - PySCIPOpt 经常被段错误 (SIGSEGV) 中断

python - 优化后评估 pyscipopt Expr

scip - SCIP 中的全局随机种子参数?

visual-studio-code - 如何配置 VSCode 以与 SCIP 优化软件配合使用