【模型】OpenBuild中的MPC控制器

1 篇文章 0 订阅
1 篇文章 0 订阅

OpenBuild 是一种建筑HVAC系统热力学仿真控制软件。

https://la.epfl.ch/files/content/sites/la/files/shared/common/openBuid/Manual.pdf

 

假设我们可以直接控制每个房间的热通量,并让总的用电量最小。因此,有函数J,

N是控制器的控制范围,x和u分别是预测状态和输入轨迹。

 

本模型的MPC模型可以写成:

最小化  J(x,u)

并满足所有t \epsilon [1,N]

x_{t} = Ax_{t-1}+B_{u}u{t-1}+B_{d}d{t-1};

y_{t} = Cx{t};   从建筑中提取出来的建筑空间模型假设全状态测量。(所以这里C为单位矩阵)

u_{t} \epsilon X_{t};

y_{t} \epsilon X_{t};

其中U为输入限制,X_{t}是时变限制。

sE2 = simulationEngine(b);
sE2.addSimulatorEnergyPlus;

离散化状态空间模型ssM:

ssM.discretizeModel(b.buildingData.simulationData.timestep);

确定zone temperature空间温度为唯一可用的测量值:

measurement =
    regexpcmp(ssMd.outputLabels.getLabel(1:ssMd.outputLabels.length),’Zone
    Mean Air Temperature’,’ignorecase’);
ssMd.C = ssMd.C(find(measurement),:);
ssMd.outputLabels.removeLabels(find(~measurement));

为了纠正干扰预测误差,以及建模不匹配的情况,我们考虑无偏差公式,这实际上将增加整合行为到估计器。必须指定干扰模型。我们通常考虑输出干扰。该功能以恒定的输出干扰增强了建筑物的模型。 :

ssM.augmentModel();

我们现在可以设置估算器。估计器基于增强模型:它将测量值、之前的输入值和干扰值作为输入,输出建筑物状态和输出干扰的估计值。 使用卡尔曼滤波器:

kalmanEst = kalman(ssM,sE2.parameters);
sE2.addEstimator(kalmanEst);

最后建立MPC控制器:

MPCCtrl = MPCSetback(ssM,sE2.parameters);
sE2.addControllerMPC(MPCCtrl);

可以在相应的文件(MPCSetback.m和MPC_setback_update.m)中找到MPC实现的详细信息。 模型的增加不会导致(3)中的任何修改,除了这个,我们有y_{t} = Cx_{t} + f,其中f是输出误差的当前估计。 它采用软约束实现,因此始终保证可行性。 在这里提供的示例中,使用工具箱YALMIP制定了MPC问题,并且已经使用求解器gurobi来解决问题。 Yalmip允许从大量求解器中进行选择。 不幸的是,对于这个问题,但是免费的替代方案包括例如SEDUMI。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值