【模型】OpenBuild中的MPC控制器

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章