使用表达式检索优化变量值

Retreive optimization variables values with expression

我正在使用 PySCIPOpt 来解决 ILP 问题。我使用的变量类型是二进制或整数。

使用 model.getVal(VariableName) 检索变量时,某些变量出现此错误:

TypeError: Argument 'var' has incorrect type (expected pyscipopt.scip.Variable, got pyscipopt.scip.Expr)

这是因为对于这些变量,PySCIPOpt return是一个表达式而不是一个值。表达式看起来像:

{1: Expr({Term(): 0.0, Term(W(14,10)): 0.0,
 Term(W(14,9)): 0.0, Term(W(1,2)): 0.0,
 Term(W(13,10)): 0.0, Term(W(4,3)): 0.0,
 Term(W(13,9)): 0.0, Term(W(5,3)): 0.0,
 Term(W(12,10)): 0.0, Term(W(12,9)): 0.0,
 Term(W(2,2)): 0.0, Term(W(9,7)): 0.0,
 Term(W(11,10)): 0.0, Term(W(2,1)): 1.0}

是否可以强制 PySCIPOpt 为 return 一个值?

我尝试将变量类型从整数更改为连续,但这并没有改变表达式是 returned 而不是值的事实。

我希望 PySCIPOpt return 单个值,而不是表示感兴趣变量与其他变量之间依赖关系的完整表达式。

谢谢

问题是对于这个特定的约束,我忘记添加 model.addCons()。让我感到困惑的是,该模型仍然有效并且可以通过 SCIP 求解。