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

Gekko PRED_HOR和CTRL_HOR与m.time

如何解决Gekko PRED_HOR和CTRL_HOR与m.time

我正在尝试实现在线MPC控制器,我对m.time的确切功能有些困惑。

使用m.options.IMODE = 6 #MPCm.options.REQCTRLMODE=3,我尝试定义预测和控制范围:

m.options.CTRL_HOR=10
m.options.CTRL_TIME=0.05
m.options.PRED_HOR=10
m.options.PRED_TIME=0.05

如果我理解正确,ctrl_horpred_hor设置了我们计算的未来时间步长,而pred_timectrl_time定义了一个时间步长。 但是问题是,如果我没有定义m.time,控制器会抛出一个错误,但是它到底是做什么的,为什么用相应的时间步长设置ctrl和pred地平线还不够?

解决方法

Gekko默认使用m.time而不是CTRL_HORPRED_HOR。您可以使用以下方法在Gekko中定义等效的控制/预测范围:

import numpy as np
from gekko import GEKKO

m = GEKKO()
m.time = np.linspace(0,0.05,11)

CTRL_HOR时可以选择使用PRED_HORCSV_READ=0属性。但是,Gekko使用CSV文件插入有关参数和变量默认值的信息,因此不建议您将其关闭。使用m.time也更加灵活,因为您可能会有不一致的控制/预测范围,例如:

m.time = [0,0.1,0.2,0.5,1.0]

这有助于在开始时具有较好的分辨率,然后采取更大的步骤来确定稳态移动计划。这是一个包含实时数据的practical TCLab MPC application

MPC Application

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