Pyomo调用GLPK求解线性规划未得到预期最优解问题咨询
错误原因
你的代码对决策变量x2的取值域定义错误,直接导致可行域不符合题目要求。
具体错误点
你在定义x2时使用了NonPositiveReals(非正实数域,即强制x2 ≤ 0),但题目明确要求x2 ≥ 0:
# 错误代码行 model.x2 = pyo.Var(within = pyo.NonPositiveReals)
这个错误相当于额外加了一条x2 <= 0的约束,完全锁死了x2取正值的可能。在这个错误的可行域下,x2最大只能取0,代入约束计算得到的最优解就是x1=30、x2=0,对应目标函数值120,和你运行得到的结果完全一致,自然无法得到x2=20的理论最优解。
修正方案
将x2的取值域修改为和x1一致的NonNegativeReals(非负实数域)即可,修正后的代码片段:
model.x2 = pyo.Var(within = pyo.NonNegativeReals) x2 = model.x2
修改后重新运行求解,就能得到预期的最优结果:目标函数值140,对应x1=20、x2=20。
内容的提问来源于stack exchange,提问作者Marleen
相关产品推荐
相关产品推荐

