Compare commits
10 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a532e541ec | ||
![]() |
0d2782dd4a | ||
![]() |
e1ce6e8ed6 | ||
![]() |
19e854e02d | ||
![]() |
721953642c | ||
![]() |
1e1cc5acd8 | ||
![]() |
ec9660015c | ||
![]() |
1de057f1eb | ||
![]() |
761c9b5c0d | ||
![]() |
217d34613e |
13 changed files with 399 additions and 60 deletions
13
.github/workflows/compile.yml
vendored
13
.github/workflows/compile.yml
vendored
|
@ -6,7 +6,6 @@ name: CI
|
|||
on:
|
||||
# Triggers the workflow on push or pull request events but only for the master branch
|
||||
push:
|
||||
branches: [ master ]
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
pull_request:
|
||||
|
@ -31,14 +30,18 @@ jobs:
|
|||
- name: Compile LaTeX document
|
||||
uses: xu-cheng/latex-action@v2
|
||||
with:
|
||||
root_file: thesis.tex
|
||||
root_file: slides_clean.tex
|
||||
root_file: slides_notes.tex
|
||||
root_file: |
|
||||
thesis.tex
|
||||
slides_clean.tex
|
||||
slides_notes.tex
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: main.pdf
|
||||
files: |
|
||||
thesis.pdf
|
||||
slides_clean.pdf
|
||||
slides_notes.pdf
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
291
.gitignore
vendored
Normal file
291
.gitignore
vendored
Normal file
|
@ -0,0 +1,291 @@
|
|||
## Core latex/pdflatex auxiliary files:
|
||||
*.aux
|
||||
*.lof
|
||||
*.log
|
||||
*.lot
|
||||
*.fls
|
||||
*.out
|
||||
*.toc
|
||||
*.fmt
|
||||
*.fot
|
||||
*.cb
|
||||
*.cb2
|
||||
.*.lb
|
||||
|
||||
## Intermediate documents:
|
||||
*.dvi
|
||||
*.xdv
|
||||
*-converted-to.*
|
||||
# these rules might exclude image files for figures etc.
|
||||
# *.ps
|
||||
# *.eps
|
||||
thesis.pdf
|
||||
slides_clean.pdf
|
||||
slides_notes.pdf
|
||||
*Master_report*.pdf
|
||||
|
||||
## Generated if empty string is given at "Please type another file name for output:"
|
||||
.pdf
|
||||
|
||||
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*-blx.aux
|
||||
*-blx.bib
|
||||
*.run.xml
|
||||
|
||||
## Build tool auxiliary files:
|
||||
*.fdb_latexmk
|
||||
*.synctex
|
||||
*.synctex(busy)
|
||||
*.synctex.gz
|
||||
*.synctex.gz(busy)
|
||||
*.pdfsync
|
||||
|
||||
## Build tool directories for auxiliary files
|
||||
# latexrun
|
||||
latex.out/
|
||||
|
||||
## Auxiliary and intermediate files from other packages:
|
||||
# algorithms
|
||||
*.alg
|
||||
*.loa
|
||||
|
||||
# achemso
|
||||
acs-*.bib
|
||||
|
||||
# amsthm
|
||||
*.thm
|
||||
|
||||
# beamer
|
||||
*.nav
|
||||
*.pre
|
||||
*.snm
|
||||
*.vrb
|
||||
|
||||
# changes
|
||||
*.soc
|
||||
|
||||
# comment
|
||||
*.cut
|
||||
|
||||
# cprotect
|
||||
*.cpt
|
||||
|
||||
# elsarticle (documentclass of Elsevier journals)
|
||||
*.spl
|
||||
|
||||
# endnotes
|
||||
*.ent
|
||||
|
||||
# fixme
|
||||
*.lox
|
||||
|
||||
# feynmf/feynmp
|
||||
*.mf
|
||||
*.mp
|
||||
*.t[1-9]
|
||||
*.t[1-9][0-9]
|
||||
*.tfm
|
||||
|
||||
#(r)(e)ledmac/(r)(e)ledpar
|
||||
*.end
|
||||
*.?end
|
||||
*.[1-9]
|
||||
*.[1-9][0-9]
|
||||
*.[1-9][0-9][0-9]
|
||||
*.[1-9]R
|
||||
*.[1-9][0-9]R
|
||||
*.[1-9][0-9][0-9]R
|
||||
*.eledsec[1-9]
|
||||
*.eledsec[1-9]R
|
||||
*.eledsec[1-9][0-9]
|
||||
*.eledsec[1-9][0-9]R
|
||||
*.eledsec[1-9][0-9][0-9]
|
||||
*.eledsec[1-9][0-9][0-9]R
|
||||
|
||||
# glossaries
|
||||
*.acn
|
||||
*.acr
|
||||
*.glg
|
||||
*.glo
|
||||
*.gls
|
||||
*.glsdefs
|
||||
*.lzo
|
||||
*.lzs
|
||||
|
||||
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
|
||||
# *.ist
|
||||
|
||||
# gnuplottex
|
||||
*-gnuplottex-*
|
||||
|
||||
# gregoriotex
|
||||
*.gaux
|
||||
*.glog
|
||||
*.gtex
|
||||
|
||||
# htlatex
|
||||
*.4ct
|
||||
*.4tc
|
||||
*.idv
|
||||
*.lg
|
||||
*.trc
|
||||
*.xref
|
||||
|
||||
# hyperref
|
||||
*.brf
|
||||
|
||||
# knitr
|
||||
*-concordance.tex
|
||||
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
|
||||
# *.tikz
|
||||
*-tikzDictionary
|
||||
|
||||
# listings
|
||||
*.lol
|
||||
|
||||
# luatexja-ruby
|
||||
*.ltjruby
|
||||
|
||||
# makeidx
|
||||
*.idx
|
||||
*.ilg
|
||||
*.ind
|
||||
|
||||
# minitoc
|
||||
*.maf
|
||||
*.mlf
|
||||
*.mlt
|
||||
*.mtc[0-9]*
|
||||
*.slf[0-9]*
|
||||
*.slt[0-9]*
|
||||
*.stc[0-9]*
|
||||
|
||||
# minted
|
||||
_minted*
|
||||
*.pyg
|
||||
|
||||
# morewrites
|
||||
*.mw
|
||||
|
||||
# newpax
|
||||
*.newpax
|
||||
|
||||
# nomencl
|
||||
*.nlg
|
||||
*.nlo
|
||||
*.nls
|
||||
|
||||
# pax
|
||||
*.pax
|
||||
|
||||
# pdfpcnotes
|
||||
*.pdfpc
|
||||
|
||||
# sagetex
|
||||
*.sagetex.sage
|
||||
*.sagetex.py
|
||||
*.sagetex.scmd
|
||||
|
||||
# scrwfile
|
||||
*.wrt
|
||||
|
||||
# sympy
|
||||
*.sout
|
||||
*.sympy
|
||||
sympy-plots-for-*.tex/
|
||||
|
||||
# pdfcomment
|
||||
*.upa
|
||||
*.upb
|
||||
|
||||
# pythontex
|
||||
*.pytxcode
|
||||
pythontex-files-*/
|
||||
|
||||
# tcolorbox
|
||||
*.listing
|
||||
|
||||
# thmtools
|
||||
*.loe
|
||||
|
||||
# TikZ & PGF
|
||||
*.dpth
|
||||
*.md5
|
||||
*.auxlock
|
||||
|
||||
# todonotes
|
||||
*.tdo
|
||||
|
||||
# vhistory
|
||||
*.hst
|
||||
*.ver
|
||||
|
||||
# easy-todo
|
||||
*.lod
|
||||
|
||||
# xcolor
|
||||
*.xcp
|
||||
|
||||
# xmpincl
|
||||
*.xmpi
|
||||
|
||||
# xindy
|
||||
*.xdy
|
||||
|
||||
# xypic precompiled matrices and outlines
|
||||
*.xyc
|
||||
*.xyd
|
||||
|
||||
# endfloat
|
||||
*.ttt
|
||||
*.fff
|
||||
|
||||
# Latexian
|
||||
TSWLatexianTemp*
|
||||
|
||||
## Editors:
|
||||
# WinEdt
|
||||
*.bak
|
||||
*.sav
|
||||
|
||||
# Texpad
|
||||
.texpadtmp
|
||||
|
||||
# LyX
|
||||
*.lyx~
|
||||
|
||||
# Kile
|
||||
*.backup
|
||||
|
||||
# gummi
|
||||
.*.swp
|
||||
|
||||
# KBibTeX
|
||||
*~[0-9]*
|
||||
|
||||
# TeXnicCenter
|
||||
*.tps
|
||||
|
||||
# auto folder when using emacs and auctex
|
||||
./auto/*
|
||||
*.el
|
||||
|
||||
# expex forward references with \gathertags
|
||||
*-tags.tex
|
||||
|
||||
# standalone packages
|
||||
*.sta
|
||||
|
||||
# Makeindex log files
|
||||
*.lpz
|
||||
|
||||
# xwatermark package
|
||||
*.xwm
|
||||
|
||||
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
|
||||
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
|
||||
# Uncomment the next line to have this generated file ignored.
|
||||
#*Notes.bib
|
BIN
Images/sia_180_2014_en.png
Normal file
BIN
Images/sia_180_2014_en.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 82 KiB |
40
README.md
Normal file
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Inter-seasonal GP MPC control for buildings
|
||||
|
||||
## Report and Presentation slides
|
||||
|
||||
This repository contains the code for the report and presentation slides for my
|
||||
Master Project
|
||||
> *Inter-seasonal Performance of Gaussian Process-based
|
||||
> Model Predictive Control of Buildings*
|
||||
|
||||
which was done under the supervision of Prof. Colin Jones at the EPFL's
|
||||
[Automatic Control Laboratory](https://www.epfl.ch/labs/la/)
|
||||
|
||||
The main folder structure is as follows:
|
||||
|
||||
```shell
|
||||
└── Thesis
|
||||
├── Images
|
||||
├── Plots
|
||||
└── Sections
|
||||
```
|
||||
|
||||
The `Images` and `Plots` folders contain the figures used in the thesis and are
|
||||
shared between the report and the presentation. The `Sections` folder contains
|
||||
the content of documents.
|
||||
|
||||
In order to compile the documents, the appropriate main file has to be chosen:
|
||||
|
||||
- `thesis.tex` compiles the project report
|
||||
- `slides_clean.tex` compiles the presentation slides, not including the notes
|
||||
- `slides_notes.tex` compiles the presentation slides, including the notes on
|
||||
the right side of the screen.
|
||||
|
||||
The resulting presentation pdf contains an embedded video file. It can be played
|
||||
back using a compatible pdf reader, such as okular or pympress.
|
||||
|
||||
---
|
||||
|
||||
The presentation is based on the
|
||||
[beamer template](https://www.overleaf.com/latex/templates/eesd-presentation-latex-template/sfqmhmqxhmjy)
|
||||
by Mahmoud Shaqfa.
|
|
@ -17,12 +17,14 @@ design of these control schemes, as the results could vary greatly from one
|
|||
implementation to another.
|
||||
|
||||
Gaussian Processes have been previously used to model building dynamics, but
|
||||
they are usually limited by a fixed computational budget. This limits the
|
||||
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
|
||||
autonomous racing cars \cite{kabzanLearningBasedModelPredictive2019}, but there
|
||||
the Sparse \acrshort{gp} model was built on top of a white-box model and only
|
||||
responsible for fitting the unmodeled dynamics.
|
||||
they are usually limited by a fixed computational
|
||||
budget~\cite{jainLearningControlUsing2018,nghiemDatadrivenDemandResponse2017}.
|
||||
This limits the approaches that can be taken for identification and update of
|
||||
said models. Learning \acrfull{gp} models have also been previously used in
|
||||
the context of autonomous racing cars
|
||||
\cite{kabzanLearningBasedModelPredictive2019}, but there the Sparse
|
||||
\acrshort{gp} model was built on top of a white-box model and only responsible
|
||||
for fitting the unmodeled dynamics.
|
||||
|
||||
\subsection{Previous Research}
|
||||
With the increase in computational power and availability of data over time,
|
||||
|
@ -33,7 +35,7 @@ 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
|
||||
In~\cite{pleweSupervisoryModelPredictive2020}, a \acrshort{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
|
||||
|
@ -64,7 +66,7 @@ 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
|
||||
\acrshort{gp} Models through implementing \acrfull{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.
|
||||
|
@ -79,7 +81,7 @@ multiple control schemes using both classical \acrshort{gp}s, as well as
|
|||
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
|
||||
\acrshort{gp}s. 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
|
||||
|
|
|
@ -144,7 +144,7 @@ choices~\cite{kocijanModellingControlDynamic2016}:
|
|||
\subsubsection*{Squared Exponential Kernel}
|
||||
|
||||
This kernel is used when the system to be modelled is assumed to be smooth and
|
||||
continuous. The basic version of the \acrshort{se} kernel has the following form:
|
||||
continuous. The basic version of the \acrfull{se} kernel has the following form:
|
||||
|
||||
\begin{equation}
|
||||
k(\mathbf{x}, \mathbf{x'}) = \sigma^2 \exp{\left(- \frac{1}{2}\frac{\norm{\mathbf{x} -
|
||||
|
@ -182,7 +182,7 @@ value of the hyperparameters. This is the \acrfull{ard} property.
|
|||
|
||||
The \acrfull{rq} Kernel can be interpreted as an infinite sum of \acrshort{se}
|
||||
kernels with different lengthscales. It has the same smooth behaviour as the
|
||||
\acrlong{se} Kernel, but can take into account the difference in function
|
||||
\acrshort{se} Kernel, but can take into account the difference in function
|
||||
behaviour for large scale vs small scale variations.
|
||||
|
||||
\begin{equation}
|
||||
|
@ -207,11 +207,11 @@ without inquiring the penalty of inverting the covariance matrix. An overview
|
|||
and comparison of multiple methods is given
|
||||
at~\cite{liuUnderstandingComparingScalable2019}.
|
||||
|
||||
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,
|
||||
For the scope of this project, the choice of using the \acrshort{svgp} models
|
||||
has been made, since it provides a very good balance of scalability, capability,
|
||||
robustness and controllability~\cite{liuUnderstandingComparingScalable2019}.
|
||||
|
||||
The \acrlong{svgp} has been first introduced
|
||||
The \acrshort{svgp} has been first introduced
|
||||
by~\textcite{hensmanGaussianProcessesBig2013} as a way to scale the use of
|
||||
\acrshort{gp}s to large datasets. A detailed explanation on the mathematics of
|
||||
\acrshort{svgp}s and reasoning behind it is given
|
||||
|
@ -264,7 +264,7 @@ In order to solve this problem, the log likelihood equation
|
|||
classical \acrshort{gp} is replaced with an approximate value, that is
|
||||
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 \acrfull{elbo} is based on the one presented
|
||||
in~\cite{yangUnderstandingVariationalLower}.
|
||||
|
||||
Assume $X$ to be the observations, and $Z$ the set parameters of the
|
||||
|
@ -300,7 +300,7 @@ divergence, which for variational inference takes the following form:
|
|||
\end{equation}
|
||||
\vspace{5pt}
|
||||
|
||||
where L is the \acrfull{elbo}. Rearranging this equation we get:
|
||||
where L is the \acrshort{elbo}. Rearranging this equation we get:
|
||||
|
||||
\begin{equation}
|
||||
L = \log{\left(p(X)\right)} - KL\left[q(Z)||p(Z|X)\right]
|
||||
|
@ -312,13 +312,13 @@ lower bound of the log probability of observations.
|
|||
\subsection{Gaussian Process Models for Dynamical
|
||||
Systems}\label{sec:gp_dynamical_system}
|
||||
|
||||
In the context of Dynamical Systems Identification and Control, Gaussian
|
||||
Processes are used to represent different model structures, ranging from state
|
||||
space and \acrshort{nfir} structures, to the more complex \acrshort{narx},
|
||||
\acrshort{noe} and \acrshort{narmax}.
|
||||
In the context of Dynamical Systems Identification and Control, \acrshort{gp}s
|
||||
are used to represent different model structures, ranging from state
|
||||
space and \acrfull{nfir} structures, to the more complex \acrfull{narx},
|
||||
\acrfull{noe} and \acrfull{narmax}.
|
||||
|
||||
|
||||
The general form of an \acrfull{narx} model is as follows:
|
||||
The general form of an \acrshort{narx} model is as follows:
|
||||
|
||||
\begin{equation}
|
||||
\hat{y}(k) =
|
||||
|
|
|
@ -378,7 +378,7 @@ The unit has a typical \acrlong{eer} (\acrshort{eer}, cooling efficiency) of 4.9
|
|||
maximum cooling capacity of 64.2 kW.
|
||||
|
||||
One particularity of this \acrshort{hvac} unit is that during summer, only one
|
||||
of the two compressors are running. This results in a higher \acrlong{eer}, in
|
||||
of the two compressors are running. This results in a higher \acrshort{eer}, in
|
||||
the cases where the full cooling capacity is not required.
|
||||
|
||||
\subsubsection*{Ventilation}
|
||||
|
@ -504,7 +504,7 @@ it will oscillate between using one or two compressors. Lastly, it is possible
|
|||
to notice that the \acrshort{hvac} is not turned on during the night, with the
|
||||
exception of the external fan, which continues running.
|
||||
|
||||
\subsubsection{The CARNOT WDB weather data format}\label{sec:CARNOT_WDB}
|
||||
\subsubsection{The CARNOT Weather Data Bus format}\label{sec:CARNOT_WDB}
|
||||
|
||||
For a correct simulation of the building behaviour, CARNOT requires not only the
|
||||
detailed definition of the building blocks/nodes, but also a very detailed set
|
||||
|
@ -514,7 +514,7 @@ sun's position throughout the simulation (zenith and azimuth angles), the
|
|||
as well as information on the ambient temperature, humidity, precipitation,
|
||||
pressure, wind speed and direction, etc. A detailed overview of each
|
||||
measurement necessary for a simulation is given in the CARNOT user
|
||||
manual~\cite{CARNOTManual}.
|
||||
manual~\cite{CARNOTManual}. This data structure is known as the \acrfull{wdb}.
|
||||
|
||||
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
|
||||
|
@ -532,17 +532,19 @@ are computed using the Python pvlib
|
|||
library~\cite{f.holmgrenPvlibPythonPython2018}.
|
||||
|
||||
As opposed to the solar angles, which can be computed exactly from the available
|
||||
information, the Solar Radiation Components (DHI and DNI) have to be estimated
|
||||
from the available measurements of GHI, zenith angles (Z) and datetime
|
||||
information. \textcite{erbsEstimationDiffuseRadiation1982} present an empirical
|
||||
relationship between GHI and the diffuse fraction DF and the ratio of GHI to
|
||||
extraterrestrial irradiance $K_t$, known as the Erbs model. The DF is then used
|
||||
to compute DHI and DNI as follows:
|
||||
information, the Solar Radiation Components (\acrshort{dhi} and \acrshort{dni})
|
||||
have to be estimated from the available measurements of \acrfull{ghi}, zenith
|
||||
angles (Z) and datetime information.
|
||||
\textcite{erbsEstimationDiffuseRadiation1982} present an empirical relationship
|
||||
between \acrshort{ghi} and the \acrfull{df} and the ratio of \acrshort{ghi} to
|
||||
extraterrestrial irradiance $K_t$, known as the Erbs model. The \acrshort{df}
|
||||
is then used to compute \acrshort{dhi} and \acrshort{dni} as follows:
|
||||
|
||||
\begin{equation}
|
||||
\begin{aligned}
|
||||
\text{DHI} &= \text{DF} \times \text{GHI} \\
|
||||
\text{DNI} &= \frac{\text{GHI} - \text{DHI}}{\cos{\text{Z}}}
|
||||
\text{\acrshort{dhi}} &= \text{DF} \times \text{\acrshort{ghi}} \\
|
||||
\text{\acrshort{dni}} &= \frac{\text{\acrshort{ghi}} -
|
||||
\text{\acrshort{dhi}}}{\cos{\text{Z}}}
|
||||
\end{aligned}
|
||||
\end{equation}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ consuming 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
|
||||
project, the \acrlong{gp} model will be trained using the \acrshort{narx}
|
||||
project, the \acrshort{gp} model will be trained using the \acrshort{narx}
|
||||
structure. This already presents an important choice in the selection of
|
||||
regressors and their respective autoregressive lags.
|
||||
|
||||
|
@ -185,7 +185,7 @@ $l_u = 1$ and $l_y = 3$ with $l_w$ taking the values of either 1, 2 or 3,
|
|||
depending on the results of further analysis.
|
||||
|
||||
|
||||
As for the case of the \acrlong{svgp}, the results for the classical
|
||||
As for the case of the \acrshort{svgp}, the results for the classical
|
||||
\acrshort{gp} (cf. Table~\ref{tab:GP_hyperparameters}) are not necessarily
|
||||
representative of the relationships between the regressors of the
|
||||
\acrshort{svgp} model, due to the fact that the dataset used for training is
|
||||
|
@ -259,8 +259,8 @@ This performance metric is very useful when training a model whose goal is
|
|||
solely to minimize the difference between the measured values, and the ones
|
||||
predicted by the model.
|
||||
|
||||
A variant of the \acrshort{mse} is the \acrfull{smse}, which normalizes the
|
||||
\acrlong{mse} by the variance of the output values of the validation dataset.
|
||||
A variant of the \acrfull{mse} is the \acrfull{smse}, which normalizes the
|
||||
\acrshort{mse} by the variance of the output values of the validation dataset.
|
||||
|
||||
\begin{equation}\label{eq:smse}
|
||||
\text{SMSE} = \frac{1}{N}\frac{\sum_{i=1}^N \left(y_i -
|
||||
|
@ -403,7 +403,7 @@ the discrepancies.
|
|||
\subsubsection{Conventional Gaussian Process}
|
||||
|
||||
The simulation performance of the three lag combinations chosen for the
|
||||
classical \acrlong{gp} models has been analyzed, with the results presented in
|
||||
classical \acrshort{gp} models has been analyzed, with the results presented in
|
||||
Figures~\ref{fig:GP_113_multistep_validation},~\ref{fig:GP_213_multistep_validation}
|
||||
and~\ref{fig:GP_313_multistep_validation}. For reference, the one-step ahead
|
||||
predictions for the training and test datasets are presented in
|
||||
|
|
|
@ -41,7 +41,7 @@ buildings based on the rolling 48h average outside temperature.
|
|||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[width = \textwidth]{Images/sia_180_2014.png}
|
||||
\includegraphics[width = \textwidth]{Images/sia_180_2014_en.png}
|
||||
\caption{The SIA 180:2014 norm for residential building
|
||||
temperatures~\cite{sia180:2014ProtectionThermiqueProtection2014}}
|
||||
\label{fig:sia_temperature_norm}
|
||||
|
|
|
@ -48,7 +48,7 @@ the correct amount of data for the weather predictions and to properly generate
|
|||
the optimization problem, the discrete/continuous transition and vice-versa
|
||||
happens on the Simulink side. This simplifies the adjustment of the sampling
|
||||
time, with the downside of harder inclusion of meta-data such as hour of the
|
||||
day, day of the week, etc.\ in the \acrlong{gp} Model.
|
||||
day, day of the week, etc.\ in the \acrshort{gp} Model.
|
||||
|
||||
The weather prediction is done using the information present in the CARNOT
|
||||
\acrshort{wdb} object. Since the sampling time and control horizon of the
|
||||
|
@ -66,13 +66,13 @@ evaluating a \acrshort{gp} has an algorithmic complexity of $\mathcal{O}(n^3)$.
|
|||
This means that naive implementations can get too expensive in terms of
|
||||
computation time very quickly.
|
||||
|
||||
In order to have as smallest of a bottleneck as possible when dealing with
|
||||
\acrshort{gp}s, a very fast implementation of \acrlong{gp} Models was used, in
|
||||
the form of GPflow~\cite{matthewsGPflowGaussianProcess2017}. It is based on
|
||||
TensorFlow~\cite{tensorflow2015-whitepaper}, which has very efficient
|
||||
implementation of all the necessary Linear Algebra operations. Another benefit
|
||||
of this implementation is the very simple use of any additional computational
|
||||
resources, such as a GPU, TPU, etc.
|
||||
In order to have as smallest of a bottleneck as possible when dealing with the
|
||||
required algebraic operations, a very fast implementation of \acrshort{gp}
|
||||
Models was used, in the form of GPflow~\cite{matthewsGPflowGaussianProcess2017}.
|
||||
It is based on TensorFlow~\cite{tensorflow2015-whitepaper}, which has very
|
||||
efficient implementation of all the necessary Linear Algebra operations. Another
|
||||
benefit of this implementation is the very simple use of any additional
|
||||
computational resources, such as a GPU, TPU, etc.
|
||||
|
||||
\subsubsection{Classical Gaussian Process training}
|
||||
|
||||
|
@ -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}).
|
||||
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
|
||||
original \acrlong{ocp} can be rewritten using index notation as:
|
||||
original \acrshort{ocp} can be rewritten using index notation as:
|
||||
|
||||
\begin{subequations}\label{eq:sparse_optimal_control_problem}
|
||||
\begin{align}
|
||||
|
|
|
@ -7,7 +7,7 @@ analyzed in this Section have used a sampling time of 15 minutes and a control
|
|||
horizon of 8 steps.
|
||||
|
||||
Section~\ref{sec:GP_results} analyzes the results of a conventional
|
||||
\acrlong{gp} Model trained on the first five days of gathered data. The model
|
||||
\acrshort{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
|
||||
reference temperature.
|
||||
|
||||
|
@ -131,7 +131,7 @@ performance, but are more complex in implementation.
|
|||
|
||||
\subsection{Sparse and Variational Gaussian Process}\label{sec:SVGP_results}
|
||||
|
||||
The \acrlong{svgp} models are setup in a similar way as described before. The
|
||||
The \acrshort{svgp} models are setup in a similar way as described before. The
|
||||
model is first identified using 5 days worth of experimental data collected
|
||||
using a \acrshort{pi} controller and a random disturbance signal. The difference
|
||||
lies in the fact than the \acrshort{svgp} model gets re-identified every night
|
||||
|
@ -143,7 +143,7 @@ setup performs much better than the initial one. The only large deviations from
|
|||
the reference temperature are due to cold weather, when the \acrshort{hvac}'s
|
||||
limited heat capacity is unable to maintain the proper temperature.
|
||||
Additionnaly, the \acrshort{svgp} controller takes around 250 - 300ms of
|
||||
computation time for each simulation time, decreasing the computational cost of
|
||||
computation time for each simulation step, decreasing the computational cost of
|
||||
the original \acrshort{gp} by a factor of six.
|
||||
|
||||
|
||||
|
@ -293,7 +293,7 @@ As seen in Figure~\ref{fig:SVGP_evol_importance}, the variance of the
|
|||
signifies the increase in confidence of the model. The hyperparameters
|
||||
corresponding to the exogenous inputs --- $w1,1$ and $w1,2$ --- become generally
|
||||
less important for future predictions over the course of the year, with the
|
||||
importance of $w1,1$, the \acrlong{ghi}, climbing back up over the last, colder
|
||||
importance of $w1,1$, the \acrshort{ghi}, climbing back up over the last, colder
|
||||
months. This might be due to the fact that during the colder months, the
|
||||
\acrshort{ghi} is the only way for the exogenous inputs to \textit{provide}
|
||||
additional heat to the system.
|
||||
|
@ -361,7 +361,7 @@ simulation data (cf. Figures~\ref{fig:SVGP_96pts_fullyear_simulation}
|
|||
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
|
||||
highlights one of the practical benefits of the \acrshort{svgp} implementations
|
||||
compared to the classical \acrlong{gp} -- it is possible to start with a rougher
|
||||
compared to the classical \acrshort{gp} -- it is possible to start with a rougher
|
||||
controller trained on less data and refine it over time, reducing the need for
|
||||
cumbersome and potentially costly initial experiments for gathering data.
|
||||
|
||||
|
@ -473,7 +473,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
|
||||
different regions of the state space and more data is collected.
|
||||
|
||||
However, these results do not discredit the use of \acrlong{gp} for employment
|
||||
However, these results do not discredit the use of \acrshort{gp} for employment
|
||||
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
|
||||
\acrshort{svgp} models. The bad initial performance could be mitigated by
|
||||
|
|
|
@ -62,7 +62,7 @@ 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
|
||||
Focusing on the \acrshort{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.
|
||||
|
|
|
@ -100,10 +100,11 @@ Model Predictive Control of Buildings}
|
|||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancy}
|
||||
\setlength\headheight{35pt}
|
||||
\setlength\footskip{13.6pt}
|
||||
\setlength\footskip{27pt}
|
||||
\fancyhf{Inter-seasonal GP MPC control for buildings}
|
||||
\rhead{\includegraphics[width=2cm]{Logo-EPFL.png}}
|
||||
\lhead{}
|
||||
%\renewcommand{\footrulewidth}{0.1pt}
|
||||
\cfoot{\thepage}
|
||||
|
||||
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue