Python 边界=(0.0,无)为负值的Pyomo变量

Python 边界=(0.0,无)为负值的Pyomo变量,python,variables,decomposition,glpk,pyomo,Python,Variables,Decomposition,Glpk,Pyomo,我使用的是一个pyomo-Concreate模型,在这个模型中有一个pyomo变量Lambda,它以(0.0,None)为界,并且在=Non.negativereles内 问题是,在解决模型后,它会以某种方式得到一个负值,这是不应该发生的 你认为问题可能是什么 PS:我正在使用GLPK解算器v4.61来解算模型 以下是变量Lambda的声明,以及结果: m.Lambda = pyomo.Var( within=pyomo.NonNegativeReals,

我使用的是一个pyomo-Concreate模型,在这个模型中有一个pyomo变量Lambda,它以(0.0,None)为界,并且在=Non.negativereles内

问题是,在解决模型后,它会以某种方式得到一个负值,这是不应该发生的

你认为问题可能是什么

PS:我正在使用GLPK解算器v4.61来解算模型

以下是变量Lambda的声明,以及结果:

    m.Lambda = pyomo.Var(
        within=pyomo.NonNegativeReals,
        bounds=(0.0, None),
        doc='Sub Problem Objective')

除了Bethany的评论之外,在更一般的意义上,由于使用有限精度算法求解模型,所有解算器都需要使用内置公差。虽然您链接到的输出在上一次迭代中为负值,但它的负值很小,根据解算器使用的公差,它可能被认为是可行的。您可能可以使用解算器的选项来收紧此公差,但最终,当您对正在编写脚本的任何算法进行额外检查时,您需要在自己的代码中使用公差(例如,
assert var.value)。您是否检查解算器输出和返回值以确保其收敛?