我正在开发一个模型预测控制器(MPC)与移动地平线估计(MHE)插件的动态仿真程序。
我的问题是,模拟程序在每个时间步骤中执行Python脚本。因此,每一个时间步骤,一个新的模型,在GEKKO被产生。是否有可能重新加载模型和数据文件?例如,给出数据到GEKKO的路径?
诚挚的问候,
莫里茨
发布于 2022-01-12 09:47:24
尝试使用Pickle文件来存储Gekko模型。如果存在Gekko模型存档,则将其读入Python中。
from os.path import exists
import pickle
import numpy as np
from gekko import GEKKO
import matplotlib.pyplot as plt
if exists('m.pkl'):
# load model from subsequent call
m = pickle.load(open('m.pkl','rb'))
m.solve()
else:
# define model the first time
m = GEKKO()
m.time = np.linspace(0,20,41)
m.p = m.MV(value=0, lb=0, ub=1)
m.v = m.CV(value=0)
m.Equation(5*m.v.dt() == -m.v + 10*m.p)
m.options.IMODE = 6
m.p.STATUS = 1; m.p.DCOST = 1e-3
m.v.STATUS = 1; m.v.SP = 40; m.v.TAU = 5
m.options.CV_TYPE = 2
m.solve()
pickle.dump(m,open('m.pkl','wb'))
plt.figure()
plt.subplot(2,1,1)
plt.plot(m.time,m.p.value,'b-',lw=2)
plt.ylabel('gas')
plt.subplot(2,1,2)
plt.plot(m.time,m.v.value,'r--',lw=2)
plt.ylabel('velocity')
plt.xlabel('time')
plt.show()
控制器的每一个周期,图的更新与初始条件的自动时移。
这类似于使用MHE和MPC组合的循环中发生的情况。只要您将所有内容都包含在Pickle文件中,它就应该在下一个周期重新加载。
这是MHE和MPC的示例代码。
https://stackoverflow.com/questions/70679031
复制相似问题