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求解返回的结果如下图所示:
本人为优化领域初学者,无法确认当前返回的结果是否为正确的最优解,恳请相关领域技术人员提供指导与帮助。
内容的提问来源于stack exchange,提问作者mpy
相关产品推荐
相关产品推荐

