You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyomo调用IPOPT求解优化结果仅为初始值的问题咨询

Pyomo优化模型求解结果疑似未迭代问题

优化建模过程中遇到求解结果仅返回初始猜测值的问题,对应Pyomo编写的优化模型代码如下:

import pyomo.environ as pyo   
import pandas as pd
opt = pyo.SolverFactory('ipopt')

model = pyo.ConcreteModel()

model.x = pyo.Var([1,2,3,4,5,6,7,8,9,10,11,12], domain=pyo.Reals)

model.y = pyo.Var([1,2,3,4,5,6,7,8,9], domain=pyo.NonNegativeReals)

model.OBJ = pyo.Objective(expr = model.x[1]**2 + model.x[2]**2 + model.x[3]**2 + model.x[4]**2 +
                          model.x[5]**2 + model.x[6]**2 + model.x[7]**2 + model.x[8]**2 +
                          model.x[9]**2 + model.x[10]**2 + model.x[11]**2 + model.x[12]**2)
                          
model.Constraint1 = pyo.Constraint(expr = model.y[1] + model.y[2] + model.y[3] + model.y[4] +
                                   model.y[5] + model.y[6] == 1)
model.Constraint2 = pyo.Constraint(expr = model.y[7] + model.x[1] == 0)
model.Constraint3 = pyo.Constraint(expr = model.y[5]*model.y[9] + model.y[3]*model.y[8] + model.y[7] + model.x[2] == 0)
model.Constraint4 = pyo.Constraint(expr = model.y[7] + model.y[5]*model.y[9] + model.x[3] ==0)
model.Constraint5 = pyo.Constraint(expr = model.y[7] + model.y[3]*model.y[8] + model.x[4] == 0)
model.Constraint6 = pyo.Constraint(expr = model.y[8] + model.x[5] == 9.6666)
model.Constraint7 = pyo.Constraint(expr= model.y[1]*model.y[7] + model.y[6]*model.y[9] + model.y[8] + model.x[6] == 17)
model.Constraint8 = pyo.Constraint(expr = model.y[8] + model.y[6]*model.y[9] + model.x[7] == 0)
model.Constraint9 = pyo.Constraint(expr = model.y[8] + model.y[1]*model.y[7] + model.x[8] == 3.28571)
model.Constraint10 = pyo.Constraint(expr = model.y[9] + model.x[9] == 0)
model.Constraint11 = pyo.Constraint(expr = model.y[2]*model.y[7] + model.y[4]*model.y[8] + model.y[9] + model.x[10] == 0)
model.Constraint12 = pyo.Constraint(expr = model.y[9] + model.y[4]*model.y[8] + model.x[11] == 0)
model.Constraint13 = pyo.Constraint(expr = model.y[9] + model.y[2]*model.y[7] + model.x[12] == 0)

opt.solve(model)

final_result = {}
for v in model.component_data_objects(pyo.Var):
  final_result[str(v)] = v.value

final_result = pd.DataFrame.from_dict(final_result,orient = 'index',columns = ['value']).reset_index()

已完成的测试与现存疑问:

  • 首先在Pyomo中调用IPOPT求解器对上述模型求解,后续在GAMS平台测试了BARON、CONOPT、LGO多款求解器,所有求解器均返回一致结果
  • 怀疑输出结果仅为初始猜测值,并未迭代得到真正的最优解
    Pyomo求解返回的结果如下图所示:
    Pyomo求解结果截图
    本人为优化领域初学者,无法确认当前返回的结果是否为正确的最优解,恳请相关领域技术人员提供指导与帮助。

内容的提问来源于stack exchange,提问作者mpy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 01:27:33