用pyom求解简单例子中目标函数的不正确值

2024-10-02 10:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始在我的研究中使用pyomo,我正在研究它在《Python中的pyomo优化建模》一书中的使用。 由于我的研究与热交换网络有关,我目前正在尝试建立和解决一个非常简单的问题,然后再扩展到更复杂和更有意义的问题。 这是我输入pyomo的模型。在

from coopr.pyomo import*
model=AbstractModel()

Tcin1=300 
Thin1=500 
mc= 135
mh=128
Cpc=3.1
Cph=2.2 

model.Thout1=Var(initialize=480, within=PositiveReals)
model.Tcout1=Var(initialize=310, within=PositiveReals)
model.Q=Var(initialize=2000, within=PositiveReals)

import math



def HeatEx(model):
    return ((Thin1-model.Tcout1)-(model.Thout1-Tcin1))/(math.log(Thin1-model.Tcout1)-math.log(model.Thout1-Tcin1))

model.obj=Objective(rule=HeatEx, sense=minimize)


model.con1 = Constraint(expr=(mc*Cpc*(Thin1-model.Thout1) == 
        mh*Cph*(model.Tcout1 - Tcin1)))
model.con2=Constraint(expr=(model.Q==mc*Cpc*(Thin1-model.Thout1)))            
model.con3=Constraint(expr=(model.Tcout1==310))

我一直在使用ipopt解算器作为pyomo --solver=ipopt --summary NoFouling.py在终端中运行它。在

我的问题是我得到的目标值不正确。据说目标是-60.5025857388(变量Thout1=493.271206691),这是不正确的。为了了解问题所在,我换了型号.Thout1在值为493.271206691的目标函数中,重新运行模型,得到正确的目标值191.63094982。这很奇怪,因为即使目标函数值是错误的,pyomo输出的所有变量值都是正确的。简言之,如果我取那些看起来给出错误结果的值,并从中手动计算函数,我就得到了正确的结果。在

造成这种差异的原因是什么?我如何解决这个问题?

我在一台运行centos6.5的电脑上,通过热情的树冠运行Python2.7。我还必须承认,我对python和linux系统的使用都有点陌生。我在互联网上搜索过pyomo的答案,但这个答案似乎太具体了,我没有发现任何真正有用的东西。在

非常感谢


Tags: modelvarmathmcpyomocpcexprconstraint

热门问题