我使用的是一个pyomo-Concreate模型,在这个模型中有一个pyomo变量Lambda,它以(0.0,None)为界并且在=Non内。负片。
问题是,在解决模型后,它会以某种方式得到一个负值,这是不应该发生的。
你认为问题可能是什么?
PS:我正在使用GLPK解算器v4。61来求解模型。
以下是变量Lambda的声明,以及结果:
m.Lambda = pyomo.Var(
within=pyomo.NonNegativeReals,
bounds=(0.0, None),
doc='Sub Problem Objective')
检查最后一次迭代,即使结果是正确的,lambda的值也不应该是负数???
除了Bethany的评论之外,在更一般的意义上,所有解算器都需要使用内置公差,因为使用有限精度算法来解算模型。虽然您链接到的输出在上一次迭代中为负值,但它的负值很小,根据解算器使用的公差,它可能被认为是可行的。您可能可以使用解算器的选项来收紧此容差,但最终,当您对正在编写脚本的任何算法(例如,assert var.value)进行额外检查时,您需要在自己的代码中使用容差