微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

条件 if 语句 GEKKO

如何解决条件 if 语句 GEKKO

我正在尝试对反应器进行动态建模。为此,我首先在稳态条件 (IMODE = 1) 下求解我的方程组,然后加载稳态结果作为动态计算的初始条件 (IMODE = 7)。在我的稳态计算中,我需要强加我的反应器的出口温度等于某个值。但是,在进行动态计算以确定阶跃响应时,我需要删除此条件。我尝试了以下方法

1.) 使用条件 if 语句

if(m.options.IMODE = 1):
  T_outlet == 773
else:
  m.Equation(T_outlet.dt == constants + T_outlet*(long equation with combination of T_outlet and constants)....)

2.) 修复和释放变量

m.fix(T_outlet,val = 773)
m.options.IMODE=1
m.solve()

m.free(T_outlet)
m.options.IMODE=7
m.solve()

我尝试使用不同的求解器(IPOPT、APOPT)求解方程。不幸的是,它们都不起作用。在我的动态结果中,所有时间范围内的 T_outlet = 773。有没有正确的方法来做到这一点?在此先感谢您的帮助。

解决方法

尝试在初始化期间添加一个值为 b 的新开关参数 b.value=1,否则为 0

b=m.Param(1)
m.Equation(T_outlet == b*(773) + (1-b)*(...equation...))
m.solve()

b.value=0
m.solve()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。