You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GEKKO构建建筑温度MPC报错及扰动变量声明问题咨询

问题1:ARX模型调用报错解决

报错原因分析

ValueError: operands could not be broadcast together with shapes (2,) (0,) 本质是参数维度不匹配,常见触发场景:

  • 操纵变量m.u未正确定义为GEKKO变量(比如仅声明但未初始化,或误作为普通Python变量),导致其形状为空数组(0,),与ARX参数的(2,)形状无法匹配。
  • ARX阶数参数p的格式错误:GEKKO中arx函数有两种调用方式,若传入阶数列表[na, nb, nk](na=输出自回归阶数,nb=输入移动平均阶数,nk=输入延迟),需要同时提供历史输入输出数据用于辨识;若传入已辨识的参数向量theta,则需确保向量长度与模型阶数对应。

正确调用方式

假设你已通过系统辨识得到ARX参数(比如模型为 y(t) = a1*y(t-1) + a2*y(t-2) + b1*u(t-1),参数向量theta = [a1, a2, b1]),正确代码示例:

from gekko import GEKKO
import numpy as np

m = GEKKO(remote=False)
m.time = np.linspace(0, 23, 24)  # 24小时时间步

# 定义变量:室内温度(CV)、空调能耗(MV)
y = m.CV(value=22)  # 初始温度22℃
u = m.MV(value=0, lb=0, ub=100)  # 能耗范围0-100%

# 已辨识的ARX参数
theta = [0.95, 0.03, 0.02]  # a1=0.95, a2=0.03, b1=0.02

# 构建ARX模型
m.arx(theta, y, u)

如果是用历史数据做在线辨识,需传入阶数列表+历史数据:

# 假设y_data、u_data是系统辨识用的历史输入输出序列
p = [2, 1, 1]  # na=2, nb=1, nk=1
theta_identified = m.arx(p, y_data, u_data)

问题2:外部温度扰动的正确声明与使用

外部温度属于已知扰动变量(你需提前准备时间序列数据),需用GEKKO的Param类型声明,若扰动会影响建筑温度模型,需将其纳入ARX模型(扩展为ARMAX或多输入ARX)。

步骤1:声明扰动变量

# 准备24小时外部温度数据(示例为随机生成,替换为你的实际数据)
outside_temp = np.random.randint(10, 35, size=24)
T_out = m.Param(value=outside_temp)

步骤2:纳入ARX模型

若辨识时已将外部温度作为额外输入,参数向量需包含扰动项的系数。比如模型为:
T_room(t) = a1*T_room(t-1) + b1*u(t-1) + c1*T_out(t-1)
参数向量theta = [a1, b1, c1],调用arx时传入多输入列表:

m.arx(theta, y, [u, T_out])

完整MPC配置示例

from gekko import GEKKO
import numpy as np

m = GEKKO(remote=False)
m.time = np.linspace(0, 23, 24)

# 变量定义
T_room = m.CV(value=22)  # 受控变量:室内温度
u = m.MV(value=0, lb=0, ub=100)  # 操纵变量:空调能耗
T_out = m.Param(value=np.random.randint(10, 35, 24))  # 扰动:外部温度

# 辨识得到的含扰动ARX参数
theta = [0.92, 0.04, 0.08]  # a1=0.92, b1=0.04, c1=0.08

# 构建模型
m.arx(theta, T_room, [u, T_out])

# MPC控制目标设置
T_room.STATUS = 1
T_room.SPHI = 24  # 温度上限
T_room.SPLO = 20  # 温度下限
u.STATUS = 1
u.DCOST = 0.1  # 能耗惩罚权重,越大越偏向节能

# 求解MPC
m.options.IMODE = 6  # 设置为MPC模式
m.solve(disp=True)

内容的提问来源于stack exchange,提问作者m_nacereddine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:55:54