首页 > 解决方案 > 当我在 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:服务不可用

请让我知道是否有人遇到过类似的问题!

谢谢,

克莱尔

标签: gekko

解决方案


如果您的计算机未连接到 Internet 或在您运行测试时服务器不可用,您可能会收到该错误。您可以安装本地 APM 服务器(适用于 Windows 或 Linux)以避免任何中断。另一种选择是切换到使用相同底层APM引擎但可以使用remote=False. 这是Python gekko中相同的MPC 示例。

Python 壁虎 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) 提供了一系列教程

具有解决方案的高级控制实验室

  1. 数字孪生模型开发
    • 实验室 A - 单加热器建模
    • 实验室 B - 双加热器建模
  2. 带有参数和状态估计的机器学习
    • 实验室 C - 参数估计
    • 实验室 D - 经验模型估计
    • 实验室 E - 混合模型估计
  3. 模型预测控制
    • 实验室 F - 线性模型预测控制
    • 实验室 G - 非线性模型预测控制
    • 实验室 H - 使用 MPC 进行移动地平线估计

这些练习教授如何进行第一原理或经验建模、状态估计和预测控制。以下是 Lab H 中结合的移动地平线估计和模型预测控制的示例。

TCLab 的 MHE 和 MPC


推荐阅读