WIP: Pre-final version
This commit is contained in:
parent
7def536787
commit
286e952ec3
26 changed files with 288 additions and 151 deletions
|
@ -1,5 +1,7 @@
|
||||||
\section{Introduction}
|
\section{Introduction}
|
||||||
|
|
||||||
|
\subsection{Motivation}
|
||||||
|
|
||||||
Buildings are a major consumer of energy, with more than 25\% of the total
|
Buildings are a major consumer of energy, with more than 25\% of the total
|
||||||
energy consumed in the EU coming from residential
|
energy consumed in the EU coming from residential
|
||||||
buildings~\cite{tsemekiditzeiranakiAnalysisEUResidential2019}. Combined with a
|
buildings~\cite{tsemekiditzeiranakiAnalysisEUResidential2019}. Combined with a
|
||||||
|
@ -18,10 +20,88 @@ Gaussian Processes have been previously used to model building dynamics, but
|
||||||
they are usually limited by a fixed computational budget. This limits the
|
they are usually limited by a fixed computational budget. This limits the
|
||||||
approaches that can be taken for identification and update of said models.
|
approaches that can be taken for identification and update of said models.
|
||||||
Learning \acrshort{gp} models have also been previously used in the context of
|
Learning \acrshort{gp} models have also been previously used in the context of
|
||||||
autonomous racing cars, but there the Sparse \acrshort{gp} model was built on
|
autonomous racing cars \cite{kabzanLearningBasedModelPredictive2019}, but there
|
||||||
top of a white-box model and only responsible for fitting the unmodeled
|
the Sparse \acrshort{gp} model was built on top of a white-box model and only
|
||||||
dynamics.
|
responsible for fitting the unmodeled dynamics.
|
||||||
|
|
||||||
This project means to provide a further expansion of the use of black-box
|
\subsection{Previous Research}
|
||||||
\acrlong{gp} Models in the context of building control, through online learning
|
With the increase in computational power and availability of data over time,
|
||||||
of building dynamics at new operating points as more data gets collected.
|
the accessibility of data-driven methods for system identification and control
|
||||||
|
has also risen significantly.
|
||||||
|
|
||||||
|
The idea of using Gaussian Processes as regression models for control of dynamic
|
||||||
|
systems is not new, and has already been explored a number of times. A general
|
||||||
|
description of their use, along with the necessary theory and some example
|
||||||
|
implementations is given in~\cite{kocijanModellingControlDynamic2016}.
|
||||||
|
In~\cite{pleweSupervisoryModelPredictive2020}, a \acrlong{gp} Model with a
|
||||||
|
\acrlong{rq} Kernel is used for temperature set point optimization.
|
||||||
|
|
||||||
|
Gaussian Processes for building control have also been studied before in the
|
||||||
|
context of Demand Response~\cite{nghiemDatadrivenDemandResponse2017,
|
||||||
|
jainLearningControlUsing2018}, where the buildings are used for their heat
|
||||||
|
capacity in order to reduce the stress on energy providers during peak load
|
||||||
|
times.
|
||||||
|
|
||||||
|
There are, however, multiple limitations with these approaches.
|
||||||
|
In~\cite{nghiemDatadrivenDemandResponse2017} the model is only identified once,
|
||||||
|
ignoring changes in weather or plant parameters, which could lead to different
|
||||||
|
dynamics. This is addressed in \cite{jainLearningControlUsing2018} by
|
||||||
|
re-identifying the model every two weeks using new information. Another
|
||||||
|
limitation is that of the scalability of the \acrshort{gp}s, which become
|
||||||
|
prohibitively expensive from a computational point of view when too much data is
|
||||||
|
added.
|
||||||
|
|
||||||
|
Outside of the context of building control, Sparse \acrlong{gp}es have been used
|
||||||
|
in autonomous racing in order to complement the physics-based model by fitting
|
||||||
|
the unmodeled dynamics of the
|
||||||
|
system~\cite{kabzanLearningBasedModelPredictive2019}.
|
||||||
|
|
||||||
|
\subsection{Contribution}
|
||||||
|
|
||||||
|
The ability to learn the plant's behaviour in new regions is very helpful in
|
||||||
|
maintaining model performance over time, as its behaviour starts deviating and
|
||||||
|
the original identified model goes further and further into the extrapolated
|
||||||
|
regions.
|
||||||
|
|
||||||
|
This project tries to combine the use of online learning control schemes with
|
||||||
|
\acrlong{gp} Models through implementing \acrlong{svgp} Models. \acrshort{svgp}s
|
||||||
|
provide means of extending the use of \acrshort{gp}s to larger datasets, thus
|
||||||
|
enabling the periodic re-training of the model to include all the historically
|
||||||
|
available data.
|
||||||
|
|
||||||
|
\subsection{Project Outline}
|
||||||
|
|
||||||
|
The main body of work can be divided in two parts: the development of a computer
|
||||||
|
model of the \pdome\ building and the synthesis, validation and comparison of
|
||||||
|
multiple control schemes using both classical \acrshort{gp}s, as well as
|
||||||
|
\acrshort{svgp}s.
|
||||||
|
|
||||||
|
Section~\ref{sec:gaussian_processes} provides the mathematical background for
|
||||||
|
understanding \acrshort{gp}s, as well as the definition in very broad strokes of
|
||||||
|
\acrshort{svgp}s and their differences from the classical implementation of
|
||||||
|
\acrlong{gp}es. This information is later used for comparing their performances
|
||||||
|
and outlining their respective pros and cons.
|
||||||
|
|
||||||
|
Section~\ref{sec:CARNOT} goes into the details of the implementation of the
|
||||||
|
\pdome\ computer model. The structure of the CARNOT model is described, and all
|
||||||
|
the parameters required for the simulation are either directly sourced from
|
||||||
|
existing literature, computed from available values or estimated using publicly
|
||||||
|
available data from \textit{Google Maps}~\cite{GoogleMaps}.
|
||||||
|
|
||||||
|
Following that, Section~\ref{sec:hyperparameters} discusses the choice of the
|
||||||
|
hyperparameters for the \acrshort{gp} and \acrshort{svgp} models respectively in
|
||||||
|
the context of their multi-step ahead simulation performance.
|
||||||
|
|
||||||
|
The \acrlong{ocp} implemented in the \acrshort{mpc} controller is described in
|
||||||
|
Section~\ref{sec:mpc_problem}, followed by a description of the complete
|
||||||
|
controller implementation in Python in Section~\ref{sec:implementation}.
|
||||||
|
|
||||||
|
Section~\ref{sec:results} presents and analyzes the results of full-year
|
||||||
|
simulations for both \acrshort{gp} and \acrshort{svgp} models. A few variations
|
||||||
|
on the initial \acrshort{svgp} model are further analyzed in order to identify
|
||||||
|
the most important parameteres for long time operation.
|
||||||
|
|
||||||
|
Finally, Section~\ref{sec:further_research} discusses the possible improvements
|
||||||
|
to both the current \acrshort{gp} and \acrshort{svgp} implementations.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
\section{Previous Research}
|
|
||||||
With the increase in computational power and availability of data over time,
|
|
||||||
the accessibility of data-driven methods for System Identification and Control
|
|
||||||
has also risen significantly.
|
|
||||||
|
|
||||||
The idea of using Gaussian Processes as regression models for control of dynamic
|
|
||||||
systems is not new, and has already been explored a number of times. A general
|
|
||||||
description of their use, along with the necessary theory and some example
|
|
||||||
implementations is given in~\cite{kocijanModellingControlDynamic2016}.
|
|
||||||
In~\cite{pleweSupervisoryModelPredictive2020} a \acrlong{gp} Model with a
|
|
||||||
\acrlong{rq} Kernel is used for temperature set point optimization.
|
|
||||||
|
|
||||||
Gaussian Processes for building control have also been studied before in the
|
|
||||||
context of Demand Response~\cite{nghiemDatadrivenDemandResponse2017,
|
|
||||||
jainLearningControlUsing2018}, where the buildings are used for their heat
|
|
||||||
capacity in order to reduce the stress on energy providers during peak load
|
|
||||||
times.
|
|
||||||
|
|
||||||
There are, however, multiple limitations with these approaches.
|
|
||||||
In~\cite{nghiemDatadrivenDemandResponse2017} the model is only identified once,
|
|
||||||
ignoring changes in weather or plant parameters, which could lead to different
|
|
||||||
dynamics. This is addressed in \cite{jainLearningControlUsing2018} by
|
|
||||||
re-identifying the model every two weeks using new information. Another
|
|
||||||
limitation is that of the scalability of the \acrshort{gp}s, which become
|
|
||||||
prohibitively expensive from a computational point of view when too much data is
|
|
||||||
added.
|
|
||||||
|
|
||||||
Outside of the context of building control, Sparse \acrlong{gp}es have been used
|
|
||||||
in autonomous racing in order to complement the physics-based model by fitting
|
|
||||||
the unmodeled dynamics of the
|
|
||||||
system~\cite{kabzanLearningBasedModelPredictive2019}.
|
|
||||||
|
|
||||||
The ability to learn the plant's behaviour in new regions is very helpful in
|
|
||||||
maintaining model performance over time, as its behaviour starts deviating and
|
|
||||||
the original identified model goes further and further into the extrapolated
|
|
||||||
regions.
|
|
||||||
|
|
||||||
|
|
||||||
This project will therefore try to combine the use of online learning schemes
|
|
||||||
with \acrlong{gp}es by implementing \acrlong{svgp}es, which provide means of
|
|
||||||
employing \acrshort{gp} Models on larger datasets, and re-training the models
|
|
||||||
every day at midnight to include all the historically available data.
|
|
||||||
|
|
||||||
\clearpage
|
|
|
@ -36,7 +36,7 @@ to the given prior:
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
\mathbf{f} \\
|
\mathbf{f} \\
|
||||||
\mathbf{f_*} \\
|
\mathbf{f_*} \\
|
||||||
\end{bmatrix} =
|
\end{bmatrix} \sim
|
||||||
\mathcal{N}\left(
|
\mathcal{N}\left(
|
||||||
\mathbf{0},
|
\mathbf{0},
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
|
@ -53,7 +53,7 @@ In the case of noisy observations, assuming $y = f + \epsilon$ with $\epsilon
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
\mathbf{y} \\
|
\mathbf{y} \\
|
||||||
\mathbf{f_*} \\
|
\mathbf{f_*} \\
|
||||||
\end{bmatrix} =
|
\end{bmatrix} \sim
|
||||||
\mathcal{N}\left(
|
\mathcal{N}\left(
|
||||||
\mathbf{0},
|
\mathbf{0},
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
|
@ -69,7 +69,7 @@ which, for the rest of the section, will be used in the abbreviated form:
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
\mathbf{y} \\
|
\mathbf{y} \\
|
||||||
\mathbf{f_*} \\
|
\mathbf{f_*} \\
|
||||||
\end{bmatrix} =
|
\end{bmatrix} \sim
|
||||||
\mathcal{N}\left(
|
\mathcal{N}\left(
|
||||||
\mathbf{0},
|
\mathbf{0},
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
|
@ -96,7 +96,7 @@ value that gets maximized is the log of Equation~\ref{eq:gp_likelihood}, the log
|
||||||
marginal likelihood:
|
marginal likelihood:
|
||||||
|
|
||||||
\begin{equation}\label{eq:gp_log_likelihood}
|
\begin{equation}\label{eq:gp_log_likelihood}
|
||||||
log(p(y)) = - \frac{1}{2}\log{\left(
|
\log(p(y)) = - \frac{1}{2}\log{\left(
|
||||||
\det{\left(
|
\det{\left(
|
||||||
K + \sigma_n^2I
|
K + \sigma_n^2I
|
||||||
\right)}
|
\right)}
|
||||||
|
@ -172,7 +172,7 @@ $\mathbf{x'}$'s dimensions:
|
||||||
where $w_d = \frac{1}{l_d^2}; d = 1 ,\dots, D$, with D being the dimension of the
|
where $w_d = \frac{1}{l_d^2}; d = 1 ,\dots, D$, with D being the dimension of the
|
||||||
data.
|
data.
|
||||||
|
|
||||||
The special case of $\Lambda^{-1} = \text{diag}{\left([l_1^{-2},\dots,l_D^{-2}]\right)}$
|
This special case of $\Lambda^{-1} = \text{diag}{\left([l_1^{-2},\dots,l_D^{-2}]\right)}$
|
||||||
is equivalent to implementing different lengthscales on different regressors.
|
is equivalent to implementing different lengthscales on different regressors.
|
||||||
This can be used to asses the relative importance of each regressor through the
|
This can be used to asses the relative importance of each regressor through the
|
||||||
value of the hyperparameters. This is the \acrfull{ard} property.
|
value of the hyperparameters. This is the \acrfull{ard} property.
|
||||||
|
@ -207,7 +207,7 @@ without inquiring the penalty of inverting the covariance matrix. An overview
|
||||||
and comparison of multiple methods is given
|
and comparison of multiple methods is given
|
||||||
at~\cite{liuUnderstandingComparingScalable2019}.
|
at~\cite{liuUnderstandingComparingScalable2019}.
|
||||||
|
|
||||||
For the scope of this project the choice of using the \acrfull{svgp} models has
|
For the scope of this project, the choice of using the \acrfull{svgp} models has
|
||||||
been made, since it provides a very good balance of scalability, capability,
|
been made, since it provides a very good balance of scalability, capability,
|
||||||
robustness and controllability~\cite{liuUnderstandingComparingScalable2019}.
|
robustness and controllability~\cite{liuUnderstandingComparingScalable2019}.
|
||||||
|
|
||||||
|
@ -230,9 +230,9 @@ $f(X_s)$, usually denoted as $f_s$ is introduced, with the requirement that this
|
||||||
new dataset has size $n_s$ smaller than the size $n$ of the original dataset.
|
new dataset has size $n_s$ smaller than the size $n$ of the original dataset.
|
||||||
|
|
||||||
The $X_s$ are called \textit{inducing locations}, and $f_s$ --- \textit{inducing
|
The $X_s$ are called \textit{inducing locations}, and $f_s$ --- \textit{inducing
|
||||||
random variables}. They are said to summarize the data in the sense that a model
|
random variables}. They summarize the data in the sense that a model trained on
|
||||||
trained on this new dataset should be able to generate the original dataset with
|
this new dataset should be able to generate the original dataset with a high
|
||||||
a high probability.
|
probability.
|
||||||
|
|
||||||
The multivariate Gaussian distribution is used to establish the relationship
|
The multivariate Gaussian distribution is used to establish the relationship
|
||||||
between $f_s$ and $f$, which will serve the role of the prior, now called the
|
between $f_s$ and $f$, which will serve the role of the prior, now called the
|
||||||
|
@ -242,7 +242,7 @@ sparse prior:
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
\mathbf{f}(X) \\
|
\mathbf{f}(X) \\
|
||||||
\mathbf{f}(X_s) \\
|
\mathbf{f}(X_s) \\
|
||||||
\end{bmatrix} =
|
\end{bmatrix} \sim
|
||||||
\mathcal{N}\left(
|
\mathcal{N}\left(
|
||||||
\mathbf{0},
|
\mathbf{0},
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
|
@ -267,8 +267,8 @@ computationally tractable on larger sets of data.
|
||||||
The following derivation of the \acrshort{elbo} is based on the one presented
|
The following derivation of the \acrshort{elbo} is based on the one presented
|
||||||
in~\cite{yangUnderstandingVariationalLower}.
|
in~\cite{yangUnderstandingVariationalLower}.
|
||||||
|
|
||||||
Assume $X$ to be the observations, and $Z$ the set of hidden (latent)
|
Assume $X$ to be the observations, and $Z$ the set parameters of the
|
||||||
variables --- the parameters of the \acrshort{gp} model. The posterior
|
\acrshort{gp} model, also known as the latent variables. The posterior
|
||||||
distribution of the hidden variables can be written as follows:
|
distribution of the hidden variables can be written as follows:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
|
@ -337,7 +337,10 @@ The \acrfull{noe} uses the past predictions $\hat{y}$ for future predictions:
|
||||||
f(w(k-1),\dots,w(k-l_w),\hat{y}(k-1),\dots,\hat{y}(k-l_y),u(k-1),\dots,u(k-l_u))
|
f(w(k-1),\dots,w(k-l_w),\hat{y}(k-1),\dots,\hat{y}(k-l_y),u(k-1),\dots,u(k-l_u))
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
The \acrshort{noe} structure is therefore a \textit{simulation model}.
|
Due to its use for multi-step ahead simulation of system behaviour, as opposed
|
||||||
|
to only predicting one state ahead using current information, the \acrshort{noe}
|
||||||
|
structure can be considered a \textit{simulation model}.
|
||||||
|
|
||||||
|
|
||||||
In order to get the best simulation results from a \acrshort{gp} model, the
|
In order to get the best simulation results from a \acrshort{gp} model, the
|
||||||
\acrshort{noe} structure would have to be employed. Due to the high algorithmic
|
\acrshort{noe} structure would have to be employed. Due to the high algorithmic
|
||||||
|
|
|
@ -94,7 +94,7 @@ Table~\ref{tab:GIMP_measurements}:
|
||||||
\hline
|
\hline
|
||||||
Object & Size [px] & Size[mm] & Size[m]\\
|
Object & Size [px] & Size[mm] & Size[m]\\
|
||||||
\hline \hline
|
\hline \hline
|
||||||
acrshort{hvac} height & 70 & 2100 & 2.1 \\
|
\acrshort{hvac} height & 70 & 2100 & 2.1 \\
|
||||||
Building height & 230 & 6900 & 6.9 \\
|
Building height & 230 & 6900 & 6.9 \\
|
||||||
Stem wall & 45 & 1350 & 1.35 \\
|
Stem wall & 45 & 1350 & 1.35 \\
|
||||||
Dome height & 185 & 5550 & 5.55 \\
|
Dome height & 185 & 5550 & 5.55 \\
|
||||||
|
@ -174,13 +174,13 @@ The stem of the \pdome\ is approximated to a cube of edge 25m, and its volume ca
|
||||||
therefore be calculated as:
|
therefore be calculated as:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
V_s = l_s^2 * h_s
|
V_s = l_s^2 \times h_s
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
The total volume of the building is then given as:
|
The total volume of the building is then given as:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
V = V_d + V_s = \frac{1}{6} \pi h (3r^2 + h^2) + l_s^2 * h_s
|
V = V_d + V_s = \frac{1}{6} \pi h (3r^2 + h^2) + l_s^2 \times h_s
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Numerically, considering a dome diameter of 28m, a dome height of 5.55m and a stem
|
Numerically, considering a dome diameter of 28m, a dome height of 5.55m and a stem
|
||||||
|
@ -199,7 +199,7 @@ Exchange Rate, presented in Section~\ref{sec:Air_Exchange_Rate}.
|
||||||
The main function of the \pdome\ building is serving as a classroom for around
|
The main function of the \pdome\ building is serving as a classroom for around
|
||||||
one hundred students. It has wood furniture consisting of chairs and tables, as
|
one hundred students. It has wood furniture consisting of chairs and tables, as
|
||||||
well as a wooden stage in the center of the building, meant to be used for
|
well as a wooden stage in the center of the building, meant to be used for
|
||||||
presentations. The building also contains a smaller room, housing the all the
|
presentations. The building also contains a smaller room, housing all the
|
||||||
necessary technical equipment (cf. Figure~\ref{fig:Google_Maps_Streetview}).
|
necessary technical equipment (cf. Figure~\ref{fig:Google_Maps_Streetview}).
|
||||||
|
|
||||||
The most accurate way of including information on the furniture in the CARNOT
|
The most accurate way of including information on the furniture in the CARNOT
|
||||||
|
@ -233,7 +233,15 @@ has a surface area of:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
S_f = \frac{1}{4} \cdot 1.8 \left[\frac{\text{m}^2}{\text{m}^2}\right]
|
S_f = \frac{1}{4} \cdot 1.8 \left[\frac{\text{m}^2}{\text{m}^2}\right]
|
||||||
\cdot 625\ \left[\text{m}^2\right] = 140\ \left[\text{m}^2\right]
|
\cdot 625\ \left[\text{m}^2\right] = 281.25 \left[\text{m}^2\right]
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
Since a wall has two large faces, the total surface gets divided between them
|
||||||
|
for a surface of each face of:
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
S_{f, \text{face}} =
|
||||||
|
\frac{1}{2} \times S_f \approx 140 \left[\text{m}^2\right]
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\subsubsection*{Mass}
|
\subsubsection*{Mass}
|
||||||
|
@ -270,8 +278,9 @@ The last parameter of the furniture equivalent wall is computed by dividing its
|
||||||
volume by the surface:
|
volume by the surface:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
h_f = \frac{V_f}{S_f} = \frac{10.41}{140} \left[\frac{m^3}{m^2}\right] =
|
h_f = \frac{V_f}{S_{f, \text{face}}}
|
||||||
0.075\ \left[\text{m}\right] = 7.5\ \left[\text{cm}\right]
|
= \frac{10.41}{140} \left[\frac{m^3}{m^2}\right]
|
||||||
|
= 0.075\ \left[\text{m}\right] = 7.5\ \left[\text{cm}\right]
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
|
|
||||||
|
@ -284,7 +293,7 @@ parameters for each of the CARNOT nodes' properties.
|
||||||
|
|
||||||
\subsubsection{Windows}
|
\subsubsection{Windows}
|
||||||
|
|
||||||
The windows are supposed to be made of two glass panes of thickness 4mm each.
|
The windows are made of two glass panes of thickness 4mm each.
|
||||||
|
|
||||||
The values of the heat transfer coefficient (U-factor) can vary greatly for
|
The values of the heat transfer coefficient (U-factor) can vary greatly for
|
||||||
different window technologies, but an educated guess can be made on the lower
|
different window technologies, but an educated guess can be made on the lower
|
||||||
|
@ -345,8 +354,8 @@ Table~\ref{tab:material_properties}:
|
||||||
\centering
|
\centering
|
||||||
\begin{tabular}{||c c c c||}
|
\begin{tabular}{||c c c c||}
|
||||||
\hline
|
\hline
|
||||||
Material & Thermal Conductivity $[k]$ $[\frac{W}{mK}]$ & Specific Heat
|
Material & Thermal Conductivity $k$ $[\frac{W}{mK}]$ & Specific Heat
|
||||||
Capacity $[c]$ $[\frac{J}{kgK}]$ & Density $[\rho]$ $[\frac{kg}{m^3}]$
|
Capacity $c$ $[\frac{J}{kgK}]$ & Density $\rho$ $[\frac{kg}{m^3}]$
|
||||||
\\
|
\\
|
||||||
\hline \hline
|
\hline \hline
|
||||||
Plywood & 0.12 & 1210 & 540 \\
|
Plywood & 0.12 & 1210 & 540 \\
|
||||||
|
@ -375,7 +384,7 @@ the cases where the full cooling capacity is not required.
|
||||||
\subsubsection*{Ventilation}
|
\subsubsection*{Ventilation}
|
||||||
|
|
||||||
According to the manufacturer manual \cite{aermecRoofTopManuelSelection}, the
|
According to the manufacturer manual \cite{aermecRoofTopManuelSelection}, the
|
||||||
\acrshort{hvac} unit's external fan has an air debit ranging between 4900
|
\acrshort{hvac} unit's external fan has an air flow ranging between 4900
|
||||||
$\text{m}^3/\text{h}$ and 7000 $\text{m}^3/\text{h}$.
|
$\text{m}^3/\text{h}$ and 7000 $\text{m}^3/\text{h}$.
|
||||||
|
|
||||||
\subsubsection*{Air Exchange Rate}\label{sec:Air_Exchange_Rate}
|
\subsubsection*{Air Exchange Rate}\label{sec:Air_Exchange_Rate}
|
||||||
|
@ -467,12 +476,13 @@ compressors. The instruction manual of the
|
||||||
\acrshort{hvac}~\cite{aermecRoofTopManuelSelection} notes that in summer only
|
\acrshort{hvac}~\cite{aermecRoofTopManuelSelection} notes that in summer only
|
||||||
one of the compressors is running. This allows for a larger \acrshort{eer} value
|
one of the compressors is running. This allows for a larger \acrshort{eer} value
|
||||||
and thus better performance. We can see that this is the case for most of the
|
and thus better performance. We can see that this is the case for most of the
|
||||||
experiment, where the power consumption caps at around 6~kW. There are, however,
|
experiment, where the power consumption caps at around 6~kW, which is the
|
||||||
moments during the first part of the experiment where the power momentarily
|
maximum power consumption of one compressor. There are, however, moments during
|
||||||
peaks over the 6~kW limit, and goes as high as around 9~kW. This most probably
|
the first part of the experiment where the power momentarily peaks over the 6~kW
|
||||||
happens when the \acrshort{hvac} decides that the difference between the set
|
limit, and goes as high as around 9~kW. This most probably happens when the
|
||||||
point temperature and the actual measured values is too large to compensate with
|
\acrshort{hvac} decides that the difference between the set point temperature
|
||||||
a single compressor.
|
and the actual measured values is too large to compensate with a single
|
||||||
|
compressor.
|
||||||
|
|
||||||
Figure~\ref{fig:Polydome_exp7_settemp} presents the values of the set point
|
Figure~\ref{fig:Polydome_exp7_settemp} presents the values of the set point
|
||||||
temperature and the measured internal temperature.
|
temperature and the measured internal temperature.
|
||||||
|
@ -506,7 +516,7 @@ pressure, wind speed and direction, etc. A detailed overview of each
|
||||||
measurement necessary for a simulation is given in the CARNOT user
|
measurement necessary for a simulation is given in the CARNOT user
|
||||||
manual~\cite{CARNOTManual}.
|
manual~\cite{CARNOTManual}.
|
||||||
|
|
||||||
In order to compare the CARNOT model's performance to that of the real \pdome\,
|
In order to compare the CARNOT model's performance to that of the real \pdome,
|
||||||
it is necessary to simulate the CARNOT model under the same set of conditions as
|
it is necessary to simulate the CARNOT model under the same set of conditions as
|
||||||
the ones present during the experimental data collection. In order to do this,
|
the ones present during the experimental data collection. In order to do this,
|
||||||
all the missing values that are required by the simulation have to be filled. In
|
all the missing values that are required by the simulation have to be filled. In
|
||||||
|
@ -540,12 +550,12 @@ All the other parameters related to solar irradiance, such as the in-plane
|
||||||
irradiance components, in-plane diffuse irradiance from the sky and the ground
|
irradiance components, in-plane diffuse irradiance from the sky and the ground
|
||||||
are computed using the Python pvlib.
|
are computed using the Python pvlib.
|
||||||
|
|
||||||
The values that cannot be either calculated or approximated from the available
|
The values that can be neither calculated nor approximated from the available
|
||||||
data, such as the precipitation, wind direction, incidence angles in place of
|
data, such as the precipitation, wind direction, incidence angles in place of
|
||||||
vertical and main/secondary surface axis, have been replaced with the default
|
vertical and main/secondary surface axis, have been replaced with the default
|
||||||
CARNOT placeholder value of -9999. The relative humidity, cloud index, pressure
|
CARNOT placeholder value of -9999. The relative humidity, cloud index, pressure
|
||||||
and wind speed have been fixed to 50\%, 0.5, 96300 Pa, 0 $\text{m}/\text{s}$
|
and wind speed have been fixed to the default CARNOT values of 50\%, 0.5, 96300
|
||||||
respectively.
|
Pa, 0 $\text{m}/\text{s}$ respectively.
|
||||||
|
|
||||||
\subsubsection{\pdome\ and CARNOT model comparison}\label{sec:CARNOT_comparison}
|
\subsubsection{\pdome\ and CARNOT model comparison}\label{sec:CARNOT_comparison}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
\section{Choice of Hyperparameters}
|
\section{Choice of Hyperparameters}~\label{sec:hyperparameters}
|
||||||
|
|
||||||
This section will discuss and try to validate the choice of all the
|
This section will discuss and try to validate the choice of all the
|
||||||
hyperparameters necessary for the training of a \acrshort{gp} model to capture
|
hyperparameters necessary for the training of a \acrshort{gp} model to capture
|
||||||
|
@ -9,16 +9,14 @@ behaviour directly from data. This comes in contrast to white-box and grey-box
|
||||||
modelling techniques, which require much more physical insight into the plant's
|
modelling techniques, which require much more physical insight into the plant's
|
||||||
behaviour.
|
behaviour.
|
||||||
|
|
||||||
The advantage of black-box models lies in the lack of physical parameters to be
|
On the flip side, this versatility comes at the cost of having to properly
|
||||||
fitted. On the flip side, this versatility of being able to fit much more
|
define the model hyperparameters: the number of regressors, the number of
|
||||||
complex models purely on data comes at the cost of having to properly define the
|
autoregressive lags for each class of inputs, the shape of the covariance
|
||||||
model hyperparameters: the number of regressors, the number of autoregressive
|
function have to be taken into account when designing a \acrshort{gp} model.
|
||||||
lags for each class of inputs, the shape of the covariance function have to be
|
These choices have direct influence on the resulting model behaviour and where
|
||||||
taken into account when designing a \acrshort{gp} model. These choices have
|
it can be generalized, as well as indirect influence in the form of more time
|
||||||
direct influence on the resulting model behaviour and where it can be
|
consuming computations in the case of larger number of regressors and more
|
||||||
generalized, as well as indirect influence in the form of more time consuming
|
complex kernel functions.
|
||||||
computations in the case of larger number of regressors and more complex kernel
|
|
||||||
functions.
|
|
||||||
|
|
||||||
As described in Section~\ref{sec:gp_dynamical_system}, for the purpose of this
|
As described in Section~\ref{sec:gp_dynamical_system}, for the purpose of this
|
||||||
project, the \acrlong{gp} model will be trained using the \acrshort{narx}
|
project, the \acrlong{gp} model will be trained using the \acrshort{narx}
|
||||||
|
@ -64,7 +62,12 @@ always benefit the \acrshort{gp} model at least not comparably to the
|
||||||
additional computational complexity.
|
additional computational complexity.
|
||||||
|
|
||||||
For the exogenous inputs the choice has therefore been made to take the
|
For the exogenous inputs the choice has therefore been made to take the
|
||||||
\textit{Global Solar Irradiance} and \textit{Outside Temperature Measurement}.
|
\textit{Global Solar Irradiance}\footnotemark and \textit{Outside Temperature
|
||||||
|
Measurement}.
|
||||||
|
|
||||||
|
\footnotetext{Using the \acrshort{ghi} makes sense in the case of the \pdome\
|
||||||
|
building which has windows facing all directions, as opposed to a room which
|
||||||
|
would have windows on only one side.}
|
||||||
|
|
||||||
\subsection{The Kernel}
|
\subsection{The Kernel}
|
||||||
|
|
||||||
|
@ -104,7 +107,7 @@ three lengthscales apart.
|
||||||
\begin{tabular}{||c c ||}
|
\begin{tabular}{||c c ||}
|
||||||
\hline
|
\hline
|
||||||
$\norm{\mathbf{x} - \mathbf{x}'}$ &
|
$\norm{\mathbf{x} - \mathbf{x}'}$ &
|
||||||
$\exp{(-\frac{1}{2}*\frac{\norm{\mathbf{x} - \mathbf{x}'}^2}{l^2})}$ \\
|
$\exp{(-\frac{1}{2}\times\frac{\norm{\mathbf{x} - \mathbf{x}'}^2}{l^2})}$ \\
|
||||||
\hline \hline
|
\hline \hline
|
||||||
$1l$ & 0.606 \\
|
$1l$ & 0.606 \\
|
||||||
$2l$ & 0.135 \\
|
$2l$ & 0.135 \\
|
||||||
|
@ -133,6 +136,8 @@ and the variance for different combinations of the exogenous input lags ($l_w$),
|
||||||
the controlled input lags ($l_u$) and the output lags ($l_y$) for a classical
|
the controlled input lags ($l_u$) and the output lags ($l_y$) for a classical
|
||||||
\acrshort{gp} model.
|
\acrshort{gp} model.
|
||||||
|
|
||||||
|
% TODO: [Lengthscales] Explain lags and w1,1, w2, etc.
|
||||||
|
|
||||||
\begin{table}[ht]
|
\begin{table}[ht]
|
||||||
%\vspace{-8pt}
|
%\vspace{-8pt}
|
||||||
\centering
|
\centering
|
||||||
|
@ -165,15 +170,15 @@ the controlled input lags ($l_u$) and the output lags ($l_y$) for a classical
|
||||||
\label{tab:GP_hyperparameters}
|
\label{tab:GP_hyperparameters}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
In general, the results of Table~\ref{tab:GP_hyperparameters} show that the
|
In general, the results of Table~\ref{tab:GP_hyperparameters} show that the past
|
||||||
past outputs are important when predicting future values. Of importance is also
|
outputs are important when predicting future values. Of importance is also the
|
||||||
the past inputs, with the exception of the models with very high variance, where
|
past inputs, with the exception of the models with very high variance, where the
|
||||||
the relative importances stay almost constant across all the inputs. For the
|
relative importances stay almost constant across all the inputs. For example, it
|
||||||
exogenous inputs, the outside temperature ($w2$) is generally more important
|
can be seen that for the exogenous inputs, the outside temperature ($w2$) is
|
||||||
than the solar irradiation ($w1$). In the case of more autoregressive lags for
|
generally more important than the solar irradiation ($w1$). In the case of more
|
||||||
the exogenous inputs the more recent information is usually more important in
|
autoregressive lags for the exogenous inputs the more recent information is
|
||||||
the case of the solar irradiation, while the second-to-last measurement is
|
usually more important in the case of the solar irradiation, while the
|
||||||
preffered for the outside temperature.
|
second-to-last measurement is preffered for the outside temperature.
|
||||||
|
|
||||||
For the classical \acrshort{gp} model the appropriate choice of lags would be
|
For the classical \acrshort{gp} model the appropriate choice of lags would be
|
||||||
$l_u = 1$ and $l_y = 3$ with $l_w$ taking the values of either 1, 2 or 3,
|
$l_u = 1$ and $l_y = 3$ with $l_w$ taking the values of either 1, 2 or 3,
|
||||||
|
@ -348,8 +353,6 @@ metrics, as well as being cheaper from a computational perspective. In order to
|
||||||
make a more informed choice for the best hyperparameters, the simulation
|
make a more informed choice for the best hyperparameters, the simulation
|
||||||
performance of all three combinations has been analysed.
|
performance of all three combinations has been analysed.
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
\begin{table}[ht]
|
\begin{table}[ht]
|
||||||
%\vspace{-8pt}
|
%\vspace{-8pt}
|
||||||
\centering
|
\centering
|
||||||
|
@ -381,7 +384,6 @@ other combinations scoring much worse on the \acrshort{msll} and \acrshort{lpd}
|
||||||
loss functions. This has, therefore, been chosen as the model for the full year
|
loss functions. This has, therefore, been chosen as the model for the full year
|
||||||
simulations.
|
simulations.
|
||||||
|
|
||||||
|
|
||||||
\subsection{Validation of hyperparameters}\label{sec:validation_hyperparameters}
|
\subsection{Validation of hyperparameters}\label{sec:validation_hyperparameters}
|
||||||
|
|
||||||
The validation step has the purpose of testing the viability of the trained
|
The validation step has the purpose of testing the viability of the trained
|
||||||
|
@ -449,10 +451,13 @@ this proves to be the best simulation model.
|
||||||
|
|
||||||
Lastly, \model{3}{1}{3} has a much worse simulation performance than the other
|
Lastly, \model{3}{1}{3} has a much worse simulation performance than the other
|
||||||
two models. This could hint at an over fitting of the model on the training data.
|
two models. This could hint at an over fitting of the model on the training data.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
This is consistent with the results found in Table~\ref{tab:GP_loss_functions}
|
This is consistent with the results found in Table~\ref{tab:GP_loss_functions}
|
||||||
for the \acrshort{rmse} and \acrshort{smse}, as well as can be seen in
|
for the \acrshort{rmse} and \acrshort{smse}, as well as can be seen in
|
||||||
Appendix~\ref{apx:hyperparams_gp}, Figure~\ref{fig:GP_313_test_validation},
|
Appendix~\ref{apx:hyperparams_gp}, Figure~\ref{fig:GP_313_test_validation},
|
||||||
where the model has much worse performance on the testing dataset predictions
|
where \model{3}{1}{3} has much worse performance on the testing dataset predictions
|
||||||
than the other two models.
|
than the other two models.
|
||||||
|
|
||||||
The performance of the three models in simulation mode is consistent with the
|
The performance of the three models in simulation mode is consistent with the
|
||||||
|
@ -471,8 +476,6 @@ while still having good performance on all loss functions. In implementation,
|
||||||
however, this model turned out to be very unstable, and the more conservative
|
however, this model turned out to be very unstable, and the more conservative
|
||||||
\model{1}{1}{3} model was used instead.
|
\model{1}{1}{3} model was used instead.
|
||||||
|
|
||||||
\clearpage
|
|
||||||
|
|
||||||
\subsubsection{Sparse and Variational Gaussian Process}
|
\subsubsection{Sparse and Variational Gaussian Process}
|
||||||
|
|
||||||
For the \acrshort{svgp} models, only the performance of \model{1}{2}{3} was
|
For the \acrshort{svgp} models, only the performance of \model{1}{2}{3} was
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
\section{The MPC Problem}\label{sec:mpc_problem}
|
\section{The MPC Problem}\label{sec:mpc_problem}
|
||||||
|
|
||||||
The \acrlong{ocp} to be solved was chosen in such a way as to make
|
The \acrlong{ocp} to be solved was chosen in such a way as to make the
|
||||||
analysis of the models' performances more straightforward. The objective is
|
analysis of the models' performances more straightforward. The objective is
|
||||||
tracking a defined reference temperature as close as possible, while ensuring
|
tracking a defined reference temperature as close as possible, while ensuring
|
||||||
the heat input stays within the HVAC capacity. The \textit{zero-variance} method
|
the heat input stays within the HVAC capacity. The \textit{zero-variance} method
|
||||||
|
@ -42,7 +42,8 @@ buildings based on the rolling 48h average outside temperature.
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = \textwidth]{Images/sia_180_2014.png}
|
\includegraphics[width = \textwidth]{Images/sia_180_2014.png}
|
||||||
\caption{The SIA 180:2014 norm for residential building temperatures}
|
\caption{The SIA 180:2014 norm for residential building
|
||||||
|
temperatures~\cite{sia180:2014ProtectionThermiqueProtection2014}}
|
||||||
\label{fig:sia_temperature_norm}
|
\label{fig:sia_temperature_norm}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
|
|
@ -21,13 +21,13 @@ in the \acrshort{wdb} object is given in Section~\ref{sec:CARNOT_WDB}.
|
||||||
\subsection{Simulink Model}
|
\subsection{Simulink Model}
|
||||||
|
|
||||||
The secondary functions of the Simulink model is the weather prediction, as well
|
The secondary functions of the Simulink model is the weather prediction, as well
|
||||||
as communication with the Python controller. A complete schema of the Simulink
|
as communication with the Python controller. A complete schematic of the
|
||||||
setup is presented in Figure~\ref{fig:Simulink_complete}.
|
Simulink setup is presented in Figure~\ref{fig:Simulink_complete}.
|
||||||
|
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = 0.75\textwidth]{Images/polydome_python.pdf}
|
\includegraphics[width = 0.75\textwidth]{Images/polydome_python.pdf}
|
||||||
\caption{Simulink Schema of the Complete Simulation}
|
\caption{Simulink diagram of the Complete Simulation}
|
||||||
\label{fig:Simulink_complete}
|
\label{fig:Simulink_complete}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ Let $w_l$, $u_l$, and $y_l$ be the lengths of the state vector components
|
||||||
$\mathbf{w}$, $\mathbf{u}$, $\mathbf{y}$ (cf. Equation~\ref{eq:components}).
|
$\mathbf{w}$, $\mathbf{u}$, $\mathbf{y}$ (cf. Equation~\ref{eq:components}).
|
||||||
Also, let X be the matrix of all the system states over the optimization horizon
|
Also, let X be the matrix of all the system states over the optimization horizon
|
||||||
and W be the matrix of the predicted disturbances for all the future steps. The
|
and W be the matrix of the predicted disturbances for all the future steps. The
|
||||||
original \acrlong{ocp} can be rewritten as:
|
original \acrlong{ocp} can be rewritten using index notation as:
|
||||||
|
|
||||||
\begin{subequations}\label{eq:sparse_optimal_control_problem}
|
\begin{subequations}\label{eq:sparse_optimal_control_problem}
|
||||||
\begin{align}
|
\begin{align}
|
||||||
|
@ -174,7 +174,7 @@ original \acrlong{ocp} can be rewritten as:
|
||||||
\end{align}
|
\end{align}
|
||||||
\end{subequations}
|
\end{subequations}
|
||||||
|
|
||||||
\subsection{Python server}
|
\subsection{Model Identification and Update using a Python server}
|
||||||
|
|
||||||
The Python server is responsible for the control part of the simulation. It
|
The Python server is responsible for the control part of the simulation. It
|
||||||
delegates which controller is active, is responsible for training and updating
|
delegates which controller is active, is responsible for training and updating
|
||||||
|
@ -182,16 +182,16 @@ the \acrshort{gp} and \acrshort{svgp} models, as well as keeping track of all
|
||||||
the intermediate results for analysis.
|
the intermediate results for analysis.
|
||||||
|
|
||||||
In the beginning of the experiment there is no information available on the
|
In the beginning of the experiment there is no information available on the
|
||||||
building's thermal behaviour. For this part of the simulation, the controller
|
building's thermal behaviour. For this part of the simulation, the server
|
||||||
switches to a \acrshort{pi} controller with random disturbances until it gathers
|
switches to a \acrshort{pi} controller with random disturbances until it gathers
|
||||||
enough data to train a \acrshort{gp} model. This ensured that the building is
|
enough data to train a \acrshort{gp} model. This ensures that the building is
|
||||||
sufficiently excited to capture its dynamics, while maintaining the temperature
|
sufficiently excited to capture its dynamics, while maintaining the temperature
|
||||||
within an acceptable range (~15 --- 25 $\degree$C).
|
within an acceptable range (~15 --- 25 $\degree$C).
|
||||||
|
|
||||||
Once enough data has been captured all the features are first scaled to the
|
Once enough data has been captured all the features are first scaled to the
|
||||||
range [-1, 1] in order to reduce the possibility of numerical instabilities. The
|
range [-1, 1] in order to reduce the possibility of numerical instabilities. The
|
||||||
Python controller then trains the \acrshort{gp} model and switches to tracking
|
Python server then trains the \acrshort{gp} model and switches to tracking the
|
||||||
the appropriate SIA 180:2014 reference temperature (cf.
|
appropriate SIA 180:2014 reference temperature (cf.
|
||||||
Section~\ref{sec:reference_temperature}).
|
Section~\ref{sec:reference_temperature}).
|
||||||
|
|
||||||
For the case of the \acrshort{svgp}, a new model is trained once enough data is
|
For the case of the \acrshort{svgp}, a new model is trained once enough data is
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
\section{Results}\label{sec:results}
|
\section{Full-year Simulation Results}\label{sec:results}
|
||||||
|
|
||||||
|
|
||||||
This section focuses on the presentation and interpretation of the year-long
|
This section focuses on the presentation and interpretation of the year-long
|
||||||
simulation of the control schemes present previously. All the control schemes
|
simulation of the control schemes presented previously. All the control schemes
|
||||||
analysed in this Section have been done with a sampling time of 15 minutes and a
|
analysed in this Section have used a sampling time of 15 minutes and a control
|
||||||
control horizon of 8 steps.
|
horizon of 8 steps.
|
||||||
|
|
||||||
Section~\ref{sec:GP_results} analyses the results of a conventional
|
Section~\ref{sec:GP_results} analyses the results of a conventional
|
||||||
\acrlong{gp} Model trained on the first five days of gathered data. The models
|
\acrlong{gp} Model trained on the first five days of gathered data. The model
|
||||||
is then used for the rest of the year, with the goal of tracking the defined
|
is then used for the rest of the year, with the goal of tracking the defined
|
||||||
reference temperature.
|
reference temperature.
|
||||||
|
|
||||||
Section~\ref{sec:SVGP_results} goes into details on the analysis of the Learning
|
Section~\ref{sec:SVGP_results} goes into details on the analysis of the learning
|
||||||
scheme using a \acrshort{svgp} Model. In this scenario, the model is first
|
scheme using a \acrshort{svgp} Model. In this scenario, the model is first
|
||||||
trained on the first five days of data, and updates every day at midnight with
|
trained on the first five days of data, and updates every day at midnight with
|
||||||
the new information gathered from closed-loop operation.
|
the new information gathered from closed-loop operation.
|
||||||
|
@ -19,7 +19,7 @@ the new information gathered from closed-loop operation.
|
||||||
\subsection{Conventional Gaussian Processes}\label{sec:GP_results}
|
\subsection{Conventional Gaussian Processes}\label{sec:GP_results}
|
||||||
|
|
||||||
The first simulation, to be used as a baseline comparison with the
|
The first simulation, to be used as a baseline comparison with the
|
||||||
\acrshort{svgp} Models developed further consists of using a `static'
|
\acrshort{svgp} Models developed further, consists of using a `static'
|
||||||
\acrshort{gp} model trained on five days worth of experimental data. This model
|
\acrshort{gp} model trained on five days worth of experimental data. This model
|
||||||
is then employed for the rest of the year.
|
is then employed for the rest of the year.
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ $\degree$C respectively.
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
This large difference of performance could be explained by the change in outside
|
This large difference of performance could be explained by the change in outside
|
||||||
weather (Solar Irradiance and Outside Temperature --- the exogenous inputs) from
|
weather (solar irradiance and outside temperature --- the exogenous inputs) from
|
||||||
the one present during the training phase. It can be seen in
|
the one present during the training phase. It can be seen in
|
||||||
Figure~\ref{fig:Dataset_outside_temperature} that already at 500 points in the
|
Figure~\ref{fig:Dataset_outside_temperature} that already at 500 points in the
|
||||||
simulation both the GHI and the Outside Temperature are outside of the training
|
simulation both the GHI and the Outside Temperature are outside of the training
|
||||||
|
@ -143,11 +143,11 @@ at midnight using the newly accumulated data from closed-loop operation.
|
||||||
The results of this setup are presented in
|
The results of this setup are presented in
|
||||||
Figure~\ref{fig:SVGP_fullyear_simulation}. It can already be seen that this
|
Figure~\ref{fig:SVGP_fullyear_simulation}. It can already be seen that this
|
||||||
setup performs much better than the initial one. The only large deviations from
|
setup performs much better than the initial one. The only large deviations from
|
||||||
the reference temperature are due to cold --- when the \acrshort{hvac}'s limited
|
the reference temperature are due to cold weather, when the \acrshort{hvac}'s
|
||||||
heat capacity is unable to maintain the proper temperature. Additionnaly, the
|
limited heat capacity is unable to maintain the proper temperature.
|
||||||
\acrshort{svgp} controller takes around 250-300ms of computation time for each
|
Additionnaly, the \acrshort{svgp} controller takes around 250 - 300ms of
|
||||||
simulation time, decreasing the computational cost of the original \acrshort{gp}
|
computation time for each simulation time, decreasing the computational cost of
|
||||||
by a factor of six.
|
the original \acrshort{gp} by a factor of six.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ by a factor of six.
|
||||||
|
|
||||||
\clearpage
|
\clearpage
|
||||||
|
|
||||||
Comparing the Absolute Error of the Measured vs Reference temperature for the
|
Comparing the absolute error of the measured vs reference temperature for the
|
||||||
duration of the experiment (cf. Figure~\ref{fig:SVGP_fullyear_abserr}) with the
|
duration of the experiment (cf. Figure~\ref{fig:SVGP_fullyear_abserr}) with the
|
||||||
one of the original experiment, the average absolute error is reduced from 1.33
|
one of the original experiment, the average absolute error is reduced from 1.33
|
||||||
$\degree$C to only 0.05 $\degree$C, with the majority of the values being lower
|
$\degree$C to only 0.05 $\degree$C, with the majority of the values being lower
|
||||||
|
@ -210,7 +210,7 @@ behaviour of the plant over all the experimental steps in the first two cases.
|
||||||
It still has a noticeable error when predicting the behaviour of the plant on
|
It still has a noticeable error when predicting the behaviour of the plant on
|
||||||
new data (i.e. simulations starting at steps 10750 and 11000), but it is much
|
new data (i.e. simulations starting at steps 10750 and 11000), but it is much
|
||||||
less than before. This gives a hint at the fact that the \acrshort{svgp} model's
|
less than before. This gives a hint at the fact that the \acrshort{svgp} model's
|
||||||
performance ameliorates throughout the year, but it does require much more data
|
performance improves throughout the year, but it does require much more data
|
||||||
than the classical \acrshort{gp} model to capture the building dynamics.
|
than the classical \acrshort{gp} model to capture the building dynamics.
|
||||||
|
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
|
@ -361,10 +361,10 @@ Analyzing the results of a simulation done on only one day's worth of initial
|
||||||
simulation data (cf. Figures~\ref{fig:SVGP_96pts_fullyear_simulation}
|
simulation data (cf. Figures~\ref{fig:SVGP_96pts_fullyear_simulation}
|
||||||
and~\ref{fig:SVGP_96pts_abserr}) it is very notable that the model performs
|
and~\ref{fig:SVGP_96pts_abserr}) it is very notable that the model performs
|
||||||
almost identically to the one identified in the previous sections. This
|
almost identically to the one identified in the previous sections. This
|
||||||
nightlights one of the practical benefits of the \acrshort{svgp} implementations
|
highlights one of the practical benefits of the \acrshort{svgp} implementations
|
||||||
compared to the classical \acrlong{gp} -- it is possible to start with a more
|
compared to the classical \acrlong{gp} -- it is possible to start with a rougher
|
||||||
rough controller trained on less data and refine it over time, reducing the need
|
controller trained on less data and refine it over time, reducing the need for
|
||||||
for cumbersome and potentially costly initial experiments for gathering data.
|
cumbersome and potentially costly initial experiments for gathering data.
|
||||||
|
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
|
@ -400,7 +400,7 @@ based on closed-loop operation.
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
As it can be seen in Figure~\ref{fig:SVGP_480window_fullyear_simulation}, this
|
As it can be seen in Figure~\ref{fig:SVGP_480window_fullyear_simulation}, this
|
||||||
model is unable to properly track the reference temperature. In fact, five days
|
model is unable to exhaustively track the reference temperature. In fact, five days
|
||||||
after the identification, the model forgets all the initial data and becomes
|
after the identification, the model forgets all the initial data and becomes
|
||||||
unstable. This instability then generates enough excitation of the plant for the
|
unstable. This instability then generates enough excitation of the plant for the
|
||||||
model, to again learn its behaviour. This cycle repeats every five days, when the
|
model, to again learn its behaviour. This cycle repeats every five days, when the
|
||||||
|
@ -470,7 +470,7 @@ models can be deployed with less explicit identification data, but they will
|
||||||
continue to improve over the course of the year, as the building passes through
|
continue to improve over the course of the year, as the building passes through
|
||||||
different regions of the state space and more data is collected.
|
different regions of the state space and more data is collected.
|
||||||
|
|
||||||
These results do not, however, discredit the use of \acrlong{gp} for employment
|
However, these results do not discredit the use of \acrlong{gp} for employment
|
||||||
in a multi-seasonal situation. As shown before, given the same amount of data
|
in a multi-seasonal situation. As shown before, given the same amount of data
|
||||||
and ignoring the computational cost, they perform better than the alternative
|
and ignoring the computational cost, they perform better than the alternative
|
||||||
\acrshort{svgp} models. The bad initial performance could be mitigated by
|
\acrshort{svgp} models. The bad initial performance could be mitigated by
|
||||||
|
|
85
90_Conclusion.tex
Normal file
85
90_Conclusion.tex
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
\section{Conclusion}~\label{sec:conclusion}
|
||||||
|
|
||||||
|
The aim of this project was to analyse the performance of \acrshort{gp} based
|
||||||
|
controllers for use in longer lasting implementations, where differences in
|
||||||
|
building behaviour become important compared to the initially available data.
|
||||||
|
|
||||||
|
{\color{red}
|
||||||
|
First, the performance of a classical \acrshort{gp} model trained on 5 days
|
||||||
|
worth of experimental data was analysed. This model turned out to be unable to
|
||||||
|
correctly extrapolate building behaviour as the weather changed throughout the
|
||||||
|
year.
|
||||||
|
}
|
||||||
|
|
||||||
|
First, the performance of a classical \acrshort{gp} model trained on five days
|
||||||
|
worth of experimental data was analysed. Initially, this model performed very
|
||||||
|
well both in one step ahead prediction and multi-step ahead simulation over new,
|
||||||
|
unseen, data. With the change in weather, however, the model shifted
|
||||||
|
|
||||||
|
Several \acrshort{svgp} implementations were then analysed. They turned out to
|
||||||
|
provide important benefits over the classical models, such as the ability to
|
||||||
|
easily scale when new data is being added and the much reduced computational
|
||||||
|
effort required. They do however present some downsides, namely increasing the
|
||||||
|
number of hyperparameters by having to choose the number of inducing locations,
|
||||||
|
as well as performing worse than then classical \acrshort{gp} implementation
|
||||||
|
given the same amount of data.
|
||||||
|
|
||||||
|
%Finally, the possible improvements to the current implementations have been
|
||||||
|
%addressed, noting that classical \acrshort{gp} implementations could also be
|
||||||
|
%adapted to the \textit{learning control} paradigm, even if their implementation
|
||||||
|
%could turn out to be much more involved and more computationally expensive than
|
||||||
|
%the \acrshort{svgp} alternative.
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{Further Research}~\label{sec:further_research}
|
||||||
|
|
||||||
|
Section~\ref{sec:results} has presented and compared the results of a full-year
|
||||||
|
simulation for a classical \acrshort{gp} model, as well as a few incarnations of
|
||||||
|
\acrshort{svgp} models. The results show that the \acrshort{svgp} have much
|
||||||
|
better performance, mainly due to the possibility of updating the model
|
||||||
|
throughout the year. The \acrshort{svgp} models also present a computational
|
||||||
|
cost advantage both in training and in evaluation, due to several approximations
|
||||||
|
shown in Section~\ref{sec:gaussian_processes}.
|
||||||
|
|
||||||
|
Focusing on the \acrlong{gp} models, there could be several ways of improving
|
||||||
|
its performance, as noted previously: a more varied identification dataset and
|
||||||
|
smart update of a fixed-size data dictionary according to information gain,
|
||||||
|
could mitigate the present problems.
|
||||||
|
|
||||||
|
Using a Sparse \acrshort{gp} without replacing the maximum log likelihood
|
||||||
|
with the \acrshort{elbo} could improve performance of the \acrshort{gp} model at
|
||||||
|
the expense of training time.
|
||||||
|
|
||||||
|
An additional change that could be made is inclusion of the most amount of prior
|
||||||
|
information possible through setting a more refined kernel, as well as adding
|
||||||
|
prior information on all the model hyperparameters when available. This approach
|
||||||
|
however goes against the `spirit' of black-box approaches, since significant
|
||||||
|
insight into the physics of the plant is required in order to properly model and
|
||||||
|
implement this information.
|
||||||
|
|
||||||
|
On the \acrshort{svgp} side, several changes could also be proposed, which were
|
||||||
|
not properly addressed in this work. First, the size of the inducing dataset was
|
||||||
|
chosen experimentally until it was found to accurately reproduce the manually
|
||||||
|
collected experimental data. In order to better use the available computational
|
||||||
|
resources, this value could be found programmatically in a way to minimize
|
||||||
|
evaluation time, while still providing good performance. Another possibility is
|
||||||
|
the periodic re-evaluation of this value when new data comes in, since as more
|
||||||
|
and more data is collected the model becomes more complex, and in general more
|
||||||
|
inducing locations could be necessary to properly reproduce the training data.
|
||||||
|
|
||||||
|
Finally, none of the presented controllers take into account occupancy rates or
|
||||||
|
adapt to possible changes in the real building, such as adding or removing
|
||||||
|
furniture, deteriorating insulation and so on. The presented update methods only
|
||||||
|
deals with adding information on behaviour in different state space regions, i.e
|
||||||
|
\textit{learning}. Additionally, their ability to \textit{adapt} to changes in
|
||||||
|
the actual plant's behaviour should be further addressed.
|
||||||
|
|
||||||
|
\section*{Acknowledgements}
|
||||||
|
|
||||||
|
I would like to thank Manuel Koch for the great help provided during the course
|
||||||
|
of the project starting from the basics on CARNOT modelling, to helping me
|
||||||
|
better compare the performance of different controllers, as well as Prof.\ Colin
|
||||||
|
Jones, whose insights were always very guiding, while still allowing me to
|
||||||
|
discover everything on my own.
|
||||||
|
|
||||||
|
\clearpage
|
|
@ -43,14 +43,14 @@
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = \textwidth]{Plots/GP_313_training_performance.pdf}
|
\includegraphics[width = \textwidth]{Plots/GP_313_training_performance.pdf}
|
||||||
\caption{Prediction performance of \model{1}{1}{3} on the training dataset}
|
\caption{Prediction performance of \model{3}{1}{3} on the training dataset}
|
||||||
\label{fig:GP_313_train_validation}
|
\label{fig:GP_313_train_validation}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width = \textwidth]{Plots/GP_313_test_performance.pdf}
|
\includegraphics[width = \textwidth]{Plots/GP_313_test_performance.pdf}
|
||||||
\caption{Prediction performance of \model{1}{1}{3} on the test dataset}
|
\caption{Prediction performance of \model{3}{1}{3} on the test dataset}
|
||||||
\label{fig:GP_313_test_validation}
|
\label{fig:GP_313_test_validation}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Plots/GP_113_test_performance.pdf
Normal file → Executable file
BIN
Plots/GP_113_test_performance.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_113_training_performance.pdf
Normal file → Executable file
BIN
Plots/GP_113_training_performance.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_213_-1pts_test_prediction_20_steps.pdf
Normal file → Executable file
BIN
Plots/GP_213_-1pts_test_prediction_20_steps.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_213_test_performance.pdf
Normal file → Executable file
BIN
Plots/GP_213_test_performance.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_213_training_performance.pdf
Normal file → Executable file
BIN
Plots/GP_213_training_performance.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_313_-1pts_test_prediction_20_steps.pdf
Normal file → Executable file
BIN
Plots/GP_313_-1pts_test_prediction_20_steps.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_313_test_performance.pdf
Normal file → Executable file
BIN
Plots/GP_313_test_performance.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/GP_313_training_performance.pdf
Normal file → Executable file
BIN
Plots/GP_313_training_performance.pdf
Normal file → Executable file
Binary file not shown.
0
Plots/GP_training_performance.pdf
Normal file → Executable file
0
Plots/GP_training_performance.pdf
Normal file → Executable file
BIN
Plots/SVGP_123_test_performance.pdf
Normal file → Executable file
BIN
Plots/SVGP_123_test_performance.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/SVGP_123_test_prediction_20_steps.pdf
Normal file → Executable file
BIN
Plots/SVGP_123_test_prediction_20_steps.pdf
Normal file → Executable file
Binary file not shown.
BIN
Plots/SVGP_123_training_performance.pdf
Normal file → Executable file
BIN
Plots/SVGP_123_training_performance.pdf
Normal file → Executable file
Binary file not shown.
7
main.tex
7
main.tex
|
@ -98,6 +98,7 @@ temperature control}
|
||||||
\usepackage{fancyhdr}
|
\usepackage{fancyhdr}
|
||||||
\pagestyle{fancy}
|
\pagestyle{fancy}
|
||||||
\setlength\headheight{35pt}
|
\setlength\headheight{35pt}
|
||||||
|
\setlength\footskip{13.6pt}
|
||||||
\fancyhf{Multi-season GP performance for buildings}
|
\fancyhf{Multi-season GP performance for buildings}
|
||||||
\rhead{\includegraphics[width=2cm]{Logo-EPFL.png}}
|
\rhead{\includegraphics[width=2cm]{Logo-EPFL.png}}
|
||||||
\lhead{}
|
\lhead{}
|
||||||
|
@ -127,16 +128,14 @@ temperature control}
|
||||||
\clearpage
|
\clearpage
|
||||||
|
|
||||||
\input{10_Introduction.tex}
|
\input{10_Introduction.tex}
|
||||||
\input{20_Previous_Research.tex}
|
|
||||||
\input{30_Gaussian_Processes_Background.tex}
|
\input{30_Gaussian_Processes_Background.tex}
|
||||||
\input{40_CARNOT_model.tex}
|
\input{40_CARNOT_model.tex}
|
||||||
\input{50_Choice_of_Hyperparameters.tex}
|
\input{50_Choice_of_Hyperparameters.tex}
|
||||||
\input{60_The_MPC_Problem.tex}
|
\input{60_The_MPC_Problem.tex}
|
||||||
\input{70_Implementation.tex}
|
\input{70_Implementation.tex}
|
||||||
\input{80_Results.tex}
|
\input{80_Results.tex}
|
||||||
\input{90_Further_Research.tex}
|
\input{90_Conclusion.tex}
|
||||||
\input{95_Conclusion.tex}
|
\printbibliography[heading=bibintoc]
|
||||||
\printbibliography
|
|
||||||
\appendix
|
\appendix
|
||||||
\input{99A_GP_hyperparameters_validation.tex}
|
\input{99A_GP_hyperparameters_validation.tex}
|
||||||
\input{99C_hyperparameters_results.tex}
|
\input{99C_hyperparameters_results.tex}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue