gekko - 当我在 python 中运行 APMonitor nlc 示例时出现 HTTP 错误
问题描述
我一直对学习 MPC 控制很感兴趣,我想尝试在这里找到 nlc python 示例:
http://apmonitor.com/wiki/index.php/Main/PythonApp
当我运行最初的演示示例时,我收到了一个 HTTP 错误。我能够通过在 apm.py 文件中将“http”的实例更改为“https”来运行演示示例,类似于此处发现的问题:
https://github.com/olivierhagolle/LANDSAT-Download/issues/33
我现在一直在尝试运行 nlc 示例,但遇到了同样的错误(如下所示)。但是,将“http”的实例更改为“https”似乎不再有帮助。
*回溯(最近一次调用):文件“C:\Users\veli95839\Documents\Python\Scripts\example_nlc\nlc.py”,第 88 行,响应 = apm_meas(server,app,x,value) 文件“C :\Users\veli95839\Documents\Python\Scripts\example_nlc\apm.py",第 607 行,在 load_meas f = urllib.request.urlopen(url_base,params_en) 文件“C:\Users\veli95839\Documents\Python\lib \urllib\request.py”,第 222 行,在 urlopen 返回 opener.open(url, data, timeout) 文件“C:\Users\veli95839\Documents\Python\lib\urllib\request.py”,第 531 行,在打开响应 = meth(req, response) 文件 "C:\Users\veli95839\Documents\Python\lib\urllib\request.py",第 640 行,在 http_response 响应 = self.parent.error( 文件 "C:\Users \veli95839\Documents\Python\lib\urllib\request.py”,第 569 行,错误返回 self。_call_chain(*args) 文件“C:\Users\veli95839\Documents\Python\lib\urllib\request.py”,第 502 行,在 _call_chain 结果 = func(args) 文件“C:\Users\veli95839\Documents\Python\lib\urllib\request.py”,第 649 行,在 http_error_default 中引发 HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP 错误 503:服务不可用
请让我知道是否有人遇到过类似的问题!
谢谢,
克莱尔
解决方案
如果您的计算机未连接到 Internet 或在您运行测试时服务器不可用,您可能会收到该错误。您可以安装本地 APM 服务器(适用于 Windows 或 Linux)以避免任何中断。另一种选择是切换到使用相同底层APM引擎但可以使用remote=False
. 这是Python gekko中相同的MPC 示例。
from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO(remote=False)
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()
如果您想获得有关 APM Python 或用于非线性或线性模型预测控制的 gekko 的更多信息,温度控制实验室 (TCLab) 提供了一系列教程。
具有解决方案的高级控制实验室
- 数字孪生模型开发
- 实验室 A - 单加热器建模
- 实验室 B - 双加热器建模
- 带有参数和状态估计的机器学习
- 实验室 C - 参数估计
- 实验室 D - 经验模型估计
- 实验室 E - 混合模型估计
- 模型预测控制
- 实验室 F - 线性模型预测控制
- 实验室 G - 非线性模型预测控制
- 实验室 H - 使用 MPC 进行移动地平线估计
这些练习教授如何进行第一原理或经验建模、状态估计和预测控制。以下是 Lab H 中结合的移动地平线估计和模型预测控制的示例。
推荐阅读
- reactjs - ReactJS 喜欢按钮
- ios - 适用于 iOS 的 Firebase 云消息传递适用于本地构建,但不适用于 Testflight
- r - 如何使用 R 计算线性模型中系数的方差?
- java - 从长远来看,我可以在多大程度上信任 OracleDB 的 ROWID?
- java - Spring boot Oauth 安全性 - 客户端凭据授予类型中主体中的用户(自定义信息)信息
- java - Java 执行器服务 - 内存不足
- reactjs - firebase__WEBPACK_IMPORTED_MODULE_3___default.a.auth.onAuthStateChanged 不是函数
- ios - 如何使布局适合屏幕尺寸
- llvm - 识别自定义传递生成的变量/函数?
- xamarin.forms - 如何在 Xamarin Forms 中一一显示 Collection View 的项目?