Master-Thesis/70_Implementation.tex
2021-06-21 13:18:53 +02:00

65 lines
2.2 KiB
TeX

\section{Implementation}
\begin{figure}[ht]
\centering
\includegraphics[width = 0.5\textwidth]{Images/setup_diagram.pdf}
\caption{Block diagram of the Simulink plant and Python Controller}
\label{fig:setup_diagram}
\end{figure}
% TODO: [Implementation] Reference implementation details for CARNOT and WDB
\subsection{Gaussian Processes}
% TODO: [Implementation] Cite Tensorflow
% TODO: [Implementation] Cite GPflow
\subsection{Classical Gaussian Process training}
\subsection{Sparse and Variational Gaussian Process training}
\subsection{Optimal Control Problem}
\subsubsection{Sparse Implementation of the Optimization Problem}
The optimization problem as presented in
Equation~\ref{eq:optimal_control_problem} becomes very nonlinear quite fast. In
fact, due to the autoregressive structure of the \acrshort{gp}, the predicted
temperature at time t is passed as an input to the model at time $t+1$. A simple
recursive implementation of the Optimization Problem becomes untractable after
only 3 --- 4 prediction steps.
In order to solve this problem, a new OCP is introduced. It has a much sparser
structure, in exchange for a larger number of variables. This turns out to be
much faster to solve than the original problem.
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}).
\begin{subequations}\label{eq:sparse_optimal_control_problem}
\begin{align}
& \text{minimize}
& & \sum_{i=2}^{N + 1} \left(X[i, w_l + u_l + 1] - y_{ref, t}\right)^2 \\
& \text{subject to}
& & X[i+1, w_l + u_l + 1] = K_*K^{-1}X[i, :] \quad \text{for} \quad
i\in[1, N]\\
&&& X[i, w_l + u_l + 2: ] = X[i, w_l+ u_l + 1: w_l + u_l + y_l - 1]\\
&&& X[i, 1:w_l] = W[i, :] \\
&&& X[i+1, w_l + 2: w_l + u_l] = X[i, w_l + 1: w_l + u_l - 1] \\
&&& X[:, w_l + 1] \in \mathcal{U}
\end{align}
\end{subequations}
where X is the matrix of all the system states and W is the matrix of the
disturbances.
\subsubsection{RENAME: Python implementation of the control problem}
% TODO: [Implementation] Cite CasADi
% TODO: [Implementation] Cite HSL solvers for using MA27
\subsection{Python server and controller objects}
\clearpage