【模型】OpenBuild中的MPC控制器

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

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

 

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

【模型】OpenBuild中的MPC控制器_第1张图片

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。

你可能感兴趣的:(模型,MPC,HVAC,OpenBuild)