首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >步骤函数在Gekko中的实现

步骤函数在Gekko中的实现
EN

Stack Overflow用户
提问于 2019-09-03 04:52:52
回答 1查看 169关注 0票数 2

我正在尝试在Gekko (IMODE=6)中实现类似于步骤函数的东西。我尝试了If3和设置自定义的下限和上限,但在Gekko中仍然找不到解决方案。

对于这样的阶梯函数或Gekko中的任何分段函数,你会推荐什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-05 01:25:09

步骤函数(或任何其他输入)在Gekko中是允许的。如果step函数不依赖于某个条件,而只依赖于某个时间,那么您将不需要if3函数。下面是定义步骤函数的u_step的一个示例问题。

代码语言:javascript
复制
import numpy as np
from gekko import GEKKO
import matplotlib.pyplot as plt

m = GEKKO()    # create GEKKO model
m.time = np.linspace(0,40,401) # time points

# create GEKKO parameter (step 0 to 2 at t=5)
u_step = np.zeros(401)
u_step[50:] = 2.0
u = m.Param(value=u_step)

# create GEKKO variables
x = m.Var(0.0) 
y = m.Var(0.0) 

# create GEEKO equations
m.Equation(2*x.dt()==-x+u) 
m.Equation(5*y.dt()==-y+x) 

# solve ODE
m.options.IMODE = 4
m.solve()

# plot results
plt.plot(m.time,u,'g:',label='u(t)')
plt.plot(m.time,x,'b-',label='x(t)')
plt.plot(m.time,y,'r--',label='y(t)')
plt.ylabel('values')
plt.xlabel('time')
plt.legend(loc='best')
plt.show()

还提供了有关differential equations solved with Gekko的其他教程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57762587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档