首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python语言中使用APMonitor进行模型预测控制时,是否有可能获得有偏和无偏预测控制变量的数据?

在Python语言中使用APMonitor进行模型预测控制时,是否有可能获得有偏和无偏预测控制变量的数据?
EN

Stack Overflow用户
提问于 2019-09-19 23:54:15
回答 1查看 38关注 0票数 1

我正在尝试使用APMonitor为模型预测控制构建一个python代码。但是,我不想在第三方在线服务器上获得结果。因此,我想收集预测的有偏和无偏的数据,并自己在Python上绘制它们。

EN

回答 1

Stack Overflow用户

发布于 2019-09-20 02:55:35

在Python Gekko中试试:

代码语言:javascript
复制
# get additional solution information
import json
with open(m.path+'//results.json') as f:
    results = json.load(f)

您可以通过使用v.name获取变量v的字典值来获得无偏模型结果。您可以使用v.name+'.bcv'获得有偏差的模型预测。下面是一个示例,它还展示了如何获取原始轨迹信息。

这使您可以访问原始数据。一个示例展示了如何从JSON数据进行绘图。

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

m = GEKKO()
m.time = np.linspace(0,20,41)

# Parameters
mass = 500
b = m.Param(value=50)
K = m.Param(value=0.8)

# Manipulated variable
p = m.MV(value=0, lb=0, ub=100)
p.STATUS = 1  # allow optimizer to change
p.DCOST = 0.1 # smooth out gas pedal movement
p.DMAX = 20   # slow down change of gas pedal

# Controlled Variable
v = m.CV(value=0)
v.STATUS = 1  # add the SP to the objective
m.options.CV_TYPE = 2 # squared error
v.SP = 40     # set point
v.TR_INIT = 1 # set point trajectory
v.TAU = 5     # time constant of trajectory

# Process model
m.Equation(mass*v.dt() == -v*b + K*b*p)

m.options.IMODE = 6 # control
m.solve(disp=False,GUI=True)

# get additional solution information
import json
with open(m.path+'//results.json') as f:
    results = json.load(f)

plt.figure()
plt.subplot(2,1,1)
plt.plot(m.time,p.value,'b-',label='MV Optimized')
plt.legend()
plt.ylabel('Input')
plt.subplot(2,1,2)
plt.plot(m.time,results['v1.tr'],'k-',label='Reference Trajectory')
plt.plot(m.time,v.value,'r--',label='CV Response')
plt.ylabel('Output')
plt.xlabel('Time')
plt.legend(loc='best')
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58014831

复制
相关文章

相似问题

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