OpenBuild 是一種建築HVAC系統熱力學仿真控制軟件。
https://la.epfl.ch/files/content/sites/la/files/shared/common/openBuid/Manual.pdf
假設我們可以直接控制每個房間的熱通量,並讓總的用電量最小。因此,有函數J,
N是控制器的控制範圍,x和u分別是預測狀態和輸入軌跡。
本模型的MPC模型可以寫成:
最小化
並滿足所有
;
; 從建築中提取出來的建築空間模型假設全狀態測量。(所以這裏C爲單位矩陣)
;
;
其中U爲輸入限制,是時變限制。
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)中的任何修改,除了這個,我們有,其中f是輸出誤差的當前估計。 它採用軟約束實現,因此始終保證可行性。 在這裏提供的示例中,使用工具箱YALMIP制定了MPC問題,並且已經使用求解器gurobi來解決問題。 Yalmip允許從大量求解器中進行選擇。 不幸的是,對於這個問題,但是免費的替代方案包括例如SEDUMI。