我使用的是pyomo-Concreate模型,在这个模型中有一个名为Lambda的pyomo变量,它与(0.0,None)和= Non.NegativeReals结合。
问题是在解决模型后它会以某种方式获得一个负值,这不应该发生。
您认为问题是什么?
PS:我正在使用GLPK Solver v4.61来解决模型。
以下是变量Lambda的声明,以及结果:
m.Lambda = pyomo.Var(
within=pyomo.NonNegativeReals,
bounds=(0.0, None),
doc='Sub Problem Objective')
答案 0 :(得分:1)
除了Bethany的评论,并且在更一般的意义上,由于使用有限精度算法来解决模型,所有求解器都需要使用内置公差。虽然您在上一次迭代中链接到的输出为负值,但它的负值足够小,根据求解程序使用的容差可能认为是可行的。您可以使用解算器的选项来加强此容差,但最终,当您对脚本编写的算法执行其他检查时,您将需要在自己的代码中使用容差(例如assert var.value <= var.ub + feas_abstol
,其中{ {1}}设置为代码中某处的feas_abstol
之类的小数字。