带表达式的优化变量值

时间:2019-03-26 13:58:26

标签: python scip

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

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

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

这是由于以下事实引起的:对于这些变量,PySCIPOpt返回一个表达式而不是一个值。表达式如下:

{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返回值?

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

我希望PySCIPOpt返回单个值,而不是表示目标变量与其他变量之间依存关系的完整表达式。

谢谢

1 个答案:

答案 0 :(得分:-1)

问题在于,对于此特定约束,我忘了添加model.addCons()。令我感到困惑的是,该模型仍然可以被SCIP解决。