提问者:小点点

Pyomo变量的边界=(0.0,无)得到一个负值


我使用的是一个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的值也不应该是负数???


共1个答案

匿名用户

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

相关问题