如何将 PySCIPOpt 模型的解决方案复制到另一个模型?

问题描述

给定一个 pyscipopt.Model 和它的 Solution,如何将它作为原始启发式传递给另一个模型?

我目前正在通过 writeSol()解决方案写入文件,然后调用 readSolFile()addSol()。可能应该有更简洁的方法

解决方法

这在一定程度上取决于您的两个模型的结构。如果它们具有相同顺序的相同变量(这很可能来自您编写的内容),那么您只需在模型中创建一个新解决方案并复制所有值,即:

variables = othermodel.getVars()
newvariables = model.getVars()
nvars = othermodel.getNVars()

newsol = self.model.createSol(self)

for i in range(nvars):
   newsol[newvariables[i]] = othermodel.getSolVal(oldsol,variables[i])

self.model.trySol(newsol)

如果这行得通/行不通,请告诉我