diff --git a/.gitattributes b/.gitattributes index c7d9f3332a950355d5a77d85000f05e6f45435ea..eebd77520ed1905e4c453305db8ae4cf1aa3bbd4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -32,3 +32,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..98fa7bfca091c1b63aee58bd326474a7ebece152 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +_book/ +.quarto/ +.vscode/ +_extensions/ +/.quarto/ +_.site/ + +/.luarc.json +*.pdf +*.svg +*.npz \ No newline at end of file diff --git a/Code/Visuals/Plotly/plt_0.py b/Code/Visuals/Plotly/plt_0.py new file mode 100644 index 0000000000000000000000000000000000000000..b524520749b93edd0e8defeae72aa0b5a8179d24 --- /dev/null +++ b/Code/Visuals/Plotly/plt_0.py @@ -0,0 +1,47 @@ +import plotly.graph_objects as go +import numpy as np + +# Helix equation +t = np.linspace(0, 10, 50) +x, y, z = np.cos(t), np.sin(t), t + +fig = go.Figure(data=[go.Scatter3d(x=x, y=y, z=z, + mode='markers')]) + +fig.update_layout( + title= "title", + title_x=0.5, + + # plotlyexpress 3d axes: + scene = dict( + xaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False,), + yaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False,), + zaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False, + ), + ), + template= 'plotly_dark' + # template= 'plotly' + ) + +fig.write_html("./test.html", + div_id= "plt_Div", + include_plotlyjs = "cdn") + +div_Rep = fig.to_html(div_id= "plt_Div", + include_plotlyjs = "cdn") +print("debug-stop") \ No newline at end of file diff --git a/Code/Visuals/Plotly/plt_1.py b/Code/Visuals/Plotly/plt_1.py new file mode 100644 index 0000000000000000000000000000000000000000..6a88ff3bb7ef7d11487713a3c8e18c3ab68efb0f --- /dev/null +++ b/Code/Visuals/Plotly/plt_1.py @@ -0,0 +1,106 @@ +import numpy as np +import plotly.io as pio +pio.renderers.default = "plotly_mimetype+notebook_connected" + +import plotly.graph_objects as go # to combine figures + +# load data from the numpy npz file +data = np.load('Data/6_Html_Data/0_Viz/plt_Dat_16.78.npz') + +# extraxt the data - load it +x_Traj = data["x"] +y_Traj = data["y"] +z_Traj = data["z"] +x_Cone = data["x_Cone"] +y_Cone = data["y_Cone"] +z_Cone = data["z_Cone"] +u_Cone = data["u_Cone"] +v_Cone = data["v_Cone"] +w_Cone = data["w_Cone"] + +# The trajectory +fig = go.Figure(data=[go.Scatter3d( + x= x_Traj, + y= y_Traj, + z= z_Traj, + name = "Trajectory", + showlegend = False, + )]) + + +fig.update_traces(marker_size = 2, + mode = "lines", + marker_color ="green") + + +# Cones +fig_Cones = go.Figure(data=go.Cone( x = x_Cone , + y = y_Cone , + z = z_Cone , + u = u_Cone , + v = v_Cone , + w = w_Cone , + name = "Direction", + showlegend = False, + + ) + ) + + +# hiding color-bar +fig_Cones.update_traces(showscale=False) + +# combine cone and trajectory +fig.add_traces(data = fig_Cones.data) + + +# style the figure +fig.update_layout( + # plotlyexpress 3d axes: + scene = dict( + xaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False,), + yaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False,), + zaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False, + ), + ), + # template= 'plotly_dark' + # template= 'plotly' + paper_bgcolor='rgba(0,0,0,0)', + plot_bgcolor='rgba(0,0,0,0)', + modebar = dict(bgcolor='rgba(0, 0, 0, 0)'), + margin=dict( + l=0, + r=0, + b=0, + t=0, + pad=0 + ), + + scene_camera_eye=dict(x=1, + y=0, + z=0), +) + + +fig.write_html("./tornado.html", + div_id= "plt_Div", + include_plotlyjs = "cdn") + +fig.write_image("Data/6_Html_Data/1_Logo_Img/2_Tornado.svg") + +print("test") \ No newline at end of file diff --git a/Code/file_Extensions.py b/Code/file_Extensions.py new file mode 100644 index 0000000000000000000000000000000000000000..0122280aee9db8d344b76762a017e88d00f303e4 --- /dev/null +++ b/Code/file_Extensions.py @@ -0,0 +1,16 @@ +''' +convert all .tex extions to .md +''' + +from pathlib import Path + +cwd = Path.cwd(); + + +writ_Fold = cwd/"Data/1_Writing" + +for iF,ct_File in enumerate(Path(writ_Fold).rglob('*.md')): + # print(ct_File.name) + + # convert all .tex extions to .md + ct_File.rename(ct_File.with_suffix('.qmd')) \ No newline at end of file diff --git a/Code/gls/gls_Main.lua b/Code/gls/gls_Main.lua new file mode 100644 index 0000000000000000000000000000000000000000..4c17494eccbffdb78938f53d50068f5a433c7d27 --- /dev/null +++ b/Code/gls/gls_Main.lua @@ -0,0 +1,229 @@ +-------------------------------------------------------------------------- -- +-- Does work searches for Hello and replaces it with foundyou +-- function Para(elem) +-- for i, item in ipairs(elem.content) do +-- if item.text == "Hello" then +-- elem.content[i].text = "foundyou" +-- end +-- end +-- return elem +-- end + +-- ------------------------- read the header content ------------------------ -- +-- Define the filter function +local function headerfilter(elem) + if elem.t == 'Header' then + local text = pandoc.utils.stringify(elem.content) + io.write('\27[32mCurrent header:', text ,'\n--------\27[0m\n') + end + return elem +end + +-- Define the filter function +local function glsfilter_1(elem) + if elem.t == 'Para' then + -- local text = pandoc.utils.stringify(elem) + local text = elem.text + + local pattern = '\\gls' + local match = text:match(pattern) + if match then + print("\27[32mMatch found:", match, '\27[0m\n') + + print(text, '\n--------\n') + + local link = pandoc.Link(match, '#' .. match) + -- return pandoc.Para{link} + return "replaced" + else + print("\27[31mNo match found\27[0m\n") + print(text, '\n--------\n') + end + end + return elem + end + +gls_Dict = { + ode = {"Ordinary Differential Equation", + "ODE"}, + + cnm = { "Cluster-based Network Modeling", + "CNM"}, + + cnmc = {"control-oriented Cluster-based Network Modeling", + "CNMc"}, + + cmm = { "Cluster Markov-based Modeling", + "CMM"}, + + cfd = {"Computational Fluid Dynamics", + "CFD"}, + + rans = {"Reynolds Averaged Navier Stockes", + "RANS"}, + + dlr = {"German Aerospace Center", + "DLR"}, + + gpu = {"Graphics Processing Unit", + "GPU"}, + + cpu = {"Computer Processing Unit", + "CPU"}, + + sdic = {"Sensitive Dependence on Initial Conditions", + "SDIC"}, + + nmf = {"Non-negative Matrix Factorization", + "NMF"}, + + svd = {"Singular Value Decomposition", + "SVD"}, + + rf = {"Random Forest", + "RF"}, + + cpd = {"Cluster Probability Distribution", + "CPD"}, + + cpevol = {"Centroid Position Evolution", + "CPE"}, + + dtw = {"Dynamical Time Warping", + "DTW"}, + + knn = {"KNearest Neighbor", + "KNN"}, +} + + +-- -------------------------------------------------------------------------- -- + local function headerfilter(elem) + if elem.t == 'Header' then + local text = pandoc.utils.stringify(elem.content) + io.write('\27[32mCurrent header:', text ,'\n--------\27[0m\n') + end + return elem + end + + +-- Define the filter function +local function glsfilter(elem) + if elem.t == 'Para' then + local has_match = false + -- Traverse the element tree and replace matched elements + local new_content = {} + for _, item in ipairs(elem.content) do + + -- -------------------------------- gls ------------------------------- -- + if item.t == 'RawInline' then + local gls_Pat = '\\gls{(%w+)}' + local gls_First_Pat = '\\glsfirst{(%w+)}' + local gls_Pl_Pat = '\\glspl{(%w+)}' + + local text = item.text + + -- will only show the latex \command{} content + -- print("current line is: ", text) + + -- was tested with: + -- jav test: \gls{rans} \gls{gpu} \gls{rans} \gls{cfd} \gls{cfd} + -- it does replace each occurence correcly + + local gls_Match = string.match(text,gls_Pat) + local gls_First_Match = string.match(text,gls_First_Pat) + local gls_Pl_Match = string.match(text,gls_Pl_Pat) + + if gls_Match then + + has_match = true + long_Term = gls_Dict[gls_Match][1] + bold_Abbrev = gls_Dict[gls_Match][2] + + -- to make sure that the code is understood as valid html code it must be converted to RawInline with the html input + html_String = pandoc.RawInline('html',long_Term) + + span_Var = pandoc.Span(html_String, + {class = 'gls_Content'}) + + -- print("span_Var: ",span_Var) + -- see: https://pandoc.org/lua-filters.html#pandoc.link + local link = pandoc.Link( + {bold_Abbrev,span_Var}, + '../0_Deco/3_Used_Abbrev.qmd'..'#' .. gls_Match, + nil, + -- add id and class + {id = gls_Match.. "gls", class = 'gls'}) + + table.insert(new_content, link) + end + + -- ------------------------ gls_First_Match ----------------------- -- + if gls_First_Match then + has_match = true + -- to make sure that the code is understood as valid html code it must be converted to RawInline with the html input + long_Term = gls_Dict[gls_First_Match][1] + bold_Abbrev = gls_Dict[gls_First_Match][2] + + -- to make sure that the code is understood as valid html code it must be converted to RawInline with the html input + html_String = pandoc.RawInline('html',long_Term.. " (".. bold_Abbrev .. ")") + + local link = pandoc.Link( + html_String , + '../0_Deco/3_Used_Abbrev.qmd'..'#' .. gls_First_Match, + nil, + -- add id and class + {id = gls_First_Match.. "gls", class = 'gls'}) + + table.insert(new_content, link) + end + + -- ------------------------- gls_Pl_Match ------------------------- -- + if gls_Pl_Match then + has_match = true + long_Term = gls_Dict[gls_Pl_Match][1] + bold_Abbrev = gls_Dict[gls_Pl_Match][2] + + -- to make sure that the code is understood as valid html code it must be converted to RawInline with the html input + html_String = pandoc.RawInline('html',long_Term .. "s") + + span_Var = pandoc.Span(html_String, + {class = 'gls_Content'}) + + -- see: https://pandoc.org/lua-filters.html#pandoc.link + local link = pandoc.Link( + {bold_Abbrev .. "s",span_Var}, + '../0_Deco/3_Used_Abbrev.qmd'..'#' .. gls_Pl_Match, + nil, + -- add id and class + {id = gls_Pl_Match.. "gls", class = 'gls'}) + + table.insert(new_content, link) + + else + -- Print non-matching text in red + -- io.write('\27[31mNo match found: ' .. text .. '\27[0m\n') + table.insert(new_content, item) + end + else + table.insert(new_content, item) + end + end + -- If no matches were found, return the original element + if not has_match then + + -- print("No match found and return simply the regular element") + return elem + end + + return pandoc.Para(new_content) + end + return elem +end + + +-- Export the filter function as a table +return { + {Header = headerfilter}, + {Para = glsfilter} +} diff --git a/Code/math_Dollar_White_Space.py b/Code/math_Dollar_White_Space.py new file mode 100644 index 0000000000000000000000000000000000000000..23a3c4e288ac6939e2bf10e3678969e39eeb3819 --- /dev/null +++ b/Code/math_Dollar_White_Space.py @@ -0,0 +1,51 @@ +''' + +the issue is about $ here comes somezhting eq1 termsi whitespace $ +the whitespace must be removed for proper displaying + +go through all qdms files and find the white spaces at the beginning and +at the end +''' + +import pathlib +import re + +# get current working directory +cwd = pathlib.Path().cwd() + +# define output path +inp_Fold = cwd / "Data/1_Writing/" + + +# pat = r"\\$[^\\$]+\\$" +pat = r"\$[^\$]+\$" +pat_Start = r"(\s)\$" +pat_End = r"\$(\s)" + +found_And_Replace= {} + +# recursively looking into all folders --> subfolders are looked into as well +for iF,ct_File in enumerate(inp_Fold.rglob('*.qmd')): + # print(ct_File.name) + + file_Content = [] + with open(str(ct_File),"r") as file: + file_Content = file.readlines() + + for il, line in enumerate(file_Content): + results = re.findall(pat, line) + + # found all simmilar to ['$\\beta_i$'] --> make sure that start and end with empty space are both covered + for je, elem in enumerate(results): + + # start with empty space + res_Start = re.findall(pat_Start, elem) + res_End = re.findall(pat_End, elem) + + if len(res_Start) > 0 or len(res_End): + # print(f"found results in file: {ct_File}") + print(f"elem: {elem}") + + + +print("done") \ No newline at end of file diff --git a/Data/0_Latex_True/0_Deco/0_Frontpage.tex b/Data/0_Latex_True/0_Deco/0_Frontpage.tex new file mode 100644 index 0000000000000000000000000000000000000000..96ba805f3370d9ed1c56653d928f47aa713eeec6 --- /dev/null +++ b/Data/0_Latex_True/0_Deco/0_Frontpage.tex @@ -0,0 +1,81 @@ + + % \includegraphics[width=0.42\textwidth]{./2_Figures/TUBraunschweig_4C.pdf} & + + \begin{center} + \begin{tabular}{p{\textwidth}} + + \begin{minipage}{\textwidth} + % \centering + \includegraphics[width=0.4\textwidth]{./2_Figures/TUBraunschweig_4C.pdf} + \end{minipage} + % \begin{minipage}{0.5\textwidth} + % \centering + % \includegraphics[width=0.5\textwidth]{./2_Figures/0_Deco/dlr_Logo.jpeg} + % \end{minipage} + + + \vspace{1cm} + + \\ + + \begin{center} + \large{\textsc{ + Master thesis number: 486\\ + }} + \end{center} + + \begin{center} + \LARGE{\textsc{ + Flow predictions using control-oriented cluster-based network modeling\\ + }} + \end{center} + + \\ + + + \begin{center} + \large{Technische Universität Braunschweig \\ + Institute of Fluid Mechanics + } + \end{center} + + + \begin{center} + \textbf{\Large{Master Thesis}} + \end{center} + + + \begin{center} + written by + \end{center} + + \begin{center} + \large{\textbf{Javed Arshad Butt}} \\ + + \large{5027847} \\ + \end{center} + + \begin{center} + \large{born on 20.05.1996 in Gujrat} + \end{center} + + \vspace{3cm} + \begin{center} + \begin{tabular}{lll} + \textbf{Submission date:} & & 29.04.2022\\ + \textbf{Supervisor :} & & Dr. Richard Semaan \\ + \textbf{Examiner :} & & Prof. Dr.-Ing. R. Radespiel\\ + + + \end{tabular} + \end{center} + + \end{tabular} + \end{center} + %Damit die erste Seite = Deckblatt nicht nummeriert wird. + \thispagestyle{empty} + + + + + \ No newline at end of file diff --git a/Data/0_Latex_True/0_Deco/10_Appendix.tex b/Data/0_Latex_True/0_Deco/10_Appendix.tex new file mode 100644 index 0000000000000000000000000000000000000000..d891c42a0b541e8e9dd04970a942f7c09658b3c8 --- /dev/null +++ b/Data/0_Latex_True/0_Deco/10_Appendix.tex @@ -0,0 +1,216 @@ +\appendix +\chapter{Further implemented dynamical systems} +\label{ch_Ap_Dyna} +\begin{enumerate} + \item \textbf{Chen} \cite{Chen1999}: + \begin{equation} + \label{eq_8_Chen} + \begin{aligned} + \dot x &= a\, (y - x) \\ + \dot y &= x \,(\beta - a) - xz + \beta y \\ + \dot z &= x y -b z + \end{aligned} + \end{equation} + + \item \textbf{Lu} \cite{Lu2002}: + \begin{equation} + \label{eq_9_Lu} + \begin{aligned} + \dot x &= a \, (y -x) \\ + \dot y &= \beta y -x z \\ + \dot z &= x y - b z + \end{aligned} + \end{equation} + + \item \textbf{Van der Pol} \cite{VanderPol}: + \begin{equation} + \label{eq_14_VDP} + \begin{aligned} + \dot x &= y \\ + \dot y &= y \beta\,(1-x^2) -x + \end{aligned} + \end{equation} + +\end{enumerate} + +\chapter{Some basics about chaotic systems} +\label{ch_Ap_Chaotic} +Since +Chaotic systems are the height +of intricacy when considering dynamical systems. +The reason why the term intricacy was chosen +instead of complexity is that chaotic systems can be, but are not necessarily +complex. For the relation between complex and +chaotic the reader is referred to \cite{Rickles2007}. +The mentioned intricacy of chaotic systems shall be explained by +reviewing two reasons. First, +chaotic systems are sensitive to their initial conditions. +To understand this, imagine we want to solve an \gls{ode}. In order to solve any +differential +equation, the initial condition or starting state must be known. Meaning, that the +solution to the \gls{ode} at the very first initial step, from where the +remaining interval is solved, must be identified beforehand. +One might believe, a starting point, which is not guessed unreasonably off, +should suffice to infer the system's future dynamics.\newline + +This is +an educated attempt, however, it is not true for systems that exhibit +sensitivity to initial conditions. These systems amplify any +perturbation or deviation exponentially +as time increases. From this it can be concluded +that even in case the initial value would be accurate to, e.g., 10 decimal places, +still after some time, the outcome can not be trusted anymore. +Visually +this can be comprehended by thinking of initial conditions +as locations in space. Let us picture two points with two initial conditions +that are selected to be next to each other. Only by zooming in multiple times, +a small spatial deviation should be perceivable. +As the time changes, the points will leave the location defined through the initial condition. \newline + + +With +chaotic systems in mind, both initially neighboring +points will diverge exponentially fast from each other. +As a consequence of the initial condition not being +known with infinite precision, the initial microscopic +errors become macroscopic with increasing time. Microscopic mistakes +might be considered to be imperceptible and thus have no impact +on the outcome, which would be worth to be mentioned. +Macroscopic mistakes on the other hand are visible. Depending on +accuracy demands solutions might be or might not be accepted. +However, as time continues further, the results eventually +will become completely unusable and diverge from the actual output on a macroscopic scale.\newline + + +The second reason, why chaotic systems are very difficult +to cope with, is the lack of a clear definition. It can be +argued that even visually, it is not always possible to +unambiguously identify a chaotic system. The idea +is that at some time step, a chaotic system appears to +be evolving randomly over time. The question then arises, +how is someone supposed to distinguish between something which +is indeed evolving randomly and something which only appears +to be random. The follow-up question most likely is going to be, +what is the difference between chaos and randomness, or +even if there is a difference. \newline + +Maybe randomness itself is only +a lack of knowledge, e.g., the movement of gas particles +can be considered to be chaotic or random. If the +velocity and spatial position of each molecule are +trackable, the concept of temperature is made +redundant. Gibbs only invented the concept of temperature +in order to be able to make some qualitative statements +about a system \cite{Argyris2017}. +A system that can not be described microscopically. +Here the question arises if the movement of the molecules +would be random, how is it possible that every time +some amount of heat is introduced into a system, the temperature +changes in one direction. If a random microscale system +always tends to go in one direction within a macroscale view, +a clear definition of randomness is required. \newline + +Laplace once said if the initial condition +(space and velocity) of each atom would be known, +the entire future +could be calculated. In other words, if a system is +build on equations, which is a deterministic way +to describe an event, the outcome should just +depend on the values of the variables. +Thus, the future, for as long as it is desired could be predicted +or computed exactly. To briefly summarize this conversion, +Albert Einstein once remarked that God would not play dice. Nils +Bohr replied that it +would be presumptuous of us human beings to prescribe to the Almighty +how he is to take his decisions. A more in-depth introduction to +this subject is provided by \cite{Argyris2017}. +Nevertheless, by doing literature research, one way to +visually distinguish between +randomness and chaos was found \cite{Boeing2016}. +Yet, in \cite{Boeing2016} the method was only +deployed on a logistic map. Hence, further research +is required here. \newline + +As explained, a clear definition of chaos does not exist. +However, some parts of definitions do occur regularly, e.g., +the already mentioned \glsfirst{sdic}. Other definition parts are the following: Chaotic +motion is \textbf{aperiodic} and based on a \textbf{deterministic} system. +An aperiodic system is not repeating any +previous \textbf{trajectory} and a deterministic system is +described by governing equations. A trajectory is the evolution +of a dynamical system over time. For instance, a dynamical system +consisting of 3 variables is denoted as a 3-dimensional dynamical system. +Each of the variables has its own representation axis. +Assuming these +3 variables capture space, motion in the x-,y- and z-direction +is possible. For each point in a defined time range, there is one set of x, y and z values, which fully describes the output of the dynamical system or the position at a chosen time point. +Simply put, the trajectory is the movement +or change of the variables of the differential equation over time. Usually, the +trajectory is displayed in the phase space, i.e., the axis represents the state or values of the variables of a dynamical system. An example can be observed in section \ref{subsec_1_1_3_first_CNMc}. \newline + + +One misconception which is often believed \cite{Taylor2010} +and found, e.g., in +Wikipedia \cite{Wiki_Chaos} is that +strange attractors would only appear as a consequence of +chaos. Yet, Grebogi et al. \cite{Grebogi1984} proved +otherwise. According to +\cite{Boeing2016,Taylor2010} strange attractors exhibit +self-similarity. This can be understood visually by imaging any shape +of a trajectory. Now by zooming in or out, the exact same shape +is found again. The amount of zooming in or out and consequently +changing the view scale, will not change the perceived +shape of the trajectory. Self-similarity happens to be +one of the fundamental properties of a geometry +in order to be called a fractal \cite{Taylor2010}. +In case one believes, +strange attractors would always be chaotic and knows that by definition strange attractors phase +space is self-similar, then +something further misleading is concluded. +Namely, if a geometry is turned out not only +to be self-similar but also to be a fractal, this +would demand interpreting every fractal to be +chaotic. \newline + +To refute this, consider the Gophy +attractor \cite{Grebogi1984}. +It exhibits the described self-similarity, +moreover, it is a fractal, and it is also a +strange attractor. However, the Gophy +attractor is not chaotic. The reason is found, when +calculating the Lyapunov exponent, which is negative +\cite{Taylor2010}. Latter tells us that two neighboring +trajectories are not separating exponentially fast +from each other. Thus, it does not obey the +sensitive dependence +of initial conditions requirement and is +regarded to be non-chaotic. The key messages are +that a chaotic attractor surely is a strange +attractor and a strange attractor is not necessarily +chaotic. A strange attractor refers to a fractal +geometry in which chaotic behavior may +or may not exist \cite{Taylor2010}. +Having acquired the knowledge that strange attractors +can occur in chaotic systems and form a fractal, +one might infer another question. If a chaotic +strange attractor always generates a geometry, which +stays constant when scaled, can chaos be +regarded to be random?\newline + + +This question will not be discussed in detail here, but for the sake of completeness, the 3 known types of nonstrange attractors +shall be mentioned. These are +the fixed point attractor, the limit cycle attractor, and the +torus attractor \cite{Taylor2010}. +A fixed point attractor is one point in the phase space, which attracts or pulls nearby trajectories to itself. +Inside the fix-point attractor, there is no motion, meaning +the derivative of the differential equation is zero. +In simpler words, +once the trajectory runs into a fix-point, the trajectory ends there. +This is because no change over time can be found here. +A limit cycle can be expressed as an endlessly repeating loop, e.g. in the shape of a circle. +The trajectory can start at +any given initial condition, still, it can go through a place in the phase space, from where the trajectory is continued as an infinitely +repeating loop. +For a visualization of the latter and the tours, as well more +detail the reader is referred to \cite{Argyris2017, Kutz2022, Strogatz2019, Taylor2010}. \ No newline at end of file diff --git a/Data/0_Latex_True/0_Deco/1_erkl.tex b/Data/0_Latex_True/0_Deco/1_erkl.tex new file mode 100644 index 0000000000000000000000000000000000000000..8224125b4cafe5cf685e012f0f91501d7a2d9c23 --- /dev/null +++ b/Data/0_Latex_True/0_Deco/1_erkl.tex @@ -0,0 +1,23 @@ + + +\chapter*{Declaration of independent authorship} + +I hereby declare that the present work, the master thesis, is solely and independently done by myself in all aspects, such as developments, code implementations, and writing of the thesis. +In addition, I confirm that I did not use any tools, materials or sources other than those explicitly specified.\newline \break + +\vspace{1cm} +\noindent Full name: Javed Arshad Butt \newline \break +\noindent Date and place: 29.04.2022, Braunschweig\newline \break + +\vspace{1cm} +\noindent Signature: + +\begin{figure}[!h] + \centering + \includegraphics[width =0.2\textwidth] + % In order to insert an eps file - Only_File_Name (Without file extension) + {2_Figures/0_Deco/signature_1.jpg} + % \caption{Adapted coordinates by using cosine function and initial CST modes} + \label{fig_0_signature} +\end{figure} + diff --git a/Data/0_Latex_True/0_Deco/2_1_Abstract.tex b/Data/0_Latex_True/0_Deco/2_1_Abstract.tex new file mode 100644 index 0000000000000000000000000000000000000000..a8a31f11a2257dda60ec7d0751790a7c37a54929 --- /dev/null +++ b/Data/0_Latex_True/0_Deco/2_1_Abstract.tex @@ -0,0 +1,16 @@ +\chapter*{Abstract} +In this master thesis, a data-driven modeling technique is proposed. +It enables making predictions for general dynamic systems for unknown model parameter values or operating conditions. +The tool is denoted as \gls{cnmc}. +The most recent developed version delivered promising results for the chaotic Lorenz system \cite{lorenz1963deterministic}. +Since, the earlier work was restricted to the application of only one dynamical system, with this contribution the first major improvement was to allow \gls{cnmc} to be utilized for any general dynamical system. +For this, \gls{cnmc} was written from scratch in a modular manner. +The limitation of the number of the dimension and the shape of the trajectory of the dynamical systems are removed. +Adding a new dynamic system was designed such that it should be as straightforward as possible. +To affirm this point, 10 dynamic systems, most of which are chaotic systems, are included by default. +To be able to run \gls{cnmc} on arbitrary dynamic systems in an automated way, a parameter study for the modal decomposition method \gls{nmf} was implemented. +However, since a single \gls{nmf} solution took up to hours, a second option was added, i.e., \gls{svd}. +With \gls{svd} the most time-consuming task could be brought to a level of seconds. +The improvements introduced, allow \gls{cnmc} to be executed on a general dynamic system on a normal computer in a reasonable time. +Furthermore, \gls{cnmc} comes with its integrated post-processor in form of HTML files to inspect the generated plots in detail. +All the parameters used in \gls{cnmc} some additional beneficial features can be controlled via one settings file. diff --git a/Data/0_Latex_True/0_Deco/2_Thanks.tex b/Data/0_Latex_True/0_Deco/2_Thanks.tex new file mode 100644 index 0000000000000000000000000000000000000000..e93682ee544da54d9471932be24aec7ce72b04e5 --- /dev/null +++ b/Data/0_Latex_True/0_Deco/2_Thanks.tex @@ -0,0 +1,10 @@ + +\chapter*{Acknowledgments} + +All praise and thanks to the \textbf{ONE}, Who does neither need my praise nor my thanks. +To the \textbf{ONE}, Who is independent of everything and everyone, but on Whom everything and everyone depends. + +\vspace{1cm} +Thank you, Dr. Semaan - you provided me with the possibility to work on such a compelling and challenging topic. Even though the difficult tasks were not always pleasant, I very much appreciate the opportunity to have worked on these captivating tasks. +Thank you for the time and effort you invested in this work. +Also, thank you for the weekly English exercises and for explaining to me how to pronounce methodology correctly :D diff --git a/Data/0_Latex_True/0_Deco/3_Used_Abbrev.log b/Data/0_Latex_True/0_Deco/3_Used_Abbrev.log new file mode 100644 index 0000000000000000000000000000000000000000..7819952beb164666c0791ea244187fcefa0e5d13 --- /dev/null +++ b/Data/0_Latex_True/0_Deco/3_Used_Abbrev.log @@ -0,0 +1,326 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.21) 25 APR 2022 13:20 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev +(/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:9: Undefined control sequence. +l.9 \DeclareAcronym + {usa}{ +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:9: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.9 \DeclareAcronym{u + sa}{ +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no A in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no d in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no A in font nullfont! +Missing character: There is no m in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:13: Undefined control sequence. +l.13 \DeclareAcronym + {eu}{ +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no e in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no E in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no E in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no p in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:17: Undefined control sequence. +l.17 \DeclareAcronym + {ussr}{ +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no R in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no v in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no R in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no p in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no b in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no , in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 9--21 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:23: Undefined control sequence. +l.23 \ac + {usa}, \ac{usa} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:23: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.23 \ac{u + sa}, \ac{usa} +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:23: Undefined control sequence. +l.23 \ac{usa}, \ac + {usa} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no a in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 23--24 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:25: Undefined control sequence. +l.25 \ac + {eu}, \ac{eu} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:25: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.25 \ac{e + u}, \ac{eu} +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no e in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:25: Undefined control sequence. +l.25 \ac{eu}, \ac + {eu} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no e in font nullfont! +Missing character: There is no u in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 25--26 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:27: Undefined control sequence. +l.27 \ac + {ussr}, \ac{ussr} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:27: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.27 \ac{u + ssr}, \ac{ussr} +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:27: Undefined control sequence. +l.27 \ac{ussr}, \ac + {ussr} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no r in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 27--28 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:29: Undefined control sequence. +l.29 \printacronyms + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +) +! Emergency stop. +<*> ..._Writing/1_Latex_Files/0_Deco/3_Used_Abbrev + +*** (job aborted, no legal \end found) + + +Here is how much of TeX's memory you used: + 17 strings out of 481239 + 639 string characters out of 5920376 + 236564 words of memory out of 5000000 + 15384 multiletter control sequences out of 15000+600000 + 532338 words of font info for 24 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 12i,0n,15p,161b,16s stack positions out of 5000i,500n,10000p,200000b,80000s +! ==> Fatal error occurred, no output PDF file produced! diff --git a/Data/0_Latex_True/0_Deco/3_Used_Abbrev.tex b/Data/0_Latex_True/0_Deco/3_Used_Abbrev.tex new file mode 100644 index 0000000000000000000000000000000000000000..abf9e11f86a6434e2917779f3db945c41ffb346f --- /dev/null +++ b/Data/0_Latex_True/0_Deco/3_Used_Abbrev.tex @@ -0,0 +1,36 @@ +% abbreviations: +\newacronym{ode}{ODE}{\glstextformat{\textbf{O}}rdinary \glstextformat{\textbf{D}}ifferential \glstextformat{\textbf{E}}quation} + +\newacronym{cnm}{CNM}{\glstextformat{\textbf{C}}luster-based \glstextformat{\textbf{N}}etwork \glstextformat{\textbf{M}}odeling} + +\newacronym{cnmc}{\glstextformat{\emph{CNMc}}}{\glstextformat{\textbf{c}}ontrol-oriented \glstextformat{\textbf{C}}luster-based \glstextformat{\textbf{N}}etwork \glstextformat{\textbf{M}}odeling} + +\newacronym[]{cmm}{CMM}{\glstextformat{\textbf{C}}luster \glstextformat{\textbf{M}}arkov-based \glstextformat{\textbf{M}}odeling} + +\newacronym{cfd}{CFD}{\glstextformat{\textbf{C}}omputational \glstextformat{\textbf{F}}luid \glstextformat{\textbf{D}}ynamics} + +\newacronym{rans}{RANS}{\glstextformat{\textbf{R}}eynolds \glstextformat{\textbf{A}}veraged \glstextformat{\textbf{N}}avier \glstextformat{\textbf{S}}tockes} + +\newacronym{dlr}{DLR}{German Aerospace Center} + +\newacronym{gpu}{GPU}{\glstextformat{\textbf{G}}raphics \glstextformat{\textbf{P}}rocessing \glstextformat{\textbf{U}}nit} + +\newacronym{cpu}{CPU}{\glstextformat{\textbf{C}}omputer \glstextformat{\textbf{P}}rocessing \glstextformat{\textbf{U}}nit} + +\newacronym[]{sdic}{SDIC}{\glstextformat{\textbf{S}}ensitive \glstextformat{\textbf{D}}ependence on \glstextformat{\textbf{I}}nitial \glstextformat{\textbf{C}}onditions} + +\newacronym[]{nmf}{NMF}{\glstextformat{\textbf{N}}on-negative \glstextformat{\textbf{M}}atrix \glstextformat{\textbf{F}}actorization} + +\newacronym[]{svd}{SVD}{\glstextformat{\textbf{S}}ingular \glstextformat{\textbf{V}}alue \glstextformat{\textbf{D}}ecomposition} + +\newacronym[]{rf}{RF}{\glstextformat{\textbf{R}}andom \glstextformat{\textbf{F}}orest} + +\newacronym[]{cpd}{CPD}{\glstextformat{\textbf{C}}luster \glstextformat{\textbf{P}}robability \glstextformat{\textbf{D}}istribution} + +\newacronym[]{cpevol}{CPE}{\glstextformat{\textbf{C}}entroid \glstextformat{\textbf{P}}osition \glstextformat{\textbf{E}}volution} + + +\newacronym[]{dtw}{DTW}{\glstextformat{\textbf{D}}ynamical \glstextformat{\textbf{T}}ime \glstextformat{\textbf{W}}arping} + +\newacronym[]{knn}{KNN}{\glstextformat{\textbf{K}-\textbf{N}}earest \glstextformat{\textbf{N}}eighbor} + diff --git a/Data/0_Latex_True/1_Task/1_Introduction.tex b/Data/0_Latex_True/1_Task/1_Introduction.tex new file mode 100644 index 0000000000000000000000000000000000000000..05d32c6bdae3387eda866d4ab3e16c71aed32f28 --- /dev/null +++ b/Data/0_Latex_True/1_Task/1_Introduction.tex @@ -0,0 +1,97 @@ + + +\chapter{Introduction} +\label{chap_1_Intro} +In this work, a tool called \glsfirst{cnmc} is further developed. +The overall goal, in very brief terms, is to generate a model, which is able to +predict the trajectories of general dynamical systems. The model +shall be capable of predicting the trajectories when a model parameter +value is changed. +Some basics about dynamical systems are covered in +subsection \ref{subsec_1_1_1_Principles} and in-depth explanations about \gls{cnmc} are given in +chapter \ref{chap_2_Methodlogy}.\newline + +However, for a short and broad introduction to \gls{cnmc} the workflow depicted in figure \ref{fig_1_CNMC_Workflow} shall be highlighted. +The input it receives is data of a dynamical system or space state vectors for a range of model parameter values. The two main important outcomes are some accuracy measurements and the predicted trajectory for each desired model parameter value. +Any inexperienced user may only have a look at the predicted trajectories to +quickly decide visually whether the prediction matches the trained data. Since \gls{cnmc} is written in a modular manner, meaning it can be regarded as +a black-box function, it can easily be integrated into other existing codes or +workflows. \newline + +\begin{figure}[!h] + \def\svgwidth{\linewidth} + \input{2_Figures/1_Task/1_CNMc.pdf_tex} + \caption{Broad overview: Workflow of \gls{cnmc}} + \label{fig_1_CNMC_Workflow} +\end{figure} + +% ============================================================================== +% ==================== Motivation ============================================== +% ============================================================================== +\section{Motivation} +\label{sec_Motivation} +\gls{cfd} is an +indispensable technique, when aimed to obtain information about aerodynamic properties, such +as drag and lift distributions. Modern \gls{cfd} solvers, such as \gls{dlr}'s \emph{TAU} +\cite{Langer2014} often solves +the \gls{rans} equations to obtain one flow-field. Advanced solvers like \emph{TAU} apply advanced +mathematical knowledge to speed up calculations and +heavily exploit multiple \glspl{cpu} in an optimized manner. Nevertheless, +depending on the size of the object and accuracy demands or in other terms mesh grid size, the computation often is not economically +efficient enough. If the object for which a flow field is desired is a full aircraft, then even with a big cluster and making use of symmetry properties of the shape of the airplane, if such exists, the computation of one single +flow field can still easily cost one or even multiple months in computation time. \newline + +In modern science, there is a trend towards relying on \glspl{gpu} instead of \glspl{cpu}. Graphic cards possess much +more cores than a CPU. However, even with the utilization of \glspl{gpu} and GPU-optimized \gls{cfd} solvers, the computation is still very expensive. Not only in time but also +in electricity costs. +Running calculations on a cluster for multiple months is such expensive that wind tunnel measurements can be considered to be the economically more +efficient choice to make. +Regarding accuracy, wind tunnel measurements and \gls{cfd} simulations with state-of-the-art solvers can be considered to be +equally useful. When using \gls{cfd} solvers, there is one more thing to keep +in mind. +Each outcome is only valid for one single set of input parameters. +Within the set of input parameters, the user often is only interested +in the impact of one parameter, e.g., the angle of attack. Consequently, +wanting to capture the effect of the change of the angle of attack on the flow field, +multiple \gls{cfd} calculations need to be performed, i.e., for each desired +angle of attack. +Based on the chosen angle of attack the solver might be able to converge faster to a solution. However, the calculation time +needs to be added up for each desired angle of attack. +In terms of time and energy costs, this could again be more expensive than wind-tunnel +measurements. Wind tunnel measurements are difficult to set up, but once a +configuration is available, measuring flow field properties with it, in general, is known to be faster and easier than running \gls{cfd} simulations.\newline + +% ------------------------------------------------------------------------------ +Within the scope of this work, a data-driven tool was developed that allows predictions for dynamic systems. +In \cite{Max2021} the first version of it showed promising results. +However, it was dedicated to the solution of one single dynamical system, i.e., the Lorenz system \cite{lorenz1963deterministic}. +Due to the focus on one singular dynamical system, the proposed \glsfirst{cnmc} was not verified for other dynamical systems. +Hence, one of the major goals of this thesis is to enable \gls{cnmc} to be applied to any general dynamical system. +For this, it is important to state that because of two main reasons \gls{cnmc} was not built upon the first version of \gls{cnmc}, but written from scratch. +First, since the initial version of \gls{cnmc} was designed for only a single dynamic system, extending it to a general \gls{cnmc} was considered more time-consuming than starting fresh. +Second, not all parts of the initial version of \gls{cnmc} could be executed without errors. +The current \gls{cnmc} is therefore developed in a modular manner, i.e., on the one hand, the implementation of any other dynamical system is straightforward. +To exemplify this, 10 different dynamic systems are available by default, so new dynamic systems can be added analogously.\newline + +The second important aspect for allowing \gls{cnmc} to be utilized in any general dynamical system is the removal of the two limitations. +In the first version of \gls{cnmc} the behavior of the dynamical systems had to be circular as, e.g., the ears of the Lorenz system \cite{lorenz1963deterministic} are. +Next, its dimensionality must be strictly 3-dimensional. +Neither is a general dynamical system is not bound to exhibit a circular motion nor to be 3-dimensional. +By removing these two limitations \gls{cnmc} can be leveraged on any dynamical system. +However, the first version of \gls{cnmc} employed \glsfirst{nmf} as the modal decomposition method. +The exploited \gls{nmf} algorithm is highly computationally intensive, which makes a universal \gls{cnmc} application economically inefficient. +Therefore, the current \gls{cnmc} has been extended by the option to choose between the \gls{nmf} and the newly implemented \glsfirst{svd}. +The aim is not only that \gls{cnmc} is returning results within an acceptable timescale, but also to ensure that the quality of the modal decomposition remains at least at an equal level. +Proofs for the latter can be found in section \ref{sec_3_3_SVD_NMF}.\newline + +With these modifications, the current \gls{cnmc} is now able to be used in any dynamical system within a feasible time frame. +The next addressed issue is the B-spline interpolation. +It is used in the propagation step of \glsfirst{cnm} \cite{Fernex2021} to smooth the predicted trajectory. +However, as already noted in \cite{Max2021}, when the number of the clustering centroids $K$ is $K \gtrapprox 15$, the B-spline interpolation embeds oscillations with unacceptable high deviations from the original trajectories. +To resolve this problem, the B-spline interpolation is replaced with linear interpolation. +By preventing the occurrence of outliers caused by the B-spline interpolation, neither the autocorrelation defined in subsection \ref{subsec_1_1_3_first_CNMc} nor the predicted trajectories are made impractical. +Apart from the main ability of \gls{cnmc} a high number of additional features are available, e.g., the entire pipeline of \gls{cnmc} with all its parameters can be adjusted via one file (\emph{settings.py}), an incorporated log file, storing results at desired steps, the ability to execute multiple dynamical models consequentially and activating and disabling each step of \gls{cnmc}. +The latter is particularly designed for saving computational time. +Also, \gls{cnmc} comes with its own post-processor. +It is optional to generate and save the plots. +However, in the case of utilizing this feature, the plots are available as HTML files which, e.g., allow extracting further information about the outcome or rotating and zooming in 3d plots. \ No newline at end of file diff --git a/Data/0_Latex_True/1_Task/2_State_Of_Art.tex b/Data/0_Latex_True/1_Task/2_State_Of_Art.tex new file mode 100644 index 0000000000000000000000000000000000000000..5d6474a5f1891faf056338fb2d0cd29b50f0d686 --- /dev/null +++ b/Data/0_Latex_True/1_Task/2_State_Of_Art.tex @@ -0,0 +1,98 @@ + +% =================================================== +% ==================== STATE OF THE ART ============= +% =================================================== +\section{State of the art} +\label{sec_1_1_State} + +The desire to get fast \gls{cfd} output is not new and also +a data-driven approach is found in the literature. +This section aims to describe some evolutionary steps of \glsfirst{cnmc}. Given that this work is built upon the most recent advancements, +they will be explained in particular detail. +Whereas the remaining development stages are briefly +summarized to mainly clarify the differences and +mention the reasons why improvements were desired. Since, this topic +demands some prior knowledge to follow \gls{cnmc}'s workflow and goal, some basic principles about important topics shall be given in their subsection.\newline + +The first data-driven approach, which is known to the author, +is by \cite[]{Kaiser2014} and shall be called \gls{cmm}. +\gls{cnmc} is not directly built upon \gls{cmm} but on the latest version +of \gls{cnm} and is described in \cite[]{Fernex2021}. +\gls{cnmc} invokes \gls{cnm} many times in order to use +its outcome for further progress. Therefore, it's evident that only if \gls{cnm} is understood, CNMc's +progress can be followed. \gls{cmm} on the other hand has only a historical link to \gls{cnmc}, but no line of code of \gls{cmm} is invoked in \gls{cnmc}'s workflow. Consequently, \gls{cnm} will be explained in more detail than \gls{cmm}. + +\subsection{Principles} +\label{subsec_1_1_1_Principles} +CNM \cite[]{Fernex2021} is a method that uses some machine learning +techniques, graphs, and probability theory to mirror the behavior of +complex systems. These complex systems are described often by dynamical systems, which themselves are simply a set of +differential equations. Differential equations are useful to +capture motion. Thus, a dynamical system can be seen as a synonym for motion +over time. Some differential equations can be +solved in closed form, meaning analytically. However, for most of them +either it is too difficult to obtain an analytical solution or the +analytical solution is very unhandy or unknown. Unhandy in terms of the solution +being expressed in too many terms. Therefore, in most +cases, differential equations are solved numerically. Since +the purpose of \gls{cnm} is not to be only used for analytically +solvable equations, a numerical ordinary differential integrator +is used. \newline + +The default solver is \emph{SciPy}'s \emph{RK45} solver. +It is a widely deployed solver and can also be applied to +chaotic systems for integration +over a certain amount of time. +Another option for solving chaotic \gls{ode}s is +\emph{LSODA}. The developers of \emph{pySindy} \cite{Silva2020, Kaptanoglu2022} +state on their homepage \cite{pysindy_Home} that +\emph{LSODA} even outperforms the default \emph{RK45} when it comes to chaotic dynamical systems. The reasons why for \gls{cnmc} still \emph{RK45} was chosen will be given in +section +\ref{sec_2_2_Data_Gen}. +It is important to remember that turbulent flows are chaotic. +This is the main reason why in this work \gls{cnmc}, has been designed to handle not only general dynamical systems but also general chaotic attractors. +Other well-known instances where chaos is found are, e.g., the weather, the +motion of planets and also the financial market is believed to be chaotic. +For more places, where chaos is found the reader is referred to \cite{Argyris2017}.\newline + +Note that \gls{cnmc} is designed for all kinds of dynamical systems, it is not restricted to linear, nonlinear or chaotic systems. +Therefore, chaotic systems shall be recorded to be only one application example of \gls{cnmc}. +However, because chaotic attractors were primarily exploited in the context of the performed investigations in this work, a slightly lengthier introduction to chaotic systems is provided in the appendix \ref{ch_Ap_Chaotic}. +Two terms that will be used extensively over this entire thesis are called model parameter value $\beta$ and a range of model parameter values $\vec{\beta}$. A regular differential equation can be expressed as +in equation \eqref{eq_1_0_DGL}, where $F$ is denoted as the function which describes the dynamical system. +The vector $\vec{x}(t)$ is the state vector. +The form in which differential equations are viewed in this work is given in equation \eqref{eq_1_1_MPV}. + +\begin{equation} + F = \dot{\vec{x}}(t) = \frac{\vec{x}(t)}{dt} = f(\vec{x}(t)) + \label{eq_1_0_DGL} +\end{equation} +\begin{equation} + F_{\gls{cnmc}} = \left(\dot{\vec{x}}(t), \, \vec{\beta} \right) = + \left( \frac{\vec{x}(t)}{dt}, \, \vec{\beta} \right) = + f(\vec{x}(t), \, \vec{\beta} ) + \label{eq_1_1_MPV} +\end{equation} + +Note the vector $\vec{\beta}$ indicates a range of model parameter values, i.e., the differential equation is solved for each model parameter value $\beta$ separately. +The model parameter value $\beta$ is a constant and does not depend on the time, but rather it is a user-defined value. +In other terms, it remains unchanged over the entire timeline for which the dynamical system is solved. +The difference between $F$ and $F_{\gls{cnmc}}$ is that $F$ is the differential equation for only one $\beta$, while $F_{\gls{cnmc}}$ can be considered as the same differential equation, however, solved, for a range of individual $\beta$ values. +The subscript \gls{cnmc} stresses that fact that \gls{cnmc} is performed for a range of model parameter values $\vec{\beta}$. +Some dynamical systems, which will be used for \gls{cnmc}'s validation can be found in section \ref{sec_2_2_Data_Gen}. They are written as a set of differential equations in the $\beta$ dependent form. +Even a tiny change in $\beta$ can result in the emergence of an entirely different trajectory. \newline +% The behavior could exhibit such strong alterations, such +% that one might believe to require new underlying differential equations. +% These heavy transitions are called bifurcations.\newline + +% Although bifurcations +% cause the trajectory to vary seemingly arbitrary, +% there exist canonical bifurcation types. Explanations for +% deriving their equations and visualization are well covered in literature +% and can be found, +% e.g., in \cite{Argyris2017,Kutz2022,Strogatz2019}. Although a detailed coverage of bifurcations is not feasible within the scope of this thesis, the method of how the trajectory is changed in such a significant way shall be outlined. +% Namely, bifurcations can replace, remove and generate new attractors, e.g., the above introduced fix-point, limit cycle and torus attractor. +% Bifurcations were mentioned here only for the sake of completeness. Indeed, one of the final goals for \gls{cnmc} is the extension to handle bifurcations. However, the latter is not part of this thesis.\newline + +In summary, the following key aspects can be concluded. The reason why \gls{cnmc} in future releases is believed to be able to manage real \gls{cfd} fluid flow data and make predictions for unknown model parameter values $\beta$ is that turbulent flows are chaotic. Thus, allowing \gls{cnmc} to work with chaotic attractors in the course of this thesis is considered to be the first step toward predicting entire flow fields. +% The second point is that there is no real unified definition of chaos, but there are some aspects that are more prevalent in the literature. \ No newline at end of file diff --git a/Data/0_Latex_True/1_Task/3_CNM.tex b/Data/0_Latex_True/1_Task/3_CNM.tex new file mode 100644 index 0000000000000000000000000000000000000000..58c5a52cb77e81d98ce53ab6fadbfd1e4ef7fd18 --- /dev/null +++ b/Data/0_Latex_True/1_Task/3_CNM.tex @@ -0,0 +1,198 @@ +% ================================================= +% ================ Meet \gls{cnm} ======================= +% ================================================= +\section{Cluster-based Network Modeling (CNM)} +\label{sec_1_1_2_CNM} +In this subsection, the workflow of \gls{cnm} \cite{Fernex2021} will be elaborated, as well as the previous attempt to expand the algorithm to accommodate a range of model parameter values $\vec{\beta}$. +\gls{cnm} \cite{Fernex2021} is the basis on which \gls{cnmc} is built or rather +\gls{cnmc} invokes \gls{cnm} multiple times for one of its preprocessing steps. +CNM can be split up into 4 main tasks, which are +data collection, clustering, calculating +transition properties and propagation. +The first step is to collect the data, which can be provided from any dynamic system or numerical simulations. +In this study, only dynamical systems are investigated. +Once the data for the dynamical system is passed to \gls{cnm}, the data is clustered, e.g., with k-means++ algorithm \cite{Arthur2006}. +A detailed elaboration about this step is given in section \ref{sec_2_3_Clustering}. \gls{cnm} exploits graph theory for approximating the trajectory as a movement on nodes. +These nodes are equivalent to the centroids, which are acquired through clustering. +Next, the motion, i.e., movement from one centroid to another, shall be clarified.\newline + +In order to fully describe the motion on the centroids, the time at which +one centroid is visited is exited, and also the order of movement must be known. +Note, when saying the motion is on the centroids, that +means the centroids or characteristic nodes do not move +at all. The entire approximated motion of the original trajectory +on the nodes is described with the transition +property matrices $\bm Q$ and $\bm T$. +The matrices $\bm Q$ and $\bm T$ are the transition probability and transition time matrices, respectively. +$\bm Q$ is used to apply probability theory for predicting the next following most likely centroid. In other words, if +the current location is at any node $c_i$, +$\bm Q$ will provide all possible successor centroids +with their corresponding transition probabilities. +Thus, the motion on the centroids +through $\bm Q$ is probability-based. +In more detail, the propagation of the motion on the centroids can be described as equation \eqref{eq_34}. +The variables are denoted as the propagated $\vec{x}(t)$ trajectory, time $t$, centroid positions $\vec{c}_k,\, \vec{c}_j$, the time $t_j$ where centroid $\vec{c}_j$ is left and the transition time $T_{k,j}$ from $\vec{c}_j$ to $\vec{c}_k$ \cite{Fernex2021}. +Furthermore, for the sake of a smooth trajectory, the motion between the centroids is interpolated through a spline interpolation.\newline + +\begin{equation} + \vec{x}(t) = \alpha_{kj} (t) \, \vec{c}_k + [\, 1 - \alpha_{kj} (t)\,] \, \vec{c}_j, \quad \alpha_{kj} (t) = \frac{t-t_j}{T_{k,j}} + \label{eq_34} +\end{equation} + + +The $\bm Q$ matrix only contains non-trivial transitions, i.e., +if after a transition the centroid remains on the same centroid, the transition is not considered to be a real transition in \gls{cnm}. +This idea +is an advancement to the original work of Kaiser et al. \cite{Kaiser2014}. +In Kaiser et al. \cite{Kaiser2014} the transition is modeled +as a Markov model. Markov models enable non-trivial transitions. Consequently, +the diagonals of the resulting non-direct transition matrix $\bm{Q_n}$ +exhibits the highest values. The diagonal elements stand for non-trivial +transitions which lead to idling on the same centroid +many times. Such behavior is encountered and described by Kaiser et al. \cite{Kaiser2014}.\newline + + +There are 3 more important aspects that come along when +adhering to Markov models. First, the propagation of motion is done +by matrix-vector multiplication. In the case of the existence of a +stationary state, the solution +will converge to the stationary state, with an increasing number of iterations, where no change with time happens. +A dynamical system can only survive as long as change with time exists. +In cases where no change with respect to time is encountered, equilibrium +or fixed points are found. + Now, if a stationary state or fixed point +exists in the considered dynamical system, the propagation +will tend to converge to this fixed point. However, the nature of +Markov models must not necessarily be valid for general dynamical systems. +Another way to see that is by applying some linear algebra. The +long-term behavior of the Markov transition matrix can be obtained +with equation \eqref{eq_3_Infinite}. Here, $l$ is the number +of iterations to get from one stage to another. Kaiser et al. +\cite{Kaiser2014} depict in a figure, how the values of +$\bm{Q_n}$ evolves after $1 \mathrm{e}{+3}$ steps. $\bm{Q_n}$ has +become more uniform. + +\begin{equation} + \label{eq_3_Infinite} + \lim\limits_{l \to \infty} \bm{Q_n}^l +\end{equation} + +If the number of steps is increased even further +and all the rows would have the same probability value, +$\bm{Q_n}$ would converge to a stationary point. What +also can be concluded from rows being equal is that it does not matter +from where the dynamical system was started or what its +initial conditions were. The probability +to end at one specific state or centroid is constant as +the number of steps approaches infinity. Following that, +it would violate the sensitive dependency on initial conditions, +which often is considered to be mandatory for modeling chaotic systems. Moreover, chaotic +systems amplify any perturbation exponentially, whether at time +$t = 0$ or at time $t>>0$. \newline + +Thus, a stationary transition matrix $\bm{Q_n}$ is prohibited by chaos at any time step. +This can be found to be one of the main reasons, why +the \textbf{C}luster \textbf{M}arkov based \textbf{M}odeling (\gls{cmm}) +often fails to +predict the trajectory. +Li et al. \cite{Li2021} summarize this observation +compactly as after some time the initial condition +would be forgotten and the asymptotic distribution would be reached. +Further, they stated, that due to this fact, \gls{cmm} would +not be suited for modeling dynamical systems. +The second problem which is involved, when deploying +regular Markov modeling is that the future only depends +on the current state. However, \cite{Fernex2021} has shown +with the latest \gls{cnm} version that incorporating also past +centroid positions for predicting the next centroid position +increases the prediction quality. The latter effect is especially +true when systems are complex.\newline + + +However, for multiple consecutive time steps +the trajectories position still could be assigned to the same +centroid position (trivial transitions). +Thus, past centroids are those centroids that are found when going +back in time through only non-trivial transitions. The number of incorporated +past centroids is given as equation \eqref{eq_5_B_Past}, where $L$ is denoted +as the model order number. It represents the number of all +considered centroids, where the current and all the past centroids are included, with which the prediction of the successor centroid +is made. + +\begin{equation} + B_{past} = L -1 + \label{eq_5_B_Past} +\end{equation} + +Furthermore, in \cite{Fernex2021} it is not simply believed that an +increasing model +order $L$ would increase the outcome quality in every case. +Therefore, a study on the number of $L$ and the clusters $K$ +was conducted. The results proved that the choice of +$L$ and $K$ depend on the considered dynamical system. +\newline + +The third problem encountered when Markov models are used is +that the time step must be provided. This time step is used +to define when a transition is expected. In case +the time step is too small, some amount of iterations is +required to transit to the next centroid. Thus, non-trivial +transitions would occur. In case the time step is too high, +the intermediate centroids would be missed. Such behavior +would be a coarse approximation of the real dynamics. Visually this can +be thought of as jumping from one centroid to another while +having skipped one or multiple centroids. The reconstructed +trajectory could lead to an entirely wrong representation of the +state-space. +CNM generates the transition time matrix $\bm T$ from data +and therefore no input from the user is required.\newline + +A brief review of how the $\bm Q$ is built shall be provided. +Since the concept of +model order, $L$ has been explained, it can be clarified that +it is not always right to call $\bm Q$ and $\bm T$ matrices. +The latter is only correct, if $L = 1$, otherwise it must be +denoted as a tensor. $\bm Q$ and $\bm T$ can always be +referred to as tensors since a tensor incorporates matrices, i.e., a matrix is a tensor of rank 2. +In order to generate $\bm Q$, +$L$ must be defined, such that the shape of $\bm Q$ is +known. The next step is to gather all sequences of clusters +$c_i$. To understand that, we imagine the following scenario, +$L = 3$, which means 2 centroids from the past and the +current one are +incorporated to predict the next centroid. +Furthermore, imagining that two cluster sequence scenarios were found, +$c_0 \rightarrow c_1 \rightarrow c_2 $ and $c_5 \rightarrow c_1 \rightarrow c_2 $. +These cluster sequences tell us that the current centroid is $c_2$ and the remaining centroids belong to the past. +In order to complete the sequence for $L = 3$, the successor cluster also needs +to be added, $c_0 \rightarrow c_1 \rightarrow c_2 \rightarrow c_5 $ and $c_5 \rightarrow c_1 \rightarrow c_2 \rightarrow c_4$. +The following step is to calculate the likelihood +of a transition to a specific successor cluster. This is done with equation \eqref{eq_4_Poss}, where $n_{k, \bm{j}}$ +is the amount of complete sequences, where also the successor +is found. The index $j$ is written as a vector in order +to generalize the equation for $L \ge 1$. It then contains +all incorporated centroids from the past and the current centroid. +The index $k$ represents the successor centroid ($\bm{j} \rightarrow k$). +Finally, $n_{\bm{j}}$ counts all the matching incomplete sequences. + +\begin{equation} + \label{eq_4_Poss} + P_{k, \bm j} = \frac{n_{k,\bm{j}}}{n_{\bm{j}}} +\end{equation} + +After having collected all the possible complete cluster sequences with their corresponding probabilities $\bm Q$, the transition time tensors $\bm T$ can be inferred from the data. +With that, the residence time on each cluster is known and can be +used for computing the transition times for every +single transition. At this stage, it shall be highlighted again, +CNM approximates its data fully with only two +matrices or when $L \ge 2$ tensors, $\bm Q$ and $\bm T$. The +final step is the prorogation following equation \eqref{eq_34}. +For smoothing the propagation between two centroids the B-spline interpolation +is applied. + +% It can be concluded that one of the major differences between \gls{cnm} and \gls{cmm} is that {cnm} dismissed Markov modeling. +% Hence, only direct or non-trivial transition are possible. +% Fernex et al. \cite{Fernex2021} improved \cite{Li2021} by +% rejecting one more property of Markov chains, namely +% that the future state could be inferred exclusively from the current state. +% Through the upgrade of \cite{Fernex2021}, incorporating past states for the prediction of future states could be exploited. diff --git a/Data/0_Latex_True/1_Task/4_CNMc.tex b/Data/0_Latex_True/1_Task/4_CNMc.tex new file mode 100644 index 0000000000000000000000000000000000000000..3d19f0ef14bd2883340ff974b9598ba629f73a92 --- /dev/null +++ b/Data/0_Latex_True/1_Task/4_CNMc.tex @@ -0,0 +1,114 @@ +\subsection{First version of CNMc} +\label{subsec_1_1_3_first_CNMc} +Apart from this thesis, there already has been an +attempt to build \glsfirst{cnmc}. +The procedure, progress and results of the most recent effort are described in \cite{Max2021}. +Also, in the latter, the main idea was to predict the trajectories +for dynamical systems with a control term or a model parameter value $\beta$. +In this subsection, a review of +\cite{Max2021} shall be given with pointing out which parts need to be improved. In addition, some distinctions between the previous version of \gls{cnmc} and the most recent version are named. +Further applied modifications are provided in chapter \ref{chap_2_Methodlogy}.\newline + +To avoid confusion between the \gls{cnmc} version described in this thesis and the prior \gls{cnmc} version, the old version will be referred to as \emph{first CNMc}. +\emph{First CNMc} starts by defining a range of model parameter values +$\vec{\beta}$. +It was specifically designed to only be able to make predictions for the Lorenz attractor \cite{lorenz1963deterministic}, which is described with the set of equations \eqref{eq_6_Lorenz} given in section \ref{sec_2_2_Data_Gen}. +An illustrative trajectory is of the Lorenz system \cite{lorenz1963deterministic} with $\beta = 28$ is depicted in figure \ref{fig_2_Lorenz_Example}.\newline +% +% ============================================================================== +% ============================ PLTS ============================================ +% ============================================================================== +\begin{figure}[!h] + \centering + \includegraphics[width =\textwidth] + % In order to insert an eps file - Only_File_Name (Without file extension) + {2_Figures/1_Task/2_Lorenz.pdf} + \caption{Illustrative trajectory of the Lorenz attractor \cite{lorenz1963deterministic}, $\beta = 28$} + \label{fig_2_Lorenz_Example} +\end{figure} +% + +Having chosen a range of model parameter values $\vec{\beta}$, the Lorenz system was solved numerically and its solution was supplied to \gls{cnm} in order to run k-means++ on all received trajectories. +% It assigns each data point to a cluster and +% calculates all the $K$ cluster centroids for all provided trajectories. +% Each cluster has an identity that in literature is known as a label, with which it can be accessed. +The centroid label allocation by the k-means+ algorithm is conducted randomly. +Thus, linking or matching centroid labels from one model parameter value $\beta_i$ to another model parameter value $\beta_j$, where $i \neq j$, is performed in 3 steps. +The first two steps are ordering the $\vec{\beta}$ in ascending +order and transforming the Cartesian coordinate system into a spherical coordinate system. +With the now available azimuth angle, each centroid is labeled in increasing order of the azimuth angle. +The third step is to match the centroids across $\vec{\beta}$, i.e., $\beta_i$ with $\beta_j$. +For this purpose, the centroid label from the prior model parameter value +is used as a reference to match its corresponding nearest centroid in the next model parameter value. +As a result, one label can be assigned to one centroid across the available $\vec{\beta}$.\newline + + +Firstly, \cite{Max2021} showed that ambiguous regions can +occur. Here the matching of the centroids across the $\vec{\beta}$ can +not be trusted anymore. +Secondly, the deployed coordinate transformation is assumed to only work properly in 3 dimensions. There is the possibility to set one +or two variables to zero in order to use it in two or one dimension, respectively. +However, it is not known, whether such an artificially decrease of dimensions yields a successful outcome for lower-dimensional (2- and 1-dimensional) dynamical systems. In the event of a 4-dimensional or even higher dimensional case, the proposed coordinate transformation cannot be used anymore. +In conclusion, the transformation is only secure to be utilized in 3 dimensions. +Thirdly, which is also acknowledged by \cite[]{Max2021} is that the +coordinate transformation forces the dynamical system to have +a circular-like trajectory, e.g., as the in figure \ref{fig_2_Lorenz_Example} depicted Lorenz system does. +Since not every dynamical system is forced to have a circular-like trajectory, it is one of the major parts which needs to be improved, when \emph{first CNMc} is meant to be leveraged for all kinds of dynamical systems. +Neither the number of dimensions nor the shape of the trajectory should matter for a generalized \gls{cnmc}.\newline + + +Once the centroids are matched across all the available $\vec{\beta}$ pySINDy \cite{Brunton2016,Silva2020, Kaptanoglu2022} is used +to build a regression model. This regression model serves the purpose +of capturing all centroid positions of the calculated model parameter +values $\vec{\beta }$ and making predictions for unseen $\vec{\beta}_{unseen}$. +Next, a preprocessing step is performed on the +transition property tensors $\bm Q$ and $\bm T$. Both are +scaled, such that the risk of a bias is assumed to be reduced. +Then, on both \glsfirst{nmf} \cite{Lee1999} is +applied. +Following equation \eqref{eq_5_NMF} \gls{nmf} \cite{Lee1999} returns +two matrices, i.e., $\bm W$ and $\bm H$. +The matrices exhibit a physically +relevant meaning. $\bm W$ corresponds to a mode collection and $\bm H$ contains +the weighting factor for each corresponding mode.\newline + +\begin{equation} + \label{eq_5_NMF} + \bm {A_{i \mu}} \approx \bm A^{\prime}_{i \mu} = (\bm W \bm H)_{i \mu} = \sum_{a = 1}^{r} + \bm W_{ia} \bm H_{a \mu} +\end{equation} + +The number of modes $r$ depends on the underlying dynamical system. +Firstly, the \gls{nmf} is utilized by deploying optimization. +The goal is to satisfy the condition that, the deviation between the original matrix and the approximated matrix shall be below a chosen threshold. +For this purpose, the number of required optimization iterations easily can be +in the order of $\mathcal{O} (1 \mathrm{e}+7)$. The major drawback here is that such a high number of iterations is computationally very expensive. +Secondly, for \emph{first CNMc} the number of modes $r$ must be known beforehand. +Since in most cases this demand cannot be fulfilled two issues arise. +On the one hand, running \gls{nmf} on a single known $r$ can already be considered to be computationally expensive. +On the other hand, conducting a study to find the appropriate $r$ involves even more computational effort. +Pierzyna \cite[]{Max2021} acknowledges this issue and defined it to be one of the major limitations. \newline + + +The next step is to generate a regression model with \glsfirst{rf}. +Some introductory words about \gls{rf} are given in subsection \ref{subsec_2_4_2_QT}. +As illustrated in \cite{Max2021}, \gls{rf} was able to reproduce the training data reasonably well. +However, it faced difficulties to approximate spike-like curves. +Once the centroid positions and the two transitions property tensors $\bm Q$ and $\bm T$ are known, they are passed to \gls{cnm} to calculate the predicted trajectories. +For assessing the prediction quality two methods are used, i.e., the autocorrelation and the \glsfirst{cpd}. +\gls{cpd} outlines the probability of being on one of the $K$ clusters. +The autocorrelation given in equation \eqref{eq_35} allows comparing two trajectories with a phase-mismatch \cite{protas2015optimal} and it measures how well a point in trajectory correlates with a point that is some time steps ahead. +The variables in equation \eqref{eq_35} are denoted as time lag $\tau$, state space vector $\bm x$, time $t$ and the inner product $(\bm x, \bm y) = \bm x \cdot \bm{y}^T$. \newline + +\begin{equation} + R(\tau) = \frac{1}{T - \tau} \int\limits_{0}^{T-\tau}\, (\bm{x} (t), \bm{x}(t+ \tau)) dt, \quad \tau \in [\, 0, \, T\,] + \label{eq_35} +\end{equation} + +\emph{First CNMc} proved to work well for the Lorenz system only for the number of centroids up to $K=10$ and small $\beta$. +Among the points which need to be improved is the method to match the centroids across the chosen $\vec{\beta}$. +Because of this, two of the major problems occur, i.e., the limitation to 3 dimensions and the behavior of the trajectory must be circular, similar to the Lorenz system \cite{lorenz1963deterministic}. +These demands are the main obstacles to the application of \emph{first CNMc} to all kinds of dynamical systems. +The modal decomposition with \gls{nmf} is the most computationally intensive part and should be replaced by a faster alternative. + + diff --git a/Data/0_Latex_True/2_Task/0_Methodlogy.tex b/Data/0_Latex_True/2_Task/0_Methodlogy.tex new file mode 100644 index 0000000000000000000000000000000000000000..0b774f065f574b58a48847d0f780aa5c87a36aff --- /dev/null +++ b/Data/0_Latex_True/2_Task/0_Methodlogy.tex @@ -0,0 +1,189 @@ +\chapter{Methodology} +\label{chap_2_Methodlogy} +In this chapter, the entire pipeline for designing the proposed +\gls{cnmc} is elaborated. For this purpose, the ideas behind +the individual processes are explained. +Results from the step tracking onwards will be presented in chapter \ref{ch_3}. +Having said that, \gls{cnmc} consists of multiple main process steps or stages. +First, a broad overview of the \gls{cnmc}'s workflow shall be given. +Followed by a detailed explanation for each major operational step. The +implemented process stages are presented in the same order as they are +executed in \gls{cnmc}. However, \gls{cnmc} is not forced +to go through each stage. If the output of some steps is +already available, the execution of the respective steps can be skipped. \newline + +The main idea behind such an implementation is to prevent computing the same task multiple times. +Computational time can be reduced if the output of some \gls{cnmc} steps are available. +Consequently, it allows users to be flexible in their explorations. +It could be the case that only one step of \textsc{CNMc} is desired to be examined with different settings or even with newly implemented functions without running the full \gls{cnmc} pipeline. +Let the one \gls{cnmc} step be denoted as C, then it is possible to skip steps A and B if their output is already calculated and thus available. +Also, the upcoming steps can be skipped or activated depending on the need for their respective outcomes. +Simply put, the mentioned flexibility enables to load data for A and B and execute only C. Executing follow-up steps or loading their data is also made selectable. +% +%------------------------------- SHIFT FROM INTRODUCTION ---------------------- +% +Since the tasks of this thesis required much coding, +it is important to +mention the used programming language and the dependencies. +As for the programming language, +\emph{Python 3} \cite{VanRossum2009} was chosen. For the libraries, only a few important libraries will be mentioned, because the number of used libraries is high. Note, each used module is +freely available on the net and no licenses are required to be purchased. +\newline + +The important libraries in terms of performing actual calculations are +\emph{NumPy} \cite{harris2020array}, \emph{SciPy} \cite{2020SciPy-NMeth}, \emph{Scikit-learn} \cite{scikit-learn}, \emph{pySindy} \cite{Silva2020, Kaptanoglu2022}, for multi-dimensional sparse matrix management \emph{sparse} and for plotting only \emph{plotly} \cite{plotly} was deployed. One of the reason why \emph{plotly} is preferred over \emph{Matplotlib} \cite{Hunter:2007} are post-processing capabilities, which now a re available. Note, the previous \emph{\gls{cmm}c} version used \emph{Matplotlib} \cite{Hunter:2007}, which in this work has been fully replaced by \emph{plotly} \cite{plotly}. More reasons why this modification is useful and new implemented post-processing capabilities will be given in the upcoming sections.\newline + +For local coding, the author's Linux-Mint-based laptop with the following hardware was deployed: CPU: Intel Core i7-4702MQ \gls{cpu}@ 2.20GHz × 4, RAM: 16GB. +The Institute of fluid dynamics of the Technische Universität Braunschweig +also supported this work by providing two more powerful computation resources. +The hardware specification will not be mentioned, due to the fact, that all computations and results elaborated in this thesis can be obtained by +the hardware described above (authors laptop). However, the two provided +resources shall be mentioned and explained if \gls{cnmc} benefits from +faster computers. The first bigger machine is called \emph{Buran}, it is a +powerful Linux-based working station and access to it is directly provided by +the chair of fluid dynamics. \newline + +The second resource is the high-performance +computer or cluster available across the Technische Universität Braunschweig +\emph{Phoenix}. The first step, where the dynamical systems are solved through an \gls{ode} solver +is written in a parallel manner. This step can if specified in the \emph{settings.py} file, be performed in parallel and thus benefits from +multiple available cores. However, most implemented \gls{ode}s are solved within +a few seconds. There are also some dynamical systems implemented whose +ODE solution can take a few minutes. Applying \gls{cnmc} on latter dynamical +systems results in solving their \gls{ode}s for multiple different model parameter values. Thus, deploying the parallelization can be advised in the latter mentioned time-consuming \gls{ode}s.\newline + +By far the most time-intensive part of the improved \gls{cnmc} is the clustering step. The main computation for this step is done with +{Scikit-learn} \cite{scikit-learn}. It is heavily parallelized and the +computation time can be reduced drastically when multiple threads are available. +Other than that, \emph{NumPy} and \emph{SciPy} are well-optimized libraries and +are assumed to benefit from powerful computers. In summary, it shall be stated that a powerful machine is for sure advised when multiple dynamical +systems with a range of different settings shall be investigated since parallelization is available. Yet executing \gls{cnmc} on a single dynamical system, a regular laptop can be regarded as +a sufficient tool. + +%------------------------------- SHIFT FROM INTRODUCTION ---------------------- + +% ===================================================================== +% ============= Workflow ============================================== +% ===================================================================== +\section{CNMc's data and workflow} +\label{sec_2_1_Workflow} +In this section, the 5 main points that characterize \gls{cnmc} will be discussed. +Before diving directly into \gls{cnmc}'s workflow some remarks +are important to be made. +First, \gls{cnmc} is written from scratch, it is not simply an updated version of the described \emph{first CNMc} in subsection +\ref{subsec_1_1_3_first_CNMc}. +Therefore, the workflow described in this section for \gls{cnmc} will not match that of \emph{first CNMc}, e.g., \emph{first CNMc} had no concept of \emph{settings.py} and it was not utilizing \emph{Plotly} \cite{plotly} to facilitate post-processing capabilities. +The reasons for a fresh start were given in subsection \ref{subsec_1_1_3_first_CNMc}. +However, the difficulty of running \emph{first CNMc} and the time required to adjust \emph{first CNMc} such that a generic dynamic system could be utilized were considered more time-consuming than starting from zero. \newline + +Second, the reader is reminded to have the following in mind. +Although it is called pipeline or workflow, \gls{cnmc} is not obliged to run the whole workflow. With \emph{settings.py} file, which will be explained below, it is possible to run only specific selected tasks. +The very broad concept of \gls{cnmc} was already provided at the beginning of chapter \ref{chap_1_Intro}. +However, instead of providing data of dynamical systems for different model parameter values, the user defines a so-called \emph{settings.py} file and executes \gls{cnmc}. +The outcome of \gls{cnmc} consists, very broadly, of the predicted trajectories and some accuracy measurements as depicted in figure +\ref{fig_1_CNMC_Workflow}. +In the following, a more in-depth view shall be given.\newline + + + The extension of \emph{settings.py} is a regular \emph{Python} file. However, it is a dictionary, thus there is no need to acquire and have specific knowledge about \emph{Python}. + The syntax of \emph{Python's} dictionary is quite similar to that of the \emph{JSON} dictionary, in that the setting name is supplied within a quote mark + and the argument is stated after a colon. In order to understand the main points of \gls{cnmc}, its main data and workflow are depicted \ref{fig_3_Workflow} as an XDSM diagram \cite{Lambe2012}. + \newline + + % ============================================ + % ================ 2nd Workflow ============== + % ============================================ + \begin{sidewaysfigure} [!] + \hspace*{-2cm} + \resizebox{\textwidth}{!}{ + \input{2_Figures/2_Task/0_Workflow.tikz} + } + \caption{\gls{cnmc} general workflow overview} + \label{fig_3_Workflow} + \end{sidewaysfigure} + +The first action for executing \gls{cnmc} is to define \emph{settings.py}. It contains descriptive information about the entire pipeline, e.g., which dynamical system to use, which model parameters to select for training, which for testing, which method to use for modal decomposition and mode regression. +To be precise, it contains all the configuration attributes of all the 5 main \gls{cnmc} steps and some other handy extra functions. It is written in +a very clear way such that settings to the corresponding stages of \gls{cnmc} +and the extra features can be distinguished at first glance. +First, there are separate dictionaries for each of the 5 steps to ensure that the desired settings are made where they are needed. +Second, instead of regular line breaks, multiline comment blocks with the stage names in the center are used. +Third, almost every \emph{settings.py} attribute is explained with comments. +Fourth, there are some cases, where +a specific attribute needs to be reused in other steps. +The user is not required to adapt it manually for all its occurrences, but rather to change it only on the first occasion, where the considered function is defined. +\emph{Python} will automatically ensure that all remaining steps receive the change correctly. +Other capabilities implemented in \emph{settings.py} are mentioned when they are actively exploited. +In figure \ref{fig_3_Workflow} it can be observed that after passing \emph{settings.py} a so-called \emph{Informer} and a log file are obtained. +The \emph{Informer} is a file, which is designed to save all user-defined settings in \emph{settings.py} for each execution of \gls{cnmc}. +Also, here the usability and readability of the output are important and have been formatted accordingly. It proves to be particularly useful when a dynamic system with different settings is to be calculated, e.g., to observe the influence of one or multiple parameters. \newline + +One of the important attributes which +can be arbitrarily defined by the user in \emph{settings.py} and thus re-found in the \emph{Informer} is the name of the model. +In \gls{cnmc} multiple dynamical systems are implemented, which can be chosen by simply changing one attribute in \emph{settings.py}. +Different models could be calculated with the same settings, thus this clear and fast possibility to distinguish between multiple calculations is required. +The name of the model is not only be saved in the \emph{Informer} but it will +be used to generate a folder, where all of \gls{cnmc} output for this single +\gls{cnmc} workflow will be stored. +The latter should contribute to on the one hand that the \gls{cnmc} models can be easily distinguished from each other and on the other hand that all results of one model are obtained in a structured way. +\newline + +When executing \gls{cnmc} many terminal outputs are displayed. This allows the user to be kept up to date on the current progress on the one hand and to see important results directly on the other. +In case of unsatisfying results, \gls{cnmc} could be aborted immediately, instead of having to compute the entire workflow. In other words, if a computation expensive \gls{cnmc} task shall be performed, knowing about possible issues in the first steps can +be regarded as a time-saving mechanism. +The terminal outputs are formatted to include the date, time, type of message, the message itself and the place in the code where the message can be found. +The terminal outputs are colored depending on the type of the message, e.g., green is used for successful computations. +Colored terminal outputs are applied for the sake of readability. +More relevant outputs can easily be distinguished from others. +The log file can be considered as a memory since, in it, the terminal outputs are saved.\newline + +The stored terminal outputs are in the format as the terminal output described above, except that no coloring is utilized. +An instance, where the log file can be very helpful is the following. Some implemented quality measurements give very significant information about prediction reliability. Comparing different settings in terms of prediction capability would become very challenging if the terminal outputs would be lost whenever the \gls{cnmc} terminal is closed. The described \emph{Informer} and the log file can be beneficial as explained, nevertheless, they are optional. +That is, both come as two of the extra features mentioned above and can be turned off in \emph{settings.py}.\newline + +Once \emph{settings.py} is defined, \gls{cnmc} will filter the provided input, adapt the settings if required and send the corresponding parts to their respective steps. +The sending of the correct settings is depicted in figure \ref{fig_3_Workflow}, where the abbreviation \emph{st} stands for settings. +The second abbreviation \emph{SOP} is found for all 5 stages and denotes storing output and plots. All the outcome is stored in a compressed form such that memory can be saved. All the plots are saved as HTML files. There are many reasons to do so, however, to state the most crucial ones. First, the HTML file can be opened on any operating system. +In other words, it does not matter if Windows, Linux or Mac is used. +Second, the big difference to an image is that HTML files can be upgraded with, e.g., CSS, JavaScript and PHP functions. +Each received HTML plot is equipped with some post-processing features, e.g., zooming, panning and taking screenshots of the modified view. When zooming in or out the axes labels are adapted accordingly. Depending on the position of +the cursor, a panel with the exact coordinates of one point and other information such as the $\beta $ are made visible. \newline + +In the same way that data is stored in a compressed format, all HTML files are generated in such a way that additional resources are not written directly into the HTML file, but a link is used so that the required content is obtained via the Internet. +Other features associated with HTML plots and which data are saved will be explained in their respective section in this chapter. +The purpose of \gls{cnmc} is to generate a surrogate model with which predictions can be made for unknown model parameter values ${\beta}$. +For a revision on important terminology as model parameter value $\beta$ +the reader is referred to subsection \ref{subsec_1_1_1_Principles}. +Usually, in order to obtain a sound predictive model, machine learning methods require a considerable amount of data. Therefore, the \gls{ode} is solved for a set of $\vec{\beta }$. An in-depth explanation for the first is provided in +section \ref{sec_2_2_Data_Gen}. +The next step is to cluster all the received trajectories deploying kmeans++ \cite{Arthur2006}. Once this has been done, tracking can take be performed. +Here the objective is to keep track of the positions of all the centroids when $\beta$ is changed over the whole range of $\vec{\beta }$. +A more detailed description is given in section \ref{sec_2_3_Tracking}.\newline + + +The modeling step is divided into two subtasks, which are not displayed as such in figure \ref{fig_3_Workflow}. The first subtask aims to get a model that yields all positions of all the $K$ centroids for an unseen $\beta_{unseen}$, where an unseen $\beta_{unseen}$ is any $\beta$ that was not used to train the model. In the second subtask, multiple tasks are performed. +First, the regular \gls{cnm} \cite{Fernex2021} shall be applied to all the tracked clusters from the tracking step. For this purpose, the format of the tracked results is adapted in a way such that \gls{cnm} can be executed without having to modify \gls{cnm} itself. By running \gls{cnm} on the tracked data of all $\vec{\beta }$, the transition property tensors $\bm Q$ and $\bm T$ for all $\vec{\beta }$ are received. \newline + +Second, all the $\bm Q$ and the $\bm T$ tensors are stacked to form $\bm {Q_{stacked}}$ and $\bm {T_{stacked}}$ matrices. +These stacked matrices are subsequently supplied to one of the two possible implemented modal decomposition methods. +Third, a regression model for the obtained modes is constructed. +Clarifications on the modeling stage can be found in section \ref{sec_2_4_Modeling}.\newline + +The final step is to make the actual predictions for all provided $\beta_{unseen}$ and allow the operator to draw conclusions about the trustworthiness of the predictions. +For the trustworthiness, among others, the three quality measurement concepts explained in subsection +\ref{subsec_1_1_3_first_CNMc} +are leveraged. Namely, comparing the \gls{cnmc} and \gls{cnm} predicted trajectories by overlaying them directly. The two remaining techniques, which were already applied in regular \gls{cnm} \cite{Fernex2021}, are the \glsfirst{cpd} and the autocorrelation.\newline + +The data and workflow in figure \ref{fig_3_Workflow} do not reveal one additional feature of the implementation of \gls{cnmc}. That is, inside the folder \emph{Inputs} multiple subfolders containing a \emph{settings.py} file, e.g., different dynamical systems, can be inserted to allow a sequential run. In the case of an empty subfolder, \gls{cnmc} will inform the user about that and continue its execution without an error. +As explained above, each model will have its own folder where the entire output will be stored. +To switch between the multiple and a single \emph{settings.py} version, the {settings.py} file outside the \emph{Inputs} folder needs to be modified. The argument for that is \emph{multiple\_Settings}.\newline + +Finally, one more extra feature shall be mentioned. After having computed expensive models, it is not desired to overwrite the log file or any other output. +To prevent such unwanted events, it is possible to leverage the overwriting attribute in \emph{settings.py}. If overwriting is disabled, \gls{cnmc} would verify whether a folder with the specified model name already exists. +In the positive case, \gls{cnmc} would initially only propose an alternative model name. Only if the suggested model name would not overwrite any existing folders, the suggestion will be accepted as the new model name. +Both, whether the model name was chosen in \emph{settings.py} as well the new final replaced model name is going to be printed out in the terminal line.\newline + +In summary, the data and workflow of \gls{cnmc} are shown in Figure \ref{fig_3_Workflow} and are sufficient for a broad understanding of the main steps. +However, each of the 5 steps can be invoked individually, without having to run the full pipeline. Through the implementation of \emph{settings.py} \gls{cnmc} is highly flexible. All settings for the steps and the extra features can be managed with \emph{settings.py}. +A log file containing all terminal outputs as well a summary of chosen settings is stored in a separate file called \emph{Informer} are part of \gls{cnmc}'s tools. + diff --git a/Data/0_Latex_True/2_Task/1_Data_Gen.tex b/Data/0_Latex_True/2_Task/1_Data_Gen.tex new file mode 100644 index 0000000000000000000000000000000000000000..fb6e6e4d4d7c58f64efa36de23997cf48d0d7e36 --- /dev/null +++ b/Data/0_Latex_True/2_Task/1_Data_Gen.tex @@ -0,0 +1,263 @@ +% ===================================================================== +% ============= Data generation ======================================= +% ===================================================================== +\section{Data generation} +\label{sec_2_2_Data_Gen} +In this section, the first main step of the 5 steps shall be explained. +The idea of \gls{cnmc} is to create a surrogate model such that predictions for unseen $\beta_{unseen}$ can be made. +An unseen model parameter value $\beta_{unseen}$ is defined to be not incorporated in the training data. Generally in machine learning, the more linear independent data is available the higher the trustworthiness of the surrogate model is assumed to be. +Linear independent data is to be described as data which provide new information. +Imagining any million times a million data matrix $\bm {A_{n\, x\, n}}$, where $n = 1 \mathrm{e}{+6}$. +On this big data matrix $\bm A$ a modal decomposition method, e.g., the \glsfirst{svd} \cite{Brunton2019,gerbrands1981relationships}, shall be applied.\newline + +To reconstruct the original matrix $\bm A$ fully with the decomposed matrices only the non-zero modes are required. The number of the non-zero modes $r$ is often much smaller than the dimension of the original matrix, i.e., $r << n$. +If $r << n$, the measurement matrix $\bm A$ contains a high number of linear dependent data. This has the advantage of allowing the original size to be reduced. The disadvantage, however, is that $\bm A$ contains duplicated entries (rows, or columns). For this reason, $\bm A$ includes data parts which do not provide any new information. +In the case of $r = n$ only meaningful observations are comprised and $\bm A$ has full rank. +Part of feature engineering is to supply the regression model with beneficial training data and filter out redundant copies. +The drawback of $r = n$ is observed when the number of representative modes is chosen to be smaller than the full dimension $r < n$. +Consequently, valuable measurements could be lost. \newline + + +Moreover, if the dimension $n$ is very large, accuracy demands may make working with matrices unavoidable. +As a result, more powerful computers are required and the computational time is expected to be increased. +For this work, an attempt is made to represent non-linear differential equations by a surrogate model. +In addition, trajectories of many $\vec{\beta }$ can be handled quite efficiently. +Therefore, it attempted to provide sufficient trajectories as training data. +Having said that the data and workflow of this step, i.e., data generation, shall be described. +The general overview is depicted in figure \ref{fig_4_Data_Gen}. +Data generation corresponding settings are passed to its step, which invokes the \gls{ode} solver for the range of selected $\vec{\beta}$. +The trajectories are plotted and, both, all the obtained trajectories $F_(\vec{\beta})$ and their plots are saved. Note that $\vec{\beta}$ indicates that one differential equation is solved for selected $\beta$ values within a range of model parameter values $\vec{\beta}$.\newline +% +% ============================================== +% ========== Constraint Viol Workflow ========= +% ============================================== +\begin{figure} [!h] + \hspace*{-4cm} + \resizebox{1.2\textwidth}{!}{ + \input{2_Figures/2_Task/1_Data_Gen.tikz} + } + \caption{Data and workflow of the first step: Data generation} + \label{fig_4_Data_Gen} +\end{figure} +% +% +A detailed description will be given in the following. +First, in order to run this task, it should be activated in \emph{settings.py}. +Next, the user may change local output paths, define which kind of plots shall be generated, which dynamical model should be employed and provide the range $\vec{\beta}$. +As for the first point, the operator can select the path where the output of this specific task shall be stored. Note, that this is an optional attribute. Also, although it was only tested on Linux, the library \emph{pathlib} was applied. +Therefore, if the output is stored on a Windows or Mac-based operating system, which uses a different path system, no errors are expected. +\newline + +Regarding the types of plots, first, for each type of plot, the user is enabled to define if these plots are desired or not. Second, all the plots are saved as HTML files. Some reasons for that were provided at the beginning of this chapter and others which are important for trajectory are the following. +With in-depth explorations in mind, the user might want to highlight specific regions in order to get detailed and correct information. +For trajectories, this can be encountered when e.g., coordinates of some points within a specified region shall be obtained. Here zooming, panning, rotation and a panel that writes out additional information about the current location of the cursor can be helpful tools. The first type of plot is the trajectory itself with the initial condition as a dot in the state-space.\newline + +If desired, arrows pointing in the direction of motion of the trajectory can be included in the plots. +The trajectory, the initial state sphere and the arrows can be made invisible by one click on the legend if desired. The second type of representation is an animated plot, i.e., each trajectory $ F(\beta)$ is available as the animated motion. The final type of display is one plot that contains all $F(\vec{\beta})$ as a sub-figure. +The latter type of visualization is a very valuable method to see the impact of $\beta$ across the available $\vec{\beta }$ on the trajectories $ F(\vec{\beta})$. +Also, it can be leveraged as fast sanity check technique, i.e., if any $F(\beta )$ is from expectation, this can be determined quickly by looking at the stacked trajectory plots. +\newline + +If for presentation HTML files are not desired, clicking on a button will provide a \emph{png} image of the current view state of the trajectory. Note, that the button will not be on the picture. +Finally, modern software, especially coding environments, understood that staring at white monitors is eye-straining. Consequently, dark working environments are set as default. For this reason, all the mentioned types of plots have a toggle implemented. +It allows switching between a dark default and a white representation mode.\newline + +For choosing a dynamical system, two possibilities are given. +On the one hand, one of the 10 incorporated models can be selected by simply selecting a number, which corresponds to an integrated dynamical system. +On the other hand, a new dynamical system can be implemented. +This can be achieved without much effort by following the syntax of one of the 10 available models. The main adjustment is done by replacing the \gls{ode}. +The differential equations of all 10 dynamic systems that can be selected by default are given in equations \eqref{eq_6_Lorenz} to \eqref{eq_13_Insect} and the 3 sets of equations \eqref{eq_8_Chen} to \eqref{eq_14_VDP} are found the Appendix. +The latter 3 sets of equations are provided in the Appendix because they are not used for validating \gls{cnmc} prediction performance. +Next to the model's name, the reference to the dynamical system can be seen. +The variables $a$ and $b$ are constants. +Except for the Van der Pol, which is given in the Appendix \ref{ch_Ap_Dyna} as equation \eqref{eq_14_VDP}, all dynamical systems are 3-dimensional.\newline + +% ============================================================================== +% ============================ EQUATIONS ======================================= +% ============================================================================== +\begin{enumerate} + \item \textbf{Lorenz} \cite{lorenz1963deterministic}: + \begin{equation} + \label{eq_6_Lorenz} + \begin{aligned} + \dot x &= a\, (y - x) \\ + \dot y &= x\, (\beta - z -y) \\ + \dot z &= x y -\beta z + \end{aligned} + \end{equation} + + \item \textbf{Rössler} \cite{Roessler1976}: + \begin{equation} + \label{eq_7_Ross} + \begin{aligned} + \dot x &= -y -z \\ + \dot y &= x + ay \\ + \dot z &= b +z \, (x-\beta)\\ + \end{aligned} + \end{equation} + + + + \item \textbf{Two Scroll} \cite{TwoScroll}: + \begin{equation} + \label{eq_9_2_Scroll} + \begin{aligned} + \dot x &= \beta \, (y-x) \\ + \dot y &= x z \\ + \dot z &= a - by^4 + \end{aligned} + \end{equation} + + \item \textbf{Four Wing} \cite{FourWing}: + \begin{equation} + \label{eq_10_4_Wing} + \begin{aligned} + \dot x &= \beta x +y +yz\\ + \dot y &= yz - xz \\ + \dot z &= a + bxy -z + \end{aligned} + \end{equation} + + \item \textbf{Sprott\_V\_1} \cite{sprott2020we}: + \begin{equation} + \label{eq_11_Sprott_V_1} + \begin{aligned} + \dot x &= y \\ + \dot y &= -x - sign(z)\,y\\ + \dot z &= y^2 - exp(-x^2) \, \beta + \end{aligned} + \end{equation} + + + \item \textbf{Tornado} \cite{sprott2020we}: + \begin{equation} + \label{eq_12_Tornado} + \begin{aligned} + \dot x &= y \, \beta \\ + \dot y &= -x - sign(z)\,y\\ + \dot z &= y^2 - exp(-x^2) + \end{aligned} + \end{equation} + + + \item \textbf{Insect} \cite{sprott2020we}: + \begin{equation} + \label{eq_13_Insect} + \begin{aligned} + \dot x &= y \\\ + \dot y &= -x - sign(z)\,y \, \beta\\ + \dot z &= y^2 - exp(-x^2) + \end{aligned} + \end{equation} + + +\end{enumerate} +% ============================================================================== +% ============================ EQUATIONS ======================================= +% ============================================================================== + +Sprott\_V\_1, Tornado and Insect in equations \eqref{eq_11_Sprott_V_1} to \eqref{eq_13_Insect} are not present in the cited reference \cite{sprott2020we} in this expressed form. +The reason is that the introduced equations are a modification of the chaotic attractor proposed in \cite{sprott2020we}. The curious reader is invited to read \cite{sprott2020we} and to be convinced about the unique properties. +The given names are made up and serve to distinguish them. +Upon closer inspection, it becomes clear that they differ only in the place where $\beta$ is added. +All 3 models are highly sensitive to $\beta $, i.e., a small change in $\beta $ results in bifurcations. +For follow-up improvements of \gls{cnmc}, these 3 systems can be applied as performance benchmarks for bifurcation prediction capability.\newline + +Showing the trajectories of all 10 models with different $\vec{\beta} $ would claim too much many pages. Therefore, for demonstration purposes the +3 above-mentioned models, i.e., Sprott\_V\_1, Tornado and Insect are +displayed in figures \ref{fig_5_Sprott} to \ref{fig_11_Insect}. +Figure \ref{fig_5_Sprott} depicts the dynamical system Sprott\_V\_1 \eqref{eq_11_Sprott_V_1} with $\beta =9$. +Figures \ref{fig_6_Tornado} to \ref{fig_8_Tornado} presents the Tornado +\eqref{eq_12_Tornado} +with $\beta =16.78$ with 3 different camera perspectives. +Observing these figures, the reader might recognize why the name Tornado was chosen. The final 3 figures \ref{fig_9_Insect} to \ref{fig_11_Insect} display the Insect \eqref{eq_13_Insect} with $\beta =7$ for 3 different perspectives. +Other default models will be displayed in subsection \ref{subsec_3_5_2_Models}, as they were used for performing benchmarks. \newline + +% ============================================================================== +% ============================ PLTS ============================================ +% ============================================================================== +\begin{figure}[!h] + \centering + \includegraphics[width =\textwidth] + % In order to insert an eps file - Only_File_Name (Without file extension) + {2_Figures/2_Task/2_Sprott_V1.pdf} + \caption{Default model: Sprott\_V\_1 \eqref{eq_11_Sprott_V_1} with $\beta =9$} + \label{fig_5_Sprott} +\end{figure} + + + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/3_Tornado.pdf} + \caption{Default model: Tornado \eqref{eq_12_Tornado} with $\beta =16.78$, view: 1} + \label{fig_6_Tornado} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/4_Tornado.pdf} + \caption{Default model: Tornado \eqref{eq_12_Tornado} with $\beta =16.78$, view: 2} + \label{fig_7_Tornado} + \end{minipage} +\end{figure} + +\begin{figure}[!h] + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/5_Tornado.pdf} + \caption{Default model: Tornado \eqref{eq_12_Tornado} with $\beta =16.78$, view: 3} + \label{fig_8_Tornado} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/6_Insect.pdf} + \caption{Default model: Insect \eqref{eq_13_Insect} with $\beta =7$, view: 1} + \label{fig_9_Insect} + \end{minipage} +\end{figure} + +\begin{figure}[!h] + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/7_Insect.pdf} + \caption{Default model: Insect \eqref{eq_13_Insect} with $\beta =7$, view: 2} + \label{fig_10_Insect} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/8_Insect.pdf} + \caption{Default model: Insect \eqref{eq_13_Insect} with $\beta =7$, view: 3} + \label{fig_11_Insect} + \end{minipage} +\end{figure} +% ============================================================================== +% ============================ PLTS ============================================ +% ============================================================================== +\newpage +Having selected a dynamical system, the model parameter values for which the system shall be solved must be specified in \emph{settings.py}. +With the known range $\vec{\beta}$ the problem can be described, as already mentioned in subsection \ref{subsec_1_1_1_Principles}, with equation \eqref{eq_1_1_MPV}. + +\begin{equation} + F_{\gls{cnmc}} = \left(\dot{\vec{x}}(t), \, \vec{\beta} \right) = + \left( \frac{\vec{x}(t)}{dt}, \, \vec{\beta} \right) = + f(\vec{x}(t), \, \vec{\beta} ) + \tag{\ref{eq_1_1_MPV}} +\end{equation} + +The solution to \eqref{eq_1_1_MPV} is obtained numerically by applying \emph{SciPy's RK45} \gls{ode} solver. If desired \gls{cnmc} allows completing this task in parallel. Additional notes on executing this task in parallel are given in section \ref{sec_Motivation}. The main reason for relying on \emph{RK45} is that it is commonly known to be a reliable option. +Also, in \cite{Butt2021} \emph{RK45} was directly compared with \emph{LSODA}. The outcome was that \emph{LSODA} was slightly better, however, the deviation between \emph{RK45's} and \emph{LSODA's} performance was found to be negligible. +In other words, both solvers fulfilled the accuracy demands. +Since chaotic systems are known for their \glsfirst{sdic} any deviation, even in the $\mathcal{O} (1 \mathrm{e}{-15})$, will be amplified approximately exponentially and finally will become unacceptably high. +Therefore, it was tested, whether the \emph{RK45} solver would allow statistical variations during the solution process. +For this purpose, the Lorenz system \cite{lorenz1963deterministic} was solved multiple times with different time ranges. The outcome is that \emph{RK45} has no built-in statistical variation. +Simply put, the trajectory of the Lorenz system for one constant $\beta $ will not differ when solved multiple times on one computer.\newline + + +Comparing \emph{first CNMc} and \gls{cnmc} the key takeaways are that \gls{cnmc} has 10 in-built dynamical systems. +However, desiring to implement a new model is also achieved in a way that is considered relatively straightforward. +Important settings, such as the model itself, the $\vec{\beta }$, plotting and storing outcome can be managed with the \emph{settings.py}. The plots are generated and stored such that post-processing capabilities are supplied. diff --git a/Data/0_Latex_True/2_Task/2_Clustering.tex b/Data/0_Latex_True/2_Task/2_Clustering.tex new file mode 100644 index 0000000000000000000000000000000000000000..9447ddd693a4522f0be2a8af9d42afaa06d760ba --- /dev/null +++ b/Data/0_Latex_True/2_Task/2_Clustering.tex @@ -0,0 +1,273 @@ +% ============================================================================== +% =========================== Clustering ======================================= +% ============================================================================== +\section{Clustering} +\label{sec_2_3_Clustering} +In this section, the second step, the clustering of all trajectories $(\vec{\beta})$, is explained. +The main idea is to represent $F(\vec{\beta})$ through movement on centroids. +The data and workflow of clustering are very similar to the previous step of the data generation. It can be comprehended with figure \ref{fig_12_Clust}. +All settings for this step can be individually configured in \emph{settings.py}. +The $ F(\vec{\beta})$ and cluster-algorithm specific parameters are filtered and provided to the clustering algorithm. The solutions are plotted and both, the plots and the clustered output are saved.\newline + +% ============================================== +% ========== Clustering Workflow =============== +% ============================================== +\begin{figure} [!h] + \hspace*{-4cm} + \resizebox{1.2\textwidth}{!}{ + \input{2_Figures/2_Task/9_Clust.tikz} + } + \caption{Data and workflow of the second step: Clustering} + \label{fig_12_Clust} +\end{figure} +% +% + +Data clustering is an unsupervised machine learning technique. +There are a variety of approaches that may be used for this, e.g., +k-means, affinity propagation, mean shift, +spectral clustering and Gaussian mixtures. All the +methods differ in their use cases, scalability, +metric or deployed norm and required input parameters. The latter +is an indicator of customization abilities. Since k-means can be used for very large +data sets and enables easy and fast implementation, k-means is preferred. Furthermore, David Arthur et al. +\cite{Arthur2006} introduced k-means++, which is known +to outperform k-means. Therefore, \gls{cnmc} uses k-means++ +as its default method for data clustering. +Note, applying k-means++ is not new in \gls{cnmc}, but it was already applied in the regular \gls{cnm} \cite{Fernex2021}.\newline + +In order to +cover the basics of k-means and k-means++, two terms +should be understood. +Picturing a box with 30 points in it, where 10 are located on the left, 10 +in the middle and 10 on the right side of the box. Adhering to such a +constellation, it is appealing to create 3 groups, one for +each overall position (left, center and right). Each group would +contain 10 points. These groups are called clusters and the +geometrical center of each cluster is called a centroid. +A similar thought experiment is visually depicted in \cite{Sergei_Visual}. +Considering a dynamical system, the trajectory is retrieved by integrating the \gls{ode} numerically at discrete time steps. +For each time step the obtained point is described with one x-, y- and z-coordinate. +Applying the above-mentioned idea on, e.g., the Lorenz system \cite{lorenz1963deterministic}, defined as the set of equations in \eqref{eq_6_Lorenz}, then the resulting centroids can be seen in figure \ref{fig_13_Clust}. +The full domains of the groups or clusters are color-coded in figure \ref{fig_14_Clust}.\newline + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/10_Clust.pdf} + \caption{Centroids of the Lorenz system \eqref{eq_6_Lorenz} with $\beta =28$} + \label{fig_13_Clust} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/11_Clust.pdf} + \caption{Cluster domains of the Lorenz system \eqref{eq_6_Lorenz} with $\beta =28$} + \label{fig_14_Clust} + \end{minipage} +\end{figure} + + +Theoretically, +the points which are taken to calculate a center could be assigned +weighting factors. However, this is not done in \gls{cnmc} and therefore only +be outlined as a side note. After being familiar with the concept of +clusters and centroids, the actual workflow of k-means shall be explained. +For initializing +k-means, a number of clusters and an initial guess for the centroid +positions must be provided. Next, the distance between all the data +points and the centroids is calculated. The data points closest to a +centroid are assigned to these respective clusters. In other words, each data point is assigned to that cluster for which +the corresponding centroid exhibits the smallest distance +to the considered data point. +The geometrical mean value for all clusters is subsequently determined for all cluster-associated residents' data points. With the +new centroid positions, the clustering is +performed again. \newline + +Calculating the mean of the clustered +data points (centroids) and performing clustering based on the +distance between each data point and the centroids +is done iteratively. The iterative process stops when +the difference between the prior and current +centroids position is equal to zero or +satisfies a given threshold. Other explanations with pseudo-code and +visualization for better understanding can be found\cite{Frochte2020} +and \cite{Sergei_Visual}, respectively\newline + +% ------------------------------------------------------------------------------ +% --------------------- PART 2 ------------------------------------------------- +% ------------------------------------------------------------------------------ +Mathematically k-means objective can be expressed +as an optimization problem with the centroid +position $\bm{\mu_}j$ as the design variable. That is given in equation +\eqref{eq_1_k_means} (extracted from \cite{Frochte2020}), where +$\bm{\mu_}j$ and $\mathrm{D}^{\prime}_j$ denote the centroid or +mean of the \emph{j}th cluster and the data points +belonging to the \emph{j}th cluster, respectively. +The distance between all the \emph{j}th cluster data points +and its corresponding \emph{j}th centroid is +stated as $\mathrm{dist}(\bm{x}_j, \bm{\mu}_j)$. + +\begin{equation} + \label{eq_1_k_means} + \argmin_{\bm{\mu}_j}\sum_{j=1}^k \; \sum_{\bm{x}_j \in \mathrm{D}^{\prime}_j } + \mathrm{dist}(\bm{x}_j, \bm \mu_j) +\end{equation} + +Usually, the k-means algorithm is deployed with a Euclidean metric +and equation \eqref{eq_1_k_means} becomes \eqref{eq_2_k_Means_Ly}, which +is known as the Lloyd algorithm \cite{Frochte2020, Lloyd1982}. The +Lloyd algorithm can be understood as the minimization of the variance. +Thus, it is not necessarily true that k-means is equivalent to reducing +the variance. It is only true when the Euclidean norm is used. + +\begin{equation} + \label{eq_2_k_Means_Ly} + \argmin_{\bm{\mu}_j}\sum_{j=1}^k \; \sum_{\bm{x}_j \in \mathrm{D}^{\prime}_j } + \| \bm x_j - \bm \mu_j \|^2 +\end{equation} + +The clustering algorithm highly depends on the provided +initial centroids positions. Since in most cases, these +are guessed, there is no guarantee of a reliable outcome. +Sergei Vassilvitskii, one of the founders of +k-means++, says in one of his presentations \cite{Sergei_Black_Art}, +finding a good set of initial points would be black art. +Arthur et al. \cite{Arthur2006} state, +that the speed and simplicity of k-means would be appealing, not +its accuracy. There are many natural examples for which +the algorithm generates arbitrarily bad clusterings \cite{Arthur2006}.\newline + + +An alternative or improved version of k-means is the already +mentioned k-means++, which +only differs in the initialization step. Instead of providing +initial positions for all centroids, just one centroid's +position is supplied. The remaining are calculated based on +maximal distances. In concrete, the distance between all +data points and the existing centroids is computed. The data point +which exhibits the greatest distance is added to the +list of collected centroids. This is done until all $k$ +clusters are generated. A visual depiction of this process +is given by Sergei Vassilvitskii in \cite{Sergei_Visual}. +Since the outcome of k-means++ is more reliable than +k-means, k-means++ is deployed in \gls{cnmc}.\newline + +After having discussed some basics of k-means++, it shall be +elaborated on how and why the solution of the dynamical system should be +clustered. The solution of any dynamical system returns a trajectory. +If the trajectory repeats itself or happens to come close +to prior trajectories without actually touching them, +characteristic sections can be found. +Each characteristic section in the phase space is +captured by a centroid. The movement from one +centroid to another is supposed to portray the original +trajectory. With a clustering algorithm, these representative +characteristic locations in the phase space are obtained. +Since the clusters shall capture an entire trajectory, it is +evident that the number of clusters is an +essential parameter to choose. Latter fact becomes even +more clear when recalling that a trajectory can be multi-modal or complex.\newline + +In the case of a highly non-linear +trajectory, it is obvious that many clusters are demanded in +order to minimize the loss of the original +trajectories. The projection of the real trajectory +to a cluster-based movement can be compared to +a reduced-order model of the trajectory. In this context, +it is plausible to refer to the centroids as +representative characteristic locations. Furthermore, \gls{cnm} and thus, \gls{cnmc}, exploits graph theory. +Therefore, the centroids can be denoted as nodes or characteristic nodes.\newline + +The remaining part of this section will be devoted exclusively to the application of \gls{cnmc}. First, the leveraged kmeans++ algorithm is from the machine learning \emph{Python} library \emph{Scikit-learn} \cite{scikit-learn}. +Crucial settings, e.g., the number of clusters $K$, the maximal number of iterations, the tolerance as a convergence criterion and the number of different centroid seeds with which k-means is executed. +The operator can decide if the clustering step shall be performed or skipped. +The path for outputs can be modified and generating plots is also optional. +For the clustering stage, there are 4 types of plots available. +Two types of plots are depicted in figures \ref{fig_13_Clust} and \ref{fig_14_Clust}. +With the generated HTML plots the same features as described in section \ref{sec_2_2_Data_Gen} are available, e.g., receiving more information through pop-up panels and +switching between a dark and white mode. + \newline + +The other two types of charts are not displayed here because they are intended to be studied as HTML graphs where the output can be viewed from multiple angles. +The first type shows the clustered output of one system for two different $\beta$ next to each other. +The centroids are labeled randomly as will be shown in subsection \ref{subsec_2_2_1_Parameter_Study}. +Consequently, the centroids representing the immediate neighbors across the two separate $\beta $ have separate labels. +In the second remaining type of HTML graph, the closest centroids across the two different $\beta $ are connected through lines. +Also, in the same way, as it was done for the first step in the data generation an additional HTML file containing all $\vec{\beta } $ charts is generated. +\newline + +It can be concluded that the clustering step is performed by employing \emph{Scikit-learn's} kmeans++ implementation, which is well suited for a great number of points. As usual, all important settings can be controlled with \emph{settings.py}. + +\subsection{Parameter Study} +\label{subsec_2_2_1_Parameter_Study} +In this subsection, the effects on the clustering step caused by the parameter \emph{n\_init} shall be named. After that, the random labeling of the centroids is to be highlighted. +With the parameter \emph{n\_init} it is possible to define how often the k-means algorithm will be executed with different centroid seeds \cite{scikit-learn}. +For a reliable clustering quality \emph{n\_init} should be chosen high. However, the drawback is that with increasing \emph{n\_init} the calculation time increases unacceptably high. Having chosen \emph{n\_init} too high, the clustering part becomes the new bottleneck of the entire \gls{cnmc} pipeline. \newline + +To conduct the parameter study, clustering was performed using the following \emph{n\_init} values: +$\text{\emph{n\_init}} = \{100,\, 200, \, 400,\, 800,\, 1000, \, 1200, \, 1500 \}$. +Some results are presented in figures \ref{fig_15} to \ref{fig_20}. +It can be observed that when all the different \emph{n\_init} values are compared, visually no big difference in the placing of the centroids can be perceived. +A graphical examination is sufficient because even with \emph{n\_init} values that differ by only by the number one ($n_{init,1} - n_{init,2} = 1 $), the centroid positions are still expected to vary slightly. +Simply put, only deviations on a macroscopic scale, which can be noted visually are searched for. As a conclusion it can be said that $\text{\emph{n\_init}} = 100$ and $\text{\emph{n\_init}} = 1500$ can be considered as an equally valuable clustering outcome. +Hence, \emph{n\_init} the computational expense can be reduced by deciding on a reasonable small value for \emph{n\_init}.\newline + +The second aim of this subsection was to highlight the fact that the centroids are labeled randomly. For this purpose, the depicted figures \ref{fig_15} to \ref{fig_20} shall be examined. Concretely, any of the referred figures can be compared with the remaining figures to be convinced that the labeling is not obeying any evident rule. + + +% ============================================================================== +% ============================ PLTS ============================================ +% ============================================================================== +\begin{figure}[!h] + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/0_N_Study/0_K_100.pdf} + \caption{Lorenz \eqref{eq_6_Lorenz}, $\beta =28$, $\text{n\_init}= 100$} + \label{fig_15} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/0_N_Study/1_K_200.pdf} + \caption{Lorenz \eqref{eq_6_Lorenz}, $\beta =28$, $\text{n\_init}= 200$} + \label{fig_16} + \end{minipage} +\end{figure} + +\begin{figure}[!h] + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/0_N_Study/2_K_400.pdf} + \caption{Lorenz \eqref{eq_6_Lorenz}, $\beta =28$, $\text{n\_init}= 400$} + \label{fig_17} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/0_N_Study/3_K_1000.pdf} + \caption{Lorenz \eqref{eq_6_Lorenz}, $\beta =28$, $\text{n\_init}= 1000$} + \label{fig_18} + \end{minipage} +\end{figure} + +\begin{figure}[!h] + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/0_N_Study/4_K_1200.pdf} + \caption{Lorenz \eqref{eq_6_Lorenz}, $\beta =28$, $\text{n\_init}= 1200$} + \label{fig_19} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/0_N_Study/5_K_1500.pdf} + \caption{Lorenz \eqref{eq_6_Lorenz}, $\beta =28$, $\text{n\_init}= 1500$} + \label{fig_20} + \end{minipage} +\end{figure} +% ============================================================================== +% ============================ PLTS ============================================ +% ============================================================================== + diff --git a/Data/0_Latex_True/2_Task/3_Tracking.tex b/Data/0_Latex_True/2_Task/3_Tracking.tex new file mode 100644 index 0000000000000000000000000000000000000000..9ef5ce8895c52f15ab9d546159424e4ed46755e0 --- /dev/null +++ b/Data/0_Latex_True/2_Task/3_Tracking.tex @@ -0,0 +1,107 @@ +\section{Tracking} +\label{sec_2_3_Tracking} +In this section, it is the pursuit to explain the third step, tracking, by initially answering the following questions. +What is tracking, why is it regarded to be complex and why is it important? +In the subsection \ref{subsec_2_3_1_Tracking_Workflow} the final workflow will be elaborated. Furthermore, a brief discussion on the advancements in tracking of \gls{cnmc} to \emph{first CNMc} shall be given. +Since the data and workflow of tracking are extensive, for the sake of a better comprehension the steps are visually separated with two horizontal lines in the upcoming subsection. +The lines introduce new tracking subtasks, which are intended to provide clear guidance to orient readers within the workflow. +Note, the tracking results will be presented in subsection \ref{sec_3_1_Tracking_Results}. \newline + +To define the term tracking some explanations from subsection \ref{subsec_1_1_3_first_CNMc} shall be revisited. +Through the clustering step, each centroid is defined with a label. +The label allocation is performed randomly as showed in subsection \ref{subsec_2_2_1_Parameter_Study}. +Thus, matching centroid labels from one model parameter value $\beta_i$ to +another model parameter value $\beta_j$, where $i \neq j$, becomes an issue. +In order first, to understand the term tracking, figure \ref{fig_21} shall be considered. +The centroids of the Lorenz system \eqref{eq_6_Lorenz} for two $\beta$ values $\beta_i = 31.333$ in green and $\beta_j = 32.167$ in yellow are plotted next to each other. +The objective is to match each centroid of $\beta_i$ with one corresponding centroid of $\beta _j$. +It is important to understand that the matching must be done across the two $\beta $ values $\beta_i$ and $\beta_j$ and not within the same $\beta$.\newline + +% ============================================================================== +% ============================ PLTS ============================================ +% ============================================================================== +\begin{figure}[!h] + \centering + \includegraphics[width =0.8\textwidth]{2_Figures/2_Task/1_Tracking/0_Matching.pdf} + \caption{Unrealistic tracking example for the Lorenz system with $\beta_i=31.333, \, \beta_j=32.167, \, K = 10$} + \label{fig_21} +\end{figure} + +By inspecting the depicted figure closer it can be observed that each green centroid $\beta_i$ has been connected with a corresponding yellow centroid $\beta_j$ with an orange line. +The centroids which are connected through the orange lines shall be referred to as \emph{inter} $\beta$ \emph{connected} centroids. +Determining the \emph{inter} $\beta$ \emph{connected} centroids is the outcome of tracking. Thus, it is matching centroids across different model parameter values $\beta$ based on their corresponding distance to each other. The closer two \emph{inter} $\beta $ centroids are, the more likely they are to be matched. +The norm for measuring distance can be chosen from +one of the 23 possible norms defined in \emph{SciPy} \cite{2020SciPy-NMeth}. +However, the default metric is the euclidean norm which is defined as equation \eqref{eq_16}.\newline + + \begin{equation} + \label{eq_16} + d(\vec x, \vec y) = \sqrt[]{\sum_{i=1}^n \left(\vec{x}_i - \vec{y}_i\right)^2} + \end{equation} + +\vspace{0.2cm} +The orange legend on the right side of figure \ref{fig_21} outlines the tracked results. +In this rare and not the general case, the \emph{inter} $\beta$ labeling is straightforward in two ways. First, the closest centroids from $\beta_i$ to $\beta_j$ have the same label. Generally, this is not the case, since the centroid labeling is assigned randomly. +Second, the \emph{inter} $\beta$ centroid positions can be matched easily visually. +Ambiguous regions, where visually tracking is not possible, are not present. +To help understand what ambiguous regions could look like, figure \ref{fig_22} shall be viewed. It illustrates the outcome of the Lorenz system \eqref{eq_6_Lorenz} with $\beta_i=39.004,\, \beta_j = 39.987$ and with a number of centroids of $K= 50$. +Overall, the tracking seems to be fairly obvious, but paying attention to the centroids in the center, matching the centroids becomes more difficult. +This is a byproduct of the higher number of centroids $K$. +With more available centroids, more centroids can fill a small area. +As a consequence, multiple possible reasonable matchings are allowed. +Note, that due to spacing limitations, not all tracking results are listed in the right orange legend of figure \ref{fig_22}. +The emergence of such ambiguous regions is the main driver why tracking is considered to be complex.\newline + +\begin{figure}[!h] + \centering + \includegraphics[width =\textwidth] + {2_Figures/2_Task/1_Tracking/2_Ambiguous_Regions.pdf} + \caption{Ambiguous regions in the tracking example for the Lorenz system with $\beta_i=39.004,\, \beta_j = 39.987,\, K= 50$} + \label{fig_22} +\end{figure} + + +In general, it can be stated that the occurrence of ambiguous regions can be regulated well with the number of centroids $K$. +$K$ itself depends on the underlying dynamical system. +Thus, $K$ should be only as high as required to capture the complexity of the dynamical system. +Going above that generates unnecessary many centroids in the state space. +Each of them increases the risk of enabling ambiguous regions to appear. Consequently, incorrect tracking results can arise.\newline + + +In figure \ref{fig_23} a second example of tracked outcome for the Lorenz system \eqref{eq_6_Lorenz} with $\beta_i=30.5,\, \beta_j=31.333, \, K = 10$ is given. +Here it can be inspected that the immediate \emph{inter} $\beta $ centroid neighbors do not adhere to the same label. Hence, it is representative of a more general encountered case. The latter is only true when the $K$ is chosen in a reasonable magnitude. The reason why centroids are tracked by employing distance measurements is grounded in the following. +If the clustering parameter \emph{n\_init} is chosen appropriately (see \ref{subsec_2_2_1_Parameter_Study}), the position of the centroids are expected to change only slightly when $\beta $ is changed. +In simpler terms, a change in $\beta$ should not move a centroid much, if the clustering step was performed satisfactorily in the first place. + +\begin{figure}[!h] + \centering + \includegraphics[width =0.8\textwidth]{2_Figures/2_Task/1_Tracking/1_Non_Matching.pdf} + \caption{Realistic tracking example for the Lorenz system with $\beta_i=30.5$ and $\beta_j=31.333$} + \label{fig_23} +\end{figure} + +The next point is to answer the question, of why tracking is of such importance to \gls{cnmc}. +The main idea of \gls{cnmc} is to approximate dynamical systems and allow prediction trajectories for unseen $\beta_{unseen}$. +The motion, i.e., the trajectory, is replicated by the movement from one centroid to another centroid. Now, if the centroids are labeled wrong, the imitation of the motion is wrong as well. +For instance, the considered dynamical system is only one movement from left to right. +For instance, imagining a dynamical system, where the trajectory is comprised of solely one movement. +Namely, moving from left to right. +Following that, labeling the left centroid $c_l$ to be the right centroid $c_r$, would fully change the direction of the movement, i.e. $(c_l \rightarrow c_r) \neq (c_r \rightarrow c_l)$. +In one sentence, the proper tracking is vital because otherwise \gls{cnmc} cannot provide reliably predicted trajectories. \newline + +\subsection{Tracking workflow} +\label{subsec_2_3_1_Tracking_Workflow} +In this subsection, the main objective is to go through the designed tracking workflow. As side remarks, other attempted approaches to tracking and the reason for their failure will be mentioned briefly.\newline + + +To recapitulate on the term tracking, it is a method to match centroids across a set of different model parameter values $\vec{\beta}$ based on their respective distances. One obvious method for handling this task could be \gls{knn}. However, having implemented it, undesired results were encountered. +Namely, one centroid label could be assigned to multiple centroids within the same $\beta$. The demand for tracking, on the hand, is that, e.g., with $K=10$, each of the 10 available labels is found exactly once for one $\beta $. +Therefore, it can be stated that \gls{knn} is not suitable for tracking, as it might not be possible to impose \gls{knn} to comply with the tracking demand.\newline + +The second approach was by applying \gls{dtw}. The conclusion is that DTW's tracking results highly depended on the order in which the inter $\beta $ distances are calculated. Further, it can be stated that DTW needs some initial wrong matching before the properly tracked outcomes are provided. +The initial incorrect matching can be seen as the reason, why DTW is mostly used when very long signals, as in speech recognition, are provided. +In these cases, some mismatching is tolerated. For \gls{cnmc}, where only a few $K$ centroids are available, a mismatch is strongly unwelcome.\newline + +The third method was based on the sequence of the labels. +The idea was that the order of the movement from one centroid to another centroid is known. In other terms, if the current position is at centroid $c_i$ and the next position for centroid $c_{i+1}$ is known. Assuming that the sequences across the $\vec{\beta}$ should be very similar to each other, a majority vote should return the correct tracking results. It can be recorded that this was not the case and the approach was dismissed.\newline + diff --git a/Data/0_Latex_True/2_Task/4_Track_Workflow.tex b/Data/0_Latex_True/2_Task/4_Track_Workflow.tex new file mode 100644 index 0000000000000000000000000000000000000000..0b31398a845fa4be461b42b456599670067d2c07 --- /dev/null +++ b/Data/0_Latex_True/2_Task/4_Track_Workflow.tex @@ -0,0 +1,131 @@ +After having explained 3 methods, which did not lead to a satisfactory outcome, the data and workflow of the final successful approach shall be presented. +First very concisely, followed by an in-depth account. +For that, figure \ref{fig_24_Tracking_Workflow} shall be analyzed. +The initial input is obtained through \emph{settings.py}, where execution, storage and plotting attributes are defined. +For the further sub-steps, it shall be noted that the index big O stands for output of the respective sub-step. +The clustered results from step two, described in section \cite{sec_2_3_Clustering} are used as input for the so-called ordering step. +The ordered state can be stored and plotted if desired and exploited to calculate a cost matrix $\bm A (\vec{\beta})$. \newline + + % ============================================================================= + % ================ Tracking Workflow ========================================== + % ============================================================================= + \begin{sidewaysfigure} [!] + \hspace*{-2cm} + \resizebox{\textwidth}{!}{ + \input{2_Figures/2_Task/1_Tracking/3_Track.tikz} +} + \caption{General data and workflow overview of the third step, tracking} + \label{fig_24_Tracking_Workflow} + \end{sidewaysfigure} + +The tracking demand is applied on $\bm A (\vec{\beta})$, e.g., each row element must be matched to exactly one column element with the constraint that their additive sum is minimized. +It will return a suggested best path, i.e., the proposed optimized tracking path. +It is possible that the proposed optimized tracking path may not be feasible concerning a linking condition, it undergoes a validity check. +If required the suggested path will be chopped off and replaced such that the linking condition is met. The final path is then imposed to a transition such that the centroid labeling across all available $\vec{\beta}$ matches. +The transformed final paths are designated as the tracked outcome and can be saved and plotted.\newline + +Since the fast description leaves some open questions, the in-depth explanation shall be tackled. Defining \emph{settings.py} is +analogously done to the two previous steps, i.e. data generation \ref{sec_2_2_Data_Gen} and clustering \ref{sec_2_3_Clustering}. +Therefore, accounts regarding the sub-tasks \emph{settings.py} and the clustered data are not repeated.\newline + +\textbf{1. Ordering$\,(\vec{\boldsymbol\beta})$} +\hrule +\vspace{0.05cm} +\hrule +\vspace{0.25cm} +The ordering of the clustered data can be understood by viewing figures \ref{fig_25_Clust} and \ref{fig_26_Ord}. +Both depict the clustered Lorenz system \eqref{eq_6_Lorenz} for $\beta = 30.5$. +The difference between the two figures is that figure \ref{fig_25_Clust} shows the clustering as it is obtained from the clustering step. It shall be referred to as the initial state. +Figure \ref{fig_26_Ord} on the other shows the ordered state, i.e. the state after applying the ordering sub-step. The labeling of the ordered step represents to some degree the actual movement of the trajectory. +It can be observed that moving from label $1$ up to $6$ in a consecutive manner the resulting trajectory is generating the left ear of the Lorenz system. +Analogously, moving from label $7$ up to $10$ produces the right ear of the Lorenz system. Furthermore, the transition from centroid $6$ to $7$ captures the transition from one ear to the other.\newline + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/1_Tracking/4_Clus_30_5.pdf} + \caption{Initial State - centroids of the Lorenz system \eqref{eq_6_Lorenz} $\beta =30.5$} + \label{fig_25_Clust} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/2_Task/1_Tracking/5_Ordered_30_5.pdf} + \caption{Ordered State - centroids of the Lorenz system \eqref{eq_6_Lorenz} $\beta =30.5$} + \label{fig_26_Ord} + \end{minipage} + \end{figure} + + The way the ordered state is retrieved is as follows. The entire sequence of the motion along the centroids is available. In simpler terms, the first centroid from where the trajectory will start, all the upcoming centroids and the order in which they will be visited are known. + Therefore, the initial centroid can be labeled as $1$, the second as $2$ and so on. + However, it is important to note that with modifying one label of the trajectory sequence, the same label needs to be found in the entire sequence and modified as well. + Otherwise, the ordered-state is true for one turn and a wrong initial-ordered-state mixture is kept for the remaining turns. + Such an approach would also falsify the trajectory. + The labeling in the ordered state provides information about the trajectory. +Further, the original motion of the trajectory is untouched. Labeling the characteristic centroids with different numbers or with Greek letters does not impose any change on the original dynamics. For that to be fully true, the newly introduced labeling must be consistent across the entire sequence. +Although it is obvious, nevertheless \gls{cnmc} performs a sanity check, i.e., it is verified, whether the resulting trajectory in the ordered state is the same as the original trajectory. +Note, that all the same 4 types of plots stated in section \ref{sec_2_3_Clustering} are also available for visualizing the ordered state. +\newline + +\textbf{2. Calculating $\bm A \, (\vec{\boldsymbol\beta})$ \& best path$\,(\vec{\boldsymbol\beta})$ } +\hrule +\vspace{0.05cm} +\hrule +\vspace{0.25cm} +In the next sub-task the cost or similarity matrix $\bm A(\vec{\beta})$ is calculated. +First, the assignment problem shall be elaborated. +Let $\beta_1$ and $\beta_2$ be two different model parameter values $\beta_1 \neq \beta_2$ and both shall consist of $K$ centroids. Each centroid is not only associated with a label but described fully with a position. +The goal is to match each centroid from $\beta_1$ to exactly one corresponding centroid from $\beta_2$ such that the overall spatial distance is minimized. +This idea was given as part of the definition of the term tracking itself. +The difference between tracking and the assignment problem is that first, tracking solves the assignment problem multiple times and thus the assignment problem is only a part of tracking. +Second, the tracked results are also feasible and transformed, which will be covered later in this subsection.\newline + +For construction an illustrative cost matrix $\bm A(\vec{\beta})$, +3 pairwise different $\beta$ values, $\beta_1, \, \beta_2, \beta_3$ with $(\beta_1,\neq \beta_2) \neq \beta_3$ shall be considered. +Again, each $\beta_i$, where $i = \{1,2,3\}$, consists of $K$ centroid positions. +The assignment problem is solved by exploiting \emph{SciPy} \cite{2020SciPy-NMeth}. +Its solution, e.g., for $\beta_1$ and $\beta_2$ only matches the centroids from the two different $\beta$ such that the overall spatial distance is minimized. +The addition of the spatial distances of $\beta_1$ and $\beta_2$ shall be designated as the cost value $\beta_{i=1,j=2}$. +With this level of understanding, the similarity matrix given in equation \eqref{eq_17_Dist_A} can be read.\newline + +\begin{equation} + \bm A_{3\times 3}\,(\vec{\beta}) = + \begin{bmatrix} + \beta_{1,1} & \beta_{1,2} & \beta_{1,3}\\ + \beta_{2,1} &\beta_{2,2} & \beta_{2,3}\\ + \beta_{3,1} & \beta_{3,2} &\beta_{3,3} + \end{bmatrix} + \label{eq_17_Dist_A} + \end{equation} + +Considering equation \eqref{eq_18_Expl}, if the assignment problem is solved for equal $\beta \Rightarrow \beta_i = \beta_j$, the centroid positions overlap exactly. +As a consequence, the distance between all the centroids across the two same $\beta$ is zero. +Further, adding up the zero spatial distances yields a cost of zero $\beta_{i,i} = 0$.\newline + +\begin{equation} + \begin{aligned} + i &= j \\ + \Rightarrow \beta_i &= \beta_j \\ + \Rightarrow \beta_{i,j} &= \beta_{i,i} = 0 + \end{aligned} + \label{eq_18_Expl} +\end{equation} + +The cost matrix $\bm A\,(\vec{\beta})$ compares each $\beta_i$ with all the remaining $\beta_j$, where $i = \{1, \,2, \cdots, n_{\beta}\}, \; j = \{1, \,2, \cdots, n_{\beta}\}$ and $ n_{\beta}$ denotes the number of the pairwise different $\vec{\beta}$. +The outcome of each possible comparison $\beta_i$ with $\beta_j$ is a cost value representing a similarity between $\beta_i$ and $\beta_j$. +Obviously, in the case trivial as described above $\beta_i = \beta_j$, the similarity is maximized and the cost is minimized. +To find the best path, i.e., proposed tracking results, the trivial entries on the diagonal entries must be prohibited. Obeying that the cost matrix $\bm A\,(\vec{\beta})$ can be reformulated as equation \eqref{eq_19}. +Moreover, $\bm A\,(\vec{\beta})$ is symmetrical, therefore computing one triangular part of the cost matrix is sufficient. +The triangular part can be filled by mirroring along with the diagonal entries $\beta_{i,i}$ as outlined for the lower triangular matrix in equation \eqref{eq_19}. +\newline + +\begin{equation} + \bm A_{3\times 3}\,(\vec{\beta}) = + \begin{bmatrix} + \infty & \beta_{1,2} & \beta_{1,3}\\ + \beta_{2,1} = \beta_{1,2} & \infty & \beta_{2,3}\\ + \beta_{3,1} = \beta_{1,3} & \beta_{3,2} =\beta_{2,3} & \infty\\ + \end{bmatrix} + \label{eq_19} +\end{equation} \ No newline at end of file diff --git a/Data/0_Latex_True/2_Task/5_Track_Validity.tex b/Data/0_Latex_True/2_Task/5_Track_Validity.tex new file mode 100644 index 0000000000000000000000000000000000000000..0e06679212c3ad7124e8b6cea476b70d4368a7a5 --- /dev/null +++ b/Data/0_Latex_True/2_Task/5_Track_Validity.tex @@ -0,0 +1,177 @@ +The objective behind exploiting symmetry is to reduce computation time. +Having defined the cost matrix $\bm A\,(\vec{\beta})$ as given in equation \eqref{eq_19}, it can be used to again solve the assignment problem. +Its output is denoted as path$_O\,(\vec{\beta })$ in figure \ref{fig_24_Tracking_Workflow}.\newline + +\textbf{3. Validity check} +\hrule +\vspace{0.05cm} +\hrule +\vspace{0.25cm} +The validity check can also be regarded as a feasibility investigation. +To grasp what the feasibility constraint is table \ref{tab_1} shall be analyzed.\newline + +% ------------------------------------------------------------------------------ +% ------------------------------ TABLE ----------------------------------------- +% ------------------------------------------------------------------------------ +\begin{table}[!h] + + \begin{minipage}{.3\linewidth} + \caption{\emph{Direct feasible}} + \centering + \begin{tabular}{c|c} + \multicolumn{1}{c}{$\beta_i$} & \multicolumn{1}{c}{$\beta_j$} \\ + \hline + \hline + 1 & 2 \\ + \hline + 2 & 3 \\ + \hline + 3 & 4 \\ + \hline + 4 & 5 \\ + \hline + 5 & 6 \\ + \hline + 6 & 7 + \label{tab_1} + \end{tabular} + \end{minipage} + \begin{minipage}{.3\linewidth} + \centering + \caption{feasible} + \begin{tabular}{c|c} + \multicolumn{1}{c}{$\beta_i$} & \multicolumn{1}{c}{$\beta_j$} \\ + \hline + \hline + 1 & 2 \\ + \hline + 2 & 3 \\ + \hline + 3 & 6 \\ + \hline + 4 & 7 \\ + \hline + 5 & 4 \\ + \hline + 6 & 5 + \label{tab_2} + \end{tabular} + \end{minipage} + \begin{minipage}{.3\linewidth} + \centering + \caption{infeasible} + \begin{tabular}{c|c} + \multicolumn{1}{c}{$\beta_i$} & \multicolumn{1}{c}{$\beta_j$} \\ + \hline + \hline + 1 & 2 \\ + \hline + 2 & 1 \\ + \hline + 3 & 5 \\ + \hline + 4 & 6 \\ + \hline + 5 & 7 \\ + \hline + 6 & 3 + \label{tab_3} + \end{tabular} + \end{minipage} + \caption{Examples for feasible and infeasible best tracking paths} + \label{tab_4} +\end{table} + +% ------------------------------------------------------------------------------ +% ------------------------------ TABLE ----------------------------------------- +% ------------------------------------------------------------------------------ + + +It can be observed that in total the 7 model parameter values $(\vec{\beta}, \, n_{\beta}=7)$ were chosen. +The overall goal is to provide one centroid label and get its corresponding centroid positions across all the 7 model parameter values $\vec{\beta }$. +Therefore, a \emph{feasible linking path}, which allows the linking of all centroids of all $\beta_i$ to all the other $\beta_{\vec{j}}$ centroids, is required. +The latter description shall be elaborated step-wise in the following. +For instance, if the first $\beta_i = 1$, a linking to the remaining $\beta_{\vec{j}} = \{2, \, 3, \, 4, \, 5, \, 6, \, 7 \}$ is mandatory. +The first item of table \ref{tab_1} outlines that the centroids from $\beta_i = 1$ are tracked with the centroids $\beta_j=2$. +In other words, a clear relationship between the centroids across $\beta_i = 1$ and $\beta_j=2$ is established. Leveraging this relationship, the proper tracked centroid position across the two $ \beta = 1$ and $\beta= 2$, are returned.\newline + + +Because the centroid labels of $\beta_i = 1$ are used as the reference to match the centroid labels of $\beta_j=2$, the \emph{known linked path} can be stated as $L_{known}= \{1,\, 2\}$. The next model parameter value $\beta_j = 3$ and it is tracked with $\beta_i =2$. +Since $\beta_i =2$ is already incorporated in the \emph{known linked path}, the \emph{known linking path} can be extended to $L_{known}= \{1,\, 2, \, 3\}$. The next model parameter value $\beta_j = 4$ and its corresponding tracked counterpart is $\beta_i =3$. +Again, $\beta_i =3$ is found in the \emph{known linked path}, therefore the \emph{known linking path} can be extended to $L_{known}= \{1,\, 2, \, 3, \, 4\}$. The next model parameter value $\beta_j = 5$ and its corresponding tracked $\beta_i =4$ and so this procedure can be performed until the last $\beta_j = 7$. +Having completed the scheme, the \emph{known linking path} is of full rank, i.e. with $n_{\beta}= 7$ all the 7 pairwise different model parameter values $\vec{\beta}$ are captured in the \emph{known linking path} $L_{known}$. +The information gained through a full ranked $L_{known, full}$ is that all centroids of all $\beta_i$ are linked to all the other $\beta_{\vec{j}}$ centroids. +\newline + +After having introduced the full rank $L_{known, full}$, the more straightforward definition for \emph{feasible linking path} can be stated as follows. +A \emph{feasible linking path} is given when $L_{known}$ has full rank $L_{known, full}$. \emph{Direct feasible} cases as shown in table \ref{tab_1} are one way of \emph{feasible linking paths}. Another, more general feasible case is provided in table \ref{tab_2}. Here, up to $\beta_i = 2$ and $\beta_j = 3$ the scheme of the \emph{direct feasible} linking path is followed. +However, with $\beta_i = 4$ and $\beta_j = 7$ the obstacle that $\beta_j = 7$ is not present in the current $L_{known}= \{1,\, 2,\, 3,\, 6\}$, occurs. +This issue can be circumvented by viewing $\beta_i = 6$ and $\beta_j = 5$. +Since $\beta_i = 6$ is in the current state of $L_{known}= \{1,\, 2,\, 3,\, 6\}$, $L_{known}$ can be extended with $\beta_j = 5$, i.e., $L_{known}= \{1,\, 2,\, 3,\, 5, \, 6\}$. +Note, having acquired the relationship between $\beta_i$ to $\beta_j$ is the same as knowing the relationship between $\beta_j$ to $\beta_i$. +Applying the newly added linking perspective, it can be seen that table \ref{tab_2} also demonstrates a fulled ranked $L_{known, full}$ or a \emph{feasible linking path}.\newline + +In table \ref{tab_3} an example for an incomplete linking path or an \emph{infeasible linking path} is provided, where $L_{known}$ has no full rank. +The aim of the sub-task, validity, is to determine, whether the proposed optimized tracking path is feasible by extracting information about the rank of the final $L_{known}$. +Internally in \gls{cnmc}, this is achieved through logical queries utilizing mainly if statements. +One major advantage which was not mentioned when the examples above were worked out is the following. $\beta_{i,ref} = 1$ is not necessarily the best choice for being the reference. +The reference $\beta_{i,ref}$ is chosen such that it has the overall highest similarity or least cost to all the other $(n_{\beta} -1)$ available $\vec{\beta}$. +Hence, a \emph{feasible linking path} with a lower sum of cost sum is generated.\newline + +This feature of a flexible reference is only providing better \emph{feasible linking paths}, when the proposed optimized tracking path is infeasible, which in general is the case. Therefore, in most cases, it is advantageous to leverage the flexible reference. +One of the outputs of \gls{cnmc} is the percentage cost savings that could be achieved with the flexible approach. In others, by what percentage could the costs be decreased when the flexible approach is compared with the rigid approach. +In the rigid approach, $\beta_{i,ref} = 1$ is chosen as the reference. +Further, in the rigid approach, the $\vec{\beta}$ are linked in increasing order, i.e. $\beta_1$ with $\beta_1$, $\beta_2$ with $\beta_2$, $\beta_3$ with $\beta_4$ and so on. Exploiting the flexible approach yields cost savings of around $20\%$ to $50\%$ An example of coping with a flexible reference is provided in the description of the following sub-step. +\newline + + +\textbf{4. Truncate, final path} +\hrule +\vspace{0.05cm} +\hrule +\vspace{0.25cm} +If the proposed optimized tracking path is feasible (\emph{feasible linking path}), i.e. $L_{known}$ has full rank $L_{known, full}$, the truncation can be skipped. +Consequently, the final path is the same as the proposed optimized tracking path. +However, as mentioned, in general, this is not the expected case. +Therefore, an example with an incomplete $L_{known}$ shall be portrayed to explain the workflow with active truncation.\newline + + +First, the final incomplete $L_{known}$ will be used as the starting point. +It will be filled until full rank is reached. +Allowing a flexible reference $\beta_{i,ref}$ the incomplete \emph{known linked path} could be, e.g., $L_{known} = \{3, \, 4, \, 5\}$. +To get full rank, the remaining $L_{missing} = \{1, \, 2, \, 6, \, 7\}$ are inferred through the following concept. +The cost $\beta_{i,j}$ between all $L_{known}$ and $L_{missing}$ are known +through the cost matrix $\bm A\,(\vec{\beta })$. +The one $\beta_j$ entry from $L_{missing}$ which has the highest similarity or lowest cost $\beta_{i,j}$ to the one entry $\beta_j$ of the $L_{known}$, is removed from $L_{missing}$ and added to $L_{known}$. +Now, the same procedure can be applied to the modified $L_{known}$ and $L_{missing}$ until $L_{missing}$ is empty and $L_{known}$ has reached full rank. +The inferred $L_{known, full}$ is then used as the final path and sent to the next sub-task.\newline + + +\textbf{5. Transform} +\hrule +\vspace{0.05cm} +\hrule +\vspace{0.25cm} +Once the final path is determined, it is known which $\beta_i$ is linked to which $\beta_j$. +For all the $\beta_{i},\, \beta_j$ matches in the final path, the linear sum assignment problem is solved again. +Two illustrative solutions are provided in section \ref{sec_3_1_Tracking_Results}. +For further explanation, table \ref{tab_2} shall be revisited. +The first $\beta_{i},\, \beta_j$ link is defined as $\beta_i = 1$ and $\beta_j = 2$. Moreover, for this scenario, it is assumed that $\beta_i = \beta_{ref} = 1$. Therefore, the $\beta_{i} = 1,\, \beta_j= 2$ is denoted as a direct match. +In simpler terms, a direct pairwise $\beta_{i},\, \beta_j$ relation, is obtained when $\beta_i$ or $\beta_j$ is directly traced back to the reference. +For a pairwise direct $\beta_{i},\, \beta_j$ link the +transformation, i.e., relabeling without changing the dynamics of the system, as explained for the ordering sub-step, is applied directly and only once.\newline + + +Now, considering the next $\beta_{i},\, \beta_j$ match, i.e., $\beta_i = 2$ and $\beta_j = 3$. +Linking the centroids from $\beta_j = 3$ to $\beta_i = 2$ directly would have no connection to the reference $\beta_{ref} = 1$. +Therefore, the solution to its linear sum assignment problem must experience the same transformations as $\beta_i = 2$ did. +In this case it is only the transformation caused by the $(\beta_i = 1,\,\beta_j = 2)$ match. +The idea behind the transformation stays the same, however, if no direct relation is seen, respective multiple transformations must be performed. +Once the final path has undergone all required transformations, the output is the desired tracked state. +The output can be stored and plotted if desired. +Some types of plots, which can be generated, will be shown in the section +\ref{sec_3_1_Tracking_Results}.\newline + +Finally, in short, the difference between \emph{first CNMc} and this \gls{cnmc} version shall be mentioned. +The proposed tracking algorithm is neither restricted to any dimension nor to a specific dynamical system. Thus, two major limitations of \emph{first CNMc} could be removed in the current \gls{cnmc} version. +Also, the flexible approach yields a better feasible linking path. diff --git a/Data/0_Latex_True/2_Task/6_Modeling.tex b/Data/0_Latex_True/2_Task/6_Modeling.tex new file mode 100644 index 0000000000000000000000000000000000000000..a18475ee3f13d80f64cc10274083ba04d6beb371 --- /dev/null +++ b/Data/0_Latex_True/2_Task/6_Modeling.tex @@ -0,0 +1,157 @@ +\section{Modeling} +\label{sec_2_4_Modeling} +In this section, the fourth main step of \gls{cnmc}, i.e., modeling, is elaborated. +The data and workflow is described in figure \ref{fig_42}. +It comprises two main sub-tasks, which are modeling the \glsfirst{cpevol} and modeling the transition properties tensors $\bm Q / \bm T$. +The settings are as usually defined in \emph{settings.py} and the extracted attributes are distributed to the sub-tasks. +Modeling the \gls{cpevol} and the $\bm Q/ \bm T$ tensors can be executed separately from each other. +If the output of one of the two modeling sub-steps is at hand, \gls{cnmc} is not forced to recalculate both modeling sub-steps. +Since the tracked states are used as training data to run the modeling they are prerequisites for both modeling parts. +The modeling of the centroid position shall be explained in the upcoming subsection \ref{subsec_2_4_1_CPE}, followed by the explanation of the transition properties in subsection \ref{subsec_2_4_2_QT}. +A comparison between this \gls{cnmc} and the \emph{first CNMc} version is provided at the end of the respective subsections. +The results of both modeling steps can be found in section +\ref{sec_3_2_MOD_CPE} and \ref{sec_3_3_SVD_NMF} + +\begin{figure} [!h] + \hspace*{-4cm} + \resizebox{1.2\textwidth}{!}{ + \input{2_Figures/2_Task/2_Modeling/0_Modeling.tikz} + } + \caption{Data and workflow of the fourth step: Modeling} + \label{fig_42} +\end{figure} + + +\subsection{Modeling the centroid position evolution} +\label{subsec_2_4_1_CPE} +In this subsection, the modeling of the \gls{cpevol} is described. +The objective is to find a surrogate model, which returns all $K$ centroid positions for an unseen $\beta_{unseen}$. +The training data for this are the tracked centroids from the previous step, which is described in section \ref{sec_2_3_Tracking}. +To explain the modeling of the \emph{CPE}, figure \ref{fig_43} shall be inspected. +The model parameter values which shall be used to train the model $\vec{\beta_{tr}}$ are used for generating a so-called candidate library matrix $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$. The candidate library matrix $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is obtained making use of a function of \emph{pySindy} \cite{Silva2020,Kaptanoglu2022,Brunton2016}. +In \cite{Brunton2016} the term $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is explained well. However, in brief terms, it allows the construction of a matrix, which comprises the output of defined functions. +These functions could be, e.g., a linear, polynomial, trigonometrical or any other non-linear function. Made-up functions that include logical conditions can also be applied. \newline + +\begin{figure} [!h] + \hspace*{-4cm} + \resizebox{1.2\textwidth}{!}{ + \input{2_Figures/2_Task/2_Modeling/1_Pos_Mod.tikz} + } + \caption{Data and workflow of modeling the \glsfirst{cpevol}} + \label{fig_43} +\end{figure} + +Since, the goal is not to explain, how to operate \emph{pySindy} \cite{Brunton2016}, the curious reader is referred to the \emph{pySindy} very extensive online documentation and \cite{Silva2020,Kaptanoglu2022}. +Nevertheless, to understand $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ equation \eqref{eq_20} shall be considered. +In this example, 3 different functions, denoted as $f_i$ in the first row, are employed. +The remaining rows are the output for the chosen $f_i$. +Furthermore, $n$ is the number of samples or the size of $\vec{\beta_{tr} }$, i.e., $n_{\beta,tr} $ and $m$ denotes the number of the features, i.e., the number of the functions $f_i$. \newline + +\begin{equation} + \boldsymbol{\Theta_{exampl(n \times m )}}(\,\vec{\beta_{tr}}) = + % \renewcommand\arraystretch{3} + \renewcommand\arraycolsep{10pt} + \begin{bmatrix} + f_1 = \beta & f_2 = \beta^2 & f_2 = cos(\beta)^2 - exp\,\left(\dfrac{\beta}{-0.856} \right) \\[1.5em] + 1 & 1^2 & cos(1)^2 - exp\,\left(\dfrac{1}{-0.856} \right) \\[1.5em] + 2 & 2^2 & cos(2)^2 - exp\,\left(\dfrac{2}{-0.856} \right) \\[1.5em] + \end{bmatrix} + \label{eq_20} +\end{equation} + +The actual candidate library matrix $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ incorporates a quadratic polynomial, the inverse $ \frac{1}{\beta}$, the exponential $exp(\beta)$ and 3 frequencies of cos and sin, i.e., $cos(\vec{\beta}_{freq}), \ sin(\vec{\beta}_{freq})$, where $\vec{\beta}_{freq} = [1, \, 2,\, 3]$. +There are much more complex $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ available in \gls{cnmc}, which can be selected if desired. +Nonetheless, the default $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is chosen as described above. +Once $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is the generated, the system of equations \eqref{eq_21} is solved. +Note, this is very similar to solving the well-known $\bm A \, \vec{x} = \vec{y}$ system of equations. +The difference is that the vectors $\vec{x}, \, \vec{y}$ can be vectors in the case of \eqref{eq_21} as well, but in general, they are the matrices $\bm{X} ,\, \bm Y$, respectively. The solution to the matrix $\bm{X}$ is the desired output. +It contains the coefficients which assign importance to the used functions $f_i$. +The matrix $\bm Y$ contains the targets or the known output for the chosen functions $f_i$. +Comparing $\bm A$ and $ \boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ mathematically, no difference exists.\newline + +\begin{equation} + \boldsymbol{\Theta}\,(\vec{\beta_{tr}}) \: \bm X = \bm Y + \label{eq_21} +\end{equation} + +With staying in the \emph{pySindy} environment, the system of equations \eqref{eq_21} is solved by means of the optimizer \emph{SR3}, which is implemented in \emph{pySindy}. +Details and some advantages of the \emph{SR3} optimizer can be found in \cite{SR3}. Nevertheless, two main points shall be stated. +It is highly unlikely that the $\boldsymbol{\Theta}\,(\vec{\beta_{tr}}),\: \bm X,\, \bm Y$ is going to lead to a well-posed problem, i.e., the number of equations are equal to the number of unknowns and having a unique solution. +In most cases the configuration will be ill-posed, i.e., the number of equations is not equal to the number of unknowns. +In the latter case, two scenarios are possible, the configuration could result in an over-or under-determined system of equations.\newline + +For an over-determined system, there are more equations than unknowns. +Thus, generally, no outcome that satisfies equation \eqref{eq_21} exists. +In order to find a representation that comes close to a solution, an error metric is defined as the objective function for optimization. +There are a lot of error metrics or norms, however, some commonly used \cite{Brunton2019} are given in equations \eqref{eq_22} to \eqref{eq_24}, where $f(x_k)$ are true values of a function and $y_k$ are their corresponding predictions. +The under-determined system has more unknown variables than equations, thus infinitely many solutions exist. +To find one prominent solution, again, optimization is performed. +Note, for practical application penalization or regularization parameter are exploited as additional constraints within the definition of the optimization problem. +For more about over- and under-determined systems as well as for deploying optimization for finding a satisfying result the reader is referred to \cite{Brunton2019}.\newline + +\begin{equation} + E_{\infty} = \max_{17$ the storage cost goes above multiple hundreds of gigabytes of RAM. +Therefore, the dictionaries are converted into sparse matrices. \newline + +Thereafter, the sparse matrices are reshaped or stacked into a single matrix, such that a modal decomposition method can be applied. +Followed by training a regression model for each of the mode coefficients. +The idea is that the regression models receive a $\beta_{unseen}$ and returns all the corresponding predicted modes. +The regression models are saved and if desired plots can be enabled via \emph{settings.py}. \newline + +In this version of \gls{cnmc} two modal decomposition methods are available. +Namely, the \glsfirst{svd} and the \glsfirst{nmf}. +The difference between both is given in \cite{Lee1999}. +The \gls{svd} is stated in equation \eqref{eq_26}, where the variables are designated as the input matrix $\bm A$ which shall be decomposed, the left singular matrix $ \bm U $, the diagonal singular matrix $ \bm \Sigma $ and the right singular matrix $ \bm V^T $. +The singular matrix $ \bm \Sigma $ is mostly ordered in descending order such that the highest singular value is the first diagonal element. +The intuition behind the singular values is that they assign importance to the modes in the left and right singular matrices $ \bm U $ and $ \bm {V^T} $, respectively. + +\begin{equation} + \bm A = \bm U \, \bm \Sigma \, \bm {V^T} + \label{eq_26} +\end{equation} + + +The big advantage of the \gls{svd} is observed when the so-called economical \gls{svd} is calculated. +The economical \gls{svd} removes all zero singular values, thus the dimensionality of all 3 matrices can be reduced. +However, from the economical \gls{svd} as a basis, all the output with all $r$ modes is available. +There is no need to perform any additional \gls{svd} to get the output for $r$ modes, but rather the economical \gls{svd} is truncated with the number $r$ for this purpose. +\gls{nmf}, given in equation \eqref{eq_5_NMF}, on the other hand, has the disadvantage that there is no such thing as economical NMF. +For every change in the number of modes $r$, a full \gls{nmf} must be recalculated.\newline + +\begin{equation} + \bm {A_{i \mu}} \approx \bm A^{\prime}_{i \mu} = (\bm W \bm H)_{i \mu} = \sum_{a = 1}^{r} + \bm W_{ia} \bm H_{a \mu} + \tag{\ref{eq_5_NMF}} +\end{equation} + + +The issue with \gls{nmf} is that the solution is obtained through an iterative optimization process. +The number of iterations can be in the order of millions and higher to meet the convergence criteria. +Because the optimal $r_{opt}$ depends on the dynamical system, there is no general rule for acquiring it directly. +Consequently, \gls{nmf} must be run with multiple different $r$ values to find $r_{opt}$. +Apart from the mentioned parameter study, one single \gls{nmf} execution was found to be more computationally expensive than \gls{svd}. +In \cite{Max2021} \gls{nmf} was found to be the performance bottleneck of \emph{first CNMc}, which became more evident when $L$ was increased. +In subsection +\ref{subsec_3_3_1_SVD_Speed} +a comparison between \gls{nmf} and \gls{svd} regarding computational time is given.\newline + + +Nevertheless, if the user wants to apply \gls{nmf}, only one attribute in \emph{settings.py} needs to be modified. +Because of that and the overall modular structure of \gls{cnmc}, implementation of any other decomposition method should be straightforward. +In \gls{cnmc} the study for finding $r_{opt}$ is automated and thus testing \gls{cnmc} on various dynamical systems with \gls{nmf} should be manageable. +The benefit of applying \gls{nmf} is that the entries of the output matrices $\bm W_{ia},\, \bm H_{a \mu}$ are all non-zero. +This enables interpreting the $\bm W_{ia}$ matrix since both $\bm Q / \bm T$ tensors cannot contain negative entries, i.e., no negative probability and no negative transition time.\newline + +Depending on whether \gls{nmf} or \gls{svd} is chosen, $r_{opt}$ is found through a parameter study or based on $99 \%$ of the information content, respectively. +The $99 \%$ condition is met when $r_{opt}$ modes add up to $99 \%$ of the total sum of the modes. In \gls{svd} $r_{opt}$ is automatically detected and does not require any new \gls{svd} execution. A comparison between \gls{svd} and \gls{nmf} regarding prediction quality is given in +section +\ref{subsec_3_3_2_SVD_Quality}. +After the decomposition has been performed, modes that capture characteristic information are available. +If the modes can be predicted for any $\beta_{unseen}$, the predicted transition properties $\bm{\tilde{Q}}(\vec{\beta}_{unseeen}) ,\, \bm{\tilde{T}}(\vec{\beta}_{unseeen})$ are obtained. +To comply with this \gls{cnmc} has 3 built-in methods. +Namely, \textbf{R}andom \textbf{F}orest (RF), AdaBoost, and Gaussian Process.\newline + +First, \gls{rf} is based on decision trees, but additionally deploys +a technique called bootstrap aggregation or bagging. +Bagging creates multiple sets from the original dataset, which are equivalent in size. +However, some features are duplicated in the new datasets, whereas others are +neglected entirely. This allows \gls{rf} to approximate very complex functions +and reduce the risk of overfitting, which is encountered commonly +with regular decision trees. +Moreover, it is such a powerful tool +that, e.g., Kilian Weinberger, a well-known Professor for machine learning +at Cornell University, considers \gls{rf} in one of his lectures, to be +one of the most powerful regression techniques that the state of the art has to offer. +Furthermore, \gls{rf} proved to be able to approximate the training data +acceptable as shown in \cite{Max2021}. +However, as mentioned in subsection \ref{subsec_1_1_3_first_CNMc}, it faced difficulties to approximate spike-like curves. +Therefore, it was desired to test alternatives as well.\newline + +These two alternatives were chosen to be AdaBoost, and Gaussian Process. +Both methods are well recognized and used in many machine learning applications. +Thus, instead of motivating them and giving theoretical explanations, the reader is referred to \cite{Adaboost}, \cite{Rasmussen2004,bishop2006pattern} for AdaBoost and Gaussian Process, respectively. +As for the implementation, all 3 methods are invoked through \emph{Scikit-learn} \cite{scikit-learn}. +The weak learner for AdaBoost is \emph{Scikit-learn's} default decision tree regressor. +The kernel utilized for the Gaussian Process is the \textbf{R}adial \textbf{B}asis \textbf{F}unction (RBF). A comparison of these 3 methods in terms of prediction capabilities is provided in section \ref{subsec_3_3_2_SVD_Quality}.\newline + +Since the predicted $\bm{\tilde{Q}}(\vec{\beta}_{unseeen}) ,\, \bm{\tilde{T}}(\vec{\beta}_{unseeen})$ are based on regression techniques, their output will have some deviation to the original $\bm{Q}(\vec{\beta}_{unseeen}) ,\, \bm{T}(\vec{\beta}_{unseeen})$. +Due to that, the physical requirements given in equations \eqref{eq_31_Q_T_prediction} may be violated. \newline + +\begin{equation} + \begin{aligned} + 0 \leq \, \bm Q \leq 1\\ + \bm T \geq 0 \\ + \bm Q \,(\bm T > 0) > 0 \\ + \bm T(\bm Q = 0) = 0 + \end{aligned} + \label{eq_31_Q_T_prediction} +\end{equation} + +To manually enforce these physical constraints, the rules defined in equation \eqref{eq_32_Rule} are applied. +The smallest allowed probability is defined to be 0, thus negative probabilities are set to zero. +The biggest probability is 1, hence, overshoot values are set to 1. +Also, negative transition times would result in moving backward, therefore, they are set to zero. +Furthermore, it is important to verify that a probability is zero if its corresponding transition time is less than or equals zero. +In general, the deviation is in the order of $\mathcal{O}(1 \mathrm{e}{-2})$, such that the modification following equation \eqref{eq_32_Rule} can be considered reasonable. + \newline +\begin{equation} + \begin{aligned} + & \bm Q < 0 := 0 \\ + & \bm Q > 1 := 1 \\ + & \bm T < 0 := 0\\ + & \bm Q \, (\bm T \leq 0) := 0 + \end{aligned} + \label{eq_32_Rule} + \vspace{0.1cm} +\end{equation} +In conclusion, it can be said that modeling $\bm Q / \bm T$ \gls{cnmc} is equipped with two different modal decomposition methods, \gls{svd} and NMF. +To choose between them one attribute in \emph{settings.py} needs to be modified. +The application of \gls{nmf} is automated with the integrated parameter study. +For the mode surrogate models, 3 different regression methods are available. +Selecting between them is kept convenient, i.e. by editing one property in \emph{settings.py}. + + + + + + diff --git a/Data/0_Latex_True/3_Task/0_Results.tex b/Data/0_Latex_True/3_Task/0_Results.tex new file mode 100644 index 0000000000000000000000000000000000000000..b5ee2214e022ec28ee1b7c49a6c2cabf2226a30d --- /dev/null +++ b/Data/0_Latex_True/3_Task/0_Results.tex @@ -0,0 +1,40 @@ +\chapter{Results} +\label{ch_3} +In this chapter, the results achieved with \gls{cnmc} shall be presented and assessed. +First, in section \ref{sec_3_1_Tracking_Results}, the tracking algorithm is evaluated by showing the outcome for 3 different dynamical model configurations. +Second, in section \ref{sec_3_2_MOD_CPE}, statements about the performance of modeling the \glsfirst{cpevol} are made. +They are supported with some representative outputs. +Third, in section \ref{sec_3_3_SVD_NMF} the two decomposition methods are compared in terms of computational time and prediction quality in subsection \ref{subsec_3_3_1_SVD_Speed} and \ref{subsec_3_3_2_SVD_Quality}, respectively. +Fourth, it has been mentioned that 3 different regressors for representing the $\bm Q / \bm T$ tensor are available. +Their rating is given in section \ref{sec_3_4_SVD_Regression}. +Finally, the \gls{cnmc} predicted trajectories for different models shall be displayed and evaluated in section \ref{sec_3_5_Pred}.\newline + + +For assessing the performance of \gls{cnmc} some dynamical model with a specific configuration will be used many times. +In order not to repeat them too often, they will be defined in the following.\newline + + \textbf{Model configurations} + \hrule + \vspace{0.05cm} + \hrule + \vspace{0.25cm} + The first model configuration is denoted as \emph{SLS}, which stands for \textsl{S}mall \textbf{L}orenz \textsl{S}ystem . + It is the Lorenz system described with the sets of equations \eqref{eq_6_Lorenz} and the number of centroids is $K=10$. + Furthermore, the model was trained with $\vec{\beta }_{tr} = [\beta_0 = 28 ; \, \beta_{end} = 33], \, n_{\beta, tr} = 7$, where the training model parameter values $\vec{\beta}_{tr}$ are chosen to start from $\beta_0 = 28$ and end at $\beta_{end} = 33$, where the total number of linearly distributed model parameter values is $n_{\beta, tr} = 7$.\newline + + The second model is referred to as \emph{LS20}. + It is also a Lorenz system \eqref{eq_6_Lorenz}, but with a higher number of centroids $K=20$ and the following model configuration: $\vec{\beta }_{tr} = [\, \beta_0 = 24.75 ; \, \beta_{end} = 53.75 \,], \, n_{\beta, tr} = 60$.\newline + +The third model is designated as \emph{FW15}. It is based on the \emph{Four Wing} set of equations \eqref{eq_10_4_Wing} and an illustrative trajectory is given in figure \ref{fig_37}. +The number of centroids is $K=15$ and it is constructed with the following configuration $\vec{\beta }_{tr} = [\, \beta_0 = 8 ; \, \beta_{end} = 11 \,], \, n_{\beta, tr} = 13$.\newline + +\begin{figure}[!h] + \centering + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/10_1_Traj_8.pdf} + \caption{\emph{FW15} \eqref{eq_10_4_Wing} trajectory for $\beta = 8$} + \label{fig_37} +\end{figure} + + + diff --git a/Data/0_Latex_True/3_Task/1_Track_Results.tex b/Data/0_Latex_True/3_Task/1_Track_Results.tex new file mode 100644 index 0000000000000000000000000000000000000000..6bb1ba03f70529f67877f9179298f778b7707b7d --- /dev/null +++ b/Data/0_Latex_True/3_Task/1_Track_Results.tex @@ -0,0 +1,248 @@ +\section{Tracking results} +\label{sec_3_1_Tracking_Results} +In this section, some outputs of tracking data and workflow, described in subsection \ref{subsec_2_3_1_Tracking_Workflow}, shall be presented. +After that, in short, the current \gls{cnmc} shall be compared to \emph{first CNMc} \newline + +First, two illustrative solutions for the assignment problem from the final path, as explained in subsection \ref{subsec_2_3_1_Tracking_Workflow}, are provided in figures \ref{fig_27} and \ref{fig_28}. +The axes are denoted as $c_k$ and $c_p$ and represent the labels of the $\beta_j$ and $\beta_i$ centroids, respectively. +The color bar on the right side informs about the euclidean distance, which is equivalent to the cost. +Above the solution of the assignment problem in figures \ref{fig_27} and \ref{fig_28}, the corresponding $\beta_i$ and $\beta_j$ centroid labels are given in the respective two figures, i.e., \ref{fig_27_1}, \ref{fig_27_2} and \ref{fig_28_1}, \ref{fig_28_2}. + +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Ordered state, $\beta_i =32.167$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/16_lb_32.167.pdf} + \label{fig_27_1} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Ordered state, $\beta_j = 33$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/17_lb_33.000.pdf} + \label{fig_27_2} + \end{subfigure} + + \smallskip + \centering + \begin{subfigure}{\textwidth} + \caption{Solution to the assignment problem} + \includegraphics[width =\textwidth]{2_Figures/3_Task/1_Tracking/1_LSA.pdf} + \label{fig_27} + \end{subfigure} + \vspace{-0.3cm} + \caption{Illustrative solution for the assignment problem, $\beta_i =32.167,\, \beta_j = 33 ,\, K =10$} + \label{fig_27_All} +\end{figure} +% +% +The centroid $c_{k=1} (\beta_j = 33)$ has its lowest cost to +$c_{p=3} (\beta_i = 32.167)$. In this case, this is also the solution for the assignment problem, outlined by the blue cross. +However, the solution to the linear sum assignment problem is not always to choose the minimal cost for one \emph{inter} $\beta$ match. +It could be that one centroid in $\beta_i$ is to found the closest centroid to multiple centroids in $\beta_j$. +Matching only based on the minimal distance does not include the restriction that exactly one centroid from $\beta_i$ must be matched with exactly one centroid from $\beta_j$. +The latter demand is incorporated in the solution of the linear sum assignment problem. \newline + + +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Ordered state, $\beta_i =31.333$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/18_lb_31.333.pdf} + \label{fig_28_1} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Ordered state, $\beta_j = 32.167$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/16_lb_32.167.pdf} + \label{fig_28_2} + \end{subfigure} + + \smallskip + \centering + \begin{subfigure}{\textwidth} + \caption{Solution to the assignment problem} + \includegraphics[width =\textwidth]{2_Figures/3_Task/1_Tracking/2_LSA.pdf} + \label{fig_28} + \end{subfigure} + \vspace{-0.3cm} + \caption{Illustrative solution for the assignment problem, $\beta_i =31.333,\, \beta_j = 32.167, \,K =10 $} + \label{fig_28_All} +\end{figure} + +Comparing figure \ref{fig_27} with the second example in figure \ref{fig_28}, it can be observed that the chosen \emph{inter} $\beta$ centroid matches can have very different shapes. +This can be seen by looking at the blue crosses. +Furthermore, paying attention to the remaining possible \emph{inter} $\beta$ centroid matches, it can be stated that there is a clear trend, i.e., the next best \emph{inter} $\beta$ centroid match has a very high increase in its cost. +For example, considering the following \emph{inter} $\beta$ match. With $c_{k=1} (\beta_j = 32.167)$ and $c_{p=1} (\beta_i = 31.333)$, the minimal cost is around $cost_{min} \approx 0.84$. The next best option jumps to $cost_{second} = 13.823$. These jumps can be seen for each \emph{inter} $\beta$ match in figure in both depicted figures \ref{fig_27} and \ref{fig_28}. +The key essence behind this finding is that for the chosen number of centroids $K$ of this dynamical model (Lorenz system \eqref{eq_6_Lorenz}), no ambiguous regions, as explained at the beginning of this chapter, occur.\newline + +Next, the tracking result of 3 different systems shall be viewed. +The tracked state for \emph{SLS} is depicted in figures \ref{fig_29}. +In each of the figures, one centroid is colored blue that denotes +the first centroid in the sequence of the underlying trajectory. +Within the depicted range $\vec{\beta}$, it can be observed, that each label across the $\vec{\beta}$ is labeled as expected. +No single ambiguity or mislabeling can be seen. +In other words, it highlights the high performance of the tracking algorithm. +% +% +% ============================================================================== +% ======================= SLS ================================================= +% ============================================================================== +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta =28$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/3_lb_28.000.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 28.833$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/4_lb_28.833.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta = 31.333$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/15_lb_31.333.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 33$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/5_lb_33.000.pdf} + \end{subfigure} + \vspace{-0.3cm} + \caption{Tracked states for \emph{SLS}, $K = 10,\, \vec{\beta} = [\, 28, \, 28.333, \, 31.333, \, 31.14, \, 33 \, ]$} + \label{fig_29} +\end{figure} +% ============================================================================== +% ======================= SLS ================================================= +% ============================================================================== +% +The second model is the \emph{LS20}, i.e, $K= 20,\, \vec{\beta }_{tr} = [\, \beta_0 = 24.75 ; \, \beta_{end} = 53.75 \,], \, n_{\beta,tr} = 60$. +The outcome is depicted in figures \ref{fig_32}. +It can be noted that $\beta = 24.75$ and $\beta = 30.648$ exhibit very similar results to the \emph{SLS} model. +The same is true for intermediate $\beta$ values, i.e., $24.75 \leq \beta \lessapprox 30.648 $. +However, with $\beta \gtrapprox 30.64$ as depicted for $\beta = 31.14$, one centroid, i.e. the centroid with the label $20$ in the right ear appears unexpectedly. +With this, a drastic change to the centroid placing network is imposed. +Looking at the upcoming $\beta$ these erratic changes are found again.\newline + + +% ============================================================================== +% ======================= LS20 ================================================= +% ============================================================================== +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta =24.75$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/6_lb_24.750.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 28.682$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/7_lb_28.682.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta = 30.648$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/7_lb_30.648.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 31.140$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/8_lb_31.140.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta = 42.936$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/9_lb_42.936.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 53.750$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/10_lb_53.750.pdf} + \end{subfigure} + \vspace{-0.3cm} + \caption{Tracked states for \emph{LS20}, $K = 20,\, \vec{\beta} = [\, 24.75, \, 28.682, \, 30.648, \, 31.14, \, 31.14,$ $42.936, \, 53.75 \, ]$ } + \label{fig_32} +\end{figure} +% ============================================================================== +% ======================= LS20 ================================================= +% ============================================================================== +Generating a tracked state with these discontinuous cluster network deformations even manually can be considered hard to impossible because tracking demands some kind of similarity. +If two cluster networks differ too much from each other, then necessarily at least tracked label is going to be unsatisfying. +Hence, it would be wrong to conclude that the tracking algorithm is not performing well, but rather the clustering algorithm itself or the range of $\vec{\beta} $ must be adapted. If the range of $\vec{\beta} $ is shortened, multiple models can be trained and tracked.\newline + +\FloatBarrier +The third model is referred to as \emph{FW15}. +Figures in \ref{fig_38} show the tracked state for 4 different $\beta$ values. It can be observed that for $\beta = 11$ the centroid placing has changed notably to the other $\beta$ values, thus tracking the centroids in the center for $\beta = 11$ becomes unfavorable. +Overall, however, the tracked state results advocate the performance of the tracking algorithm.\newline + +% ============================================================================== +% ======================= FW15 ================================================= +% ============================================================================== +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta =8$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/11_lb_8.000.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 8.25$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/12_lb_8.250.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta = 10$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/13_lb_10.000.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{ $\beta = 11$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/1_Tracking/14_lb_11.000.pdf} + \end{subfigure} + \vspace{-0.3cm} + \caption{Tracked states for \emph{FW15}, $K = 15,\, \vec{\beta} = [\, 8, \, 8.25, \, 10, \, 11 \, ]$} + \label{fig_38} +\end{figure} +% ============================================================================== +% ======================= FW15 ================================================= +% ============================================================================== + +It can be concluded that the tracking algorithm performs remarkably well. However, when the cluster placing network is abruptly changed from one $\beta$ to the other $\beta$, the tracking outcome gets worse and generates sudden cluster network deformation. +As a possible solution, splitting up the $\vec{\beta}_{tr}$ range into smaller $\vec{\beta}_{tr,i}$ ranges, can be named. This is not only seen for the \emph{LS20}, but also for other dynamical systems as illustratively shown with the center area of the \emph{FW15} system for $\beta= 11$. +\FloatBarrier + diff --git a/Data/0_Latex_True/3_Task/2_Mod_CPE.tex b/Data/0_Latex_True/3_Task/2_Mod_CPE.tex new file mode 100644 index 0000000000000000000000000000000000000000..f666f16ab0f235326ace412f673b993a7d398084 --- /dev/null +++ b/Data/0_Latex_True/3_Task/2_Mod_CPE.tex @@ -0,0 +1,228 @@ +\section{CPE modeling results} +\label{sec_3_2_MOD_CPE} +In this section, results to the \gls{cpevol} modeling explained in subsection \ref{subsec_2_4_1_CPE}, shall be presented and assessed. +First, a selection of equations, which defines the \gls{cpevol} are given for one model configuration. +Next, representative plots of the \gls{cpevol} for different models are analyzed. +Finally, the predicted centroid position is compared with the actual clustered centroid position.\newline + + +Modeling the \emph{CPE} returns, among other results, analytical equations. +These equations describe the behavior of the centroid positions across the range $\vec{\beta}$ and can also be used for making predictions for $\vec{\beta}_{unseen}$. +The model configuration for which they are be presented is \emph{SLS}, i.e. Lorenz system \eqref{eq_6_Lorenz}, $K= 10,\, \vec{\beta }_{tr} = [\, \beta_0 = 28 ; \, \beta_{end} =33 \,], \, n_{\beta, tr} = 7$. +The analytical \gls{cpevol} expressions are listed in \eqref{eq_27} to \eqref{eq_29} for the centroids $[\,1,\, 2,\,7\,]$, respectively. +Recalling that the behavior across the 3 different axes (x, y, z) can vary greatly, each axis has its own regression model $(\tilde x,\, \tilde y,\, \tilde z)$. +Thus, for each label, 3 different analytical expressions are provided. \newline + + +\begin{figure}[!h] + \begin{minipage}{.47\textwidth} + \begin{equation} + \begin{aligned} + \tilde x &= -0.1661 \, cos(3 \, \beta) \\ + \tilde y &= -0.1375 \, cos(3 \, \beta) \\ + \tilde z &= 0.8326 \, \beta + \end{aligned} + \label{eq_27} + \end{equation} + \end{minipage}% + \hfill + \begin{minipage}{.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/1_lb_1.pdf} + \caption{\emph{SLS}, \emph{CPE} model for centroid: 1 } + \label{fig_45} + \end{minipage} +\end{figure} + +\begin{figure}[!h] + \begin{minipage}{.47\textwidth} + \begin{equation} + \begin{aligned} + \tilde x &= 0.1543 \, sin(3 \, \beta) + 0.2446 \, cos(3 \, \beta) \\ + \tilde y &= 0.2638 \, sin(3 \, \beta) + 0.4225 \, cos(3 \, \beta) \\ + \tilde z &= 0.4877 \, \beta + \end{aligned} + \label{eq_28} + \end{equation} +\end{minipage}% +\hfill +\begin{minipage}{.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/2_lb_2.pdf} + \caption{\emph{SLS}, \emph{CPE} model for centroid: 2 } + \label{fig_46} +\end{minipage} +\end{figure} + +\begin{figure}[!h] + \begin{minipage}{.47\textwidth} + \begin{equation} + \begin{aligned} + \tilde x &= -0.1866 \, \beta + 0.133 \, sin(3 \, \beta) \\ + & \quad + 0.1411 \, cos(3 \, \beta) \\ + \tilde y &= -0.3 \, \beta \\ + \tilde z &= -1.0483+ 0.6358 \,\beta + \end{aligned} + \label{eq_29} + \end{equation} + \end{minipage}% + \hfill + \begin{minipage}{.47\textwidth} + \centering + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/3_lb_7.pdf} + \caption{\emph{SLS}, \emph{CPE} model for centroid: 7 } + \label{fig_47} + \end{minipage} +\end{figure} + + +Right to the equations the corresponding plots are depicted in figures \ref{fig_45} to \ref{fig_47}. +Here, the blue and green curves indicate true and modeled CPE, respectively. +Each of the figures supports the choice of allowing each axis to be modeled separately. +The z-axis appears to undergo less alteration or to be more linear than the x- and y-axis. +If a model is supposed to be valid for all 3 axes, a more complex model, i.e., a higher of terms, is required. +Although more flexible models fit training data increasingly better, they tend to overfit. +In other words, complex models capture the trained data well but could exhibit oscillations for $\vec{\beta}_{unseen}$. +The latter is even more severe when the model is employed for extrapolation. +The difference between interpolation and extrapolation is that for extrapolation the prediction is made with $\beta_{unseen}$ which are not in the range of the trained $\vec{\beta}_{tr}$. +Therefore, less complexity is preferred.\newline + +Next, the performance of predicting the centroid for $\vec{\beta}_{unseen}$ is elaborated. +For this purpose, figures \ref{fig_48} to \ref{fig_52} shall be examined. +All figures depict the original centroid positions, which are obtained through the clustering step in green and the predicted centroid positions in blue. +On closer inspection, orange lines connecting the true and predicted centroid positions can be identified. +Note, that they will only be visible if the deviation between the true and predicted state is high enough. +Figures \ref{fig_48_0} an \ref{fig_48_1} show the outcome for \emph{SLS} with $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$, respectively. +Visually, both predictions are very close to the true centroid positions. +Because of this high performance in showed in figures \ref{fig_49_0} and \ref{fig_49_1} two examples for extrapolation are given for $\beta_{unseen} = 26.5$ and $\beta_{unseen} = 37$, respectively. +For the first one, the outcome is very applicable. +In contrast, $\beta_{unseen} = 37$ returns some deviations which are notably high. +\newline + + + +% ----------------- Interpolation ---------------------------------------------- +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta_{unseen} = 28.5$ } + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/4_lb_c_28.5.pdf} + %MSE = 0.622 + \label{fig_48_0} + \end{subfigure}% + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta_{unseen} = 32.5$ } + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/5_lb_c_32.5.pdf} + %MSE = 0.677 + \label{fig_48_1} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, original vs. modeled centroid position, $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$ } + \label{fig_48} +\end{figure} + +% ----------------- EXTRAPOLATION ---------------------------------------------- +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta_{unseen} = 26.5$ } + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/22_lb_c_26.5.pdf} + %MSE = 0.622 + \label{fig_49_0} + \end{subfigure}% + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{$\beta_{unseen} = 37$ } + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/23_lb_c_37.0.pdf} + %MSE = 0.677 + \label{fig_49_1} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, original vs. modeled centroid position, extrapolated $\beta_{unseen} = 26.5$ and $\beta_{unseen} = 37$ } + \label{fig_49} +\end{figure} + + +% --------- MODEL LOrenz K= 20 +\begin{figure}[!h] + \begin{subfigure}{.5\textwidth} + \centering + \caption{$\beta_{unseen} = 31.75$} + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/6_lb_c_31.75.pdf} + %MSE = 1.857 + \end{subfigure}% + \hfill + \begin{subfigure}{.5\textwidth} + \centering + \caption{$\beta_{unseen} = 51.75$ } + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/7_lb_c_51.75.pdf} + %MSE = 2.536 + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{LS20}, original vs. modeled centroid position, $\beta_{unseen} = 31.75$ and $\beta_{unseen} = 51.75$} + \label{fig_50} +\end{figure} + +% --------- MODEL 25_Four_Wing_1_K_15 --------- +\begin{figure}[!h] + \begin{subfigure}{.5\textwidth} + \centering + \caption{$\beta_{unseen} = 8.7$} + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/8_lb_c_8.7.pdf} + %MSE = 1.617 + \end{subfigure}% + \hfill + \begin{subfigure}{.5\textwidth} + \centering + \caption{$\beta_{unseen} = 10.1$ } + \includegraphics[width =\textwidth]{2_Figures/3_Task/2_Mod_CPE/9_lb_c_10.1.pdf} + %MSE = 1.5 + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{FW15}, original vs. modeled centroid position, $\beta_{unseen} = 8.7$ and $\beta_{unseen} = 10.1$} + \label{fig_52} + +\end{figure} + +Quantitative measurements are performed by applying the Mean Square Error (MSE) following equation \eqref{eq_30_MSE}. +The variables are denoted as the number of samples $n$, which in this case is equal to the number of centroids $n = K$, the known $f(x_k)$ and the predicted $y_k$ centroid position.\newline + +\begin{equation} + MSE = \frac{1}{n} \, \sum_{i=1}^n \left(f(x_k) - y_k\right)^2 + \label{eq_30_MSE} +\end{equation} + +The measured MSE errors for all displayed results are summarized in table \ref{tab_5_MSE}. +The MSE for results of $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$ in figures \ref{fig_48} is $0.622$ and $0.677$, respectively. +Consequently, the performance of \gls{cnmc} is also confirmed quantitatively. +Figures in \ref{fig_50} illustrate the outcome for \emph{LS20} for $\beta_{unseen} = 31.75$ and $\beta_{unseen} = 51.75$. +In section \ref{sec_3_1_Tracking_Results} it is explained that for \emph{LS20} cluster network deformations appear. +Nevertheless, the outcome visually and quantitatively endorses the \emph{CPE} modeling capabilities. +Figures in \ref{fig_52} depict the outcome for \emph{FW15} for $\beta_{unseen} = 8.7$ and $\beta_{unseen} = 10.1$. +A few orange lines are visible, however overall the outcome is very satisfactory.\newline + +\begin{table} + \centering + \begin{tabular}{c c c c } + \textbf{Figure} &\textbf{Model} & $\boldsymbol{\beta_{unseen}}$ & \textbf{MSE} \\ + \hline \\ + [-0.8em] + \ref{fig_48} & \emph{SLS}& $28.5$ & $0.622$ \\ + \ref{fig_48} & \emph{SLS}& $32.5$ & $0.677$ \\ + \ref{fig_49} & \emph{SLS}& $26.5$ & $1.193$ \\ + \ref{fig_49} & \emph{SLS}& $37$ & $5.452$ \\ + \ref{fig_50} & \emph{LS20}& $31.75$ & $1.857$ \\ + \ref{fig_50} & \emph{LS20}& $51.75$ & $2.536$ \\ + \ref{fig_52} & \emph{FW15}& $8.7$ & $1.617$ \\ + \ref{fig_52} & \emph{FW15}& $10.1$ & $1.5$ + \end{tabular} + \caption{MSE for different Model configurations and $\vec{\beta}_{unseen}$} + \label{tab_5_MSE} +\end{table} + +It can be concluded that the \emph{CPE} modeling performance is satisfying. +In the case of a few cluster network deformations, \gls{cnmc} is capable of providing acceptable results. +However, as shown with \emph{SLS}, if the model's training range $\vec{\beta}_{tr}$ and the number of $K$ was selected appropriately, the MSE can be minimized. \ No newline at end of file diff --git a/Data/0_Latex_True/3_Task/3_SVD_NMF.tex b/Data/0_Latex_True/3_Task/3_SVD_NMF.tex new file mode 100644 index 0000000000000000000000000000000000000000..aefbcf1097bf3ea2d2c56607a971ca3c34d0f08a --- /dev/null +++ b/Data/0_Latex_True/3_Task/3_SVD_NMF.tex @@ -0,0 +1,314 @@ +\section{Transition properties modeling} +\label{sec_3_3_SVD_NMF} +In the subsection \ref{subsec_2_4_2_QT}, it has been explained that \gls{cnmc} has two built-in modal decomposition methods for the $\bm Q / \bm T$ tensors, i.e., \gls{svd} and NMF. +There are two main concerns for which performance measurements are needed. +First, in subsection \ref{subsec_3_3_1_SVD_Speed}, the computational costs of both methods are examined. +Then in subsection \ref{subsec_3_3_2_SVD_Quality}, the \gls{svd} and \gls{nmf} prediction quality will be presented and assessed. + +\subsection{Computational cost} +\label{subsec_3_3_1_SVD_Speed} +In this subsection, the goal is to evaluate the computational cost of the two decomposition methods implemented in \gls{cnmc}. +\gls{nmf} was already used in \emph{first CNMc} and it was found to be one of the most computational expensive tasks. +With an increasing model order $L$ it became the most computational task by far, which is acknowledged by \cite{Max2021}. +The run time was one of the main reasons why \gls{svd} should be implemented in \gls{cnmc}. +To see if \gls{svd} can reduce run time, both methods shall be compared.\newline + +First, it is important to mention that \gls{nmf} is executed for one single predefined mode number $r$. +It is possible that a selected $r$ is not optimal, since $r$ is a parameter that depends not only on the chosen dynamical system but also on other parameters, e.g., the number of centroids $K$ and training model parameter values $n_{\beta, tr}$, as well as \gls{nmf} specific attributes. +These are the maximal number of iterations in which the optimizer can converge and tolerance convergence. +However, to find an appropriate $r$, \gls{nmf} can be executed multiple times with different values for $r$. +Comparing the execution time of \gls{nmf} with multiple invocations against \gls{svd} can be regarded as an unbalanced comparison. +Even though for a new dynamical system and its configuration the optimal $r_{opt}$ for \gls{nmf} is most likely to be found over a parameter study, for the upcoming comparison, the run time of one single \gls{nmf} solution is measured.\newline + +The model for this purpose is \emph{SLS}. Since \emph{SLS} is trained with the output of 7 pairwise different model parameter values $n_{\beta,tr} = 7$, the maximal rank in \gls{svd} is limited to 7. +Nevertheless, allowing \gls{nmf} to find a solution $r$ was defined as $r=9$, the maximal number of iterations in which the optimizer can converge is 10 million and the convergence tolerance is $1\mathrm{e}{-6}$. +Both methods can work with sparse matrices. +However, the \gls{svd} solver is specifically designed to solve sparse matrices. +The measured times for decomposing the $\bm Q / \bm T$ tensors for 7 different $L$ are listed in table \ref{tab_6_NMF_SVD}. +It can be observed that for \gls{svd} up to $L=6$, the computational time for both $\bm Q / \bm T$ tensors is less than 1 second. +Such an outcome is efficient for science and industry applications. +With $L=7$ a big jump in time for both $\bm Q / \bm T$ is found. +However, even after this increase, the decomposition took around 5 seconds, which still is acceptable.\newline + +\begin{table} + \centering + \begin{tabular}{c| c c |c c } + \textbf{$L$} &\textbf{SVD} $\bm Q$ & \textbf{NMF} $\bm Q$ + &\textbf{SVD} $\bm T$ & \textbf{NMF} $\bm T$\\ + \hline \\ + [-0.8em] + $1$ & $2 \,\mathrm{e}{-4}$ s & $64$ s & $8 \, \mathrm{e}{-05}$ s & $3 \, \mathrm{e}{-2}$ s \\ + + $2$ & $1 \, \mathrm{e}{-4}$ s & $8 \, \mathrm{e}{-2}$ s & $1 \, \mathrm{e}{-4}$ s & $1$ h \\ + + $3$ & $2 \, \mathrm{e}{-4}$ s & $10$ s & $2 \, \mathrm{e}{-4}$ s & $0.1$ s \\ + + $4$ & $4 \, \mathrm{e}{-3}$ s & $20$ s & $7 \, \mathrm{e}{-3}$ s & $1.5$ h \\ + + $5$ & $6 \, \mathrm{e}{-2}$ s & $> 3$ h & $3 \, \mathrm{e}{-2}$ s & - \\ + + $6$ & $0.4$ s & - & $0.4$ s & - \\ + + $7$ & $5.17$ s & - & $4.52$ s & - + \end{tabular} + \caption{Execution time for \emph{SLS} of \gls{nmf} and \gls{svd} for different $L$ } + \label{tab_6_NMF_SVD} +\end{table} + +Calculating $\bm Q$ with \gls{nmf} for $L=1$ already takes 64 seconds. +This is more than \gls{svd} demanded for $L=7$. +The $\bm T$ tensor on the other is much faster and is below a second. +However, as soon as $L=2$ is selected, $\bm T$ takes 1 full hour, $L=4$ more than 1 hour. +The table for \gls{nmf} is not filled, since running $\bm Q$ for $L=5$ was taking more than 3 hours, but still did not finish. +Therefore, the time measurement was aborted. +This behavior was expected since it was already mentioned in \cite{Max2021}. +Overall, the execution time for \gls{nmf} is not following a trend, e.g., computing $\bm T$ for $L=3$ is faster than for $L=2$ and $\bm Q$ for $L=4$ is faster than for $L=1$. +In other words, there is no obvious rule, on whether even a small $L$ could lead to hours of run time.\newline + +It can be concluded that \gls{svd} is much faster than \gls{nmf} and it also shows a clear trend, i.e. the computation time is expected to increase with $L$. +\gls{nmf} on the other hand first requires an appropriate mode number $r$, which most likely demands a parameter study. +However, even for a single \gls{nmf} solution, it can take hours. +With increasing $L$ the amount of run time is generally expected to increase, even though no clear rule can be defined. +Furthermore, it needs to be highlighted that \gls{nmf} was tested on a small model, where $n_{\beta,tr} = 7$. The author of this thesis experienced an additional increase in run time when $n_{\beta,tr}$ is selected higher. +Also, executing \gls{nmf} on multiple dynamical systems or model configurations might become infeasible in terms of time. +Finally, with the implementation of \gls{svd}, the bottleneck in modeling $\bm Q / \bm T$ could be eliminated. + + +\subsection{Prediction quality} +\label{subsec_3_3_2_SVD_Quality} +In this subsection, the quality of the \gls{svd} and \gls{nmf} $\bm Q / \bm T$ predictions are evaluated. +The used model configuration for this aim is \emph{SLS}. +First, only the $\bm Q$ output with \gls{svd} followed by \gls{nmf} shall be analyzed and compared. Then, the same is done for the $\bm T$ output.\newline + + +In order to see how many modes $r$ were chosen for \gls{svd} the two figures \ref{fig_54} and \ref{fig_55} are shown. +It can be derived that with $r = 4$, $99 \%$ of the information content could be captured. The presented results are obtained for $\bm Q$ and $L =1$.\newline + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{minipage}[h]{0.47\textwidth} + \centering + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/10_lb_Q_Cumlative_E.pdf} + \caption{\emph{SLS}, \gls{svd}, cumulative energy of $\bm Q$ for $L=1$} + \label{fig_54} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/11_lb_Q_Sing_Val.pdf} + \caption{\emph{SLS}, \gls{svd}, singular values of $\bm Q$ for $L=1$} + \label{fig_55} + \end{minipage} +\end{figure} + +Figures \ref{fig_56} to \ref{fig_58} depict the original $\bm{Q}(\beta_{unseen} = 28.5)$, which is generated with CNM, the \gls{cnmc} predicted $\bm{\tilde{Q}}(\beta_{unseen} = 28.5)$ and their deviation $| \bm{Q}(\beta_{unseen} = 28.5) - \bm{\tilde{Q}}(\beta_{unseen} = 28.5) |$, respectively. +In the graphs, the probabilities to move from centroid $c_p$ to $c_j$ are indicated. +Contrasting figure \ref{fig_56} and \ref{fig_57} exhibits barely noticeable differences. +For highlighting present deviations, the direct comparison between the \gls{cnm} and \gls{cnmc} predicted $\bm Q$ tensors is given in figure \ref{fig_58}. +It can be observed that the highest value is $max( \bm{Q}(\beta_{unseen} = 28.5) - \bm{\tilde{Q}}(\beta_{unseen} = 28.5) |) \approx 0.0697 \approx 0.07$. +Note that all predicted $\bm Q$ and $\bm T$ tensors are obtained with \gls{rf} as the regression model. +\newline + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5\textwidth} + \centering + \caption{Original $\bm{Q}(\beta_{unseen} = 28.5)$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/12_lb_0_Q_Orig_28.5.pdf} + \label{fig_56} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cnmc} predicted $\bm{\tilde{Q}}(\beta_{unseen} = 28.5)$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/13_lb_2_Q_Aprox_28.5.pdf} + \label{fig_57} + \end{subfigure} + + \smallskip + \centering + \begin{subfigure}{0.7\textwidth} + \caption{Deviation $| \bm{Q}(\beta_{unseen}) - \bm{\tilde{Q}}(\beta_{unseen}) |$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/14_lb_4_Delta_Q_28.5.pdf} + \label{fig_58} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{svd}, original $\bm{Q}(\beta_{unseen} = 28.5)$ , \gls{cnmc} predicted $\bm{\tilde{Q}}(\beta_{unseen} = 28.5)$ and deviation $| \bm{Q}(\beta_{unseen} = 28.5) - \bm{\tilde{Q}}(\beta_{unseen} = 28.5) |$ for $L=1$} + \label{fig_58_Full} +\end{figure} + +The same procedure shall now be performed with NMF. +The results are depicted in figures \ref{fig_59} and \ref{fig_60}. +Note that the original \gls{cnm} $\bm{Q}(\beta_{unseen} = 28.5)$ does not change, thus figure \ref{fig_56} can be reused. +By exploiting figure \ref{fig_61}, it can be observed that the highest deviation for the \gls{nmf} version is $max( \bm{Q}(\beta_{unseen} = 28.5) - \bm{\tilde{Q}}(\beta_{unseen} = 28.5) |) \approx 0.0699 \approx 0.07$. +The maximal error of \gls{nmf} $(\approx 0.0699)$ is slightly higher than that of \gls{svd} $(\approx 0.0697)$. +Nevertheless, both methods have a very similar maximal error and seeing visually other significant differences is hard. +\newline + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5\textwidth} + \centering + \caption{\gls{cnmc} predicted $\bm{\tilde{Q}}(\beta_{unseen} = 28.5)$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/15_lb_2_Q_Aprox_28.5.pdf} + \label{fig_59} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \caption{Deviation $| \bm{Q}(\beta_{unseen} ) - \bm{\tilde{Q}}(\beta_{unseen} ) |$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/16_lb_4_Delta_Q_28.5.pdf} + \label{fig_60} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{nmf}, \gls{cnmc} predicted $\bm{\tilde{Q}}(\beta_{unseen} = 28.5)$ and deviation $| \bm{Q}(\beta_{unseen} = 28.5) - \bm{\tilde{Q}}(\beta_{unseen} = 28.5) |$ for $L=1$} +\end{figure} + +In order to have a quantifiable error value, the Mean absolute error (MAE) following equation \eqref{eq_23} is leveraged. +The MAE errors for \gls{svd} and \gls{nmf} are $MAE_{SVD} = 0.002 580 628$ and $MAE_{NMF} = 0.002 490 048$, respectively. +\gls{nmf} is slightly better than \gls{svd} with $ MAE_{SVD} - MAE_{NMF} \approx 1 \mathrm{e}{-4}$, which can be considered to be negligibly small. +Furthermore, it must be stated that \gls{svd} was only allowed to use $r_{SVD} = 4$ modes, due to the $99 \%$ energy demand, whereas \gls{nmf} used $r_{NMF} = 9$ modes. +Given that \gls{svd} is stable in computational time, i.e., it is not assumed that for low $L$, the computational cost scales up to hours, \gls{svd} is the clear winner for this single comparison. \newline + + +For the sake of completeness, the procedure shall be conducted once as well for the $\bm T$ tensor. +For this purpose figures \ref{fig_61} to \ref{fig_65} shall be considered. +It can be inspected that the maximal errors for \gls{svd} and \gls{nmf} are $max( \bm{T}(\beta_{unseen} = 28.5) - \bm{\tilde{T}}(\beta_{unseen} = 28.5) |) \approx 0.126 $ and + $max( \bm{T}(\beta_{unseen} = 28.5) - \bm{\tilde{T}}(\beta_{unseen} = 28.5) | ) \approx 0.115 $, respectively. +The MAE errors are, $MAE_{SVD} = 0.002 275 379 $ and $MAE_{NMF} = 0.001 635 510$. +\gls{nmf} is again slightly better than \gls{svd} with $ MAE_{SVD} - MAE_{NMF} \approx 6 \mathrm{e}{-4}$, which is a deviation of $\approx 0.06 \%$ and might also be considered as negligibly small. \newline + + +%------------------------------------- SVD T ----------------------------------- +\begin{figure}[!h] + \begin{subfigure}{0.5 \textwidth} + \centering + \caption{Original \gls{cnm} $\bm{T}(\beta_{unseen} = 28.5)$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/17_lb_1_T_Orig_28.5.pdf} + \label{fig_61} + \end{subfigure} + \hfill + \begin{subfigure}{.5 \textwidth} + \centering + \caption{\gls{cnmc} predicted $\bm{\tilde{T}}(\beta_{unseen} = 28.5)$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/18_lb_3_T_Aprox_28.5.pdf} + \label{fig_62} + \end{subfigure} + + \smallskip + \centering + \begin{subfigure}{0.7\textwidth} + \caption{Deviation $| \bm{T}(\beta_{unseen}) - \bm{\tilde{T}}(\beta_{unseen}) |$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/19_lb_5_Delta_T_28.5.pdf} + \label{fig_63} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{svd}, original $\bm{T}(\beta_{unseen} = 28.5)$, predicted $\bm{\tilde{T}}(\beta_{unseen} = 28.5)$ and deviation $| \bm{T}(\beta_{unseen} = 28.5) - \bm{\tilde{T}}(\beta_{unseen} = 28.5) |$ for $L=1$} +\end{figure} + + +%------------------------------------- NMF T ----------------------------------- +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5\textwidth} + \centering + \caption{\gls{cnmc} predicted $\bm{\tilde{T}}(\beta_{unseen} = 28.5)$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/20_lb_3_T_Aprox_28.5.pdf} + \label{fig_64} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Deviation $| \bm{T}(\beta_{unseen}) - \bm{\tilde{T}}(\beta_{unseen}) |$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/2_Mod_CPE/21_lb_5_Delta_T_28.5.pdf} + \label{fig_65} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{nmf}, \gls{cnmc} predicted $\bm{\tilde{T}}(\beta_{unseen} = 28.5)$ and deviation $| \bm{T}(\beta_{unseen} = 28.5) - \bm{\tilde{T}}(\beta_{unseen} = 28.5) |$ for $L=1$} +\end{figure} + +Additional MAE errors for different $L$ and $\beta{unseen}= 28.5,\, \beta{unseen}= 32.5$ are collected in table \ref{tab_7_NMF_SVD_QT}. +First, it can be outlined that regardless of the chosen method, \gls{svd} or \gls{nmf}, all encountered MAE errors are very small. +Consequently, it can be recorded that \gls{cnmc} convinces with an overall well approximation of the $\bm Q / \bm T$ tensors. +Second, comparing \gls{svd} and \gls{nmf} through their respective MAE errors, it can be inspected that the deviation of both is mostly in the order of $ \mathcal{O} \approx 1 \mathrm{e}{-2}$. +It is a difference in $\approx 0.1 \%$ and can again be considered to be insignificantly small.\newline + +Despite this, \gls{nmf} required the additional change given in equation \eqref{eq_33}, which did not apply to \gls{svd}. +The transition time entries at the indexes where the probability is positive should be positive as well. Yet, this is not always the case when \gls{nmf} is executed. To correct that, these probability entries are manually set to zero. +This rule was also actively applied to the results presented above. +Still, the outcome is very satisfactory, because the modeling errors are found to be small. +\newline + +\begin{table}[!h] + \centering + \begin{tabular}{c c| c c| c c } + \textbf{$L$} &$\beta_{unseen}$ + & $\boldsymbol{MAE}_{\gls{svd}, \bm Q}$ + &$\boldsymbol{MAE}_{\gls{nmf}, \bm Q}$ + & $\boldsymbol{MAE}_{\gls{svd}, \bm T}$ + &$\boldsymbol{MAE}_{\gls{nmf}, \bm T}$ \\ + \hline \\ + [-0.8em] + $1$ & $28.5$ + & $0.002580628 $ & $0.002490048$ + & $0.002275379 $ & $0.001635510$\\ + + $1$ & $32.5$ + & $0.003544923$ & $0.003650155$ + & $0.011152145$ & $0.010690052$\\ + + $2$ & $28.5$ + & $0.001823848$ & $0.001776276$ + & $0.000409955$ & $0.000371242$\\ + + $2$ & $32.5$ + & $0.006381635$ & $0.006053059$ + & $0.002417142$ & $0.002368680$\\ + + $3$ & $28.5$ + & $0.000369228$ & $0.000356817$ + & $0.000067680$ & $0.000062964$\\ + + $3$ & $32.5$ + & $0.001462458$ & $0.001432738$ + & $0.000346298$ & $0.000343520$\\ + + + $4$ & $28.5$ + & $0.000055002$ & $0.000052682$ + & $0.000009420$ & $0.000008790$\\ + + $4$ & $32.5$ + & $0.000215147$ & $0.000212329$ + & $0.000044509$ & $0.000044225$ + + \end{tabular} + \caption{\emph{SLS}, Mean absolute error for different $L$ and two $\beta_{unseen}$} + \label{tab_7_NMF_SVD_QT} +\end{table} + +\begin{equation} + \begin{aligned} + TGZ := \bm T ( \bm Q > 0) \leq 0 \\ + \bm Q ( TGZ) := 0 + \end{aligned} + \label{eq_33} +\end{equation} + +In summary, both methods \gls{nmf} and \gls{svd} provide a good approximation of the $\bm Q / \bm T$ tensors. +The deviation between the prediction quality of both is negligibly small. +However, since \gls{svd} is much faster than \gls{nmf} and does not require an additional parameter study, the recommended decomposition method is \gls{svd}. +Furthermore, it shall be highlighted that \gls{svd} used only $r = 4$ modes for the $\bm Q$ case, whereas for \gls{nmf} $r=9$ were used. +Finally, as a side remark, all the displayed figures and the MAE errors are generated and calculated with \gls{cnm}'s default implemented methods. +\FloatBarrier \ No newline at end of file diff --git a/Data/0_Latex_True/3_Task/4_SVD_Regression.tex b/Data/0_Latex_True/3_Task/4_SVD_Regression.tex new file mode 100644 index 0000000000000000000000000000000000000000..d4295a476ca600b80a12600dd0c55f3ac13fb9f9 --- /dev/null +++ b/Data/0_Latex_True/3_Task/4_SVD_Regression.tex @@ -0,0 +1,220 @@ +\section{Transition property regression models} +\label{sec_3_4_SVD_Regression} +In this section, the results of the 3 different regression methods, \glsfirst{rf}, AdaBoost and Gaussian Process (GP) are compared. +All the 3 regressors are implemented in \gls{cnmc} and can be selected via \emph{settings.py}. +The utilized model configuration is \emph{SLS} and the decomposition method is \gls{svd}.\newline + + +First, it shall be noted that \gls{cnmc} also offers the possibility to apply \emph{pySindy}. +However, \emph{pySindy} has struggled to represent the training data in the first place, thus it cannot be employed for predicting $\beta_{unseen}$. +The latter does not mean that \emph{pySindy} is not applicable for the construction of a surrogate model for the decomposed $\bm Q / \bm T$ modes, but rather that the selected candidate library was not powerful enough. +Nevertheless, only results for the 3 initially mentioned regressors will be discussed.\newline + +In figures \ref{fig_66} to \ref{fig_71} the true (dashed) and the approximation (solid) of the first 4 $\bm Q / \bm T$ modes are shown for the methods RF, AdaBoost and GP, respectively. +To begin with, it can be noted that the mode behavior over different model parameter values $mod(\beta)$ is discontinuous, i.e., it exhibits spikes or sudden changes. +In figures \ref{fig_66} and \ref{fig_67} it can be observed that \gls{rf} reflects the actual behavior of $mod(\beta)$ quite well. +However, it encounters difficulties in capturing some spikes. +AdaBoost on the other hand proves in figures \ref{fig_68} and \ref{fig_69} to represent the spikes better. +Overall, AdaBoost outperforms \gls{rf} in mirroring training data. \newline + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5 \textwidth} + \centering + \caption{$\bm Q$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/0_model_Decomp_Regr_RF_More_Q.pdf} + \label{fig_66} + \end{subfigure} + \hfill + \begin{subfigure}{0.5 \textwidth} + \centering + \caption{$\bm T$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/1_model_Decomp_Regr_RF_More_T.pdf} + \label{fig_67} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{svd}, $\bm Q / \bm T$ modes approximation with \gls{rf} for $L=1$} +\end{figure} + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5 \textwidth} + \centering + \caption{$\bm Q$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/2_model_Decomp_Regr_ABoost_More_Q.pdf} + \label{fig_68} + \end{subfigure} + \hfill + \begin{subfigure}{0.5 \textwidth} + \centering + \caption{$\bm T$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/3_model_Decomp_Regr_ABoost_More_T.pdf} + \label{fig_69} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{svd}, $\bm Q / \bm T$ mode approximation with AdaBoost for $L=1$} +\end{figure} + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5 \textwidth} + \centering + \caption{$\bm Q$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/4_model_Decomp_Regr_GP_More_Q.pdf} + \label{fig_70} + \end{subfigure} + \hfill + \begin{subfigure}{0.5 \textwidth} + \centering + \caption{$\bm T$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/5_model_Decomp_Regr_GP_More_T.pdf} + \label{fig_71} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, \gls{svd}, $\bm Q / \bm T$ mode approximation with GP for $L=1$} +\end{figure} + +Gaussian Process (GP) is a very powerful method for regression. +Often this is also true when reproducing $mod(\beta)$. +However, there are cases where the performance is insufficient, as shown in figures \ref{fig_70} and \ref{fig_71}. +Applying GP results in absolutely incorrect predicted tensors $\bm \tilde{Q}(\beta_{unseen}),\, \bm \tilde{T}(\beta_{unseen})$, where too many tensors entries are wrongly forced to zero. +Therefore, $\bm \tilde{Q}(\beta_{unseen}),\, \bm \tilde{T}(\beta_{unseen})$ will eventually lead to an unacceptably high deviation from the original trajectory. +Consequently, the GP regression is not applicable for the decomposed $\bm Q / \bm T$ modes without further modification.\newline + +The two remaining regressors are \glsfirst{rf} and AdaBoost. +Although AdaBoost is better at capturing the true modal behavior $mod(\beta)$, there is no guarantee that it will always be equally better at predicting the modal behavior for unseen model parameter values $mod(\beta_{unseen})$. +In table \ref{tab_8_RF_ABoost} the MAE errors for different $L$ and $\beta_{unseen} = [\, 28.5,\, 32.5\,]$ are provided. +Since the table exhibits much information, the results can also be read qualitatively through the graphs \ref{fig_72_QT_28} and \ref{fig_72_QT_32} for $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$, respectively. +For the visual inspection, it is important to observe the order of the vertical axis scaling. +It can be noted that the MAE errors themselves and the deviation between the \gls{rf} and AdaBoost MAE errors are very low. +Thus, it can be stated that \gls{rf} as well ad AdaBoost are both well-suited regressors.\newline + + +\begin{table}[!h] + \centering + \begin{tabular}{c c| c c| c c } + \textbf{$L$} &$\beta_{unseen}$ + & $\boldsymbol{MAE}_{RF, \bm Q}$ + &$\boldsymbol{MAE}_{AdaBoost, \bm Q}$ + & $\boldsymbol{MAE}_{RF, \bm T}$ + &$\boldsymbol{MAE}_{AdaBoost, \bm T}$ \\ + \hline \\ + [-0.8em] + $1$ & $28.5$ + & $0.002580628 $ & $0.002351781$ + & $0.002275379 $ & $0.002814208$\\ + + $1$ & $32.5$ + & $0.003544923$ & $0.004133114$ + & $0.011152145$ & $0.013054876$\\ + + $2$ & $28.5$ + & $0.001823848$ & $0.001871858$ + & $0.000409955$ & $0.000503748$\\ + + $2$ & $32.5$ + & $0.006381635$ & $0.007952153$ + & $0.002417142$ & $0.002660403$\\ + + $3$ & $28.5$ + & $0.000369228$ & $0.000386292$ + & $0.000067680$ & $0.000082808$\\ + + $3$ & $32.5$ + & $0.001462458$ & $0.001613434$ + & $0.000346298$ & $0.000360097$\\ + + + $4$ & $28.5$ + & $0.000055002$ & $0.000059688$ + & $0.000009420$ & $0.000011500$\\ + + $4$ & $32.5$ + & $0.000215147$ & $0.000230404$ + & $0.000044509$ & $0.000046467$\\ + + $5$ & $28.5$ + & $0.000007276$ & $0.000007712$ + & $0.000001312$ & $0.000001600$\\ + + $5$ & $32.5$ + & $0.000028663$ & $0.000030371$ + & $0.000005306$ & $0.000005623$\\ + + $6$ & $28.5$ + & $0.000000993$ & $0.000052682$ + & $0.000000171$ & $0.000000206$\\ + + $6$ & $32.5$ + & $0.000003513$ & $0.000003740$ + & $0.000000629$ & $0.000000668$\\ + + $7$ & $28.5$ + & $0.000000136$ & $0.000000149$ + & $0.000000023$ & $0.000000031$ \\ + + $7$ & $32.5$ + & $0.000000422$ & $0.000000454$ + & $0.000000078$ & $0.000000082$ + + + \end{tabular} + \caption{\emph{SLS}, Mean absolute error for comparing \gls{rf} and AdaBoost different $L$ and two $\beta_{unseen}$} + \label{tab_8_RF_ABoost} +\end{table} + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5 \textwidth} + \centering + \caption{$\bm Q$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/6_Q_28_5.pdf} + \label{fig_72_Q_28} + \end{subfigure} + \hfill + \begin{subfigure}{0.5 \textwidth} + \centering + \caption{$\bm T$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/7_T_28_5.pdf} + \label{fig_72_T_28} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, Mean absolute error for comparing \gls{rf} and AdaBoost different $L$ and $\beta_{unseen} = 28.5$} + \label{fig_72_QT_28} +\end{figure} + +\begin{figure}[!h] + %\vspace{0.5cm} + \begin{subfigure}[h]{0.5 \textwidth} + \centering + \caption{$\bm Q$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/8_Q_32_5.pdf} + \label{fig_72_Q_32} + \end{subfigure} + \hfill + \begin{subfigure}{0.5 \textwidth} + \centering + \caption{$\bm T$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/3_SVD_QT/9_T_32_5.pdf} + \label{fig_72_T_32} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, Mean absolute error for comparing \gls{rf} and AdaBoost different $L$ and $\beta_{unseen} = 32.5$} + \label{fig_72_QT_32} +\end{figure} + + +In summary, the following can be said, \gls{rf} and AdaBoost are both performing well in regression. Furthermore, no clear winner between the two regressors can be detected. +The third option GP is dismissed as it sometimes has unacceptably low regression performance. +Finally, there is the possibility to use \emph{pySindy}, however, for that, an appropriate candidate library must be defined. +\FloatBarrier \ No newline at end of file diff --git a/Data/0_Latex_True/3_Task/5_Pred.tex b/Data/0_Latex_True/3_Task/5_Pred.tex new file mode 100644 index 0000000000000000000000000000000000000000..4c7d89b25436531d70ac4b73fcf898e60d395ca3 --- /dev/null +++ b/Data/0_Latex_True/3_Task/5_Pred.tex @@ -0,0 +1,27 @@ +\section{CNMc predictions} +\label{sec_3_5_Pred} +In this section, some representative outputs for the \gls{cnmc} predicted trajectories shall be discussed. +For that, first, the quality measurement abilities implemented in \gls{cnmc} are elaborated. +Next, the model \emph{SLS} is analyzed and explained in detail in the subsection \ref{subsec_3_5_1_SLS}. +Finally, the outcome for other models shall be presented briefly in subsection \ref{subsec_3_5_2_Models}.\newline + +There are several methods implemented in \gls{cnmc} to assess the quality of the predicted trajectories. +The first one is the autocorrelation, which will be calculated for all $\vec{\beta}_{unseen}$ and all provided $\vec{L}$, for the true, \gls{cnm} and \gls{cnmc} predicted trajectories. +As usual, the output is plotted and saved as HTML files for a feature-rich visual inspection. +For qualitative assessment, the MAE errors are calculated for all $\vec{\beta}_{unseen}$ and $\vec{L}$ for two sets. +The first set consists of the MAE errors between the true and the \gls{cnm} predicted trajectories. +The second set contains the MAE errors between the true and the \gls{cnmc} predicted trajectories. +Both sets are plotted as MAE errors over $L$ and stored as HTML files. +Furthermore, the one $L$ value which exhibits the least MAE error is printed in the terminal and can be found in the log file as well. \newline + +The second technique is the \gls{cpd}, which will also be computed for all the 3 trajectories, i.e., true, \gls{cnm} and \gls{cnmc} predicted trajectories. +The \gls{cpd} depicts the probability of being at one centroid $c_i$. +For each $\vec{\beta}_{unseen}$ and all $L$ the \gls{cpd} is plotted and saved. +The third method displays all the 3 trajectories in the state space. +Moreover, the trajectories are plotted as 2-dimensional graphs, i.e., each axis as a subplot over the time $t$. +The final method calculates the MAE errors of the $\bm Q / \bm T$ tensors for all $L$.\newline + +The reason why more than one quality measurement method is integrated into \gls{cnmc} is that \gls{cnmc} should be able to be applied to, among other dynamical systems, chaotic systems. +The motion of the Lorenz system \eqref{eq_6_Lorenz} is not as complex as of the, e.g., the \emph{Four Wing} \eqref{eq_10_4_Wing}. +Nevertheless, the Lorenz system already contains quasi-random elements, i.e., the switching from one ear to the other cannot be captured exactly with a surrogate mode. However, the characteristic of the Lorenz system and other chaotic dynamical systems as well can be replicated. +In order to prove the latter, more than one method to measure the prediction quality is required. \ No newline at end of file diff --git a/Data/0_Latex_True/3_Task/6_SLS.tex b/Data/0_Latex_True/3_Task/6_SLS.tex new file mode 100644 index 0000000000000000000000000000000000000000..c1abacedfa76a33db31c456903d1b4a1df5192aa --- /dev/null +++ b/Data/0_Latex_True/3_Task/6_SLS.tex @@ -0,0 +1,107 @@ +\subsection{Assessment of SLS} +\label{subsec_3_5_1_SLS} +In this subsection, the prediction capability for the \emph{SLS} will be analyzed in detail. All the presented output is generated with \gls{svd} as the decomposition method and \gls{rf} as the $\bm Q / \bm T$ regressor.\newline + +The final objective of \gls{cnmc} is to capture the characteristics of the original trajectory. +However, it is important to outline that \gls{cnmc} is trained with the \gls{cnm} predicted trajectories. +Thus, the outcome of \gls{cnmc} highly depends on the ability of \gls{cnm} to represent the original data. +Consequently, \gls{cnmc} can only be as effective as \gls{cnm} is in the first place, with the approximation of the true data. +Figures \ref{fig_72} and \ref{fig_73} show the true, \gls{cnm} and \gls{cnmc} predicted trajectories and a focused view on the \gls{cnm} and \gls{cnmc} trajectories, respectively. +The output was generated for $\beta_{unseen} = 28.5$ and $L =1$. +First, it can be observed that \gls{cnm} is not able to capture the full radius of the Lorenz attractor. +This is caused by the low chosen number of centroids $K=10$. +Furthermore, as mentioned at the beginning of this chapter, the goal is not to replicate the true data one-to-one, but rather to catch the significant behavior of any dynamic system. +With the low number of centroids $K$, \gls{cnm} extracts the characteristics of the Lorenz system well. +Second, the other aim for \gls{cnmc} is to match the \gls{cnm} data as closely as possible. +Both figures \ref{fig_72} and \ref{fig_73} prove that \gls{cnmc} has fulfilled its task very well. \newline + +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{True, \gls{cnm} and \gls{cnmc} predicted trajectories} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/4_SLS/0_lb_28.5_All.pdf} + \label{fig_72} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cnm} and \gls{cnmc} predicted trajectories} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/4_SLS/1_lb_28.5.pdf} + \label{fig_73} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, $\beta_{unseen}=28.5,\, L=1$, true, \gls{cnm} and \gls{cnmc} predicted trajectories} +\end{figure} + + +A close-up of the movement of the different axes is shown in the picture \ref{fig_74}. +Here, as well, the same can be observed as described above. Namely, the predicted \gls{cnmc} trajectory is not a one-to-one reproduction of the original trajectory. +However, the characteristics, i.e., the magnitude of the motion in all 3 directions (x, y, z) and the shape of the oscillations, are very similar to the original trajectory. +Note that even though the true and predicted trajectories are utilized to assess, whether the characteristical behavior could be extracted, a single evaluation based on the trajectories is not sufficient and often not advised or even possible. +In complex systems, trajectories can change rapidly while dynamical features persist \cite{Fernex2021a}. +In \gls{cnmc} the predicted trajectories are obtained through the \gls{cnm} propagation, which itself is based on a probabilistic model, i.e. the $\bm Q$ tensor. +Thus, matching full trajectories becomes even more unrealistic. +The latter two statements highlight yet again that more than one method of measuring quality is needed. +To further support the generated outcome the autocorrelation and \gls{cpd} in figure \ref{fig_75} and \ref{fig_76}, respectively, shall be considered. +It can be inspected that the \gls{cnm} and \gls{cnmc} autocorrelations are matching the true autocorrelation in the shape favorably well. +Nonetheless, the degree of reflecting the magnitude fully decreases quite fast. +Considering the \gls{cpd}, it can be recorded that the true \gls{cpd} could overall be reproduced satisfactorily.\newline + +\begin{figure}[!h] + \centering + \includegraphics[width =0.75\textwidth] + {2_Figures/3_Task/4_SLS/2_lb_28.5_3V_All.pdf} + \caption{\emph{SLS}, $\beta_{unseen}=28.5, \, L=1$, true, \gls{cnm} and \gls{cnmc} predicted trajectories as 2d graphs } + \label{fig_74} +\end{figure} + + +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{autocorrelation} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/4_SLS/3_lb_3_all_28.5.pdf} + \label{fig_75} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cpd}} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/4_SLS/4_lb_28.5.pdf} + \label{fig_76} + \end{subfigure} + \vspace{-0.3cm} + \caption{\emph{SLS}, $\beta_{unseen}= 28.5, \, L =1$, autocorrelation and \gls{cpd} for true, \gls{cnm} and \gls{cnmc} predicted trajectories} +\end{figure} + + +To illustrate the influence of $L$, figure \ref{fig_77} shall be viewed. +It depicts the MAE error for the true and \gls{cnmc} predicted trajectories for $\beta_{unseen}= [\, 28.5,\, 32.5 \, ]$ with $L$ up to 7. +It can be observed that the choice of $L$ has an impact on the prediction quality measured by autocorrelation. +For $\beta_{unseen}=28.5$ and $\beta_{unseen}=32.5$, the optimal $L$ values are $L = 2$ and $L = 7$, respectively. To emphasize it even more that with the choice of $L$ the prediction quality can be regulated, figure \ref{fig_78} shall be considered. +It displays the 3 autocorrelations for $L = 7$. +Matching the shape of the true autocorrelation was already established with $L =1$ as shown in figure \ref{fig_75}. In addition to that, $L=7$ improves by matching the true magnitude. +Finally, it shall be mentioned that similar results have been accomplished with other $K$ tested values, where the highest value was $K =50$. + +\begin{figure}[!h] + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth] + {2_Figures/3_Task/4_SLS/5_lb_1_Orig_CNMc.pdf} + \caption{\emph{SLS}, MAE error for true and \gls{cnmc} predicted autocorrelations for $\beta_{unseen}= [\, 28.5,$ $32.5 \, ]$ and different values of $L$} + \label{fig_77} + \end{minipage} + \hfill + \begin{minipage}{0.47\textwidth} + \centering + \includegraphics[width =\textwidth] + {2_Figures/3_Task/4_SLS/6_lb_3_all_32.5.pdf} + \caption{\emph{SLS}, $\beta_{unseen}=32.5, \, L=7$, \gls{cnm} and \gls{cnmc} predicted autocorrelation } + \label{fig_78} + \end{minipage} + \end{figure} +\FloatBarrier diff --git a/Data/0_Latex_True/3_Task/7_Models.tex b/Data/0_Latex_True/3_Task/7_Models.tex new file mode 100644 index 0000000000000000000000000000000000000000..17ad5b3acf3505091184331c5f990b2919bb10e2 --- /dev/null +++ b/Data/0_Latex_True/3_Task/7_Models.tex @@ -0,0 +1,320 @@ +\subsection{Results of further dynamical systems} +\label{subsec_3_5_2_Models} +In this subsection, the \gls{cnmc} prediction results for other models will be displayed. +The chosen dynamical systems with their configurations are the following. +% ============================================================================== +\begin{enumerate} + \item \emph{FW50}, based on the \emph{Four Wing} set of equations \eqref{eq_10_4_Wing} with $K=50, \, \vec{\beta }_{tr} = [\, \beta_0 = 8 ; \, \beta_{end} = 11 \,], \, n_{\beta, tr} = 13$. + + \item \emph{Rössler15}, based on the \emph{Rössler} set of equations \eqref{eq_7_Ross} with $K=15, \, \vec{\beta }_{tr} = [\, \beta_0 = 6 ; \, \beta_{end} = 13 \,], \, n_{\beta, tr} = 15$. + + \item \emph{TS15}, based on the \emph{Two Scroll} set of equations \eqref{eq_9_2_Scroll} with $K=15, \, \vec{\beta }_{tr} = [\, \beta_0 = 5 ; \, \beta_{end} = 12 \,], \, n_{\beta, tr} = 15$. +\end{enumerate} +All the presented outputs were generated with \gls{svd} as the decomposition method and \gls{rf} as the $\bm Q / \bm T$ regressor. +Furthermore, the B-spline interpolation in the propagation step of \gls{cnm} was replaced with linear interpolation. +The B-spline interpolation was originally utilized for smoothing the motion between two centroids. +However, it was discovered for a high number of $K$, the B-spline interpolation is not able to reproduce the motion between two centroids accurately, but rather would impose unacceptable high deviations or oscillations into the predictions. +This finding is also mentioned in \cite{Max2021} and addressed as one of \emph{ first CNMc's} limitations. +Two illustrative examples of the unacceptable high deviations caused by the B-spline interpolation are given in figures \ref{fig_82_Traject} and \ref{fig_82_Autocorr}. +The results are obtained for \emph{LS20} for $\beta = 31.75$ and $\beta = 51.75$ with $L=3$. +In figures \ref{fig_82_Traj_B} and \ref{fig_83_Traj_B} it can be inspected that the B-spline interpolation has a highly undesired impact on the predicted trajectories. +In Contrast to that, in figures, \ref{fig_82_Traj_L} and \ref{fig_83_Traj_L}, where linear interpolation is utilized, no outliers are added to the predictions. +The impact of the embedded outliers, caused by the B-spline interpolation, on the autocorrelation is depicted in figures \ref{fig_82_Auto_B} and \ref{fig_83_Auto_B}. +The order of the deviation between the true and the \gls{cnmc} predicted autocorrelation can be grasped by inspecting the vertical axis scale. +Comparing it with the linear interpolated autocorrelations, shown in figures \ref{fig_82_Auto_L} and \ref{fig_83_Auto_L}, it can be recorded that the deviation between the true and predicted autocorrelations is significantly lower than in the B-spline interpolation case. +\newline + +Nevertheless, it is important to highlight that the B-spline interpolation is only a tool for smoothing the motion between two centroids. +The quality of the modeled $\bm Q / \bm T$ cannot be assessed directly by comparing the trajectories and the autocorrelations. +To stress that the \gls{cpd} in figure \ref{fig_82_CPD_B} and \ref{fig_83_CPD_B} shall be considered. +It can be observed that \gls{cpd} does not represent the findings of the autocorrelations, i.e., the true and predicted behavior agree acceptably overall. +This is because the type of interpolation has no influence on the modeling of the probability tensor $\bm Q$. +Thus, the outcome with the B-spline interpolation should not be regarded as an instrument that enables making assumptions about the entire prediction quality of \gls{cnmc}. The presented points underline again the fact that more than one method should be considered to evaluate the prediction quality of \gls{cnmc}. +\newline + + +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, B-spline, $\beta_{unseen} = 31.75$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/18_lb_31.75_All.pdf} + \label{fig_82_Traj_B} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, B-spline, $\beta_{unseen} = 51.75$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/19_lb_51.75_All.pdf} + \label{fig_83_Traj_B} + \end{subfigure} + + % ------------- Linear ---------------------- + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, linear, $\beta_{unseen} = 31.75$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/24_lb_31.75_All.pdf} + \label{fig_82_Traj_L} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, linear, $\beta_{unseen} = 51.75$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/25_lb_51.75_All.pdf} + \label{fig_83_Traj_L} + \end{subfigure} + \vspace{-0.3cm} + \caption{Illustrative undesired oscillations cased by the B-spline interpolation and its impact on the predicted trajectory contrasted with linear interpolation, \emph{LS20}, $\beta = 31.75$ and $\beta =51.75$, $L=3$} + \label{fig_82_Traject} +\end{figure} + +%----------------------------------- AUTOCOR ----------------------------------- + +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, B-spline, $\beta = 31.75$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/20_lb_3_all_31.75.pdf} + \label{fig_82_Auto_B} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, B-spline, $\beta_{unseen} = 51.75$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/21_lb_3_all_51.75.pdf} + \label{fig_83_Auto_B} + \end{subfigure} + + \smallskip + % ------------- LINEAR ---------------------- + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, linear, $\beta = 31.75$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/26_lb_3_all_31.75.pdf} + \label{fig_82_Auto_L} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, linear, $\beta_{unseen} = 51.75$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/27_lb_3_all_51.75.pdf} + \label{fig_83_Auto_L} + \end{subfigure} + \vspace{-0.3cm} + \caption{Illustrative undesired oscillations cased by the B-spline interpolation and its impact on the predicted autocorrelations contrasted with linear interpolation, \emph{LS20}, $\beta = 31.75$ and $\beta =51.75$, $L=3$} + \label{fig_82_Autocorr} +\end{figure} + +\begin{figure}[!h] + % ------------- CPD ---------------------- + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cpd}, $\beta = 31.75$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/22_lb_31.75.pdf} + \label{fig_82_CPD_B} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cpd}, $\beta_{unseen} = 51.75$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/23_lb_51.75.pdf} + \label{fig_83_CPD_B} + \end{subfigure} + \vspace{-0.3cm} + \caption{Illustrative the B-spline interpolation and its impact on the \glspl{cpd}, \emph{LS20}, $\beta = 31.75$ and $\beta =51.75$, $L=3$} +\end{figure} + +\FloatBarrier +The results generated with the above mentioned linear interpolation for \emph{FW50}, \emph{Rössler15} and \emph{TS15} are depicted in figures \ref{fig_79} to \ref{fig_81}, respectively. +Each of them consists of an illustrative trajectory, 3D and 2D trajectories, the autocorrelations, the \gls{cpd} and the MAE error between the true and \gls{cnmc} predicted trajectories for a range of $\vec{L}$ and some $\vec{\beta}_{unseen}$. +The illustrative trajectory includes arrows, which provide additional information. +First, the direction of the motion, then the size of the arrows represents the velocity of the system. Furthermore, the change in the size of the arrows is equivalent to a change in the velocity, i.e., the acceleration. +Systems like the \emph{TS15} exhibit a fast change in the size of the arrows, i.e., the acceleration is nonlinear. +The more complex the behavior of the acceleration is, the more complex the overall system becomes. +The latter statement serves to emphasize that \gls{cnmc} can be applied not only to rather simple systems such as the Lorenz attractor \cite{lorenz1963deterministic}, but also to more complex systems such as the \emph{FW50} and \emph{TS15}.\newline + +All in all, the provided results for the 3 systems are very similar to those already explained in the previous subsection \ref{subsec_3_5_1_SLS}. +Thus, the results presented are for demonstration purposes and will not be discussed further. +However, the 3 systems also have been calculated with different values for $K$. +For \emph{FW50}, the range of $\vec{K}= [\, 15, \, 30, \, 50 \, ]$ was explored with the finding that the influence of $K$ remained quite small. +For \emph{Rössler15} and \emph{TS15}, the ranges were chosen as $\vec{K}= [\, 15, \, 30, \, 100\,]$ and $\vec{K}= [\, 15, \, 75 \,]$, respectively. +The influence of $K$ was found to be insignificant also for the latter two systems. +% ============================================================================== +% ======================= FW50 ================================================= +% ============================================================================== +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Illustrative trajectory $\beta = 9$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/0_lb_9.000.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, $\beta_{unseen} = 8.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/1_lb_8.1_All.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{2D-trajectories, $\beta_{unseen} = 8.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/2_lb_8.1_3V_All.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, $\beta_{unseen} = 8.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/3_lb_3_all_8.1.pdf} + \end{subfigure} + + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cpd}, $\beta_{unseen} = 8.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/4_lb_8.1.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations $MAE(L,\, \beta_{unseen})$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/5_lb_1_Orig_CNMc.pdf} + \end{subfigure} + \vspace{-0.3cm} + \caption{Results for \emph{FW50}, $\beta_{unseen} = 8.1, \, L= 2$} + \label{fig_79} +\end{figure} +% ============================================================================== +% ======================= FW50 ================================================= +% ============================================================================== + +% ============================================================================== +% ======================= Rossler 15 =========================================== +% ============================================================================== +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Illustrative trajectory $\beta = 7.5$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/6_lb_7.500.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, $\beta_{unseen} = 9.6$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/7_lb_9.6_All.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{2D-trajectories, $\beta_{unseen} = 9.6$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/8_lb_9.6_3V_All.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, $\beta_{unseen} = 9.6$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/9_lb_3_all_9.6.pdf} + \end{subfigure} + + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cpd}, $\beta_{unseen} = 9.6$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/10_lb_9.6.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations $MAE(L,\, \beta_{unseen})$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/11_lb_1_Orig_CNMc.pdf} + \end{subfigure} + \vspace{-0.3cm} + \caption{Results for \emph{Rössler15}, $\beta_{unseen} = 9.6,\, L =1$} + \label{fig_80} +\end{figure} +% ============================================================================== +% ======================= Rossler 15 =========================================== +% ============================================================================== + + +% ============================================================================== +% ======================= TS 15 =========================================== +% ============================================================================== +\begin{figure}[!h] + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Illustrative trajectory $\beta = 11$ } + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/12_lb_11.000.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Trajectories, $\beta_{unseen} = 5.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/13_lb_5.1_All.pdf} + \end{subfigure} + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{2D-trajectories, $\beta_{unseen} = 5.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/14_lb_5.1_3V_All.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations, $\beta_{unseen} = 5.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/15_lb_3_all_5.1.pdf} + \end{subfigure} + + + \smallskip + \begin{subfigure}{0.5\textwidth} + \centering + \caption{\gls{cpd}, $\beta_{unseen} = 5.1$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/16_lb_5.1.pdf} + \end{subfigure} + \hfill + \begin{subfigure}{0.5\textwidth} + \centering + \caption{Autocorrelations $MAE(L,\, \beta_{unseen})$} + \includegraphics[width =\textwidth] + {2_Figures/3_Task/5_Models/17_lb_1_Orig_CNMc.pdf} + \end{subfigure} + \vspace{-0.3cm} + \caption{Results for \emph{TS15}, $\beta_{unseen} = 5.1,\, L =2$} + \label{fig_81} +\end{figure} +% ============================================================================== +% ======================= TS 15 ================================================ +% ============================================================================== + diff --git a/Data/0_Latex_True/4_Task/1_Concl.tex b/Data/0_Latex_True/4_Task/1_Concl.tex new file mode 100644 index 0000000000000000000000000000000000000000..5e6b1dd760e2dd417ac8a747d182260a757e96cd --- /dev/null +++ b/Data/0_Latex_True/4_Task/1_Concl.tex @@ -0,0 +1,37 @@ +\chapter{Conclusion and outlook} +A tool to capture and predict the behavior of nonlinear complex and chaotic dynamical systems within a range of some model parameter values $\vec{\beta}$ is presented. +The tool is called \glsfirst{cnmc}. +It could be shown that \gls{cnmc} is able to capture and make predictions for the well-known Lorenz system \cite{lorenz1963deterministic}. +With having removed one of the major limitations in the first attempt of \gls{cnmc} \cite{Max2021}, the introduced version of \gls{cnmc} is not limited to any dimension anymore. +Furthermore, the restriction of the dynamical system to exhibit a circular trajectory is removed. +Since these two limitations could be removed, the presented \gls{cnmc} can be applied to any general dynamical system. +To outline this fact, 10 different dynamical systems are implemented by default in \gls{cnmc}. +Some of these dynamical systems were used to evaluate \gls{cnmc} performance. +It could be observed that \gls{cnmc} is not only able to deal with the Lorenz system but also with more complicated systems. +The objective is to represent the characteristic behavior of general dynamical systems that could be fulfilled on all tested systems.\newline + +The third limitation which could be removed is the unacceptably high computational time with \glsfirst{nmf}. +It could be highlighted that \glsfirst{svd} returns the decomposition within seconds, instead of hours, without adding any inaccuracies. +Moreover, \gls{svd} does not require a parameter study. +Executing \gls{nmf} once is already computational more expensive than \gls{svd}, but with a parameter study, \gls{nmf} becomes even more unsatisfactory in the application. +By having removed these 3 major limitations, \gls{cnmc} can be applied to any dynamical system within a reasonable computational time on a regular laptop. +Nevertheless, \gls{cnmc} contains algorithms, which highly benefit from computational power. Thus, faster outputs are achieved with clusters. +Also, with having replaced the B-spline interpolation through linear interpolation, the predicted trajectories can be visually depicted appropriately without the +Another important introduced advancement is that the B-spline interpolation was replaced by linear interpolation. This allows to avoid unreasonably high interpolation errors (oscillations) of the trajectory and enables an appropriate visualization. +\newline + + +\gls{cnmc} Is written from scratch in a modular way such that implementing it into existing code, replacing employed algorithms with others is straightforward or used as a black-box function. +All important parameters can be adjusted via one file (\emph{settings.py}). +Helpful post-processing features are part of \gls{cnmc} and can also be controlled with \emph{settings.py}. +Overall \gls{cnmc} includes a high number of features, e.g., a log file, storing results at desired steps, saving plots as HTML files which allow extracting further information about the outcome, the ability to execute multiple models consequentially, and activating and disabling each step of \gls{cnmc}. +All displayed outputs in this thesis were generated with \gls{cnmc}. +Finally, one limitation which remains shall be mentioned. +The used \gls{svd} code receives sparse matrices, however, it returns a dense matrix. The consequence is that with high model orders $L$, quickly multiple hundreds of gigabytes of RAM are required. +The maximal $L$ which could be achieved on the laptop of the author, which has 16 GB RAM, is $L=7$.\newline + +As an outlook, a new \gls{svd} algorithm should be searched for or written from scratch. +The demand for the new \gls{svd} solver is that it must receive sparse matrices and also returns the solution in form of sparse matrices. +With that $L$ could be increased, i.e., $L>7$. +In this thesis, it could be shown that \gls{cnmc} can handle chaotic systems well. Thus, the next step could be, replacing the current data generation step, where differential equations are solved, with actual \gls{cfd} data as input. +Hence, the objective would be to apply \gls{cnmc} to real \gls{cfd} data to predict flow fields. \ No newline at end of file diff --git a/Data/0_Latex_True/4_Task/2_Zusammen_Deutsch.tex b/Data/0_Latex_True/4_Task/2_Zusammen_Deutsch.tex new file mode 100644 index 0000000000000000000000000000000000000000..d6f6c2868cc1d5331229cc568e09689d8c60b1f1 --- /dev/null +++ b/Data/0_Latex_True/4_Task/2_Zusammen_Deutsch.tex @@ -0,0 +1,37 @@ +\chapter{Zusammenfassung auf Deutsch} +Die Arbeit wurde an der Technischen Universität Braunschweig geschrieben. +Da diese Arbeit auf eine Fremdsprache geschrieben wurde, soll der Anforderung der TU-Braunschweig, dass eine Zusammenfassung auf Deutsch, welche etwa 1 DIN A4-Seite beträgt, nachgekommen werden. +Zunächst wird kurz die Motivation dieser Master-Arbeit erklärt. Im Anschluss sollen die Ergebnisse im Kurzen erörtert werden.\newline + +In dieser Master-Arbeit war es Ziel, eine bereits bestehende Methode, das sog. \glsfirst{cnmc}, zu verbessern. Die Vorversion ist in \cite{Max2021} beschrieben. Hier konnte gezeigt werden, dass \gls{cnmc} für das Lorenz System, \cite{lorenz1963deterministic} vielversprechende Approximationen zulässt. +Das Lorenz System ist recht bekannt unter den chaotischen Systemen. Ein chaotisches System ist ein dynamisches System, was selbst durch Differenzialgleichungen beschrieben wird. +Sinn von \gls{cnmc} ist daher, das Approximieren bzw. Vorhersagen von Trajektorien (zeitliche Lösung der Differenzialgleichung) von dynamischen Systemen. +\gls{cnmc} wurde innerhalb der ersten Version speziell für das Lorenz System entwickelt, sodass es nicht für allgemeingültige dynamische System verwendet werden konnte. +Die Limitierungen verlangten unter anderem, dass die Trajektorie kreisförmig seien müsse. Zudem, musste ein 3-dimensionales Problem vorliegen. Weiters kam hinzu, dass ein wichtiger Schritt in dem \gls{cnmc} Arbeitsablauf (Moden-Findung) mehrere Stunden in Anspruch nahm und somit die Anwendung von \gls{cnmc} unattraktiver machte. +Aufgrund dessen, dass es Schwierigkeiten beim Ausführen der ersten \gls{cnmc}-Version gab, wurde \gls{cnmc} von neu programmiert.\newline + + +Zunächst wurde der Code nun in der Form geschrieben, dass der Nutzer nach Belieben neue dynamische Systeme einfach hinzufügen kann. Standardmäßig kommt \gls{cnmc} bereits mit 10 verschiedenen dynamischen Systemen. Danach wurden zwei wichtige Limitierungen entfernt. Die Erste, \gls{cnmc} kann inzwischen mit jedem Verhalten der Trajektorie umgehen. In anderen Worten, die Trajektorie des dynamischen Systems muss nicht kreisförmig sein. Zweitens ist \gls{cnmc} nicht mehr durch die Anzahl der Dimension restriktiert. Vereinfacht ausgedrückt, ob \gls{cnmc} auf eine 3d oder eine andere beliege dimensionale Differenzialgleichung angewendet werden soll, spielt keine Rolle mehr. +Für den Schritt, in welchem die Moden einer Daten-Matrix gefunden werden, stehen aktuell zwei verschiedene Möglichkeiten zu Verfügung, \glsfirst{nmf} und \glsfirst{svd}. \gls{nmf} wurde bereits in der ersten Version von \gls{cnmc} verwendet. +Doch wurde es dahingehend weiter verbessert, dass jetzt das Finden des wichtigen Parameters, der Anzahl der verwendeten Moden, automatisiert durchgeführt wird. +Somit kann \gls{nmf} automatisiert auf unterschiedliche dynamische System angewendet werden. +\gls{svd} ist die zweite Methode und wurde implementiert, um die hohe Rechenzeit des \gls{nmf} zu verhindern. +Es konnte gezeigt werden, dass \gls{svd} tatsächlich, um ein vielfaches schneller als \gls{nmf} ist. +Die Rechenzeit von \gls{svd} bewegt sich im Bereich von Sekunden, wohingegen \gls{nmf} mehrere Stunden in Anspruch nehmen kann. +Auch wurde auch gezeigt, dass beide Methoden qualitativ gleichwertige Ergebnisse liefern.\newline + + +Eine weitere wichtige Änderung, welche in der aktuellen \gls{cnmc} Version implementiert ist die, dass eine sog. B-Spline Interpolation durch eine lineare Interpolation ersetzt wurde. Als Folge können unangebracht hohe Interpolationsfehler (Oszillationen) der Trajektorie umgangen werden. Durch letztere Änderung können die Ergebnisse nun auch Graph dargestellt werden, ohne dass durch die B-Spline Interpolation eingebrachte Ausreißer eine visuelle Auswertung unmöglich machen.\newline + + +Mit dieser Arbeit konnte gezeigt werden, dass \gls{cnmc} nicht nur für das Lorenz System, sondern für allgemeingültige dynamische Systeme verwendet werden kann. Hierfür wurden beispielsweise die Ergebnisse für drei andere dynamische Systeme gezeigt. Die aktuelle \gls{cnmc} Version wurde in einer modularen Art geschrieben, welche es erlaubt, einzelne Algorithmen leicht durch andere zu ersetzen. +Jeder einzelne Haupt-Schritt in \gls{cnmc} kann aktiviert oder deaktiviert werden. Dadurch können bereits vorhanden Ergebnisse eingeladen werden, anstatt diese jedes Mal neu zu berechnen. Das Resultat ist eine hohe Ersparnis an Rechenzeit. \gls{cnmc} kommt mit vielen Features, über eine einzige Datei lässt sich der gesamte Ablauf von \gls{cnmc} steuern. Wodurch bestimmt werden kann, welche Parameter in den einzelnen Schritten verwendet werden, wo Ergebnisse abgespeichert und geladen werden sollen, sowie auch wo und ob die Ergebnisse visuell abgespeichert werden sollen. +Die Resultate werden für die visuelle Inspektion als HTML-Dateien zur Verfügung gestellt. Damit ist es möglich weitere Informationen zu erhalten, wie beispielsweise, das Ablesen von Werten an bestimmten Stellen und anderen nützlichen Funktionen, wie etwa das Rotieren, Zoomen und Ausblenden einzelner Graphen. +Das Ziel war es, dem Nutzer einen Post-Processor mitzugeben, sodass er auch ohne weitere kostenpflichtige Software visuelle Auswertungen vornehmen kann. Doch \gls{cnmc} hat auch eine log-Datei integriert, in welcher alle Ausgaben, wie unter anderem Ergebnisse einzelner Qualitätsmesstechniken (Metriken bzw. Normen) nachgelesen werden können.\newline + + +Zusammenfassend lässt sich sagen, mit dieser Master-Thesis befindet sich \gls{cnmc} in einem Zustand, in welchem es für allgemeingültige dynamische Systeme angewendet werden kann. Das Implementieren von weiteren Systemen wurde vereinfacht und wichtige Limitierungen, wie Anzahl der Dimensional und unzulässig hohe Rechenzeit konnten beseitigt werden. Zudem ist das Tool gut dokumentiert, und bietet diverse Features an, worunter beispielsweise die Post-Processing Möglichkeiten inbegriffen sind. + + + + diff --git a/Data/10_Law/license_Hippocratic b/Data/10_Law/license_Hippocratic new file mode 100644 index 0000000000000000000000000000000000000000..2d0c51210656c96d98e7f6fd1886717a78e28c0e --- /dev/null +++ b/Data/10_Law/license_Hippocratic @@ -0,0 +1,51 @@ +/* ========================================================================== */ +/* =============================== Jav Comment ============================== */ +/* ========================================================================== */ +This project uses the library: https://github.com/animate-css/animate.css +it has a very nice license which shall be linked to: + +please see the original version of the license: https://raw.githubusercontent.com/animate-css/animate.css/main/LICENSE + +The content of the license is copied below the Jav Comment End section + +Also, I want to say thank you to all the people who have contributed to the https://github.com/animate-css/animate.css library. Not only because of the actual content of their library but especially because through their project I came to know about the very appealing Hippocratic License + +Update: 12.03.2023 - The library animate-css library is not required - not used in this project as for now + +/* ========================================================================== */ +/* ============================= Jav Comment End ============================ */ +/* ========================================================================== */ + +Animate.css Copyright 2021 Daniel Eden (“Licensor”) + +Hippocratic License Version Number: 2.1. + +Purpose. The purpose of this License is for the Licensor named above to permit the Licensee (as defined below) broad permission, if consistent with Human Rights Laws and Human Rights Principles (as each is defined below), to use and work with the Software (as defined below) within the full scope of Licensor’s copyright and patent rights, if any, in the Software, while ensuring attribution and protecting the Licensor from liability. + +Permission and Conditions. The Licensor grants permission by this license (“License”), free of charge, to the extent of Licensor’s rights under applicable copyright and patent law, to any person or entity (the “Licensee”) obtaining a copy of this software and associated documentation files (the “Software”), to do everything with the Software that would otherwise infringe (i) the Licensor’s copyright in the Software or (ii) any patent claims to the Software that the Licensor can license or becomes able to license, subject to all of the following terms and conditions: + +* Acceptance. This License is automatically offered to every person and entity subject to its terms and conditions. Licensee accepts this License and agrees to its terms and conditions by taking any action with the Software that, absent this License, would infringe any intellectual property right held by Licensor. + +* Notice. Licensee must ensure that everyone who gets a copy of any part of this Software from Licensee, with or without changes, also receives the License and the above copyright notice (and if included by the Licensor, patent, trademark and attribution notice). Licensee must cause any modified versions of the Software to carry prominent notices stating that Licensee changed the Software. For clarity, although Licensee is free to create modifications of the Software and distribute only the modified portion created by Licensee with additional or different terms, the portion of the Software not modified must be distributed pursuant to this License. If anyone notifies Licensee in writing that Licensee has not complied with this Notice section, Licensee can keep this License by taking all practical steps to comply within 30 days after the notice. If Licensee does not do so, Licensee’s License (and all rights licensed hereunder) shall end immediately. + +* Compliance with Human Rights Principles and Human Rights Laws. + + 1. Human Rights Principles. + + (a) Licensee is advised to consult the articles of the United Nations Universal Declaration of Human Rights and the United Nations Global Compact that define recognized principles of international human rights (the “Human Rights Principles”). Licensee shall use the Software in a manner consistent with Human Rights Principles. + + (b) Unless the Licensor and Licensee agree otherwise, any dispute, controversy, or claim arising out of or relating to (i) Section 1(a) regarding Human Rights Principles, including the breach of Section 1(a), termination of this License for breach of the Human Rights Principles, or invalidity of Section 1(a) or (ii) a determination of whether any Law is consistent or in conflict with Human Rights Principles pursuant to Section 2, below, shall be settled by arbitration in accordance with the Hague Rules on Business and Human Rights Arbitration (the “Rules”); provided, however, that Licensee may elect not to participate in such arbitration, in which event this License (and all rights licensed hereunder) shall end immediately. The number of arbitrators shall be one unless the Rules require otherwise. + + Unless both the Licensor and Licensee agree to the contrary: (1) All documents and information concerning the arbitration shall be public and may be disclosed by any party; (2) The repository referred to under Article 43 of the Rules shall make available to the public in a timely manner all documents concerning the arbitration which are communicated to it, including all submissions of the parties, all evidence admitted into the record of the proceedings, all transcripts or other recordings of hearings and all orders, decisions and awards of the arbitral tribunal, subject only to the arbitral tribunal's powers to take such measures as may be necessary to safeguard the integrity of the arbitral process pursuant to Articles 18, 33, 41 and 42 of the Rules; and (3) Article 26(6) of the Rules shall not apply. + + 2. Human Rights Laws. The Software shall not be used by any person or entity for any systems, activities, or other uses that violate any Human Rights Laws. “Human Rights Laws” means any applicable laws, regulations, or rules (collectively, “Laws”) that protect human, civil, labor, privacy, political, environmental, security, economic, due process, or similar rights; provided, however, that such Laws are consistent and not in conflict with Human Rights Principles (a dispute over the consistency or a conflict between Laws and Human Rights Principles shall be determined by arbitration as stated above). Where the Human Rights Laws of more than one jurisdiction are applicable or in conflict with respect to the use of the Software, the Human Rights Laws that are most protective of the individuals or groups harmed shall apply. + + 3. Indemnity. Licensee shall hold harmless and indemnify Licensor (and any other contributor) against all losses, damages, liabilities, deficiencies, claims, actions, judgments, settlements, interest, awards, penalties, fines, costs, or expenses of whatever kind, including Licensor’s reasonable attorneys’ fees, arising out of or relating to Licensee’s use of the Software in violation of Human Rights Laws or Human Rights Principles. + +* Failure to Comply. Any failure of Licensee to act according to the terms and conditions of this License is both a breach of the License and an infringement of the intellectual property rights of the Licensor (subject to exceptions under Laws, e.g., fair use). In the event of a breach or infringement, the terms and conditions of this License may be enforced by Licensor under the Laws of any jurisdiction to which Licensee is subject. Licensee also agrees that the Licensor may enforce the terms and conditions of this License against Licensee through specific performance (or similar remedy under Laws) to the extent permitted by Laws. For clarity, except in the event of a breach of this License, infringement, or as otherwise stated in this License, Licensor may not terminate this License with Licensee. + +* Enforceability and Interpretation. If any term or provision of this License is determined to be invalid, illegal, or unenforceable by a court of competent jurisdiction, then such invalidity, illegality, or unenforceability shall not affect any other term or provision of this License or invalidate or render unenforceable such term or provision in any other jurisdiction; provided, however, subject to a court modification pursuant to the immediately following sentence, if any term or provision of this License pertaining to Human Rights Laws or Human Rights Principles is deemed invalid, illegal, or unenforceable against Licensee by a court of competent jurisdiction, all rights in the Software granted to Licensee shall be deemed null and void as between Licensor and Licensee. Upon a determination that any term or provision is invalid, illegal, or unenforceable, to the extent permitted by Laws, the court may modify this License to affect the original purpose that the Software be used in compliance with Human Rights Principles and Human Rights Laws as closely as possible. The language in this License shall be interpreted as to its fair meaning and not strictly for or against any party. + +* Disclaimer. TO THE FULL EXTENT ALLOWED BY LAW, THIS SOFTWARE COMES “AS IS,” WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, AND LICENSOR AND ANY OTHER CONTRIBUTOR SHALL NOT BE LIABLE TO ANYONE FOR ANY DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THIS LICENSE, UNDER ANY KIND OF LEGAL CLAIM. + +This Hippocratic License is an Ethical Source license (https://ethicalsource.dev) and is offered for use by licensors and licensees at their own risk, on an “AS IS” basis, and with no warranties express or implied, to the maximum extent permitted by Laws. diff --git a/Data/1_Writing/0_Deco/0_Frontpage.qmd b/Data/1_Writing/0_Deco/0_Frontpage.qmd new file mode 100644 index 0000000000000000000000000000000000000000..c686bd71f59c466772cdda7c3c745cbcfc6fd119 --- /dev/null +++ b/Data/1_Writing/0_Deco/0_Frontpage.qmd @@ -0,0 +1,80 @@ + + % \includegraphics[width=0.42\textwidth]{./2_Figures/TUBraunschweig_4C.pdf} & + + \begin{center} + \begin{tabular}{p{\textwidth}} + + \begin{minipage}{\textwidth} + % \centering + \includegraphics[width=0.4\textwidth]{./2_Figures/TUBraunschweig_4C.pdf} + \end{minipage} + % \begin{minipage}{0.5\textwidth} + % \centering + % \includegraphics[width=0.5\textwidth]{./2_Figures/0_Deco/dlr_Logo.jpeg} + % \end{minipage} + + + \vspace{1cm} + + \\ + + \begin{center} + \large{\textsc{ + Master thesis number: 486\\ + }} + \end{center} + + \begin{center} + \LARGE{\textsc{ + Flow predictions using control-oriented cluster-based network modeling\\ + }} + \end{center} + + \\ + + + \begin{center} + \large{Technische Universität Braunschweig \\ + Institute of Fluid Mechanics + } + \end{center} + + + \begin{center} + **\Large{Master Thesis}** \end{center} + + + \begin{center} + written by + \end{center} + + \begin{center} + \large{\textbf{Javed Arshad Butt}} \\ + + \large{5027847} \\ + \end{center} + + \begin{center} + \large{born on 20.05.1996 in Gujrat} + \end{center} + + \vspace{3cm} + \begin{center} + \begin{tabular}{lll} + \textbf{Submission date:} & & 29.04.2022\\ + \textbf{Supervisor :} & & Dr. Richard Semaan \\ + \textbf{Examiner :} & & Prof. Dr.-Ing. R. Radespiel\\ + + + \end{tabular} + \end{center} + + \end{tabular} + \end{center} + %Damit die erste Seite = Deckblatt nicht nummeriert wird. + \thispagestyle{empty} + + + + + \ No newline at end of file diff --git a/Data/1_Writing/0_Deco/1_Erkl.qmd b/Data/1_Writing/0_Deco/1_Erkl.qmd new file mode 100644 index 0000000000000000000000000000000000000000..8e07863e462126e526b9a2c3d9d5a9cdfe9424f9 --- /dev/null +++ b/Data/1_Writing/0_Deco/1_Erkl.qmd @@ -0,0 +1,22 @@ + + +# Declaration of independent authorship {.unnumbered} + +I hereby declare that the present work, the master thesis, is solely and independently done by myself in all aspects, such as developments, code implementations, and writing of the thesis. +In addition, I confirm that I did not use any tools, materials or sources other than those explicitly specified.\newline \break + +\vspace{1cm} +\noindent Full name: Javed Arshad Butt \newline \break + + +\noindent Date and place: 29.04.2022, Braunschweig\newline \break + +\vspace{1cm} +\noindent Signature: + +![](../../2_Figures/0_Deco/signature_1.jpg){width=30% .unnumbered} + +Hello Hello +here and Hello adn Hello asdn Hello asjsfjd siudfdfg Hello Hello + + diff --git a/Data/1_Writing/0_Deco/2_1_Abstract.qmd b/Data/1_Writing/0_Deco/2_1_Abstract.qmd new file mode 100644 index 0000000000000000000000000000000000000000..ad7347a24c450b6cdc08e467e61652bb7687a091 --- /dev/null +++ b/Data/1_Writing/0_Deco/2_1_Abstract.qmd @@ -0,0 +1,17 @@ +# Abstract {.unnumbered} + +In this master thesis, a data-driven modeling technique is proposed. +It enables making predictions for general dynamic systems for unknown model parameter values or operating conditions. +The tool is denoted as \gls{cnmc}. +The most recent developed version delivered promising results for the chaotic Lorenz system [@lorenz1963deterministic]. +Since, the earlier work was restricted to the application of only one dynamical system, with this contribution the first major improvement was to allow \gls{cnmc} to be utilized for any general dynamical system. +For this, \gls{cnmc} was written from scratch in a modular manner. +The limitation of the number of the dimension and the shape of the trajectory of the dynamical systems are removed. +Adding a new dynamic system was designed such that it should be as straightforward as possible. +To affirm this point, 10 dynamic systems, most of which are chaotic systems, are included by default. +To be able to run \gls{cnmc} on arbitrary dynamic systems in an automated way, a parameter study for the modal decomposition method \gls{nmf} was implemented. +However, since a single \gls{nmf} solution took up to hours, a second option was added, i.e., \gls{svd}. +With \gls{svd} the most time-consuming task could be brought to a level of seconds. +The improvements introduced, allow \gls{cnmc} to be executed on a general dynamic system on a normal computer in a reasonable time. +Furthermore, \gls{cnmc} comes with its integrated post-processor in form of HTML files to inspect the generated plots in detail. +All the parameters used in \gls{cnmc} some additional beneficial features can be controlled via one settings file. diff --git a/Data/1_Writing/0_Deco/2_Thanks.qmd b/Data/1_Writing/0_Deco/2_Thanks.qmd new file mode 100644 index 0000000000000000000000000000000000000000..daa0a39d59c2f7d416dbda00b0694d7e42398b8b --- /dev/null +++ b/Data/1_Writing/0_Deco/2_Thanks.qmd @@ -0,0 +1,10 @@ + +# Acknowledgments {.unnumbered} + +All praise and thanks to the **ONE**, Who does neither need my praise nor my thanks. +To the **ONE**, Who is independent of everything and everyone, but on Whom everything and everyone depends. + +\vspace{1cm} +Thank you, Dr. Semaan - you provided me with the possibility to work on such a compelling and challenging topic. Even though the difficult tasks were not always pleasant, I very much appreciate the opportunity to have worked on these captivating tasks. +Thank you for the time and effort you invested in this work. +Also, thank you for the weekly English exercises and for explaining to me how to pronounce methodology correctly :D diff --git a/Data/1_Writing/0_Deco/3_Used_Abbrev.log b/Data/1_Writing/0_Deco/3_Used_Abbrev.log new file mode 100644 index 0000000000000000000000000000000000000000..7819952beb164666c0791ea244187fcefa0e5d13 --- /dev/null +++ b/Data/1_Writing/0_Deco/3_Used_Abbrev.log @@ -0,0 +1,326 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.21) 25 APR 2022 13:20 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev +(/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:9: Undefined control sequence. +l.9 \DeclareAcronym + {usa}{ +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:9: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.9 \DeclareAcronym{u + sa}{ +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no A in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no d in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no A in font nullfont! +Missing character: There is no m in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:13: Undefined control sequence. +l.13 \DeclareAcronym + {eu}{ +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no e in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no E in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no E in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no p in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:17: Undefined control sequence. +l.17 \DeclareAcronym + {ussr}{ +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no R in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no U in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no v in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no S in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no R in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no p in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no b in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no , in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 9--21 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:23: Undefined control sequence. +l.23 \ac + {usa}, \ac{usa} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:23: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.23 \ac{u + sa}, \ac{usa} +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:23: Undefined control sequence. +l.23 \ac{usa}, \ac + {usa} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no a in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 23--24 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:25: Undefined control sequence. +l.25 \ac + {eu}, \ac{eu} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:25: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.25 \ac{e + u}, \ac{eu} +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no e in font nullfont! +Missing character: There is no u in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:25: Undefined control sequence. +l.25 \ac{eu}, \ac + {eu} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no e in font nullfont! +Missing character: There is no u in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 25--26 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:27: Undefined control sequence. +l.27 \ac + {ussr}, \ac{ussr} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:27: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.27 \ac{u + ssr}, \ac{ussr} +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no , in font nullfont! +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:27: Undefined control sequence. +l.27 \ac{ussr}, \ac + {ussr} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no u in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no r in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 27--28 +[] + [] + +/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/1_Latex_Files/0_Deco/3_Used_Abbrev.tex:29: Undefined control sequence. +l.29 \printacronyms + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +) +! Emergency stop. +<*> ..._Writing/1_Latex_Files/0_Deco/3_Used_Abbrev + +*** (job aborted, no legal \end found) + + +Here is how much of TeX's memory you used: + 17 strings out of 481239 + 639 string characters out of 5920376 + 236564 words of memory out of 5000000 + 15384 multiletter control sequences out of 15000+600000 + 532338 words of font info for 24 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 12i,0n,15p,161b,16s stack positions out of 5000i,500n,10000p,200000b,80000s +! ==> Fatal error occurred, no output PDF file produced! diff --git a/Data/1_Writing/0_Deco/3_Used_Abbrev.qmd b/Data/1_Writing/0_Deco/3_Used_Abbrev.qmd new file mode 100644 index 0000000000000000000000000000000000000000..e4987aa387b37317a5d9b177577bde7164874b06 --- /dev/null +++ b/Data/1_Writing/0_Deco/3_Used_Abbrev.qmd @@ -0,0 +1,89 @@ +# Abbreviations {.unnumbered} + +[ODE]{#ode} +:   Ordinary Differential Equation + +[CNM]{#cnm} +:   Cluster-based Network Modeling + +[CNMc]{#cnmc} +:   control-oriented Cluster-based Network Modeling + +[CMM]{#cmm} +:   Cluster Markov-based Modeling + +[CFD]{#cfd} +:   Computational Fluid Dynamics + +[RANS]{#rans} +:   Reynolds Averaged Navier Stockes + +[DLR]{#dlr} +:   German Aerospace Center + +[GPU]{#gpu} +:   Graphics Processing Unit + +[CPU]{#cpu} +:   Computer Processing Unit + +[SDIC]{#sdic} +:   Sensitive Dependence on Initial Conditions + +[NMF]{#nmf} +:   Non-negative Matrix Factorization + +[SVD]{#svd} +:   Singular Value Decomposition + +[RF]{#rf} +:   Random Forest + +[CPD]{#cpd} +:   Cluster Probability Distribution + +[CPE]{#cpe} +:   Centroid Position Evolution + +[DTW]{#dtw} +:   Dynamical Time Warping + +[KNN]{#knn} +:   KNearest Neighbor + + +\newacronym{ode}{ODE}{\glstextformat{\textbf{O}}rdinary \glstextformat{\textbf{D}}ifferential \glstextformat{\textbf{E}}quation} + +\newacronym{cnm}{CNM}{\glstextformat{\textbf{C}}luster-based \glstextformat{\textbf{N}}etwork \glstextformat{\textbf{M}}odeling} + +\newacronym{cnmc}{\glstextformat{\emph{CNMc}}}{\glstextformat{\textbf{c}}ontrol-oriented \glstextformat{\textbf{C}}luster-based \glstextformat{\textbf{N}}etwork \glstextformat{\textbf{M}}odeling} + +\newacronym[]{cmm}{CMM}{\glstextformat{\textbf{C}}luster \glstextformat{\textbf{M}}arkov-based \glstextformat{\textbf{M}}odeling} + +\newacronym{cfd}{CFD}{\glstextformat{\textbf{C}}omputational \glstextformat{\textbf{F}}luid \glstextformat{\textbf{D}}ynamics} + +\newacronym{rans}{RANS}{\glstextformat{\textbf{R}}eynolds \glstextformat{\textbf{A}}veraged \glstextformat{\textbf{N}}avier \glstextformat{\textbf{S}}tockes} + +\newacronym{dlr}{DLR}{German Aerospace Center} + +\newacronym{gpu}{GPU}{\glstextformat{\textbf{G}}raphics \glstextformat{\textbf{P}}rocessing \glstextformat{\textbf{U}}nit} + +\newacronym{cpu}{CPU}{\glstextformat{\textbf{C}}omputer \glstextformat{\textbf{P}}rocessing \glstextformat{\textbf{U}}nit} + +\newacronym[]{sdic}{SDIC}{\glstextformat{\textbf{S}}ensitive \glstextformat{\textbf{D}}ependence on \glstextformat{\textbf{I}}nitial \glstextformat{\textbf{C}}onditions} + +\newacronym[]{nmf}{NMF}{\glstextformat{\textbf{N}}on-negative \glstextformat{\textbf{M}}atrix \glstextformat{\textbf{F}}actorization} + +\newacronym[]{svd}{SVD}{\glstextformat{\textbf{S}}ingular \glstextformat{\textbf{V}}alue \glstextformat{\textbf{D}}ecomposition} + +\newacronym[]{rf}{RF}{\glstextformat{\textbf{R}}andom \glstextformat{\textbf{F}}orest} + +\newacronym[]{cpd}{CPD}{\glstextformat{\textbf{C}}luster \glstextformat{\textbf{P}}robability \glstextformat{\textbf{D}}istribution} + +\newacronym[]{cpevol}{CPE}{\glstextformat{\textbf{C}}entroid \glstextformat{\textbf{P}}osition \glstextformat{\textbf{E}}volution} + + +\newacronym[]{dtw}{DTW}{\glstextformat{\textbf{D}}ynamical \glstextformat{\textbf{T}}ime \glstextformat{\textbf{W}}arping} + +\newacronym[]{knn}{KNN}{\glstextformat{\textbf{K}-\textbf{N}}earest \glstextformat{\textbf{N}}eighbor} + diff --git a/Data/1_Writing/1_Task/1_Introduction.qmd b/Data/1_Writing/1_Task/1_Introduction.qmd new file mode 100644 index 0000000000000000000000000000000000000000..206485c241da1a639ba21b04afd94f7dfe414d27 --- /dev/null +++ b/Data/1_Writing/1_Task/1_Introduction.qmd @@ -0,0 +1,20 @@ + + +# Introduction {#sec-chap_1_Intro} +In this work, a tool called \glsfirst{cnmc} is further developed. +The overall goal, in very brief terms, is to generate a model, which is able to +predict the trajectories of general dynamical systems. The model +shall be capable of predicting the trajectories when a model parameter +value is changed. +Some basics about dynamical systems are covered in +subsection [-@sec-subsec_1_1_1_Principles] and in-depth explanations about \gls{cnmc} are given in +chapter [-@sec-chap_2_Methodlogy]. \newline + +However, for a short and broad introduction to \gls{cnmc} the workflow depicted in figure @fig-fig_1_CNMC_Workflow shall be highlighted. +The input it receives is data of a dynamical system or space state vectors for a range of model parameter values. The two main important outcomes are some accuracy measurements and the predicted trajectory for each desired model parameter value. +Any inexperienced user may only have a look at the predicted trajectories to +quickly decide visually whether the prediction matches the trained data. Since \gls{cnmc} is written in a modular manner, meaning it can be regarded as +a black-box function, it can easily be integrated into other existing codes or +workflows. \newline + +![Broad overview: Workflow of \gls{cnmc}](../../3_Figs_Pyth/1_Task/1_CNMc.svg){#fig-fig_1_CNMC_Workflow} \ No newline at end of file diff --git a/Data/1_Writing/1_Task/2_0_Motivation.qmd b/Data/1_Writing/1_Task/2_0_Motivation.qmd new file mode 100644 index 0000000000000000000000000000000000000000..43968f36816d39f8d6805f7032803ae682457dfe --- /dev/null +++ b/Data/1_Writing/1_Task/2_0_Motivation.qmd @@ -0,0 +1,71 @@ + + + +## Motivation {#sec-sec_Motivation} +\gls{cfd} is an +indispensable technique, when aimed to obtain information about aerodynamic properties, such +as drag and lift distributions. Modern \gls{cfd} solvers, such as \gls{dlr}'s *TAU* +[@Langer2014] often solves +the \gls{rans} equations to obtain one flow-field. Advanced solvers like *TAU* apply advanced +mathematical knowledge to speed up calculations and +heavily exploit multiple \glspl{cpu} in an optimized manner. Nevertheless, +depending on the size of the object and accuracy demands or in other terms mesh grid size, the computation often is not economically +efficient enough. If the object for which a flow field is desired is a full aircraft, then even with a big cluster and making use of symmetry properties of the shape of the airplane, if such exists, the computation of one single +flow field can still easily cost one or even multiple months in computation time. \newline + +In modern science, there is a trend towards relying on \glspl{gpu} instead of \glspl{cpu}. Graphic cards possess much +more cores than a CPU. However, even with the utilization of \glspl{gpu} and GPU-optimized \gls{cfd} solvers, the computation is still very expensive. Not only in time but also +in electricity costs. +Running calculations on a cluster for multiple months is such expensive that wind tunnel measurements can be considered to be the economically more +efficient choice to make. +Regarding accuracy, wind tunnel measurements and \gls{cfd} simulations with state-of-the-art solvers can be considered to be +equally useful. When using \gls{cfd} solvers, there is one more thing to keep +in mind. +Each outcome is only valid for one single set of input parameters. +Within the set of input parameters, the user often is only interested +in the impact of one parameter, e.g., the angle of attack. Consequently, +wanting to capture the effect of the change of the angle of attack on the flow field, +multiple \gls{cfd} calculations need to be performed, i.e., for each desired +angle of attack. +Based on the chosen angle of attack the solver might be able to converge faster to a solution. However, the calculation time +needs to be added up for each desired angle of attack. +In terms of time and energy costs, this could again be more expensive than wind-tunnel +measurements. Wind tunnel measurements are difficult to set up, but once a +configuration is available, measuring flow field properties with it, in general, is known to be faster and easier than running \gls{cfd} simulations.\newline + + +Within the scope of this work, a data-driven tool was developed that allows predictions for dynamic systems. +In [@Max2021] the first version of it showed promising results. +However, it was dedicated to the solution of one single dynamical system, i.e., the Lorenz system [@lorenz1963deterministic]. +Due to the focus on one singular dynamical system, the proposed \glsfirst{cnmc} was not verified for other dynamical systems. +Hence, one of the major goals of this thesis is to enable \gls{cnmc} to be applied to any general dynamical system. +For this, it is important to state that because of two main reasons \gls{cnmc} was not built upon the first version of \gls{cnmc}, but written from scratch. +First, since the initial version of \gls{cnmc} was designed for only a single dynamic system, extending it to a general \gls{cnmc} was considered more time-consuming than starting fresh. +Second, not all parts of the initial version of \gls{cnmc} could be executed without errors. +The current \gls{cnmc} is therefore developed in a modular manner, i.e., on the one hand, the implementation of any other dynamical system is straightforward. +To exemplify this, 10 different dynamic systems are available by default, so new dynamic systems can be added analogously.\newline + +The second important aspect for allowing \gls{cnmc} to be utilized in any general dynamical system is the removal of the two limitations. +In the first version of \gls{cnmc} the behavior of the dynamical systems had to be circular as, e.g., the ears of the Lorenz system [@lorenz1963deterministic] are. +Next, its dimensionality must be strictly 3-dimensional. +Neither is a general dynamical system is not bound to exhibit a circular motion nor to be 3-dimensional. +By removing these two limitations \gls{cnmc} can be leveraged on any dynamical system. +However, the first version of \gls{cnmc} employed \glsfirst{nmf} as the modal decomposition method. +The exploited \gls{nmf} algorithm is highly computationally intensive, which makes a universal \gls{cnmc} application economically inefficient. +Therefore, the current \gls{cnmc} has been extended by the option to choose between the \gls{nmf} and the newly implemented \glsfirst{svd}. +The aim is not only that \gls{cnmc} is returning results within an acceptable timescale, but also to ensure that the quality of the modal decomposition remains at least at an equal level. +Proofs for the latter can be found in section [-@sec-sec_3_3_SVD_NMF].\newline + +With these modifications, the current \gls{cnmc} is now able to be used in any dynamical system within a feasible time frame. +The next addressed issue is the B-spline interpolation. +It is used in the propagation step of \glsfirst{cnm} [@Fernex2021] to smooth the predicted trajectory. +However, as already noted in [@Max2021], when the number of the clustering centroids $K$ is $K \gtrapprox 15$, the B-spline interpolation embeds oscillations with unacceptable high deviations from the original trajectories. +To resolve this problem, the B-spline interpolation is replaced with linear interpolation. +By preventing the occurrence of outliers caused by the B-spline interpolation, neither the autocorrelation defined in subsection [-@sec-subsec_1_1_3_first_CNMc] nor the predicted trajectories are made impractical . +Apart from the main ability of \gls{cnmc} a high number of additional features are available, e.g., the entire pipeline of \gls{cnmc} with all its parameters can be adjusted via one file (*settings.py*), an incorporated log file, storing results at desired steps, the ability to execute multiple dynamical models consequentially and activating and disabling each step of \gls{cnmc}. +The latter is particularly designed for saving computational time. +Also, \gls{cnmc} comes with its own post-processor. +It is optional to generate and save the plots. +However, in the case of utilizing this feature, the plots are available as HTML files which, e.g., allow extracting further information about the outcome or rotating and zooming in 3d plots. + + diff --git a/Data/1_Writing/1_Task/2_State_Of_Art.qmd b/Data/1_Writing/1_Task/2_State_Of_Art.qmd new file mode 100644 index 0000000000000000000000000000000000000000..0136763583fcd3dcd7faea1f14e6cc88f11c8048 --- /dev/null +++ b/Data/1_Writing/1_Task/2_State_Of_Art.qmd @@ -0,0 +1,104 @@ + + + + + +## State of the art {#sec-sec_1_1_State} + +The desire to get fast \gls{cfd} output is not new and also +a data-driven approach is found in the literature. +This section aims to describe some evolutionary steps of \glsfirst{cnmc}. Given that this work is built upon the most recent advancements, +they will be explained in particular detail. +Whereas the remaining development stages are briefly +summarized to mainly clarify the differences and +mention the reasons why improvements were desired. Since, this topic +demands some prior knowledge to follow \gls{cnmc}'s workflow and goal, some basic principles about important topics shall be given in their subsection.\newline + +The first data-driven approach, which is known to the author, +is by [@Kaiser2014] and shall be called \gls{cmm}. +\gls{cnmc} is not directly built upon \gls{cmm} but on the latest version +of \gls{cnm} and is described in [@Fernex2021]. +\gls{cnmc} invokes \gls{cnm} many times in order to use +its outcome for further progress. Therefore, it's evident that only if \gls{cnm} is understood, CNMc's +progress can be followed. \gls{cmm} on the other hand has only a historical link to \gls{cnmc}, but no line of code of \gls{cmm} is invoked in \gls{cnmc}'s workflow. Consequently, \gls{cnm} will be explained in more detail than \gls{cmm}. + +### Principles {#sec-subsec_1_1_1_Principles} +CNM [@Fernex2021] is a method that uses some machine learning +techniques, graphs, and probability theory to mirror the behavior of +complex systems. These complex systems are described often by dynamical systems, which themselves are simply a set of +differential equations. Differential equations are useful to +capture motion. Thus, a dynamical system can be seen as a synonym for motion +over time. Some differential equations can be +solved in closed form, meaning analytically. However, for most of them +either it is too difficult to obtain an analytical solution or the +analytical solution is very unhandy or unknown. Unhandy in terms of the solution +being expressed in too many terms. Therefore, in most +cases, differential equations are solved numerically. Since +the purpose of \gls{cnm} is not to be only used for analytically +solvable equations, a numerical ordinary differential integrator +is used. \newline + +The default solver is *SciPy*'s *RK45* solver. +It is a widely deployed solver and can also be applied to +chaotic systems for integration +over a certain amount of time. +Another option for solving chaotic \gls{ode}s is +*LSODA*. The developers of *pySindy* [@Silva2020; @Kaptanoglu2022] +state on their homepage [@pysindy_Home] that +*LSODA* even outperforms the default *RK45* when it comes to chaotic dynamical systems. The reasons why for \gls{cnmc} still *RK45* was chosen will be given in +section +[-@sec-sec_2_2_Data_Gen]. +It is important to remember that turbulent flows are chaotic. +This is the main reason why in this work \gls{cnmc}, has been designed to handle not only general dynamical systems but also general chaotic attractors. +Other well-known instances where chaos is found are, e.g., the weather, the +motion of planets and also the financial market is believed to be chaotic. +For more places, where chaos is found the reader is referred to [@Argyris2017].\newline + +Note that \gls{cnmc} is designed for all kinds of dynamical systems, it is not restricted to linear, nonlinear or chaotic systems. +Therefore, chaotic systems shall be recorded to be only one application example of \gls{cnmc}. +However, because chaotic attractors were primarily exploited in the context of the performed investigations in this work, a slightly lengthier introduction to chaotic systems is provided in the appendix [-@sec-ch_Ap_Chaotic]. +Two terms that will be used extensively over this entire thesis are called model parameter value $\beta$ and a range of model parameter values $\vec{\beta}$. A regular differential equation can be expressed as +in equation @eq-eq_1_0_DGL, where $F$ is denoted as the function which describes the dynamical system. +The vector $\vec{x}(t)$ is the state vector. +The form in which differential equations are viewed in this work is given in equation @eq-eq_1_1_MPV . + +$$ +\begin{equation} + F = \dot{\vec{x}}(t) = \frac{\vec{x}(t)}{dt} = f(\vec{x}(t)) + \label{eq_1_0_DGL} +\end{equation} +$$ {#eq-eq_1_0_DGL} + +$$ +\begin{equation} + F_{CNMc} = \left(\dot{\vec{x}}(t), \, \vec{\beta} \right) = + \left( \frac{\vec{x}(t)}{dt}, \, \vec{\beta} \right) = + f(\vec{x}(t), \, \vec{\beta} ) + \label{eq_1_1_MPV} +\end{equation} +$$ {#eq-eq_1_1_MPV} + +Note the vector $\vec{\beta}$ indicates a range of model parameter values, i.e., the differential equation is solved for each model parameter value $\beta$ separately. +The model parameter value $\beta$ is a constant and does not depend on the time, but rather it is a user-defined value. +In other terms, it remains unchanged over the entire timeline for which the dynamical system is solved. +The difference between $F$ and $F_{CNMc}$ is that $F$ is the differential equation for only one $\beta$, while $F_{CNMc}$ can be considered as the same differential equation, however, solved, for a range of individual $\beta$ values. +The subscript \gls{cnmc} stresses that fact that \gls{cnmc} is performed for a range of model parameter values $\vec{\beta}$. +Some dynamical systems, which will be used for \gls{cnmc}'s validation can be found in section [-@sec-sec_2_2_Data_Gen]. They are written as a set of differential equations in the $\beta$ dependent form. +Even a tiny change in $\beta$ can result in the emergence of an entirely different trajectory. \newline + + + + + + + + + + + + + +In summary, the following key aspects can be concluded. The reason why \gls{cnmc} in future releases is believed to be able to manage real \gls{cfd} fluid flow data and make predictions for unknown model parameter values $\beta$ is that turbulent flows are chaotic. Thus, allowing \gls{cnmc} to work with chaotic attractors in the course of this thesis is considered to be the first step toward predicting entire flow fields. + + + diff --git a/Data/1_Writing/1_Task/3_CNM.qmd b/Data/1_Writing/1_Task/3_CNM.qmd new file mode 100644 index 0000000000000000000000000000000000000000..bcac21245bfa620453ba6059ba9d198cc29c7ea9 --- /dev/null +++ b/Data/1_Writing/1_Task/3_CNM.qmd @@ -0,0 +1,203 @@ + + + +## Cluster-based Network Modeling (CNM) {#sec-sec_1_1_2_CNM} +In this subsection, the workflow of \gls{cnm} [@Fernex2021] will be elaborated, as well as the previous attempt to expand the algorithm to accommodate a range of model parameter values $\vec{\beta}$. +\gls{cnm} [@Fernex2021] is the basis on which \gls{cnmc} is built or rather +\gls{cnmc} invokes \gls{cnm} multiple times for one of its preprocessing steps. +CNM can be split up into 4 main tasks, which are +data collection, clustering, calculating +transition properties and propagation. +The first step is to collect the data, which can be provided from any dynamic system or numerical simulations. +In this study, only dynamical systems are investigated. +Once the data for the dynamical system is passed to \gls{cnm}, the data is clustered, e.g., with k-means++ algorithm [@Arthur2006]. +A detailed elaboration about this step is given in section [-@sec-sec_2_3_Clustering]. \gls{cnm} exploits graph theory for approximating the trajectory as a movement on nodes. +These nodes are equivalent to the centroids, which are acquired through clustering. +Next, the motion, i.e., movement from one centroid to another, shall be clarified.\newline + +In order to fully describe the motion on the centroids, the time at which +one centroid is visited is exited, and also the order of movement must be known. +Note, when saying the motion is on the centroids, that +means the centroids or characteristic nodes do not move +at all. The entire approximated motion of the original trajectory +on the nodes is described with the transition +property matrices $\boldsymbol Q$ and $\boldsymbol T$. +The matrices $\boldsymbol Q$ and $\boldsymbol T$ are the transition probability and transition time matrices, respectively. +$\boldsymbol Q$ is used to apply probability theory for predicting the next following most likely centroid. In other words, if +the current location is at any node $c_i$, +$\boldsymbol Q$ will provide all possible successor centroids +with their corresponding transition probabilities. +Thus, the motion on the centroids +through $\boldsymbol Q$ is probability-based. +In more detail, the propagation of the motion on the centroids can be described as equation @eq-eq_34 . +The variables are denoted as the propagated $\vec{x}(t)$ trajectory, time $t$, centroid positions $\vec{c}_k,\, \vec{c}_j$, the time $t_j$ where centroid $\vec{c}_j$ is left and the transition time $T_{k,j}$ from $\vec{c}_j$ to $\vec{c}_k$ [@Fernex2021]. +Furthermore, for the sake of a smooth trajectory, the motion between the centroids is interpolated through a spline interpolation.\newline +$$ +\begin{equation} + \vec{x}(t) = \alpha_{kj} (t) \, \vec{c}_k + [\, 1 - \alpha_{kj} (t)\,] \, \vec{c}_j, \quad \alpha_{kj} (t) = \frac{t-t_j}{T_{k,j}} + \label{eq_34} +\end{equation} +$$ {#eq-eq_34} + + +The $\boldsymbol Q$ matrix only contains non-trivial transitions, i.e., +if after a transition the centroid remains on the same centroid, the transition is not considered to be a real transition in \gls{cnm}. +This idea +is an advancement to the original work of Kaiser et al. [@Kaiser2014]. +In Kaiser et al. [@Kaiser2014] the transition is modeled +as a Markov model. Markov models enable non-trivial transitions. Consequently, +the diagonals of the resulting non-direct transition matrix $\boldsymbol{Q_n}$ +exhibits the highest values. The diagonal elements stand for non-trivial +transitions which lead to idling on the same centroid +many times. Such behavior is encountered and described by Kaiser et al. [@Kaiser2014].\newline + + +There are 3 more important aspects that come along when +adhering to Markov models. First, the propagation of motion is done +by matrix-vector multiplication. In the case of the existence of a +stationary state, the solution +will converge to the stationary state, with an increasing number of iterations, where no change with time happens. +A dynamical system can only survive as long as change with time exists. +In cases where no change with respect to time is encountered, equilibrium +or fixed points are found. + Now, if a stationary state or fixed point +exists in the considered dynamical system, the propagation +will tend to converge to this fixed point. However, the nature of +Markov models must not necessarily be valid for general dynamical systems. +Another way to see that is by applying some linear algebra. The +long-term behavior of the Markov transition matrix can be obtained +with equation @eq-eq_3_Infinite . Here, $l$ is the number +of iterations to get from one stage to another. Kaiser et al. +[@Kaiser2014] depict in a figure, how the values of +$\boldsymbol{Q_n}$ evolves after $1 \mathrm{e}{+3}$ steps. $\boldsymbol{Q_n}$ has +become more uniform. +$$ +\begin{equation} + \label{eq_3_Infinite} + \lim\limits_{l \to \infty} \boldsymbol{Q_n}^l +\end{equation} +$$ {#eq-eq_3_Infinite} + +If the number of steps is increased even further +and all the rows would have the same probability value, +$\boldsymbol{Q_n}$ would converge to a stationary point. What +also can be concluded from rows being equal is that it does not matter +from where the dynamical system was started or what its +initial conditions were. The probability +to end at one specific state or centroid is constant as +the number of steps approaches infinity. Following that, +it would violate the sensitive dependency on initial conditions, +which often is considered to be mandatory for modeling chaotic systems. Moreover, chaotic +systems amplify any perturbation exponentially, whether at time +$t = 0$ or at time $t>>0$. \newline + +Thus, a stationary transition matrix $\boldsymbol{Q_n}$ is prohibited by chaos at any time step. +This can be found to be one of the main reasons, why +the **C**luster **M**arkov based **M**odeling (\gls{cmm}) +often fails to +predict the trajectory. +Li et al. [@Li2021] summarize this observation +compactly as after some time the initial condition +would be forgotten and the asymptotic distribution would be reached. +Further, they stated, that due to this fact, \gls{cmm} would +not be suited for modeling dynamical systems. +The second problem which is involved, when deploying +regular Markov modeling is that the future only depends +on the current state. However, [@Fernex2021] has shown +with the latest \gls{cnm} version that incorporating also past +centroid positions for predicting the next centroid position +increases the prediction quality. The latter effect is especially +true when systems are complex.\newline + + +However, for multiple consecutive time steps +the trajectories position still could be assigned to the same +centroid position (trivial transitions). +Thus, past centroids are those centroids that are found when going +back in time through only non-trivial transitions. The number of incorporated +past centroids is given as equation @eq-eq_5_B_Past, where $L$ is denoted +as the model order number. It represents the number of all +considered centroids, where the current and all the past centroids are included, with which the prediction of the successor centroid +is made. +$$ +\begin{equation} + B_{past} = L -1 + \label{eq_5_B_Past} +\end{equation} +$$ {#eq-eq_5_B_Past} + +Furthermore, in [@Fernex2021] it is not simply believed that an +increasing model +order $L$ would increase the outcome quality in every case. +Therefore, a study on the number of $L$ and the clusters $K$ +was conducted. The results proved that the choice of +$L$ and $K$ depend on the considered dynamical system. +\newline + +The third problem encountered when Markov models are used is +that the time step must be provided. This time step is used +to define when a transition is expected. In case +the time step is too small, some amount of iterations is +required to transit to the next centroid. Thus, non-trivial +transitions would occur. In case the time step is too high, +the intermediate centroids would be missed. Such behavior +would be a coarse approximation of the real dynamics. Visually this can +be thought of as jumping from one centroid to another while +having skipped one or multiple centroids. The reconstructed +trajectory could lead to an entirely wrong representation of the +state-space. +CNM generates the transition time matrix $\boldsymbol T$ from data +and therefore no input from the user is required.\newline + +A brief review of how the $\boldsymbol Q$ is built shall be provided. +Since the concept of +model order, $L$ has been explained, it can be clarified that +it is not always right to call $\boldsymbol Q$ and $\boldsymbol T$ matrices. +The latter is only correct, if $L = 1$, otherwise it must be +denoted as a tensor. $\boldsymbol Q$ and $\boldsymbol T$ can always be +referred to as tensors since a tensor incorporates matrices, i.e., a matrix is a tensor of rank 2. +In order to generate $\boldsymbol Q$, +$L$ must be defined, such that the shape of $\boldsymbol Q$ is +known. The next step is to gather all sequences of clusters +$c_i$. To understand that, we imagine the following scenario, +$L = 3$, which means 2 centroids from the past and the +current one are +incorporated to predict the next centroid. +Furthermore, imagining that two cluster sequence scenarios were found, +$c_0 \rightarrow c_1 \rightarrow c_2$ and $c_5 \rightarrow c_1 \rightarrow c_2$. +These cluster sequences tell us that the current centroid is $c_2$ and the remaining centroids belong to the past. +In order to complete the sequence for $L = 3$, the successor cluster also needs +to be added, $c_0 \rightarrow c_1 \rightarrow c_2 \rightarrow c_5$ and $c_5 \rightarrow c_1 \rightarrow c_2 \rightarrow c_4$. +The following step is to calculate the likelihood +of a transition to a specific successor cluster. This is done with equation @eq-eq_4_Poss, where $n_{k, \boldsymbol{j}}$ +is the amount of complete sequences, where also the successor +is found. The index $j$ is written as a vector in order +to generalize the equation for $L \ge 1$. It then contains +all incorporated centroids from the past and the current centroid. +The index $k$ represents the successor centroid ($\boldsymbol{j} \rightarrow k$). +Finally, $n_{\boldsymbol{j}}$ counts all the matching incomplete sequences. +$$ +\begin{equation} + \label{eq_4_Poss} + P_{k, \boldsymbol j} = \frac{n_{k,\boldsymbol{j}}}{n_{\boldsymbol{j}}} +\end{equation} +$$ {#eq-eq_4_Poss} + +After having collected all the possible complete cluster sequences with their corresponding probabilities $\boldsymbol Q$, the transition time tensors $\boldsymbol T$ can be inferred from the data. +With that, the residence time on each cluster is known and can be +used for computing the transition times for every +single transition. At this stage, it shall be highlighted again, +CNM approximates its data fully with only two +matrices or when $L \ge 2$ tensors, $\boldsymbol Q$ and $\boldsymbol T$. The +final step is the prorogation following equation @eq-eq_34 . +For smoothing the propagation between two centroids the B-spline interpolation +is applied. + + + + + + + + +{{< include 4_CNMc.qmd >}} \ No newline at end of file diff --git a/Data/1_Writing/1_Task/4_CNMc.qmd b/Data/1_Writing/1_Task/4_CNMc.qmd new file mode 100644 index 0000000000000000000000000000000000000000..673c9ed05f8ee557618c8cfd3fa406dbedc11964 --- /dev/null +++ b/Data/1_Writing/1_Task/4_CNMc.qmd @@ -0,0 +1,108 @@ +### First version of CNMc {#sec-subsec_1_1_3_first_CNMc} +Apart from this thesis, there already has been an +attempt to build \glsfirst{cnmc}. +The procedure, progress and results of the most recent effort are described in [@Max2021]. +Also, in the latter, the main idea was to predict the trajectories +for dynamical systems with a control term or a model parameter value $\beta$. +In this subsection, a review of +[@Max2021] shall be given with pointing out which parts need to be improved. In addition, some distinctions between the previous version of \gls{cnmc} and the most recent version are named. +Further applied modifications are provided in chapter [-@sec-chap_2_Methodlogy].\newline + +To avoid confusion between the \gls{cnmc} version described in this thesis and the prior \gls{cnmc} version, the old version will be referred to as *first CNMc*. +*First CNMc* starts by defining a range of model parameter values +$\vec{\beta}$. +It was specifically designed to only be able to make predictions for the Lorenz attractor [@lorenz1963deterministic], which is described with the set of equations @eq-eq_6_Lorenz given in section [-@sec-sec_2_2_Data_Gen]. +An illustrative trajectory is of the Lorenz system [@lorenz1963deterministic] with $\beta = 28$ is depicted in figure @fig-fig_2_Lorenz_Example .\newline + + + + + +![Illustrative trajectory of the Lorenz attractor [@lorenz1963deterministic], $\beta = 28$](../../3_Figs_Pyth/1_Task/2_Lorenz.svg){#fig-fig_2_Lorenz_Example} + +Having chosen a range of model parameter values $\vec{\beta}$, the Lorenz system was solved numerically and its solution was supplied to \gls{cnm} in order to run k-means++ on all received trajectories. + + + +The centroid label allocation by the k-means+ algorithm is conducted randomly. +Thus, linking or matching centroid labels from one model parameter value $\beta_i$ to another model parameter value $\beta_j$, where $i \neq j$, is performed in 3 steps. +The first two steps are ordering the $\vec{\beta}$ in ascending +order and transforming the Cartesian coordinate system into a spherical coordinate system. +With the now available azimuth angle, each centroid is labeled in increasing order of the azimuth angle. +The third step is to match the centroids across $\vec{\beta}$, i.e., $\beta_i$ with $\beta_j$. +For this purpose, the centroid label from the prior model parameter value +is used as a reference to match its corresponding nearest centroid in the next model parameter value. +As a result, one label can be assigned to one centroid across the available $\vec{\beta}$.\newline + + +Firstly, [@Max2021] showed that ambiguous regions can +occur. Here the matching of the centroids across the $\vec{\beta}$ can +not be trusted anymore. +Secondly, the deployed coordinate transformation is assumed to only work properly in 3 dimensions. There is the possibility to set one +or two variables to zero in order to use it in two or one dimension, respectively. +However, it is not known, whether such an artificially decrease of dimensions yields a successful outcome for lower-dimensional (2- and 1-dimensional) dynamical systems. In the event of a 4-dimensional or even higher dimensional case, the proposed coordinate transformation cannot be used anymore. +In conclusion, the transformation is only secure to be utilized in 3 dimensions. +Thirdly, which is also acknowledged by [@Max2021] is that the +coordinate transformation forces the dynamical system to have +a circular-like trajectory, e.g., as the in figure @fig-fig_2_Lorenz_Example depicted Lorenz system does. +Since not every dynamical system is forced to have a circular-like trajectory, it is one of the major parts which needs to be improved, when *first CNMc* is meant to be leveraged for all kinds of dynamical systems. +Neither the number of dimensions nor the shape of the trajectory should matter for a generalized \gls{cnmc}.\newline + + +Once the centroids are matched across all the available $\vec{\beta}$ pySINDy [@Brunton2016; @Silva2020; @Kaptanoglu2022] is used +to build a regression model. This regression model serves the purpose +of capturing all centroid positions of the calculated model parameter +values $\vec{\beta }$ and making predictions for unseen $\vec{\beta}_{unseen}$. +Next, a preprocessing step is performed on the +transition property tensors $\boldsymbol Q$ and $\boldsymbol T$. Both are +scaled, such that the risk of a bias is assumed to be reduced. +Then, on both \glsfirst{nmf} [@Lee1999] is +applied. +Following equation @eq-eq_5_NMF \gls{nmf} [@Lee1999] returns +two matrices, i.e., $\boldsymbol W$ and $\boldsymbol H$. +The matrices exhibit a physically +relevant meaning. $\boldsymbol W$ corresponds to a mode collection and $\boldsymbol H$ contains +the weighting factor for each corresponding mode.\newline +$$ +\begin{equation} + \label{eq_5_NMF} + \boldsymbol {A_{i \mu}} \approx \boldsymbol A^{\prime}_{i \mu} = (\boldsymbol W \boldsymbol H)_{i \mu} = \sum_{a = 1}^{r} + \boldsymbol W_{ia} \boldsymbol H_{a \mu} +\end{equation} +$$ {#eq-eq_5_NMF} + +The number of modes $r$ depends on the underlying dynamical system. +Firstly, the \gls{nmf} is utilized by deploying optimization. +The goal is to satisfy the condition that, the deviation between the original matrix and the approximated matrix shall be below a chosen threshold. +For this purpose, the number of required optimization iterations easily can be +in the order of $\mathcal{O} (1 \mathrm{e}+7)$. The major drawback here is that such a high number of iterations is computationally very expensive. +Secondly, for *first CNMc* the number of modes $r$ must be known beforehand. +Since in most cases this demand cannot be fulfilled two issues arise. +On the one hand, running \gls{nmf} on a single known $r$ can already be considered to be computationally expensive. +On the other hand, conducting a study to find the appropriate $r$ involves even more computational effort. +Pierzyna [@Max2021] acknowledges this issue and defined it to be one of the major limitations. \newline + + +The next step is to generate a regression model with \glsfirst{rf}. +Some introductory words about \gls{rf} are given in subsection [-@sec-subsec_2_4_2_QT]. +As illustrated in [@Max2021], \gls{rf} was able to reproduce the training data reasonably well. +However, it faced difficulties to approximate spike-like curves. +Once the centroid positions and the two transitions property tensors $\boldsymbol Q$ and $\boldsymbol T$ are known, they are passed to \gls{cnm} to calculate the predicted trajectories. +For assessing the prediction quality two methods are used, i.e., the autocorrelation and the \glsfirst{cpd}. +\gls{cpd} outlines the probability of being on one of the $K$ clusters. +The autocorrelation given in equation @eq-eq_35 allows comparing two trajectories with a phase-mismatch [@protas2015optimal] and it measures how well a point in trajectory correlates with a point that is some time steps ahead. +The variables in equation @eq-eq_35 are denoted as time lag $\tau$, state space vector $\boldsymbol x$, time $t$ and the inner product $(\boldsymbol x, \boldsymbol y) = \boldsymbol x \cdot \boldsymbol{y}^T$. \newline +$$ +\begin{equation} + R(\tau) = \frac{1}{T - \tau} \int\limits_{0}^{T-\tau}\, (\boldsymbol{x} (t), \boldsymbol{x}(t+ \tau)) dt, \quad \tau \in [\, 0, \, T\,] + \label{eq_35} +\end{equation} +$$ {#eq-eq_35} + +*First CNMc* proved to work well for the Lorenz system only for the number of centroids up to $K=10$ and small $\beta$. +Among the points which need to be improved is the method to match the centroids across the chosen $\vec{\beta}$. +Because of this, two of the major problems occur, i.e., the limitation to 3 dimensions and the behavior of the trajectory must be circular, similar to the Lorenz system [@lorenz1963deterministic]. +These demands are the main obstacles to the application of *first CNMc* to all kinds of dynamical systems. +The modal decomposition with \gls{nmf} is the most computationally intensive part and should be replaced by a faster alternative. + + diff --git a/Data/1_Writing/2_Task/0_Methodlogy.qmd b/Data/1_Writing/2_Task/0_Methodlogy.qmd new file mode 100644 index 0000000000000000000000000000000000000000..63f8652c9d66a51ce36274c79f72cc97531eb1ac --- /dev/null +++ b/Data/1_Writing/2_Task/0_Methodlogy.qmd @@ -0,0 +1,60 @@ +# Methodology {#sec-chap_2_Methodlogy} +In this chapter, the entire pipeline for designing the proposed +\gls{cnmc} is elaborated. For this purpose, the ideas behind +the individual processes are explained. +Results from the step tracking onwards will be presented in chapter [-@sec-ch_3]. +Having said that, \gls{cnmc} consists of multiple main process steps or stages. +First, a broad overview of the \gls{cnmc}'s workflow shall be given. +Followed by a detailed explanation for each major operational step. The +implemented process stages are presented in the same order as they are +executed in \gls{cnmc}. However, \gls{cnmc} is not forced +to go through each stage. If the output of some steps is +already available, the execution of the respective steps can be skipped. \newline + +The main idea behind such an implementation is to prevent computing the same task multiple times. +Computational time can be reduced if the output of some \gls{cnmc} steps are available. +Consequently, it allows users to be flexible in their explorations. +It could be the case that only one step of \textsc{CNMc} is desired to be examined with different settings or even with newly implemented functions without running the full \gls{cnmc} pipeline. +Let the one \gls{cnmc} step be denoted as C, then it is possible to skip steps A and B if their output is already calculated and thus available. +Also, the upcoming steps can be skipped or activated depending on the need for their respective outcomes. +Simply put, the mentioned flexibility enables to load data for A and B and execute only C. Executing follow-up steps or loading their data is also made selectable. + + + +Since the tasks of this thesis required much coding, +it is important to +mention the used programming language and the dependencies. +As for the programming language, +*Python 3* [@VanRossum2009] was chosen. For the libraries, only a few important libraries will be mentioned, because the number of used libraries is high. Note, each used module is +freely available on the net and no licenses are required to be purchased. +\newline + +The important libraries in terms of performing actual calculations are +*NumPy* [@harris2020array], *SciPy* [@2020SciPy-NMeth], *Scikit-learn* [@scikit-learn], *pySindy* [@Silva2020; @Kaptanoglu2022], for multi-dimensional sparse matrix management *sparse* and for plotting only *plotly* [@plotly] was deployed. One of the reason why *plotly* is preferred over *Matplotlib* [@Hunter:2007] are post-processing capabilities, which now a re available. Note, the previous *\gls{cmm*c} version used *Matplotlib* [@Hunter:2007], which in this work has been fully replaced by *plotly* [@plotly]. More reasons why this modification is useful and new implemented post-processing capabilities will be given in the upcoming sections.\newline + +For local coding, the author's Linux-Mint-based laptop with the following hardware was deployed: CPU: Intel Core i7-4702MQ \gls{cpu}@ 2.20GHz × 4, RAM: 16GB. +The Institute of fluid dynamics of the Technische Universität Braunschweig +also supported this work by providing two more powerful computation resources. +The hardware specification will not be mentioned, due to the fact, that all computations and results elaborated in this thesis can be obtained by +the hardware described above (authors laptop). However, the two provided +resources shall be mentioned and explained if \gls{cnmc} benefits from +faster computers. The first bigger machine is called *Buran*, it is a +powerful Linux-based working station and access to it is directly provided by +the chair of fluid dynamics. \newline + +The second resource is the high-performance +computer or cluster available across the Technische Universität Braunschweig +*Phoenix*. The first step, where the dynamical systems are solved through an \gls{ode} solver +is written in a parallel manner. This step can if specified in the *settings.py* file, be performed in parallel and thus benefits from +multiple available cores. However, most implemented \gls{ode}s are solved within +a few seconds. There are also some dynamical systems implemented whose +ODE solution can take a few minutes. Applying \gls{cnmc} on latter dynamical +systems results in solving their \gls{ode}s for multiple different model parameter values. Thus, deploying the parallelization can be advised in the latter mentioned time-consuming \gls{ode}s.\newline + +By far the most time-intensive part of the improved \gls{cnmc} is the clustering step. The main computation for this step is done with +{Scikit-learn} [@scikit-learn]. It is heavily parallelized and the +computation time can be reduced drastically when multiple threads are available. +Other than that, *NumPy* and *SciPy* are well-optimized libraries and +are assumed to benefit from powerful computers. In summary, it shall be stated that a powerful machine is for sure advised when multiple dynamical +systems with a range of different settings shall be investigated since parallelization is available. Yet executing \gls{cnmc} on a single dynamical system, a regular laptop can be regarded as +a sufficient tool. diff --git a/Data/1_Writing/2_Task/1_0_CNMC_Data.qmd b/Data/1_Writing/2_Task/1_0_CNMC_Data.qmd new file mode 100644 index 0000000000000000000000000000000000000000..78faffe33edc250f17215ed54913f64ccf8acd3b --- /dev/null +++ b/Data/1_Writing/2_Task/1_0_CNMC_Data.qmd @@ -0,0 +1,122 @@ + + + + + + +## CNMc's data and workflow {#sec-sec_2_1_Workflow} +In this section, the 5 main points that characterize \gls{cnmc} will be discussed. +Before diving directly into \gls{cnmc}'s workflow some remarks +are important to be made. +First, \gls{cnmc} is written from scratch, it is not simply an updated version of the described *first CNMc* in subsection +[-@sec-subsec_1_1_3_first_CNMc]. +Therefore, the workflow described in this section for \gls{cnmc} will not match that of *first CNMc*, e.g., *first CNMc* had no concept of *settings.py* and it was not utilizing *Plotly* [@plotly] to facilitate post-processing capabilities. +The reasons for a fresh start were given in subsection [-@sec-subsec_1_1_3_first_CNMc]. +However, the difficulty of running *first CNMc* and the time required to adjust *first CNMc* such that a generic dynamic system could be utilized were considered more time-consuming than starting from zero. \newline + +Second, the reader is reminded to have the following in mind. +Although it is called pipeline or workflow, \gls{cnmc} is not obliged to run the whole workflow. With *settings.py* file, which will be explained below, it is possible to run only specific selected tasks. +The very broad concept of \gls{cnmc} was already provided at the beginning of chapter [-@sec-chap_1_Intro]. +However, instead of providing data of dynamical systems for different model parameter values, the user defines a so-called *settings.py* file and executes \gls{cnmc}. +The outcome of \gls{cnmc} consists, very broadly, of the predicted trajectories and some accuracy measurements as depicted in figure +@fig-fig_1_CNMC_Workflow . +In the following, a more in-depth view shall be given.\newline + + + The extension of *settings.py* is a regular *Python* file. However, it is a dictionary, thus there is no need to acquire and have specific knowledge about *Python*. + The syntax of *Python's* dictionary is quite similar to that of the *JSON* dictionary, in that the setting name is supplied within a quote mark + and the argument is stated after a colon. In order to understand the main points of \gls{cnmc}, its main data and workflow are depicted @fig-fig_3_Workflow as an XDSM diagram [@Lambe2012]. + \newline + + + + + +![\gls{cnmc} general workflow overview](../../3_Figs_Pyth/2_Task/0_Workflow.svg){#fig-fig_3_Workflow} + + +The first action for executing \gls{cnmc} is to define *settings.py*. It contains descriptive information about the entire pipeline, e.g., which dynamical system to use, which model parameters to select for training, which for testing, which method to use for modal decomposition and mode regression. +To be precise, it contains all the configuration attributes of all the 5 main \gls{cnmc} steps and some other handy extra functions. It is written in +a very clear way such that settings to the corresponding stages of \gls{cnmc} +and the extra features can be distinguished at first glance. +First, there are separate dictionaries for each of the 5 steps to ensure that the desired settings are made where they are needed. +Second, instead of regular line breaks, multiline comment blocks with the stage names in the center are used. +Third, almost every *settings.py* attribute is explained with comments. +Fourth, there are some cases, where +a specific attribute needs to be reused in other steps. +The user is not required to adapt it manually for all its occurrences, but rather to change it only on the first occasion, where the considered function is defined. +*Python* will automatically ensure that all remaining steps receive the change correctly. +Other capabilities implemented in *settings.py* are mentioned when they are actively exploited. +In figure @fig-fig_3_Workflow it can be observed that after passing *settings.py* a so-called *Informer* and a log file are obtained. +The *Informer* is a file, which is designed to save all user-defined settings in *settings.py* for each execution of \gls{cnmc}. +Also, here the usability and readability of the output are important and have been formatted accordingly. It proves to be particularly useful when a dynamic system with different settings is to be calculated, e.g., to observe the influence of one or multiple parameters. \newline + +One of the important attributes which +can be arbitrarily defined by the user in *settings.py* and thus re-found in the *Informer* is the name of the model. +In \gls{cnmc} multiple dynamical systems are implemented, which can be chosen by simply changing one attribute in *settings.py*. +Different models could be calculated with the same settings, thus this clear and fast possibility to distinguish between multiple calculations is required. +The name of the model is not only be saved in the *Informer* but it will +be used to generate a folder, where all of \gls{cnmc} output for this single +\gls{cnmc} workflow will be stored. +The latter should contribute to on the one hand that the \gls{cnmc} models can be easily distinguished from each other and on the other hand that all results of one model are obtained in a structured way. +\newline + +When executing \gls{cnmc} many terminal outputs are displayed. This allows the user to be kept up to date on the current progress on the one hand and to see important results directly on the other. +In case of unsatisfying results, \gls{cnmc} could be aborted immediately, instead of having to compute the entire workflow. In other words, if a computation expensive \gls{cnmc} task shall be performed, knowing about possible issues in the first steps can +be regarded as a time-saving mechanism. +The terminal outputs are formatted to include the date, time, type of message, the message itself and the place in the code where the message can be found. +The terminal outputs are colored depending on the type of the message, e.g., green is used for successful computations. +Colored terminal outputs are applied for the sake of readability. +More relevant outputs can easily be distinguished from others. +The log file can be considered as a memory since, in it, the terminal outputs are saved.\newline + +The stored terminal outputs are in the format as the terminal output described above, except that no coloring is utilized. +An instance, where the log file can be very helpful is the following. Some implemented quality measurements give very significant information about prediction reliability. Comparing different settings in terms of prediction capability would become very challenging if the terminal outputs would be lost whenever the \gls{cnmc} terminal is closed. The described *Informer* and the log file can be beneficial as explained, nevertheless, they are optional. +That is, both come as two of the extra features mentioned above and can be turned off in *settings.py*.\newline + +Once *settings.py* is defined, \gls{cnmc} will filter the provided input, adapt the settings if required and send the corresponding parts to their respective steps. +The sending of the correct settings is depicted in figure @fig-fig_3_Workflow, where the abbreviation *st* stands for settings. +The second abbreviation *SOP* is found for all 5 stages and denotes storing output and plots. All the outcome is stored in a compressed form such that memory can be saved. All the plots are saved as HTML files. There are many reasons to do so, however, to state the most crucial ones. First, the HTML file can be opened on any operating system. +In other words, it does not matter if Windows, Linux or Mac is used. +Second, the big difference to an image is that HTML files can be upgraded with, e.g., CSS, JavaScript and PHP functions. +Each received HTML plot is equipped with some post-processing features, e.g., zooming, panning and taking screenshots of the modified view. When zooming in or out the axes labels are adapted accordingly. Depending on the position of +the cursor, a panel with the exact coordinates of one point and other information such as the $\beta$ are made visible. \newline + +In the same way that data is stored in a compressed format, all HTML files are generated in such a way that additional resources are not written directly into the HTML file, but a link is used so that the required content is obtained via the Internet. +Other features associated with HTML plots and which data are saved will be explained in their respective section in this chapter. +The purpose of \gls{cnmc} is to generate a surrogate model with which predictions can be made for unknown model parameter values ${\beta}$. +For a revision on important terminology as model parameter value $\beta$ +the reader is referred to subsection [-@sec-subsec_1_1_1_Principles]. +Usually, in order to obtain a sound predictive model, machine learning methods require a considerable amount of data. Therefore, the \gls{ode} is solved for a set of $\vec{\beta }$. An in-depth explanation for the first is provided in +section [-@sec-sec_2_2_Data_Gen]. +The next step is to cluster all the received trajectories deploying kmeans++ [@Arthur2006]. Once this has been done, tracking can take be performed. +Here the objective is to keep track of the positions of all the centroids when $\beta$ is changed over the whole range of $\vec{\beta }$. +A more detailed description is given in section [-@sec-sec_2_3_Tracking].\newline + + +The modeling step is divided into two subtasks, which are not displayed as such in figure @fig-fig_3_Workflow . The first subtask aims to get a model that yields all positions of all the $K$ centroids for an unseen $\beta_{unseen}$, where an unseen $\beta_{unseen}$ is any $\beta$ that was not used to train the model. In the second subtask, multiple tasks are performed. +First, the regular \gls{cnm} [@Fernex2021] shall be applied to all the tracked clusters from the tracking step. For this purpose, the format of the tracked results is adapted in a way such that \gls{cnm} can be executed without having to modify \gls{cnm} itself. By running \gls{cnm} on the tracked data of all $\vec{\beta }$, the transition property tensors $\boldsymbol Q$ and $\boldsymbol T$ for all $\vec{\beta }$ are received. \newline + +Second, all the $\boldsymbol Q$ and the $\boldsymbol T$ tensors are stacked to form $\boldsymbol {Q_{stacked}}$ and $\boldsymbol {T_{stacked}}$ matrices. +These stacked matrices are subsequently supplied to one of the two possible implemented modal decomposition methods. +Third, a regression model for the obtained modes is constructed. +Clarifications on the modeling stage can be found in section [-@sec-sec_2_4_Modeling].\newline + +The final step is to make the actual predictions for all provided $\beta_{unseen}$ and allow the operator to draw conclusions about the trustworthiness of the predictions. +For the trustworthiness, among others, the three quality measurement concepts explained in subsection +[-@sec-subsec_1_1_3_first_CNMc] +are leveraged. Namely, comparing the \gls{cnmc} and \gls{cnm} predicted trajectories by overlaying them directly. The two remaining techniques, which were already applied in regular \gls{cnm} [@Fernex2021], are the \glsfirst{cpd} and the autocorrelation.\newline + +The data and workflow in figure @fig-fig_3_Workflow do not reveal one additional feature of the implementation of \gls{cnmc}. That is, inside the folder *Inputs* multiple subfolders containing a *settings.py* file, e.g., different dynamical systems, can be inserted to allow a sequential run. In the case of an empty subfolder, \gls{cnmc} will inform the user about that and continue its execution without an error. +As explained above, each model will have its own folder where the entire output will be stored. +To switch between the multiple and a single *settings.py* version, the *settings.py* file outside the *Inputs* folder needs to be modified. The argument for that is *multiple\_Settings*.\newline + +Finally, one more extra feature shall be mentioned. After having computed expensive models, it is not desired to overwrite the log file or any other output. +To prevent such unwanted events, it is possible to leverage the overwriting attribute in *settings.py*. If overwriting is disabled, \gls{cnmc} would verify whether a folder with the specified model name already exists. +In the positive case, \gls{cnmc} would initially only propose an alternative model name. Only if the suggested model name would not overwrite any existing folders, the suggestion will be accepted as the new model name. +Both, whether the model name was chosen in *settings.py* as well the new final replaced model name is going to be printed out in the terminal line.\newline + +In summary, the data and workflow of \gls{cnmc} are shown in Figure @fig-fig_3_Workflow and are sufficient for a broad understanding of the main steps. +However, each of the 5 steps can be invoked individually, without having to run the full pipeline. Through the implementation of *settings.py* \gls{cnmc} is highly flexible. All settings for the steps and the extra features can be managed with *settings.py*. +A log file containing all terminal outputs as well a summary of chosen settings is stored in a separate file called *Informer* are part of \gls{cnmc}'s tools. + diff --git a/Data/1_Writing/2_Task/1_Data_Gen.qmd b/Data/1_Writing/2_Task/1_Data_Gen.qmd new file mode 100644 index 0000000000000000000000000000000000000000..a87b32377cd0d4be8dd8eca73a2fc857730ac980 --- /dev/null +++ b/Data/1_Writing/2_Task/1_Data_Gen.qmd @@ -0,0 +1,232 @@ + + + +## Data generation {#sec-sec_2_2_Data_Gen} +In this section, the first main step of the 5 steps shall be explained. +The idea of \gls{cnmc} is to create a surrogate model such that predictions for unseen $\beta_{unseen}$ can be made. +An unseen model parameter value $\beta_{unseen}$ is defined to be not incorporated in the training data. Generally in machine learning, the more linear independent data is available the higher the trustworthiness of the surrogate model is assumed to be. +Linear independent data is to be described as data which provide new information. +Imagining any million times a million data matrix $\boldsymbol {A_{n\, x\, n}}$, where $n = 1 \mathrm{e}{+6}$. +On this big data matrix $\boldsymbol A$ a modal decomposition method, e.g., the \glsfirst{svd} [@Brunton2019; @gerbrands1981relationships], shall be applied.\newline + +To reconstruct the original matrix $\boldsymbol A$ fully with the decomposed matrices only the non-zero modes are required. The number of the non-zero modes $r$ is often much smaller than the dimension of the original matrix, i.e., $r << n$. +If $r << n$, the measurement matrix $\boldsymbol A$ contains a high number of linear dependent data. This has the advantage of allowing the original size to be reduced. The disadvantage, however, is that $\boldsymbol A$ contains duplicated entries (rows, or columns). For this reason, $\boldsymbol A$ includes data parts which do not provide any new information. +In the case of $r = n$ only meaningful observations are comprised and $\boldsymbol A$ has full rank. +Part of feature engineering is to supply the regression model with beneficial training data and filter out redundant copies. +The drawback of $r = n$ is observed when the number of representative modes is chosen to be smaller than the full dimension $r < n$. +Consequently, valuable measurements could be lost. \newline + + +Moreover, if the dimension $n$ is very large, accuracy demands may make working with matrices unavoidable. +As a result, more powerful computers are required and the computational time is expected to be increased. +For this work, an attempt is made to represent non-linear differential equations by a surrogate model. +In addition, trajectories of many $\vec{\beta }$ can be handled quite efficiently. +Therefore, it attempted to provide sufficient trajectories as training data. +Having said that the data and workflow of this step, i.e., data generation, shall be described. +The general overview is depicted in figure @fig-fig_4_Data_Gen . +Data generation corresponding settings are passed to its step, which invokes the \gls{ode} solver for the range of selected $\vec{\beta}$. +The trajectories are plotted and, both, all the obtained trajectories $F_(\vec{\beta})$ and their plots are saved. Note that $\vec{\beta}$ indicates that one differential equation is solved for selected $\beta$ values within a range of model parameter values $\vec{\beta}$.\newline + + + + + +![Data and workflow of the first step: Data generation](../../3_Figs_Pyth/2_Task/1_Data_Gen.svg){#fig-fig_4_Data_Gen} + + + +A detailed description will be given in the following. +First, in order to run this task, it should be activated in *settings.py*. +Next, the user may change local output paths, define which kind of plots shall be generated, which dynamical model should be employed and provide the range $\vec{\beta}$. +As for the first point, the operator can select the path where the output of this specific task shall be stored. Note, that this is an optional attribute. Also, although it was only tested on Linux, the library *pathlib* was applied. +Therefore, if the output is stored on a Windows or Mac-based operating system, which uses a different path system, no errors are expected. +\newline + +Regarding the types of plots, first, for each type of plot, the user is enabled to define if these plots are desired or not. Second, all the plots are saved as HTML files. Some reasons for that were provided at the beginning of this chapter and others which are important for trajectory are the following. +With in-depth explorations in mind, the user might want to highlight specific regions in order to get detailed and correct information. +For trajectories, this can be encountered when e.g., coordinates of some points within a specified region shall be obtained. Here zooming, panning, rotation and a panel that writes out additional information about the current location of the cursor can be helpful tools. The first type of plot is the trajectory itself with the initial condition as a dot in the state-space.\newline + +If desired, arrows pointing in the direction of motion of the trajectory can be included in the plots. +The trajectory, the initial state sphere and the arrows can be made invisible by one click on the legend if desired. The second type of representation is an animated plot, i.e., each trajectory $F(\beta)$ is available as the animated motion. The final type of display is one plot that contains all $F(\vec{\beta})$ as a sub-figure. +The latter type of visualization is a very valuable method to see the impact of $\beta$ across the available $\vec{\beta }$ on the trajectories $F(\vec{\beta})$. +Also, it can be leveraged as fast sanity check technique, i.e., if any $F(\beta )$ is from expectation, this can be determined quickly by looking at the stacked trajectory plots. +\newline + +If for presentation HTML files are not desired, clicking on a button will provide a *png* image of the current view state of the trajectory. Note, that the button will not be on the picture. +Finally, modern software, especially coding environments, understood that staring at white monitors is eye-straining. Consequently, dark working environments are set as default. For this reason, all the mentioned types of plots have a toggle implemented. +It allows switching between a dark default and a white representation mode.\newline + +For choosing a dynamical system, two possibilities are given. +On the one hand, one of the 10 incorporated models can be selected by simply selecting a number, which corresponds to an integrated dynamical system. +On the other hand, a new dynamical system can be implemented. +This can be achieved without much effort by following the syntax of one of the 10 available models. The main adjustment is done by replacing the \gls{ode}. +The differential equations of all 10 dynamic systems that can be selected by default are given in equations @eq-eq_6_Lorenz to @eq-eq_13_Insect and the 3 sets of equations @eq-eq_8_Chen to @eq-eq_14_VDP are found the Appendix. +The latter 3 sets of equations are provided in the Appendix because they are not used for validating \gls{cnmc} prediction performance. +Next to the model's name, the reference to the dynamical system can be seen. +The variables $a$ and $b$ are constants. +Except for the Van der Pol, which is given in the Appendix [-@sec-ch_Ap_Dyna] as equation @eq-eq_14_VDP, all dynamical systems are 3-dimensional .\newline + + + + + + + **Lorenz** [@lorenz1963deterministic]: + $$ + \begin{equation} + \label{eq_6_Lorenz} + \begin{aligned} + \dot x &= a\, (y - x) \\ + \dot y &= x\, (\beta - z -y) \\ + \dot z &= x y -\beta z + \end{aligned} + \end{equation}$$ {#eq-eq_6_Lorenz} +\ + **Rössler** [@Roessler1976]: + $$ + \begin{equation} + \label{eq_7_Ross} + \begin{aligned} + \dot x &= -y -z \\ + \dot y &= x + ay \\ + \dot z &= b +z \, (x-\beta)\\ + \end{aligned} + \end{equation}$$ {#eq-eq_7_Ross} + +\ + +**Two Scroll** [@TwoScroll]: + $$ + \begin{equation} + \label{eq_9_2_Scroll} + \begin{aligned} + \dot x &= \beta \, (y-x) \\ + \dot y &= x z \\ + \dot z &= a - by^4 + \end{aligned} + \end{equation}$$ {#eq-eq_9_2_Scroll} +\ + +**Four Wing** [@FourWing]: + $$ + \begin{equation} + \label{eq_10_4_Wing} + \begin{aligned} + \dot x &= \beta x +y +yz\\ + \dot y &= yz - xz \\ + \dot z &= a + bxy -z + \end{aligned} + \end{equation}$$ {#eq-eq_10_4_Wing} + +\ + +**Sprott\_V\_1** [@sprott2020we]: + $$ + \begin{equation} + \label{eq_11_Sprott_V_1} + \begin{aligned} + \dot x &= y \\ + \dot y &= -x - sign(z)\,y\\ + \dot z &= y^2 - exp(-x^2) \, \beta + \end{aligned} + \end{equation}$$ {#eq-eq_11_Sprott_V_1} + +\ + +**Tornado** [@sprott2020we]: + $$ + \begin{equation} + \label{eq_12_Tornado} + \begin{aligned} + \dot x &= y \, \beta \\ + \dot y &= -x - sign(z)\,y\\ + \dot z &= y^2 - exp(-x^2) + \end{aligned} + \end{equation}$$ {#eq-eq_12_Tornado} + +\ + +**Insect** [@sprott2020we]: + $$ + \begin{equation} + \label{eq_13_Insect} + \begin{aligned} + \dot x &= y \\\ + \dot y &= -x - sign(z)\,y \, \beta\\ + \dot z &= y^2 - exp(-x^2) + \end{aligned} + \end{equation}$$ {#eq-eq_13_Insect} + + + + + + +Sprott\_V\_1, Tornado and Insect in equations @eq-eq_11_Sprott_V_1 to @eq-eq_13_Insect are not present in the cited reference [@sprott2020we] in this expressed form. +The reason is that the introduced equations are a modification of the chaotic attractor proposed in [@sprott2020we]. The curious reader is invited to read [@sprott2020we] and to be convinced about the unique properties. +The given names are made up and serve to distinguish them. +Upon closer inspection, it becomes clear that they differ only in the place where $\beta$ is added. +All 3 models are highly sensitive to $\beta$, i.e., a small change in $\beta$ results in bifurcations. +For follow-up improvements of \gls{cnmc}, these 3 systems can be applied as performance benchmarks for bifurcation prediction capability.\newline + +Showing the trajectories of all 10 models with different $\vec{\beta}$ would claim too much many pages. Therefore, for demonstration purposes the +3 above-mentioned models, i.e., Sprott\_V\_1, Tornado and Insect are +displayed in figures @fig-fig_5_Sprott to @fig-fig_11_Insect . +Figure @fig-fig_5_Sprott depicts the dynamical system Sprott\_V\_1 @eq-eq_11_Sprott_V_1 with $\beta =9$. +Figures @fig-fig_6_Tornado to @fig-fig_8_Tornado presents the Tornado +@eq-eq_12_Tornado +with $\beta =16.78$ with 3 different camera perspectives. +Observing these figures, the reader might recognize why the name Tornado was chosen. The final 3 figures @fig-fig_9_Insect to @fig-fig_11_Insect display the Insect @eq-eq_13_Insect with $\beta =7$ for 3 different perspectives. +Other default models will be displayed in subsection [-@sec-subsec_3_5_2_Models], as they were used for performing benchmarks . \newline + + + + + +![Default model: Sprott\_V\_1 @eq-eq_11_Sprott_V_1 with $\beta =9$](../../3_Figs_Pyth/2_Task/2_Sprott_V1.svg){#fig-fig_5_Sprott} + +::: {layout-ncol=2} +![Default model: Tornado @eq-eq_12_Tornado with $\beta =16.78$, view: 1](../../3_Figs_Pyth/2_Task/3_Tornado.svg){#fig-fig_6_Tornado} + +![Default model: Tornado @eq-eq_12_Tornado with $\beta =16.78$, view: 2](../../3_Figs_Pyth/2_Task/4_Tornado.svg){#fig-fig_7_Tornado} +::: + +::: {layout-ncol=2} +![Default model: Tornado @eq-eq_12_Tornado with $\beta =16.78$, view: 3](../../3_Figs_Pyth/2_Task/5_Tornado.svg){#fig-fig_8_Tornado} + +![Default model: Insect @eq-eq_13_Insect with $\beta =7$, view: 1](../../3_Figs_Pyth/2_Task/6_Insect.svg){#fig-fig_9_Insect} +::: + +::: {layout-ncol=2} +![Default model: Insect @eq-eq_13_Insect with $\beta =7$, view: 2](../../3_Figs_Pyth/2_Task/7_Insect.svg){#fig-fig_10_Insect} + +![Default model: Insect @eq-eq_13_Insect with $\beta =7$, view: 3](../../3_Figs_Pyth/2_Task/8_Insect.svg){#fig-fig_11_Insect} +::: + + + + +\newpage +Having selected a dynamical system, the model parameter values for which the system shall be solved must be specified in *settings.py*. +With the known range $\vec{\beta}$ the problem can be described, as already mentioned in subsection [-@sec-subsec_1_1_1_Principles], with equation @eq-eq_1_1_MPV . + +$$ +\begin{equation} + F_{CNMc} = \left(\dot{\vec{x}}(t), \, \vec{\beta} \right) = + \left( \frac{\vec{x}(t)}{dt}, \, \vec{\beta} \right) = + f(\vec{x}(t), \, \vec{\beta} ) + \tag{[-@sec-eq_1_1_MPV]} +\end{equation}$$ + +The solution to @eq-eq_1_1_MPV is obtained numerically by applying *SciPy's RK45* \gls{ode} solver. If desired \gls{cnmc} allows completing this task in parallel. Additional notes on executing this task in parallel are given in section [-@sec-sec_Motivation]. The main reason for relying on *RK45* is that it is commonly known to be a reliable option. +Also, in [@Butt2021] *RK45* was directly compared with *LSODA*. The outcome was that *LSODA* was slightly better, however, the deviation between *RK45's* and *LSODA's* performance was found to be negligible. +In other words, both solvers fulfilled the accuracy demands. +Since chaotic systems are known for their \glsfirst{sdic} any deviation, even in the $\mathcal{O} (1 \mathrm{e}{-15})$, will be amplified approximately exponentially and finally will become unacceptably high. +Therefore, it was tested, whether the *RK45* solver would allow statistical variations during the solution process. +For this purpose, the Lorenz system [@lorenz1963deterministic] was solved multiple times with different time ranges. The outcome is that *RK45* has no built-in statistical variation. +Simply put, the trajectory of the Lorenz system for one constant $\beta$ will not differ when solved multiple times on one computer.\newline + + +Comparing *first CNMc* and \gls{cnmc} the key takeaways are that \gls{cnmc} has 10 in-built dynamical systems. +However, desiring to implement a new model is also achieved in a way that is considered relatively straightforward. +Important settings, such as the model itself, the $\vec{\beta }$, plotting and storing outcome can be managed with the *settings.py*. The plots are generated and stored such that post-processing capabilities are supplied. diff --git a/Data/1_Writing/2_Task/2_Clustering.qmd b/Data/1_Writing/2_Task/2_Clustering.qmd new file mode 100644 index 0000000000000000000000000000000000000000..10da4dcfbcaa3ff2874692c2dc6acb785759c635 --- /dev/null +++ b/Data/1_Writing/2_Task/2_Clustering.qmd @@ -0,0 +1,232 @@ + + + +## Clustering {#sec-sec_2_3_Clustering} +In this section, the second step, the clustering of all trajectories $(\vec{\beta})$, is explained. +The main idea is to represent $F(\vec{\beta})$ through movement on centroids. +The data and workflow of clustering are very similar to the previous step of the data generation. It can be comprehended with figure @fig-fig_12_Clust . +All settings for this step can be individually configured in *settings.py*. +The $F(\vec{\beta})$ and cluster-algorithm specific parameters are filtered and provided to the clustering algorithm. The solutions are plotted and both, the plots and the clustered output are saved.\newline + + + + +![Data and workflow of the second step: Clustering](../../3_Figs_Pyth/2_Task/9_Clust.svg){#fig-fig_12_Clust} + + + + +Data clustering is an unsupervised machine learning technique. +There are a variety of approaches that may be used for this, e.g., +k-means, affinity propagation, mean shift, +spectral clustering and Gaussian mixtures. All the +methods differ in their use cases, scalability, +metric or deployed norm and required input parameters. The latter +is an indicator of customization abilities. Since k-means can be used for very large +data sets and enables easy and fast implementation, k-means is preferred. Furthermore, David Arthur et al. +[@Arthur2006] introduced k-means++, which is known +to outperform k-means. Therefore, \gls{cnmc} uses k-means++ +as its default method for data clustering. +Note, applying k-means++ is not new in \gls{cnmc}, but it was already applied in the regular \gls{cnm} [@Fernex2021].\newline + +In order to +cover the basics of k-means and k-means++, two terms +should be understood. +Picturing a box with 30 points in it, where 10 are located on the left, 10 +in the middle and 10 on the right side of the box. Adhering to such a +constellation, it is appealing to create 3 groups, one for +each overall position (left, center and right). Each group would +contain 10 points. These groups are called clusters and the +geometrical center of each cluster is called a centroid. +A similar thought experiment is visually depicted in [@Sergei_Visual]. +Considering a dynamical system, the trajectory is retrieved by integrating the \gls{ode} numerically at discrete time steps. +For each time step the obtained point is described with one x-, y- and z-coordinate. +Applying the above-mentioned idea on, e.g., the Lorenz system [@lorenz1963deterministic], defined as the set of equations in @eq-eq_6_Lorenz, then the resulting centroids can be seen in figure @fig-fig_13_Clust . +The full domains of the groups or clusters are color-coded in figure @fig-fig_14_Clust .\newline + +::: {layout-ncol=2} + +![Centroids of the Lorenz system @eq-eq_6_Lorenz with $\beta =28$](../../3_Figs_Pyth/2_Task/10_Clust.svg){#fig-fig_13_Clust} + +![Cluster domains of the Lorenz system @eq-eq_6_Lorenz with $\beta =28$](../../3_Figs_Pyth/2_Task/11_Clust.svg){#fig-fig_14_Clust} +::: + + +Theoretically, +the points which are taken to calculate a center could be assigned +weighting factors. However, this is not done in \gls{cnmc} and therefore only +be outlined as a side note. After being familiar with the concept of +clusters and centroids, the actual workflow of k-means shall be explained. +For initializing +k-means, a number of clusters and an initial guess for the centroid +positions must be provided. Next, the distance between all the data +points and the centroids is calculated. The data points closest to a +centroid are assigned to these respective clusters. In other words, each data point is assigned to that cluster for which +the corresponding centroid exhibits the smallest distance +to the considered data point. +The geometrical mean value for all clusters is subsequently determined for all cluster-associated residents' data points. With the +new centroid positions, the clustering is +performed again. \newline + +Calculating the mean of the clustered +data points (centroids) and performing clustering based on the +distance between each data point and the centroids +is done iteratively. The iterative process stops when +the difference between the prior and current +centroids position is equal to zero or +satisfies a given threshold. Other explanations with pseudo-code and +visualization for better understanding can be found[@Frochte2020] +and [@Sergei_Visual], respectively\newline + + + + +Mathematically k-means objective can be expressed +as an optimization problem with the centroid +position $\boldsymbol{\mu_j}$ as the design variable. That is given in equation +@eq-eq_1_k_means (extracted from [@Frochte2020]), where +$\boldsymbol{\mu_J}$ and $\mathrm{D}^{\prime}_j$ denote the centroid or +mean of the *j*th cluster and the data points +belonging to the *j*th cluster, respectively. +The distance between all the *j*th cluster data points +and its corresponding *j*th centroid is +stated as $\mathrm{dist}(\boldsymbol{x}_j, \boldsymbol{\mu}_j)$. + +$$ +\begin{equation} + \label{eq_1_k_means} + \underset{\boldsymbol{\mu}_j}{\mathrm{argmin}}\sum_{j=1}^k \; \sum_{\boldsymbol{x}_j \in \mathrm{D}^{\prime}_j } + \mathrm{dist}(\boldsymbol{x}_j, \boldsymbol{\mu_j}) +\end{equation} +$$ {#eq-eq_1_k_means} + +Usually, the k-means algorithm is deployed with a Euclidean metric +and equation @eq-eq_1_k_means becomes @eq-eq_2_k_Means_Ly, which +is known as the Lloyd algorithm [@Frochte2020; @Lloyd1982]. The +Lloyd algorithm can be understood as the minimization of the variance. +Thus, it is not necessarily true that k-means is equivalent to reducing +the variance. It is only true when the Euclidean norm is used. +$$ +\begin{equation} + \label{eq_2_k_Means_Ly} + \underset{\boldsymbol{\mu}_j}{\mathrm{argmin}}\sum_{j=1}^k \; \sum_{\boldsymbol{x}_j \in \mathrm{D}^{\prime}_j } + \| \boldsymbol x_j - \boldsymbol{\mu_j} \|^2 +\end{equation} +$$ {#eq-eq_2_k_Means_Ly} + +The clustering algorithm highly depends on the provided +initial centroids positions. Since in most cases, these +are guessed, there is no guarantee of a reliable outcome. +Sergei Vassilvitskii, one of the founders of +k-means++, says in one of his presentations [@Sergei_Black_Art], +finding a good set of initial points would be black art. +Arthur et al. [@Arthur2006] state, +that the speed and simplicity of k-means would be appealing, not +its accuracy. There are many natural examples for which +the algorithm generates arbitrarily bad clusterings [@Arthur2006].\newline + + +An alternative or improved version of k-means is the already +mentioned k-means++, which +only differs in the initialization step. Instead of providing +initial positions for all centroids, just one centroid's +position is supplied. The remaining are calculated based on +maximal distances. In concrete, the distance between all +data points and the existing centroids is computed. The data point +which exhibits the greatest distance is added to the +list of collected centroids. This is done until all $k$ +clusters are generated. A visual depiction of this process +is given by Sergei Vassilvitskii in [@Sergei_Visual]. +Since the outcome of k-means++ is more reliable than +k-means, k-means++ is deployed in \gls{cnmc}.\newline + +After having discussed some basics of k-means++, it shall be +elaborated on how and why the solution of the dynamical system should be +clustered. The solution of any dynamical system returns a trajectory. +If the trajectory repeats itself or happens to come close +to prior trajectories without actually touching them, +characteristic sections can be found. +Each characteristic section in the phase space is +captured by a centroid. The movement from one +centroid to another is supposed to portray the original +trajectory. With a clustering algorithm, these representative +characteristic locations in the phase space are obtained. +Since the clusters shall capture an entire trajectory, it is +evident that the number of clusters is an +essential parameter to choose. Latter fact becomes even +more clear when recalling that a trajectory can be multi-modal or complex.\newline + +In the case of a highly non-linear +trajectory, it is obvious that many clusters are demanded in +order to minimize the loss of the original +trajectories. The projection of the real trajectory +to a cluster-based movement can be compared to +a reduced-order model of the trajectory. In this context, +it is plausible to refer to the centroids as +representative characteristic locations. Furthermore, \gls{cnm} and thus, \gls{cnmc}, exploits graph theory. +Therefore, the centroids can be denoted as nodes or characteristic nodes.\newline + +The remaining part of this section will be devoted exclusively to the application of \gls{cnmc}. First, the leveraged kmeans++ algorithm is from the machine learning *Python* library *Scikit-learn* [@scikit-learn]. +Crucial settings, e.g., the number of clusters $K$, the maximal number of iterations, the tolerance as a convergence criterion and the number of different centroid seeds with which k-means is executed. +The operator can decide if the clustering step shall be performed or skipped. +The path for outputs can be modified and generating plots is also optional. +For the clustering stage, there are 4 types of plots available. +Two types of plots are depicted in figures @fig-fig_13_Clust and @fig-fig_14_Clust . +With the generated HTML plots the same features as described in section [-@sec-sec_2_2_Data_Gen] are available, e .g., receiving more information through pop-up panels and +switching between a dark and white mode. + \newline + +The other two types of charts are not displayed here because they are intended to be studied as HTML graphs where the output can be viewed from multiple angles. +The first type shows the clustered output of one system for two different $\beta$ next to each other. +The centroids are labeled randomly as will be shown in subsection [-@sec-subsec_2_2_1_Parameter_Study]. +Consequently, the centroids representing the immediate neighbors across the two separate $\beta$ have separate labels. +In the second remaining type of HTML graph, the closest centroids across the two different $\beta$ are connected through lines. +Also, in the same way, as it was done for the first step in the data generation an additional HTML file containing all $\vec{\beta }$ charts is generated. +\newline + +It can be concluded that the clustering step is performed by employing *Scikit-learn's* kmeans++ implementation, which is well suited for a great number of points. As usual, all important settings can be controlled with *settings.py*. + +### Parameter Study {#sec-subsec_2_2_1_Parameter_Study} +In this subsection, the effects on the clustering step caused by the parameter *n\_init* shall be named. After that, the random labeling of the centroids is to be highlighted. +With the parameter *n\_init* it is possible to define how often the k-means algorithm will be executed with different centroid seeds [@scikit-learn]. +For a reliable clustering quality *n\_init* should be chosen high. However, the drawback is that with increasing *n\_init* the calculation time increases unacceptably high. Having chosen *n\_init* too high, the clustering part becomes the new bottleneck of the entire \gls{cnmc} pipeline. \newline + +To conduct the parameter study, clustering was performed using the following *n\_init* values: +$\textit{n\_init} = \{100,\, 200, \, 400,\, 800,\, 1000, \, 1200, \, 1500 \}$. +Some results are presented in figures @fig-fig_15 to @fig-fig_20 . +It can be observed that when all the different *n\_init* values are compared, visually no big difference in the placing of the centroids can be perceived. +A graphical examination is sufficient because even with *n\_init* values that differ by only by the number one ($n_{init,1} - n_{init,2} = 1$), the centroid positions are still expected to vary slightly. +Simply put, only deviations on a macroscopic scale, which can be noted visually are searched for. As a conclusion it can be said that $\textit{n\_init} = 100$ and $\textit{n\_init} = 1500$ can be considered as an equally valuable clustering outcome. +Hence, *n\_init* the computational expense can be reduced by deciding on a reasonable small value for *n\_init*.\newline + +The second aim of this subsection was to highlight the fact that the centroids are labeled randomly. For this purpose, the depicted figures @fig-fig_15 to @fig-fig_20 shall be examined. Concretely, any of the referred figures can be compared with the remaining figures to be convinced that the labeling is not obeying any evident rule. + + + + + +::: {layout-ncol=2} + +![Lorenz @eq-eq_6_Lorenz, $\beta =28$, $\text{n\_init}= 100$](../../3_Figs_Pyth/2_Task/0_N_Study/0_K_100.svg){#fig-fig_15} + +![Lorenz @eq-eq_6_Lorenz, $\beta =28$, $\text{n\_init}= 200$](../../3_Figs_Pyth/2_Task/0_N_Study/1_K_200.svg){#fig-fig_16} +::: + +::: {layout-ncol=2} + +![Lorenz @eq-eq_6_Lorenz, $\beta =28$, $\text{n\_init}= 400$](../../3_Figs_Pyth/2_Task/0_N_Study/2_K_400.svg){#fig-fig_17} + +![Lorenz @eq-eq_6_Lorenz, $\beta =28$, $\text{n\_init}= 1000$](../../3_Figs_Pyth/2_Task/0_N_Study/3_K_1000.svg){#fig-fig_18} +::: + +::: {layout-ncol=2} + +![Lorenz @eq-eq_6_Lorenz, $\beta =28$, $\text{n\_init}= 1200$](../../3_Figs_Pyth/2_Task/0_N_Study/4_K_1200.svg){#fig-fig_19} + +![Lorenz @eq-eq_6_Lorenz, $\beta =28$, $\text{n\_init}= 1500$](../../3_Figs_Pyth/2_Task/0_N_Study/5_K_1500.svg){#fig-fig_20} +::: + + + + + diff --git a/Data/1_Writing/2_Task/3_Tracking.qmd b/Data/1_Writing/2_Task/3_Tracking.qmd new file mode 100644 index 0000000000000000000000000000000000000000..7922a5f0fa9dffa727f46556a5b185e1a224a180 --- /dev/null +++ b/Data/1_Writing/2_Task/3_Tracking.qmd @@ -0,0 +1,93 @@ +## Tracking {#sec-sec_2_3_Tracking} +In this section, it is the pursuit to explain the third step, tracking, by initially answering the following questions. +What is tracking, why is it regarded to be complex and why is it important? +In the subsection [-@sec-subsec_2_3_1_Tracking_Workflow] the final workflow will be elaborated . Furthermore, a brief discussion on the advancements in tracking of \gls{cnmc} to *first CNMc* shall be given. +Since the data and workflow of tracking are extensive, for the sake of a better comprehension the steps are visually separated with two horizontal lines in the upcoming subsection. +The lines introduce new tracking subtasks, which are intended to provide clear guidance to orient readers within the workflow. +Note, the tracking results will be presented in subsection [-@sec-sec_3_1_Tracking_Results]. \newline + +To define the term tracking some explanations from subsection [-@sec-subsec_1_1_3_first_CNMc] shall be revisited . +Through the clustering step, each centroid is defined with a label. +The label allocation is performed randomly as showed in subsection [-@sec-subsec_2_2_1_Parameter_Study]. +Thus, matching centroid labels from one model parameter value $\beta_i$ to +another model parameter value $\beta_j$, where $i \neq j$, becomes an issue. +In order first, to understand the term tracking, figure @fig-fig_21 shall be considered. +The centroids of the Lorenz system @eq-eq_6_Lorenz for two $\beta$ values $\beta_i = 31.333$ in green and $\beta_j = 32.167$ in yellow are plotted next to each other. +The objective is to match each centroid of $\beta_i$ with one corresponding centroid of $\beta _j$. +It is important to understand that the matching must be done across the two $\beta$ values $\beta_i$ and $\beta_j$ and not within the same $\beta$.\newline + + + + + +![Unrealistic tracking example for the Lorenz system with $\beta_i=31.333, \, \beta_j=32.167, \, K = 10$](../../3_Figs_Pyth/2_Task/1_Tracking/0_Matching.svg){#fig-fig_21} + +By inspecting the depicted figure closer it can be observed that each green centroid $\beta_i$ has been connected with a corresponding yellow centroid $\beta_j$ with an orange line. +The centroids which are connected through the orange lines shall be referred to as *inter* $\beta$ *connected* centroids. +Determining the *inter* $\beta$ *connected* centroids is the outcome of tracking. Thus, it is matching centroids across different model parameter values $\beta$ based on their corresponding distance to each other. The closer two *inter* $\beta$ centroids are, the more likely they are to be matched. +The norm for measuring distance can be chosen from +one of the 23 possible norms defined in *SciPy* [@2020SciPy-NMeth]. +However, the default metric is the euclidean norm which is defined as equation @eq-eq_16 .\newline + +$$ + \begin{equation} + \label{eq_16} + d(\vec x, \vec y) = \sqrt[]{\sum_{i=1}^n \left(\vec{x}_i - \vec{y}_i\right)^2} + \end{equation}$${#eq-eq_16} + +\vspace{0.2cm} +The orange legend on the right side of figure @fig-fig_21 outlines the tracked results. +In this rare and not the general case, the *inter* $\beta$ labeling is straightforward in two ways. First, the closest centroids from $\beta_i$ to $\beta_j$ have the same label. Generally, this is not the case, since the centroid labeling is assigned randomly. +Second, the *inter* $\beta$ centroid positions can be matched easily visually. +Ambiguous regions, where visually tracking is not possible, are not present. +To help understand what ambiguous regions could look like, figure @fig-fig_22 shall be viewed. It illustrates the outcome of the Lorenz system @eq-eq_6_Lorenz with $\beta_i=39.004,\, \beta_j = 39.987$ and with a number of centroids of $K= 50$. +Overall, the tracking seems to be fairly obvious, but paying attention to the centroids in the center, matching the centroids becomes more difficult. +This is a byproduct of the higher number of centroids $K$. +With more available centroids, more centroids can fill a small area. +As a consequence, multiple possible reasonable matchings are allowed. +Note, that due to spacing limitations, not all tracking results are listed in the right orange legend of figure @fig-fig_22 . +The emergence of such ambiguous regions is the main driver why tracking is considered to be complex.\newline + +![Ambiguous regions in the tracking example for the Lorenz system with $\beta_i=39.004,\, \beta_j = 39.987,\, K= 50$](../../3_Figs_Pyth/2_Task/1_Tracking/2_Ambiguous_Regions.svg){#fig-fig_22} + + +In general, it can be stated that the occurrence of ambiguous regions can be regulated well with the number of centroids $K$. +$K$ itself depends on the underlying dynamical system. +Thus, $K$ should be only as high as required to capture the complexity of the dynamical system. +Going above that generates unnecessary many centroids in the state space. +Each of them increases the risk of enabling ambiguous regions to appear. Consequently, incorrect tracking results can arise.\newline + + +In figure @fig-fig_23 a second example of tracked outcome for the Lorenz system @eq-eq_6_Lorenz with $\beta_i=30.5,\, \beta_j=31.333, \, K = 10$ is given. +Here it can be inspected that the immediate *inter* $\beta$ centroid neighbors do not adhere to the same label. Hence, it is representative of a more general encountered case. The latter is only true when the $K$ is chosen in a reasonable magnitude. The reason why centroids are tracked by employing distance measurements is grounded in the following. +If the clustering parameter *n\_init* is chosen appropriately (see [-@sec-subsec_2_2_1_Parameter_Study]), the position of the centroids are expected to change only slightly when $\beta$ is changed . +In simpler terms, a change in $\beta$ should not move a centroid much, if the clustering step was performed satisfactorily in the first place. + +![Realistic tracking example for the Lorenz system with $\beta_i=30.5$ and $\beta_j=31.333$](../../3_Figs_Pyth/2_Task/1_Tracking/1_Non_Matching.svg){#fig-fig_23} + +The next point is to answer the question, of why tracking is of such importance to \gls{cnmc}. +The main idea of \gls{cnmc} is to approximate dynamical systems and allow prediction trajectories for unseen $\beta_{unseen}$. +The motion, i.e., the trajectory, is replicated by the movement from one centroid to another centroid. Now, if the centroids are labeled wrong, the imitation of the motion is wrong as well. +For instance, the considered dynamical system is only one movement from left to right. +For instance, imagining a dynamical system, where the trajectory is comprised of solely one movement. +Namely, moving from left to right. +Following that, labeling the left centroid $c_l$ to be the right centroid $c_r$, would fully change the direction of the movement, i.e. $(c_l \rightarrow c_r) \neq (c_r \rightarrow c_l)$. +In one sentence, the proper tracking is vital because otherwise \gls{cnmc} cannot provide reliably predicted trajectories. \newline + +### Tracking workflow {#sec-subsec_2_3_1_Tracking_Workflow} +In this subsection, the main objective is to go through the designed tracking workflow. As side remarks, other attempted approaches to tracking and the reason for their failure will be mentioned briefly.\newline + + +To recapitulate on the term tracking, it is a method to match centroids across a set of different model parameter values $\vec{\beta}$ based on their respective distances. One obvious method for handling this task could be \gls{knn}. However, having implemented it, undesired results were encountered. +Namely, one centroid label could be assigned to multiple centroids within the same $\beta$. The demand for tracking, on the hand, is that, e.g., with $K=10$, each of the 10 available labels is found exactly once for one $\beta$. +Therefore, it can be stated that \gls{knn} is not suitable for tracking, as it might not be possible to impose \gls{knn} to comply with the tracking demand.\newline + +The second approach was by applying \gls{dtw}. The conclusion is that DTW's tracking results highly depended on the order in which the inter $\beta$ distances are calculated. Further, it can be stated that DTW needs some initial wrong matching before the properly tracked outcomes are provided. +The initial incorrect matching can be seen as the reason, why DTW is mostly used when very long signals, as in speech recognition, are provided. +In these cases, some mismatching is tolerated. For \gls{cnmc}, where only a few $K$ centroids are available, a mismatch is strongly unwelcome.\newline + +The third method was based on the sequence of the labels. +The idea was that the order of the movement from one centroid to another centroid is known. In other terms, if the current position is at centroid $c_i$ and the next position for centroid $c_{i+1}$ is known. Assuming that the sequences across the $\vec{\beta}$ should be very similar to each other, a majority vote should return the correct tracking results. It can be recorded that this was not the case and the approach was dismissed.\newline + +{{< include 4_Track_Workflow.qmd >}} +{{< include 5_Track_Validity.qmd >}} \ No newline at end of file diff --git a/Data/1_Writing/2_Task/4_Track_Workflow.qmd b/Data/1_Writing/2_Task/4_Track_Workflow.qmd new file mode 100644 index 0000000000000000000000000000000000000000..57d528c0aeaec58c81ed365d1d59d6a97ce0da77 --- /dev/null +++ b/Data/1_Writing/2_Task/4_Track_Workflow.qmd @@ -0,0 +1,117 @@ +After having explained 3 methods, which did not lead to a satisfactory outcome, the data and workflow of the final successful approach shall be presented. +First very concisely, followed by an in-depth account. +For that, figure @fig-fig_24_Tracking_Workflow shall be analyzed. +The initial input is obtained through *settings.py*, where execution, storage and plotting attributes are defined. +For the further sub-steps, it shall be noted that the index big O stands for output of the respective sub-step. +The clustered results from step two, described in section [@sec_2_3_Clustering] are used as input for the so-called ordering step. +The ordered state can be stored and plotted if desired and exploited to calculate a cost matrix $\boldsymbol A (\vec{\beta})$. \newline + + + + + +![General data and workflow overview of the third step, tracking](../../3_Figs_Pyth/2_Task/1_Tracking/3_Track.svg){#fig-fig_24_Tracking_Workflow} + +The tracking demand is applied on $\boldsymbol A (\vec{\beta})$, e.g., each row element must be matched to exactly one column element with the constraint that their additive sum is minimized. +It will return a suggested best path, i.e., the proposed optimized tracking path. +It is possible that the proposed optimized tracking path may not be feasible concerning a linking condition, it undergoes a validity check. +If required the suggested path will be chopped off and replaced such that the linking condition is met. The final path is then imposed to a transition such that the centroid labeling across all available $\vec{\beta}$ matches. +The transformed final paths are designated as the tracked outcome and can be saved and plotted.\newline + +Since the fast description leaves some open questions, the in-depth explanation shall be tackled. Defining *settings.py* is +analogously done to the two previous steps, i.e. data generation [-@sec-sec_2_2_Data_Gen] and clustering [-@sec-sec_2_3_Clustering]. +Therefore, accounts regarding the sub-tasks *settings.py* and the clustered data are not repeated.\newline + + +**1. Ordering $\,(\vec{\boldsymbol{\beta}})$** + +--- + +The ordering of the clustered data can be understood by viewing figures @fig-fig_25_Clust and @fig-fig_26_Ord . +Both depict the clustered Lorenz system @eq-eq_6_Lorenz for $\beta = 30.5$. +The difference between the two figures is that figure @fig-fig_25_Clust shows the clustering as it is obtained from the clustering step. It shall be referred to as the initial state. +Figure @fig-fig_26_Ord on the other shows the ordered state, i.e. the state after applying the ordering sub-step. The labeling of the ordered step represents to some degree the actual movement of the trajectory. +It can be observed that moving from label $1$ up to $6$ in a consecutive manner the resulting trajectory is generating the left ear of the Lorenz system. +Analogously, moving from label $7$ up to $10$ produces the right ear of the Lorenz system. Furthermore, the transition from centroid $6$ to $7$ captures the transition from one ear to the other.\newline + +::: {layout-ncol="2"} +![Initial State - centroids of the Lorenz system @eq-eq_6_Lorenz $\beta =30.5$](../../3_Figs_Pyth/2_Task/1_Tracking/4_Clus_30_5.svg){#fig-fig_25_Clust} + +![Ordered State - centroids of the Lorenz system @eq-eq_6_Lorenz $\beta =30.5$](../../3_Figs_Pyth/2_Task/1_Tracking/5_Ordered_30_5.svg){#fig-fig_26_Ord} +::: + + The way the ordered state is retrieved is as follows. The entire sequence of the motion along the centroids is available. In simpler terms, the first centroid from where the trajectory will start, all the upcoming centroids and the order in which they will be visited are known. + Therefore, the initial centroid can be labeled as $1$, the second as $2$ and so on. + However, it is important to note that with modifying one label of the trajectory sequence, the same label needs to be found in the entire sequence and modified as well. + Otherwise, the ordered-state is true for one turn and a wrong initial-ordered-state mixture is kept for the remaining turns. + Such an approach would also falsify the trajectory. + The labeling in the ordered state provides information about the trajectory. +Further, the original motion of the trajectory is untouched. Labeling the characteristic centroids with different numbers or with Greek letters does not impose any change on the original dynamics. For that to be fully true, the newly introduced labeling must be consistent across the entire sequence. +Although it is obvious, nevertheless \gls{cnmc} performs a sanity check, i.e., it is verified, whether the resulting trajectory in the ordered state is the same as the original trajectory. +Note, that all the same 4 types of plots stated in section [-@sec-sec_2_3_Clustering] are also available for visualizing the ordered state . +\newline + + +**2. Calculating $\boldsymbol A \, (\vec{\boldsymbol{\beta}})$ \& best path $\,(\vec{\boldsymbol{\beta}})$** + +--- + +In the next sub-task the cost or similarity matrix $\boldsymbol A(\vec{\beta})$ is calculated. +First, the assignment problem shall be elaborated. +Let $\beta_1$ and $\beta_2$ be two different model parameter values $\beta_1 \neq \beta_2$ and both shall consist of $K$ centroids. Each centroid is not only associated with a label but described fully with a position. +The goal is to match each centroid from $\beta_1$ to exactly one corresponding centroid from $\beta_2$ such that the overall spatial distance is minimized. +This idea was given as part of the definition of the term tracking itself. +The difference between tracking and the assignment problem is that first, tracking solves the assignment problem multiple times and thus the assignment problem is only a part of tracking. +Second, the tracked results are also feasible and transformed, which will be covered later in this subsection.\newline + +For construction an illustrative cost matrix $\boldsymbol A(\vec{\beta})$, +3 pairwise different $\beta$ values, $\beta_1, \, \beta_2, \beta_3$ with $(\beta_1,\neq \beta_2) \neq \beta_3$ shall be considered. +Again, each $\beta_i$, where $i = \{1,2,3\}$, consists of $K$ centroid positions. +The assignment problem is solved by exploiting *SciPy* [@2020SciPy-NMeth]. +Its solution, e.g., for $\beta_1$ and $\beta_2$ only matches the centroids from the two different $\beta$ such that the overall spatial distance is minimized. +The addition of the spatial distances of $\beta_1$ and $\beta_2$ shall be designated as the cost value $\beta_{i=1,j=2}$. +With this level of understanding, the similarity matrix given in equation @eq-eq_17_Dist_A can be read.\newline +$$ +\begin{equation} + \boldsymbol A_{3\times 3}\,(\vec{\beta}) = + \begin{bmatrix} + \beta_{1,1} & \beta_{1,2} & \beta_{1,3}\\ + \beta_{2,1} &\beta_{2,2} & \beta_{2,3}\\ + \beta_{3,1} & \beta_{3,2} &\beta_{3,3} + \end{bmatrix} + \label{eq_17_Dist_A} + \end{equation} +$$ {#eq-eq_17_Dist_A} + +Considering equation @eq-eq_18_Expl, if the assignment problem is solved for equal $\beta \Rightarrow \beta_i = \beta_j$, the centroid positions overlap exactly. +As a consequence, the distance between all the centroids across the two same $\beta$ is zero. +Further, adding up the zero spatial distances yields a cost of zero $\beta_{i,i} = 0$.\newline +$$ +\begin{equation} + \begin{aligned} + i &= j \\ + \Rightarrow \beta_i &= \beta_j \\ + \Rightarrow \beta_{i,j} &= \beta_{i,i} = 0 + \end{aligned} + \label{eq_18_Expl} +\end{equation} +$$ {#eq-eq_18_Expl} + +The cost matrix $\boldsymbol A\,(\vec{\beta})$ compares each $\beta_i$ with all the remaining $\beta_j$, where $i = \{1, \,2, \cdots, n_{\beta}\}, \; j = \{1, \,2, \cdots, n_{\beta}\}$ and $n_{\beta}$ denotes the number of the pairwise different $\vec{\beta}$. +The outcome of each possible comparison $\beta_i$ with $\beta_j$ is a cost value representing a similarity between $\beta_i$ and $\beta_j$. +Obviously, in the case trivial as described above $\beta_i = \beta_j$, the similarity is maximized and the cost is minimized. +To find the best path, i.e., proposed tracking results, the trivial entries on the diagonal entries must be prohibited. Obeying that the cost matrix $\boldsymbol A\,(\vec{\beta})$ can be reformulated as equation @eq-eq_19 . +Moreover, $\boldsymbol A\,(\vec{\beta})$ is symmetrical, therefore computing one triangular part of the cost matrix is sufficient. +The triangular part can be filled by mirroring along with the diagonal entries $\beta_{i,i}$ as outlined for the lower triangular matrix in equation @eq-eq_19 . +\newline +$$ +\begin{equation} + \boldsymbol A_{3\times 3}\,(\vec{\beta}) = + \begin{bmatrix} + \infty & \beta_{1,2} & \beta_{1,3}\\ + \beta_{2,1} = \beta_{1,2} & \infty & \beta_{2,3}\\ + \beta_{3,1} = \beta_{1,3} & \beta_{3,2} =\beta_{2,3} & \infty\\ + \end{bmatrix} + \label{eq_19} +\end{equation} +$$ {#eq-eq_19} \ No newline at end of file diff --git a/Data/1_Writing/2_Task/5_Track_Validity.qmd b/Data/1_Writing/2_Task/5_Track_Validity.qmd new file mode 100644 index 0000000000000000000000000000000000000000..906c3cdf2f4ed3077088b5a42317c738c05f8d57 --- /dev/null +++ b/Data/1_Writing/2_Task/5_Track_Validity.qmd @@ -0,0 +1,145 @@ +The objective behind exploiting symmetry is to reduce computation time. +Having defined the cost matrix $\boldsymbol A\,(\vec{\beta})$ as given in equation @eq-eq_19, it can be used to again solve the assignment problem. +Its output is denoted as path$_O\,(\vec{\beta })$ in figure @fig-fig_24_Tracking_Workflow .\newline + +**3. Validity check** + +--- + +The sdfvalidity check can also be regarded as a feasibility investigation. +To grasp what the feasibility constraint is table @tbl-tab_1 shall be analyzed .\newline + + + + + + +::: {#tbl-tab_4 layout-ncol=3} + $\boldsymbol{\beta_i}$ $\boldsymbol{\beta_j}$ + ----------------------- ---------------------------- + 1 2 + 2 3 + 3 4 + 4 5 + 5 6 + 6 7 + + : *Direct feasible* {#tbl-tab_1} + + $\boldsymbol{\beta_i}$ $\boldsymbol{\beta_j}$ + ----------------------- ---------------------------- + 1 2 + 2 3 + 3 6 + 4 7 + 5 4 + 6 5 + + : feasible {#tbl-tab_2} + + $\boldsymbol{\beta_i}$ $\boldsymbol{\beta_j}$ + ----------------------- ---------------------------- + 1 2 + 2 1 + 3 5 + 4 6 + 5 7 + 6 3 + + : infeasible {#tbl-tab_3} + + Examples for feasible and infeasible best tracking paths +::: + + + + + + + +It can be observed that in total the 7 model parameter values $(\vec{\beta}, \, n_{\beta}=7)$ were chosen. +The overall goal is to provide one centroid label and get its corresponding centroid positions across all the 7 model parameter values $\vec{\beta }$. +Therefore, a *feasible linking path*, which allows the linking of all centroids of all $\beta_i$ to all the other $\beta_{\vec{j}}$ centroids, is required. +The latter description shall be elaborated step-wise in the following. +For instance, if the first $\beta_i = 1$, a linking to the remaining $\beta_{\vec{j}} = \{2, \, 3, \, 4, \, 5, \, 6, \, 7 \}$ is mandatory. +The first item of table @tbl-tab_1 outlines that the centroids from $\beta_i = 1$ are tracked with the centroids $\beta_j=2$ . +In other words, a clear relationship between the centroids across $\beta_i = 1$ and $\beta_j=2$ is established. Leveraging this relationship, the proper tracked centroid position across the two $\beta = 1$ and $\beta= 2$, are returned.\newline + + +Because the centroid labels of $\beta_i = 1$ are used as the reference to match the centroid labels of $\beta_j=2$, the *known linked path* can be stated as $L_{known}= \{1,\, 2\}$. The next model parameter value $\beta_j = 3$ and it is tracked with $\beta_i =2$. +Since $\beta_i =2$ is already incorporated in the *known linked path*, the *known linking path* can be extended to $L_{known}= \{1,\, 2, \, 3\}$. The next model parameter value $\beta_j = 4$ and its corresponding tracked counterpart is $\beta_i =3$. +Again, $\beta_i =3$ is found in the *known linked path*, therefore the *known linking path* can be extended to $L_{known}= \{1,\, 2, \, 3, \, 4\}$. The next model parameter value $\beta_j = 5$ and its corresponding tracked $\beta_i =4$ and so this procedure can be performed until the last $\beta_j = 7$. +Having completed the scheme, the *known linking path* is of full rank, i.e. with $n_{\beta}= 7$ all the 7 pairwise different model parameter values $\vec{\beta}$ are captured in the *known linking path* $L_{known}$. +The information gained through a full ranked $L_{known, full}$ is that all centroids of all $\beta_i$ are linked to all the other $\beta_{\vec{j}}$ centroids. +\newline + +After having introduced the full rank $L_{known, full}$, the more straightforward definition for *feasible linking path* can be stated as follows. +A *feasible linking path* is given when $L_{known}$ has full rank $L_{known, full}$. *Direct feasible* cases as shown in table @tbl-tab_1 are one way of *feasible linking paths* . Another, more general feasible case is provided in table @tbl-tab_2 . Here, up to $\beta_i = 2$ and $\beta_j = 3$ the scheme of the *direct feasible* linking path is followed. +However, with $\beta_i = 4$ and $\beta_j = 7$ the obstacle that $\beta_j = 7$ is not present in the current $L_{known}= \{1,\, 2,\, 3,\, 6\}$, occurs. +This issue can be circumvented by viewing $\beta_i = 6$ and $\beta_j = 5$. +Since $\beta_i = 6$ is in the current state of $L_{known}= \{1,\, 2,\, 3,\, 6\}$, $L_{known}$ can be extended with $\beta_j = 5$, i.e., $L_{known}= \{1,\, 2,\, 3,\, 5, \, 6\}$. +Note, having acquired the relationship between $\beta_i$ to $\beta_j$ is the same as knowing the relationship between $\beta_j$ to $\beta_i$. +Applying the newly added linking perspective, it can be seen that table @tbl-tab_2 also demonstrates a fulled ranked $L_{known, full}$ or a *feasible linking path* .\newline + +In table @tbl-tab_3 an example for an incomplete linking path or an *infeasible linking path* is provided, where $L_{known}$ has no full rank . +The aim of the sub-task, validity, is to determine, whether the proposed optimized tracking path is feasible by extracting information about the rank of the final $L_{known}$. +Internally in \gls{cnmc}, this is achieved through logical queries utilizing mainly if statements. +One major advantage which was not mentioned when the examples above were worked out is the following. $\beta_{i,ref} = 1$ is not necessarily the best choice for being the reference. +The reference $\beta_{i,ref}$ is chosen such that it has the overall highest similarity or least cost to all the other $(n_{\beta} -1)$ available $\vec{\beta}$. +Hence, a *feasible linking path* with a lower sum of cost sum is generated.\newline + +This feature of a flexible reference is only providing better *feasible linking paths*, when the proposed optimized tracking path is infeasible, which in general is the case. Therefore, in most cases, it is advantageous to leverage the flexible reference. +One of the outputs of \gls{cnmc} is the percentage cost savings that could be achieved with the flexible approach. In others, by what percentage could the costs be decreased when the flexible approach is compared with the rigid approach. +In the rigid approach, $\beta_{i,ref} = 1$ is chosen as the reference. +Further, in the rigid approach, the $\vec{\beta}$ are linked in increasing order, i.e. $\beta_1$ with $\beta_1$, $\beta_2$ with $\beta_2$, $\beta_3$ with $\beta_4$ and so on. Exploiting the flexible approach yields cost savings of around $20\%$ to $50\%$ An example of coping with a flexible reference is provided in the description of the following sub-step. +\newline + + +**4. Truncate, final path** + +--- + +If the proposed optimized tracking path is feasible (*feasible linking path*), i.e. $L_{known}$ has full rank $L_{known, full}$, the truncation can be skipped. +Consequently, the final path is the same as the proposed optimized tracking path. +However, as mentioned, in general, this is not the expected case. +Therefore, an example with an incomplete $L_{known}$ shall be portrayed to explain the workflow with active truncation.\newline + + +First, the final incomplete $L_{known}$ will be used as the starting point. +It will be filled until full rank is reached. +Allowing a flexible reference $\beta_{i,ref}$ the incomplete *known linked path* could be, e.g., $L_{known} = \{3, \, 4, \, 5\}$. +To get full rank, the remaining $L_{missing} = \{1, \, 2, \, 6, \, 7\}$ are inferred through the following concept. +The cost $\beta_{i,j}$ between all $L_{known}$ and $L_{missing}$ are known +through the cost matrix $\boldsymbol A\,(\vec{\beta })$. +The one $\beta_j$ entry from $L_{missing}$ which has the highest similarity or lowest cost $\beta_{i,j}$ to the one entry $\beta_j$ of the $L_{known}$, is removed from $L_{missing}$ and added to $L_{known}$. +Now, the same procedure can be applied to the modified $L_{known}$ and $L_{missing}$ until $L_{missing}$ is empty and $L_{known}$ has reached full rank. +The inferred $L_{known, full}$ is then used as the final path and sent to the next sub-task.\newline + + +**5. Transform** + +--- + +Once the final path is determined, it is known which $\beta_i$ is linked to which $\beta_j$. +For all the $\beta_{i},\, \beta_j$ matches in the final path, the linear sum assignment problem is solved again. +Two illustrative solutions are provided in section [-@sec-sec_3_1_Tracking_Results]. +For further explanation, table @tbl-tab_2 shall be revisited . +The first $\beta_{i},\, \beta_j$ link is defined as $\beta_i = 1$ and $\beta_j = 2$. Moreover, for this scenario, it is assumed that $\beta_i = \beta_{ref} = 1$. Therefore, the $\beta_{i} = 1,\, \beta_j= 2$ is denoted as a direct match. +In simpler terms, a direct pairwise $\beta_{i},\, \beta_j$ relation, is obtained when $\beta_i$ or $\beta_j$ is directly traced back to the reference. +For a pairwise direct $\beta_{i},\, \beta_j$ link the +transformation, i.e., relabeling without changing the dynamics of the system, as explained for the ordering sub-step, is applied directly and only once.\newline + + +Now, considering the next $\beta_{i},\, \beta_j$ match, i.e., $\beta_i = 2$ and $\beta_j = 3$. +Linking the centroids from $\beta_j = 3$ to $\beta_i = 2$ directly would have no connection to the reference $\beta_{ref} = 1$. +Therefore, the solution to its linear sum assignment problem must experience the same transformations as $\beta_i = 2$ did. +In this case it is only the transformation caused by the $(\beta_i = 1,\,\beta_j = 2)$ match. +The idea behind the transformation stays the same, however, if no direct relation is seen, respective multiple transformations must be performed. +Once the final path has undergone all required transformations, the output is the desired tracked state. +The output can be stored and plotted if desired. +Some types of plots, which can be generated, will be shown in the section +[-@sec-sec_3_1_Tracking_Results].\newline + +Finally, in short, the difference between *first CNMc* and this \gls{cnmc} version shall be mentioned. +The proposed tracking algorithm is neither restricted to any dimension nor to a specific dynamical system. Thus, two major limitations of *first CNMc* could be removed in the current \gls{cnmc} version. +Also, the flexible approach yields a better feasible linking path. diff --git a/Data/1_Writing/2_Task/6_Modeling.qmd b/Data/1_Writing/2_Task/6_Modeling.qmd new file mode 100644 index 0000000000000000000000000000000000000000..1d3fc30925a234e30c50e3ee3b67d57fdc3ecfae --- /dev/null +++ b/Data/1_Writing/2_Task/6_Modeling.qmd @@ -0,0 +1,142 @@ +## Modeling {#sec-sec_2_4_Modeling} +In this section, the fourth main step of \gls{cnmc}, i.e., modeling, is elaborated. +The data and workflow is described in figure @fig-fig_42 . +It comprises two main sub-tasks, which are modeling the \glsfirst{cpevol} and modeling the transition properties tensors $\boldsymbol Q / \boldsymbol T$. +The settings are as usually defined in *settings.py* and the extracted attributes are distributed to the sub-tasks. +Modeling the \gls{cpevol} and the $\boldsymbol Q/ \boldsymbol T$ tensors can be executed separately from each other. +If the output of one of the two modeling sub-steps is at hand, \gls{cnmc} is not forced to recalculate both modeling sub-steps. +Since the tracked states are used as training data to run the modeling they are prerequisites for both modeling parts. +The modeling of the centroid position shall be explained in the upcoming subsection [-@sec-subsec_2_4_1_CPE], followed by the explanation of the transition properties in subsection [-@sec-subsec_2_4_2_QT]. +A comparison between this \gls{cnmc} and the *first CNMc* version is provided at the end of the respective subsections. +The results of both modeling steps can be found in section +[-@sec-sec_3_2_MOD_CPE] and [-@sec-sec_3_3_SVD_NMF] + +![Data and workflow of the fourth step: Modeling](../../3_Figs_Pyth/2_Task/2_Modeling/0_Modeling.svg){#fig-fig_42} + +### Modeling the centroid position evolution {#sec-subsec_2_4_1_CPE} +In this subsection, the modeling of the \gls{cpevol} is described. +The objective is to find a surrogate model, which returns all $K$ centroid positions for an unseen $\beta_{unseen}$. +The training data for this are the tracked centroids from the previous step, which is described in section [-@sec-sec_2_3_Tracking]. +To explain the modeling of the *CPE*, figure @fig-fig_43 shall be inspected. +The model parameter values which shall be used to train the model $\vec{\beta_{tr}}$ are used for generating a so-called candidate library matrix $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$. The candidate library matrix $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is obtained making use of a function of *pySindy* [@Silva2020; @Kaptanoglu2022; @Brunton2016]. +In [@Brunton2016] the term $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is explained well. However, in brief terms, it allows the construction of a matrix, which comprises the output of defined functions. +These functions could be, e.g., a linear, polynomial, trigonometrical or any other non-linear function. Made-up functions that include logical conditions can also be applied. \newline + +![Data and workflow of modeling the \glsfirst{cpevol}](../../3_Figs_Pyth/2_Task/2_Modeling/1_Pos_Mod.svg){#fig-fig_43} + + +Since, the goal is not to explain, how to operate *pySindy* [@Brunton2016], the curious reader is referred to the *pySindy* very extensive online documentation and [@Silva2020; @Kaptanoglu2022]. +Nevertheless, to understand $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ equation @eq-eq_20 shall be considered. +In this example, 3 different functions, denoted as $f_i$ in the first row, are employed. +The remaining rows are the output for the chosen $f_i$. +Furthermore, $n$ is the number of samples or the size of $\vec{\beta_{tr} }$, i.e., $n_{\beta,tr}$ and $m$ denotes the number of the features, i.e., the number of the functions $f_i$. \newline +$$ +\begin{equation} + \boldsymbol{\Theta_{exampl(n \times m )}}(\,\vec{\beta_{tr}}) = + \renewcommand\arraycolsep{10pt} + \begin{bmatrix} + f_1 = \beta & f_2 = \beta^2 & f_2 = cos(\beta)^2 - exp\,\left(\dfrac{\beta}{-0.856} \right) \\[1.5em] + 1 & 1^2 & cos(1)^2 - exp\,\left(\dfrac{1}{-0.856} \right) \\[1.5em] + 2 & 2^2 & cos(2)^2 - exp\,\left(\dfrac{2}{-0.856} \right) \\[1.5em] + \end{bmatrix} + \label{eq_20} +\end{equation}$$ {#eq-eq_20} + +The actual candidate library matrix $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ incorporates a quadratic polynomial, the inverse $\frac{1}{\beta}$, the exponential $exp(\beta)$ and 3 frequencies of cos and sin, i.e., $cos(\vec{\beta}_{freq}), \ sin(\vec{\beta}_{freq})$, where $\vec{\beta}_{freq} = [1, \, 2,\, 3]$. +There are much more complex $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ available in \gls{cnmc}, which can be selected if desired. +Nonetheless, the default $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is chosen as described above. +Once $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ is the generated, the system of equations @eq-eq_21 is solved. +Note, this is very similar to solving the well-known $\boldsymbol A \, \vec{x} = \vec{y}$ system of equations. +The difference is that the vectors $\vec{x}, \, \vec{y}$ can be vectors in the case of @eq-eq_21 as well, but in general, they are the matrices $\boldsymbol{X} ,\, \boldsymbol Y$, respectively. The solution to the matrix $\boldsymbol{X}$ is the desired output. +It contains the coefficients which assign importance to the used functions $f_i$. +The matrix $\boldsymbol Y$ contains the targets or the known output for the chosen functions $f_i$. +Comparing $\boldsymbol A$ and $\boldsymbol{\Theta}\,(\vec{\beta_{tr}})$ mathematically, no difference exists.\newline + +$$ +\begin{equation} + \boldsymbol{\Theta}\,(\vec{\beta_{tr}}) \: \boldsymbol X = \boldsymbol Y + \label{eq_21} +\end{equation}$$ {#eq-eq_21} + +With staying in the *pySindy* environment, the system of equations @eq-eq_21 is solved by means of the optimizer *SR3*, which is implemented in *pySindy*. +Details and some advantages of the *SR3* optimizer can be found in [@SR3]. Nevertheless, two main points shall be stated. +It is highly unlikely that the $\boldsymbol{\Theta}\,(\vec{\beta_{tr}}),\: \boldsymbol X,\, \boldsymbol Y$ is going to lead to a well-posed problem, i.e., the number of equations are equal to the number of unknowns and having a unique solution. +In most cases the configuration will be ill-posed, i.e., the number of equations is not equal to the number of unknowns. +In the latter case, two scenarios are possible, the configuration could result in an over-or under-determined system of equations.\newline + +For an over-determined system, there are more equations than unknowns. +Thus, generally, no outcome that satisfies equation @eq-eq_21 exists. +In order to find a representation that comes close to a solution, an error metric is defined as the objective function for optimization. +There are a lot of error metrics or norms, however, some commonly used [@Brunton2019] are given in equations @eq-eq_22 to @eq-eq_24, where $f(x_k)$ are true values of a function and $y_k$ are their corresponding predictions. +The under-determined system has more unknown variables than equations, thus infinitely many solutions exist. +To find one prominent solution, again, optimization is performed. +Note, for practical application penalization or regularization parameter are exploited as additional constraints within the definition of the optimization problem. +For more about over- and under-determined systems as well as for deploying optimization for finding a satisfying result the reader is referred to [@Brunton2019].\newline +$$ +\begin{equation} + E_{\infty} = \max_{1}} diff --git a/Data/1_Writing/2_Task/7_QT.qmd b/Data/1_Writing/2_Task/7_QT.qmd new file mode 100644 index 0000000000000000000000000000000000000000..9e377368cebba3c2dae5317c4998e5714b036dc3 --- /dev/null +++ b/Data/1_Writing/2_Task/7_QT.qmd @@ -0,0 +1,146 @@ +### Modeling Q/T {#sec-subsec_2_4_2_QT} +In this subsection, the goal is to explain how the transition properties are modeled. +The transition properties are the two tensors $\boldsymbol Q$ and $\boldsymbol T$, which consist of transition probability from one centroid to another and the corresponding transition time, respectively. +For further details about the transition properties, the reader is referred to section [-@sec-sec_1_1_2_CNM]. +Modeling $\boldsymbol Q / \boldsymbol T$ means to find surrogate models that capture the trained behavior and can predict the tensors for unseen model parameter values $\boldsymbol{\tilde{Q}}(\vec{\beta}_{unseeen}) ,\, \boldsymbol{\tilde{T}}(\vec{\beta}_{unseeen})$. +To go through the data and workflow figure @fig-fig_44 shall be considered.\newline + +![Data and workflow of $\boldsymbol Q / \boldsymbol T$ modeling](../../3_Figs_Pyth/2_Task/2_Modeling/2_QT_Mod.svg){#fig-fig_44} + +First, the tracked state data is loaded and adapted in the sense that CNM's data format is received. After that \gls{cnm} can be executed on the tracked state data. +The outcome of \gls{cnm} are the transition property tensors for all the provided model parameter values $\boldsymbol Q(\vec{\beta}) ,\, \boldsymbol T(\vec{\beta})$. +However, \gls{cnm} does not return tensors as *NumPy* [@harris2020array] arrays, but as *Python* dictionaries. +Thus, the next step is to transform the dictionaries to *NumPy* arrays. +$\boldsymbol Q / \boldsymbol T$ are highly sparse, i.e., $85 \% - 99\%$ of the entries can be zero. +The $99\%$ case is seen with a great model order, which for the Lorenz system @eq-eq_6_Lorenz was found to be $L \approx 7$. +Furthermore, with an increasing $L$, saving the dictionaries as *NumPy* arrays becomes inefficient and at some $L$ impossible. With $L>7$ the storage cost goes above multiple hundreds of gigabytes of RAM. +Therefore, the dictionaries are converted into sparse matrices. \newline + +Thereafter, the sparse matrices are reshaped or stacked into a single matrix, such that a modal decomposition method can be applied. +Followed by training a regression model for each of the mode coefficients. +The idea is that the regression models receive a $\beta_{unseen}$ and returns all the corresponding predicted modes. +The regression models are saved and if desired plots can be enabled via *settings.py*. \newline + +In this version of \gls{cnmc} two modal decomposition methods are available. +Namely, the \glsfirst{svd} and the \glsfirst{nmf}. +The difference between both is given in [@Lee1999]. +The \gls{svd} is stated in equation @eq-eq_26, where the variables are designated as the input matrix $\boldsymbol A$ which shall be decomposed, the left singular matrix $\boldsymbol U$, the diagonal singular matrix $\boldsymbol{\Sigma}$ and the right singular matrix $\boldsymbol V^T$. +The singular matrix $\boldsymbol{\Sigma}$ is mostly ordered in descending order such that the highest singular value is the first diagonal element. +The intuition behind the singular values is that they assign importance to the modes in the left and right singular matrices $\boldsymbol U$ and $\boldsymbol {V^T}$, respectively. +$$ +\begin{equation} + \boldsymbol A = \boldsymbol U \, \boldsymbol{\Sigma} \, \boldsymbol {V^T} + \label{eq_26} +\end{equation}$$ {#eq-eq_26} + + +The big advantage of the \gls{svd} is observed when the so-called economical \gls{svd} is calculated. +The economical \gls{svd} removes all zero singular values, thus the dimensionality of all 3 matrices can be reduced. +However, from the economical \gls{svd} as a basis, all the output with all $r$ modes is available. +There is no need to perform any additional \gls{svd} to get the output for $r$ modes, but rather the economical \gls{svd} is truncated with the number $r$ for this purpose. +\gls{nmf}, given in equation @eq-eq_5_NMF, on the other hand, has the disadvantage that there is no such thing as economical NMF. +For every change in the number of modes $r$, a full \gls{nmf} must be recalculated.\newline + +$$ +\begin{equation} + \boldsymbol {A_{i \mu}} \approx \boldsymbol A^{\prime}_{i \mu} = (\boldsymbol W \boldsymbol H)_{i \mu} = \sum_{a = 1}^{r} + \boldsymbol W_{ia} \boldsymbol H_{a \mu} + \tag{} +\end{equation} +$$ + + +The issue with \gls{nmf} is that the solution is obtained through an iterative optimization process. +The number of iterations can be in the order of millions and higher to meet the convergence criteria. +Because the optimal $r_{opt}$ depends on the dynamical system, there is no general rule for acquiring it directly. +Consequently, \gls{nmf} must be run with multiple different $r$ values to find $r_{opt}$. +Apart from the mentioned parameter study, one single \gls{nmf} execution was found to be more computationally expensive than \gls{svd}. +In [@Max2021] \gls{nmf} was found to be the performance bottleneck of *first CNMc*, which became more evident when $L$ was increased. +In subsection +[-@sec-subsec_3_3_1_SVD_Speed] +a comparison between \gls{nmf} and \gls{svd} regarding computational time is given.\newline + + +Nevertheless, if the user wants to apply \gls{nmf}, only one attribute in *settings.py* needs to be modified. +Because of that and the overall modular structure of \gls{cnmc}, implementation of any other decomposition method should be straightforward. +In \gls{cnmc} the study for finding $r_{opt}$ is automated and thus testing \gls{cnmc} on various dynamical systems with \gls{nmf} should be manageable. +The benefit of applying \gls{nmf} is that the entries of the output matrices $\boldsymbol W_{ia},\, \boldsymbol H_{a \mu}$ are all non-zero. +This enables interpreting the $\boldsymbol W_{ia}$ matrix since both $\boldsymbol Q / \boldsymbol T$ tensors cannot contain negative entries, i.e., no negative probability and no negative transition time.\newline + +Depending on whether \gls{nmf} or \gls{svd} is chosen, $r_{opt}$ is found through a parameter study or based on $99 \%$ of the information content, respectively. +The $99 \%$ condition is met when $r_{opt}$ modes add up to $99 \%$ of the total sum of the modes. In \gls{svd} $r_{opt}$ is automatically detected and does not require any new \gls{svd} execution. A comparison between \gls{svd} and \gls{nmf} regarding prediction quality is given in +section +[-@sec-subsec_3_3_2_SVD_Quality]. +After the decomposition has been performed, modes that capture characteristic information are available. +If the modes can be predicted for any $\beta_{unseen}$, the predicted transition properties $\boldsymbol{\tilde{Q}}(\vec{\beta}_{unseeen}) ,\, \boldsymbol{\tilde{T}}(\vec{\beta}_{unseeen})$ are obtained. +To comply with this \gls{cnmc} has 3 built-in methods. +Namely, **R**andom **F**orest (RF), AdaBoost, and Gaussian Process.\newline + +First, \gls{rf} is based on decision trees, but additionally deploys +a technique called bootstrap aggregation or bagging. +Bagging creates multiple sets from the original dataset, which are equivalent in size. +However, some features are duplicated in the new datasets, whereas others are +neglected entirely. This allows \gls{rf} to approximate very complex functions +and reduce the risk of overfitting, which is encountered commonly +with regular decision trees. +Moreover, it is such a powerful tool +that, e.g., Kilian Weinberger, a well-known Professor for machine learning +at Cornell University, considers \gls{rf} in one of his lectures, to be +one of the most powerful regression techniques that the state of the art has to offer. +Furthermore, \gls{rf} proved to be able to approximate the training data +acceptable as shown in [@Max2021]. +However, as mentioned in subsection [-@sec-subsec_1_1_3_first_CNMc], it faced difficulties to approximate spike-like curves . +Therefore, it was desired to test alternatives as well.\newline + +These two alternatives were chosen to be AdaBoost, and Gaussian Process. +Both methods are well recognized and used in many machine learning applications. +Thus, instead of motivating them and giving theoretical explanations, the reader is referred to [@Adaboost], [@Rasmussen2004; @bishop2006pattern] for AdaBoost and Gaussian Process, respectively. +As for the implementation, all 3 methods are invoked through *Scikit-learn* [@scikit-learn]. +The weak learner for AdaBoost is *Scikit-learn's* default decision tree regressor. +The kernel utilized for the Gaussian Process is the **R**adial **B**asis **F**unction (RBF). A comparison of these 3 methods in terms of prediction capabilities is provided in section [-@sec-subsec_3_3_2_SVD_Quality].\newline + +Since the predicted $\boldsymbol{\tilde{Q}}(\vec{\beta}_{unseeen}) ,\, \boldsymbol{\tilde{T}}(\vec{\beta}_{unseeen})$ are based on regression techniques, their output will have some deviation to the original $\boldsymbol{Q}(\vec{\beta}_{unseeen}) ,\, \boldsymbol{T}(\vec{\beta}_{unseeen})$. +Due to that, the physical requirements given in equations @eq-eq_31_Q_T_prediction may be violated. \newline + +$$ +\begin{equation} + \begin{aligned} + 0 \leq \, \boldsymbol Q \leq 1\\ + \boldsymbol T \geq 0 \\ + \boldsymbol Q \,(\boldsymbol T > 0) > 0 \\ + \boldsymbol T(\boldsymbol Q = 0) = 0 + \end{aligned} + \label{eq_31_Q_T_prediction} +\end{equation} $$ {#eq-eq_31_Q_T_prediction} + +To manually enforce these physical constraints, the rules defined in equation @eq-eq_32_Rule are applied. +The smallest allowed probability is defined to be 0, thus negative probabilities are set to zero. +The biggest probability is 1, hence, overshoot values are set to 1. +Also, negative transition times would result in moving backward, therefore, they are set to zero. +Furthermore, it is important to verify that a probability is zero if its corresponding transition time is less than or equals zero. +In general, the deviation is in the order of $\mathcal{O}(1 \mathrm{e}{-2})$, such that the modification following equation @eq-eq_32_Rule can be considered reasonable. + \newline + + +$$ +\begin{equation} + \begin{aligned} + & \boldsymbol Q < 0 := 0 \\ + & \boldsymbol Q > 1 := 1 \\ + & \boldsymbol T < 0 := 0\\ + & \boldsymbol Q \, (\boldsymbol T \leq 0) := 0 + \end{aligned} + \label{eq_32_Rule} +\end{equation}$$ {#eq-eq_32_Rule} + +In conclusion, it can be said that modeling $\boldsymbol Q / \boldsymbol T$ \gls{cnmc} is equipped with two different modal decomposition methods, \gls{svd} and NMF. +To choose between them one attribute in *settings.py* needs to be modified. +The application of \gls{nmf} is automated with the integrated parameter study. +For the mode surrogate models, 3 different regression methods are available. +Selecting between them is kept convenient, i.e. by editing one property in *settings.py*. + + + + + + diff --git a/Data/1_Writing/3_Task/0_Results.qmd b/Data/1_Writing/3_Task/0_Results.qmd new file mode 100644 index 0000000000000000000000000000000000000000..f567cbebf2b3353f97d320e99aa28bd6cc56434c --- /dev/null +++ b/Data/1_Writing/3_Task/0_Results.qmd @@ -0,0 +1,32 @@ +# Results {#sec-ch_3} +In this chapter, the results achieved with \gls{cnmc} shall be presented and assessed. +First, in section [-@sec-sec_3_1_Tracking_Results], the tracking algorithm is evaluated by showing the outcome for 3 different dynamical model configurations . +Second, in section [-@sec-sec_3_2_MOD_CPE], statements about the performance of modeling the \glsfirst{cpevol} are made . +They are supported with some representative outputs. +Third, in section [-@sec-sec_3_3_SVD_NMF] the two decomposition methods are compared in terms of computational time and prediction quality in subsection [-@sec-subsec_3_3_1_SVD_Speed] and [-@sec-subsec_3_3_2_SVD_Quality], respectively . +Fourth, it has been mentioned that 3 different regressors for representing the $\boldsymbol Q / \boldsymbol T$ tensor are available. +Their rating is given in section [-@sec-sec_3_4_SVD_Regression]. +Finally, the \gls{cnmc} predicted trajectories for different models shall be displayed and evaluated in section [-@sec-sec_3_5_Pred].\newline + + +For assessing the performance of \gls{cnmc} some dynamical model with a specific configuration will be used many times. +In order not to repeat them too often, they will be defined in the following.\newline + + **Model configurations** + +--- + + The first model configuration is denoted as *SLS*, which stands for \textsl{S}mall **L**orenz \textsl{S}ystem . + It is the Lorenz system described with the sets of equations @eq-eq_6_Lorenz and the number of centroids is $K=10$. + Furthermore, the model was trained with $\vec{\beta }_{tr} = [\beta_0 = 28 ; \, \beta_{end} = 33], \, n_{\beta, tr} = 7$, where the training model parameter values $\vec{\beta}_{tr}$ are chosen to start from $\beta_0 = 28$ and end at $\beta_{end} = 33$, where the total number of linearly distributed model parameter values is $n_{\beta, tr} = 7$.\newline + + The second model is referred to as *LS20*. + It is also a Lorenz system @eq-eq_6_Lorenz, but with a higher number of centroids $K=20$ and the following model configuration: $\vec{\beta }_{tr} = [\, \beta_0 = 24.75 ; \, \beta_{end} = 53.75 \,], \, n_{\beta, tr} = 60$.\newline + +The third model is designated as *FW15*. It is based on the *Four Wing* set of equations @eq-eq_10_4_Wing and an illustrative trajectory is given in figure @fig-fig_37 . +The number of centroids is $K=15$ and it is constructed with the following configuration $\vec{\beta }_{tr} = [\, \beta_0 = 8 ; \, \beta_{end} = 11 \,], \, n_{\beta, tr} = 13$.\newline + +![*FW15* @eq-eq_10_4_Wing trajectory for $\beta = 8$](../../3_Figs_Pyth/3_Task/1_Tracking/10_1_Traj_8.svg){#fig-fig_37} + + + diff --git a/Data/1_Writing/3_Task/1_Track_Results.qmd b/Data/1_Writing/3_Task/1_Track_Results.qmd new file mode 100644 index 0000000000000000000000000000000000000000..d1a6ee75c5a642e79e22225e6a076aa09dcd9f66 --- /dev/null +++ b/Data/1_Writing/3_Task/1_Track_Results.qmd @@ -0,0 +1,138 @@ +## Tracking results {#sec-sec_3_1_Tracking_Results} +In this section, some outputs of tracking data and workflow, described in subsection [-@sec-subsec_2_3_1_Tracking_Workflow], shall be presented . +After that, in short, the current \gls{cnmc} shall be compared to *first CNMc* \newline + +First, two illustrative solutions for the assignment problem from the final path, as explained in subsection [-@sec-subsec_2_3_1_Tracking_Workflow], are provided in figures @fig-fig_27 and @fig-fig_28 . +The axes are denoted as $c_k$ and $c_p$ and represent the labels of the $\beta_j$ and $\beta_i$ centroids, respectively. +The color bar on the right side informs about the euclidean distance, which is equivalent to the cost. +Above the solution of the assignment problem in figures @fig-fig_27 and @fig-fig_28, the corresponding $\beta_i$ and $\beta_j$ centroid labels are given in the respective two figures, i.e., @fig-fig_27_1, @fig-fig_27_2 and @fig-fig_28_1, @fig-fig_28_2 . + + +::: {#fig-fig_27_All layout="[ [1,1], [1] ]"} +![Ordered state, $\beta_i =32.167$ ](../../3_Figs_Pyth/3_Task/1_Tracking/16_lb_32.167.svg){#fig-fig_27_1} + +![Ordered state, $\beta_j = 33$](../../3_Figs_Pyth/3_Task/1_Tracking/17_lb_33.000.svg){#fig-fig_27_2} + +![Solution to the assignment problem](../../3_Figs_Pyth/3_Task/1_Tracking/1_LSA.svg){#fig-fig_27} + +Illustrative solution for the assignment problem, $\beta_i =32.167,\, \beta_j = 33 ,\, K =10$ +::: + + + +The centroid $c_{k=1} (\beta_j = 33)$ has its lowest cost to +$c_{p=3} (\beta_i = 32.167)$. In this case, this is also the solution for the assignment problem, outlined by the blue cross. +However, the solution to the linear sum assignment problem is not always to choose the minimal cost for one *inter* $\beta$ match. +It could be that one centroid in $\beta_i$ is to found the closest centroid to multiple centroids in $\beta_j$. +Matching only based on the minimal distance does not include the restriction that exactly one centroid from $\beta_i$ must be matched with exactly one centroid from $\beta_j$. +The latter demand is incorporated in the solution of the linear sum assignment problem. \newline + +::: {#fig-fig_28_All layout="[ [1,1], [1] ]"} +![Ordered state, $\beta_i =31.333$ ](../../3_Figs_Pyth/3_Task/1_Tracking/18_lb_31.333.svg){#fig-fig_28_1} + +![Ordered state, $\beta_j = 32.167$](../../3_Figs_Pyth/3_Task/1_Tracking/16_lb_32.167.svg){#fig-fig_28_2} + +![Solution to the assignment problem](../../3_Figs_Pyth/3_Task/1_Tracking/2_LSA.svg){#fig-fig_28} + +Illustrative solution for the assignment problem, $\beta_i =31.333,\, \beta_j = 32.167, \,K =10$ +::: + +Comparing figure @fig-fig_27 with the second example in figure @fig-fig_28, it can be observed that the chosen *inter* $\beta$ centroid matches can have very different shapes. +This can be seen by looking at the blue crosses. +Furthermore, paying attention to the remaining possible *inter* $\beta$ centroid matches, it can be stated that there is a clear trend, i.e., the next best *inter* $\beta$ centroid match has a very high increase in its cost. +For example, considering the following *inter* $\beta$ match. With $c_{k=1} (\beta_j = 32.167)$ and $c_{p=1} (\beta_i = 31.333)$, the minimal cost is around $cost_{min} \approx 0.84$. The next best option jumps to $cost_{second} = 13.823$. These jumps can be seen for each *inter* $\beta$ match in figure in both depicted figures @fig-fig_27 and @fig-fig_28 . +The key essence behind this finding is that for the chosen number of centroids $K$ of this dynamical model (Lorenz system @eq-eq_6_Lorenz), no ambiguous regions, as explained at the beginning of this chapter, occur.\newline + +Next, the tracking result of 3 different systems shall be viewed. +The tracked state for *SLS* is depicted in figures @fig-fig_29 . +In each of the figures, one centroid is colored blue that denotes +the first centroid in the sequence of the underlying trajectory. +Within the depicted range $\vec{\beta}$, it can be observed, that each label across the $\vec{\beta}$ is labeled as expected. +No single ambiguity or mislabeling can be seen. +In other words, it highlights the high performance of the tracking algorithm. + + + + + + +::: {#fig-fig_29 layout="[ [1,1], [1,1] ]"} +![$\beta =28$ ](../../3_Figs_Pyth/3_Task/1_Tracking/3_lb_28.000.svg) + +![ $\beta = 28.833$](../../3_Figs_Pyth/3_Task/1_Tracking/4_lb_28.833.svg) + +![$\beta = 31.333$](../../3_Figs_Pyth/3_Task/1_Tracking/15_lb_31.333.svg) + +![ $\beta = 33$](../../3_Figs_Pyth/3_Task/1_Tracking/5_lb_33.000.svg) + +Tracked states for *SLS*, $K = 10,\, \vec{\beta} = [\, 28, \, 28.333, \, 31.333, \, 31.14, \, 33 \, ]$ +::: + + + + + +The second model is the *LS20*, i.e, $K= 20,\, \vec{\beta }_{tr} = [\, \beta_0 = 24.75 ; \, \beta_{end} = 53.75 \,], \, n_{\beta,tr} = 60$. +The outcome is depicted in figures @fig-fig_32 . +It can be noted that $\beta = 24.75$ and $\beta = 30.648$ exhibit very similar results to the *SLS* model. +The same is true for intermediate $\beta$ values, i.e., $24.75 \leq \beta \lessapprox 30.648$. +However, with $\beta \gtrapprox 30.64$ as depicted for $\beta = 31.14$, one centroid, i.e. the centroid with the label $20$ in the right ear appears unexpectedly. +With this, a drastic change to the centroid placing network is imposed. +Looking at the upcoming $\beta$ these erratic changes are found again.\newline + + + + + +::: {#fig-fig_32 layout="[ [1,1], [1,1], [1,1] ]"} +![$\beta =24.75$ ](../../3_Figs_Pyth/3_Task/1_Tracking/6_lb_24.750.svg) + +![ $\beta = 28.682$](../../3_Figs_Pyth/3_Task/1_Tracking/7_lb_28.682.svg) + +![$\beta = 30.648$](../../3_Figs_Pyth/3_Task/1_Tracking/7_lb_30.648.svg) + +![ $\beta = 31.140$](../../3_Figs_Pyth/3_Task/1_Tracking/8_lb_31.140.svg) + +![$\beta = 42.936$](../../3_Figs_Pyth/3_Task/1_Tracking/9_lb_42.936.svg) + +![ $\beta = 53.750$](../../3_Figs_Pyth/3_Task/1_Tracking/10_lb_53.750.svg) + +Tracked states for *LS20*, $K = 20,\, \vec{\beta} = [\, 24.75, \, 28.682, \, 30.648, \, 31.14, \, 31.14,$ $42.936, \, 53.75 \, ]$ +::: + + + + +Generating a tracked state with these discontinuous cluster network deformations even manually can be considered hard to impossible because tracking demands some kind of similarity. +If two cluster networks differ too much from each other, then necessarily at least tracked label is going to be unsatisfying. +Hence, it would be wrong to conclude that the tracking algorithm is not performing well, but rather the clustering algorithm itself or the range of $\vec{\beta}$ must be adapted. If the range of $\vec{\beta}$ is shortened, multiple models can be trained and tracked.\newline + +\FloatBarrier +The third model is referred to as *FW15*. +Figures in @fig-fig_38 show the tracked state for 4 different $\beta$ values. It can be observed that for $\beta = 11$ the centroid placing has changed notably to the other $\beta$ values, thus tracking the centroids in the center for $\beta = 11$ becomes unfavorable. +Overall, however, the tracked state results advocate the performance of the tracking algorithm.\newline + + + + + +::: {#fig-fig_38 layout="[ [1,1], [1,1] ]"} +![$\beta =8$ ](../../3_Figs_Pyth/3_Task/1_Tracking/11_lb_8.000.svg) + +![ $\beta = 8.25$](../../3_Figs_Pyth/3_Task/1_Tracking/12_lb_8.250.svg) + +![$\beta = 10$](../../3_Figs_Pyth/3_Task/1_Tracking/13_lb_10.000.svg) + +![ $\beta = 11$](../../3_Figs_Pyth/3_Task/1_Tracking/14_lb_11.000.svg) + +Tracked states for *FW15*, $K = 15,\, \vec{\beta} = [\, 8, \, 8.25, \, 10, \, 11 \, ]$ +::: + + + + + +It can be concluded that the tracking algorithm performs remarkably well. However, when the cluster placing network is abruptly changed from one $\beta$ to the other $\beta$, the tracking outcome gets worse and generates sudden cluster network deformation. +As a possible solution, splitting up the $\vec{\beta}_{tr}$ range into smaller $\vec{\beta}_{tr,i}$ ranges, can be named. This is not only seen for the *LS20*, but also for other dynamical systems as illustratively shown with the center area of the *FW15* system for $\beta= 11$. +\FloatBarrier + diff --git a/Data/1_Writing/3_Task/2_Mod_CPE.qmd b/Data/1_Writing/3_Task/2_Mod_CPE.qmd new file mode 100644 index 0000000000000000000000000000000000000000..1c7f1b8b0be7f0eebde2ad9c10b83192b2c324db --- /dev/null +++ b/Data/1_Writing/3_Task/2_Mod_CPE.qmd @@ -0,0 +1,164 @@ +## CPE modeling results {#sec-sec_3_2_MOD_CPE} +In this section, results to the \gls{cpevol} modeling explained in subsection [-@sec-subsec_2_4_1_CPE], shall be presented and assessed . +First, a selection of equations, which defines the \gls{cpevol} are given for one model configuration. +Next, representative plots of the \gls{cpevol} for different models are analyzed. +Finally, the predicted centroid position is compared with the actual clustered centroid position.\newline + + +Modeling the *CPE* returns, among other results, analytical equations. +These equations describe the behavior of the centroid positions across the range $\vec{\beta}$ and can also be used for making predictions for $\vec{\beta}_{unseen}$. +The model configuration for which they are be presented is *SLS*, i.e. Lorenz system @eq-eq_6_Lorenz, $K= 10,\, \vec{\beta }_{tr} = [\, \beta_0 = 28 ; \, \beta_{end} =33 \,], \, n_{\beta, tr} = 7$. +The analytical \gls{cpevol} expressions are listed in @eq-eq_27 to @eq-eq_29 for the centroids $[\,1,\, 2,\,7\,]$, respectively. +Recalling that the behavior across the 3 different axes (x, y, z) can vary greatly, each axis has its own regression model $(\tilde x,\, \tilde y,\, \tilde z)$. +Thus, for each label, 3 different analytical expressions are provided. \newline + + +::: {layout="[[1],[1]]"} +$$ +\begin{equation} + \begin{aligned} + \tilde x &= -0.1661 \, cos(3 \, \beta) \\ + \tilde y &= -0.1375 \, cos(3 \, \beta) \\ + \tilde z &= 0.8326 \, \beta + \end{aligned} +\end{equation}$$ {#eq-eq_27} + +![*SLS*, *CPE* model for centroid: 1](../../3_Figs_Pyth/3_Task/2_Mod_CPE/1_lb_1.svg){#fig-fig_45} +::: + + +::: {layout="[[1], [1]]"} +$$ +\begin{equation} + \begin{aligned} + \tilde x &= 0.1543 \, sin(3 \, \beta) + 0.2446 \, cos(3 \, \beta) \\ + \tilde y &= 0.2638 \, sin(3 \, \beta) + 0.4225 \, cos(3 \, \beta) \\ + \tilde z &= 0.4877 \, \beta +\end{aligned} +\label{eq_28} +\end{equation}$$ {#eq-eq_28} + +![*SLS*, *CPE* model for centroid: 2](../../3_Figs_Pyth/3_Task/2_Mod_CPE/2_lb_2.svg){#fig-fig_46} +::: + + +::: {layout="[[1], [1]]"} +$$ + \begin{equation} + \begin{aligned} + \tilde x &= -0.1866 \, \beta + 0.133 \, sin(3 \, \beta) \\ + & \quad + 0.1411 \, cos(3 \, \beta) \\ + \tilde y &= -0.3 \, \beta \\ + \tilde z &= -1.0483+ 0.6358 \,\beta + \end{aligned} + \label{eq_29} + \end{equation} $$ {#eq-eq_29} + +![*SLS*, *CPE* model for centroid: 7](../../3_Figs_Pyth/3_Task/2_Mod_CPE/3_lb_7.svg){#fig-fig_47} +::: + + +Right to the equations the corresponding plots are depicted in figures @fig-fig_45 to @fig-fig_47 . +Here, the blue and green curves indicate true and modeled CPE, respectively. +Each of the figures supports the choice of allowing each axis to be modeled separately. +The z-axis appears to undergo less alteration or to be more linear than the x- and y-axis. +If a model is supposed to be valid for all 3 axes, a more complex model, i.e., a higher of terms, is required. +Although more flexible models fit training data increasingly better, they tend to overfit. +In other words, complex models capture the trained data well but could exhibit oscillations for $\vec{\beta}_{unseen}$. +The latter is even more severe when the model is employed for extrapolation. +The difference between interpolation and extrapolation is that for extrapolation the prediction is made with $\beta_{unseen}$ which are not in the range of the trained $\vec{\beta}_{tr}$. +Therefore, less complexity is preferred.\newline + +Next, the performance of predicting the centroid for $\vec{\beta}_{unseen}$ is elaborated. +For this purpose, figures @fig-fig_48 to @fig-fig_52 shall be examined. +All figures depict the original centroid positions, which are obtained through the clustering step in green and the predicted centroid positions in blue. +On closer inspection, orange lines connecting the true and predicted centroid positions can be identified. +Note, that they will only be visible if the deviation between the true and predicted state is high enough. +Figures @fig-fig_48_0 an @fig-fig_48_1 show the outcome for *SLS* with $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$, respectively. +Visually, both predictions are very close to the true centroid positions. +Because of this high performance in showed in figures @fig-fig_49_0 and @fig-fig_49_1 two examples for extrapolation are given for $\beta_{unseen} = 26.5$ and $\beta_{unseen} = 37$, respectively. +For the first one, the outcome is very applicable. +In contrast, $\beta_{unseen} = 37$ returns some deviations which are notably high. +\newline + + + + +:::{#fig-fig_48 layout="[[1,1]]"} +![$\beta_{unseen} = 28.5$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/4_lb_c_28.5.svg){#fig-fig_48_0} + +![$\beta_{unseen} = 32.5$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/5_lb_c_32.5.svg){#fig-fig_48_1} + +*SLS*, original vs. modeled centroid position, $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$ +::: + + +:::{#fig-fig_49 layout="[[1,1]]"} + +![$\beta_{unseen} = 26.5$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/22_lb_c_26.5.svg){#fig-fig_49_0} + + +![$\beta_{unseen} = 37$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/23_lb_c_37.0.svg){#fig-fig_49_1} + +*SLS*, original vs. modeled centroid position, extrapolated $\beta_{unseen} = 26.5$ and $\beta_{unseen} = 37$ +::: + + + +:::{#fig-fig_50 layout="[[1,1]]"} + +![$\beta_{unseen} = 31.75$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/6_lb_c_31.75.svg) + +![$\beta_{unseen} = 51.75$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/7_lb_c_51.75.svg) + +*LS20*, original vs. modeled centroid position, $\beta_{unseen} = 31.75$ and $\beta_{unseen} = 51.75$ + +::: + + +:::{#fig-fig_52 layout="[[1,1]]"} + +![$\beta_{unseen} = 8.7$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/8_lb_c_8.7.svg) + +![$\beta_{unseen} = 10.1$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/9_lb_c_10.1.svg) + +*FW15*, original vs. modeled centroid position, $\beta_{unseen} = 8.7$ and $\beta_{unseen} = 10.1$ +::: + +Quantitative measurements are performed by applying the Mean Square Error (MSE) following equation @eq-eq_30_MSE . +The variables are denoted as the number of samples $n$, which in this case is equal to the number of centroids $n = K$, the known $f(x_k)$ and the predicted $y_k$ centroid position.\newline +$$ +\begin{equation} + MSE = \frac{1}{n} \, \sum_{i=1}^n \left(f(x_k) - y_k\right)^2 + \label{eq_30_MSE} +\end{equation} +$$ {#eq-eq_30_MSE} + +The measured MSE errors for all displayed results are summarized in table @tbl-tab_5_MSE . +The MSE for results of $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$ in figures @fig-fig_48 is $0.622$ and $0.677$, respectively. +Consequently, the performance of \gls{cnmc} is also confirmed quantitatively. +Figures in @fig-fig_50 illustrate the outcome for *LS20* for $\beta_{unseen} = 31.75$ and $\beta_{unseen} = 51.75$. +In section [-@sec-sec_3_1_Tracking_Results] it is explained that for *LS20* cluster network deformations appear . +Nevertheless, the outcome visually and quantitatively endorses the *CPE* modeling capabilities. +Figures in @fig-fig_52 depict the outcome for *FW15* for $\beta_{unseen} = 8.7$ and $\beta_{unseen} = 10.1$. +A few orange lines are visible, however overall the outcome is very satisfactory.\newline + + + **Figure** | **Model** | $\boldsymbol{\beta_{unseen}}$ | **MSE** +-------------|-----------|-------------------------------|--------- + @fig-fig_48 | *SLS* | $28.5$ | $0.622$ + @fig-fig_48 | *SLS* | $32.5$ | $0.677$ + @fig-fig_49 | *SLS* | $26.5$ | $1.193$ + @fig-fig_49 | *SLS* | $37$ | $5.452$ + @fig-fig_50 | *LS20* | $31.75$ | $1.857$ + @fig-fig_50 | *LS20* | $51.75$ | $2.536$ + @fig-fig_52 | *FW15* | $8.7$ | $1.617$ + @fig-fig_52 | *FW15* | $10.1$ | $1.5$ + +: MSE for different Model configurations and $\vec{\beta}_{unseen}$ {#tbl-tab_5_MSE} + + + +It can be concluded that the *CPE* modeling performance is satisfying. +In the case of a few cluster network deformations, \gls{cnmc} is capable of providing acceptable results. +However, as shown with *SLS*, if the model's training range $\vec{\beta}_{tr}$ and the number of $K$ was selected appropriately, the MSE can be minimized. diff --git a/Data/1_Writing/3_Task/3_SVD_NMF.qmd b/Data/1_Writing/3_Task/3_SVD_NMF.qmd new file mode 100644 index 0000000000000000000000000000000000000000..b105fc8d1df15d135d3fe84c9e2593bc6ae1ff7a --- /dev/null +++ b/Data/1_Writing/3_Task/3_SVD_NMF.qmd @@ -0,0 +1,200 @@ +## Transition properties modeling {#sec-sec_3_3_SVD_NMF} +In the subsection [-@sec-subsec_2_4_2_QT], it has been explained that \gls{cnmc} has two built-in modal decomposition methods for the $\boldsymbol Q / \boldsymbol T$ tensors, i .e., \gls{svd} and NMF. +There are two main concerns for which performance measurements are needed. +First, in subsection [-@sec-subsec_3_3_1_SVD_Speed], the computational costs of both methods are examined . +Then in subsection [-@sec-subsec_3_3_2_SVD_Quality], the \gls{svd} and \gls{nmf} prediction quality will be presented and assessed . + +### Computational cost {#sec-subsec_3_3_1_SVD_Speed} +In this subsection, the goal is to evaluate the computational cost of the two decomposition methods implemented in \gls{cnmc}. +\gls{nmf} was already used in *first CNMc* and it was found to be one of the most computational expensive tasks. +With an increasing model order $L$ it became the most computational task by far, which is acknowledged by [@Max2021]. +The run time was one of the main reasons why \gls{svd} should be implemented in \gls{cnmc}. +To see if \gls{svd} can reduce run time, both methods shall be compared.\newline + +First, it is important to mention that \gls{nmf} is executed for one single predefined mode number $r$. +It is possible that a selected $r$ is not optimal, since $r$ is a parameter that depends not only on the chosen dynamical system but also on other parameters, e.g., the number of centroids $K$ and training model parameter values $n_{\beta, tr}$, as well as \gls{nmf} specific attributes. +These are the maximal number of iterations in which the optimizer can converge and tolerance convergence. +However, to find an appropriate $r$, \gls{nmf} can be executed multiple times with different values for $r$. +Comparing the execution time of \gls{nmf} with multiple invocations against \gls{svd} can be regarded as an unbalanced comparison. +Even though for a new dynamical system and its configuration the optimal $r_{opt}$ for \gls{nmf} is most likely to be found over a parameter study, for the upcoming comparison, the run time of one single \gls{nmf} solution is measured.\newline + +The model for this purpose is *SLS*. Since *SLS* is trained with the output of 7 pairwise different model parameter values $n_{\beta,tr} = 7$, the maximal rank in \gls{svd} is limited to 7. +Nevertheless, allowing \gls{nmf} to find a solution $r$ was defined as $r=9$, the maximal number of iterations in which the optimizer can converge is 10 million and the convergence tolerance is $1\mathrm{e}{-6}$. +Both methods can work with sparse matrices. +However, the \gls{svd} solver is specifically designed to solve sparse matrices. +The measured times for decomposing the $\boldsymbol Q / \boldsymbol T$ tensors for 7 different $L$ are listed in table @tbl-tab_6_NMF_SVD . +It can be observed that for \gls{svd} up to $L=6$, the computational time for both $\boldsymbol Q / \boldsymbol T$ tensors is less than 1 second. +Such an outcome is efficient for science and industry applications. +With $L=7$ a big jump in time for both $\boldsymbol Q / \boldsymbol T$ is found. +However, even after this increase, the decomposition took around 5 seconds, which still is acceptable.\newline + + + + **$L$** | **SVD** $\boldsymbol Q$ | **NMF** $\boldsymbol Q$ |**SVD** $\boldsymbol T$ | **NMF** $\boldsymbol T$ +---------|-------------------------|-------------------------|--------------------------|-------------------------| + $1$ | $2 \,\mathrm{e}{-4}$ s | $64$ s | $8 \, \mathrm{e}{-05}$ s | $3 \, \mathrm{e}{-2}$ s + $2$ | $1 \, \mathrm{e}{-4}$ s | $8 \, \mathrm{e}{-2}$ s | $1 \, \mathrm{e}{-4}$ s | $1$ h + $3$ | $2 \, \mathrm{e}{-4}$ s | $10$ s | $2 \, \mathrm{e}{-4}$ s | $0.1$ s + $4$ | $4 \, \mathrm{e}{-3}$ s | $20$ s | $7 \, \mathrm{e}{-3}$ s | $1.5$ h + $5$ | $6 \, \mathrm{e}{-2}$ s | $> 3$ h | $3 \, \mathrm{e}{-2}$ s | - + $6$ | $0.4$ s | - | $0.4$ s | - + $7$ | $5.17$ s | - | $4.52$ s | - + +: Execution time for *SLS* of \gls{nmf} and \gls{svd} for different $L$ {#tbl-tab_6_NMF_SVD} + + +Calculating $\boldsymbol Q$ with \gls{nmf} for $L=1$ already takes 64 seconds. +This is more than \gls{svd} demanded for $L=7$. +The $\boldsymbol T$ tensor on the other is much faster and is below a second. +However, as soon as $L=2$ is selected, $\boldsymbol T$ takes 1 full hour, $L=4$ more than 1 hour. +The table for \gls{nmf} is not filled, since running $\boldsymbol Q$ for $L=5$ was taking more than 3 hours, but still did not finish. +Therefore, the time measurement was aborted. +This behavior was expected since it was already mentioned in [@Max2021]. +Overall, the execution time for \gls{nmf} is not following a trend, e.g., computing $\boldsymbol T$ for $L=3$ is faster than for $L=2$ and $\boldsymbol Q$ for $L=4$ is faster than for $L=1$. +In other words, there is no obvious rule, on whether even a small $L$ could lead to hours of run time.\newline + +It can be concluded that \gls{svd} is much faster than \gls{nmf} and it also shows a clear trend, i.e. the computation time is expected to increase with $L$. +\gls{nmf} on the other hand first requires an appropriate mode number $r$, which most likely demands a parameter study. +However, even for a single \gls{nmf} solution, it can take hours. +With increasing $L$ the amount of run time is generally expected to increase, even though no clear rule can be defined. +Furthermore, it needs to be highlighted that \gls{nmf} was tested on a small model, where $n_{\beta,tr} = 7$. The author of this thesis experienced an additional increase in run time when $n_{\beta,tr}$ is selected higher. +Also, executing \gls{nmf} on multiple dynamical systems or model configurations might become infeasible in terms of time. +Finally, with the implementation of \gls{svd}, the bottleneck in modeling $\boldsymbol Q / \boldsymbol T$ could be eliminated. + + +### Prediction quality {#sec-subsec_3_3_2_SVD_Quality} +In this subsection, the quality of the \gls{svd} and \gls{nmf} $\boldsymbol Q / \boldsymbol T$ predictions are evaluated. +The used model configuration for this aim is *SLS*. +First, only the $\boldsymbol Q$ output with \gls{svd} followed by \gls{nmf} shall be analyzed and compared. Then, the same is done for the $\boldsymbol T$ output.\newline + + +In order to see how many modes $r$ were chosen for \gls{svd} the two figures @fig-fig_54 and @fig-fig_55 are shown. +It can be derived that with $r = 4$, $99 \%$ of the information content could be captured. The presented results are obtained for $\boldsymbol Q$ and $L =1$.\newline + +::: {layout-ncol="2"} +![*SLS*, \gls{svd}, cumulative energy of $\boldsymbol Q$ for $L=1$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/10_lb_Q_Cumlative_E.svg){#fig-fig_54} + +![*SLS*, \gls{svd}, singular values of $\boldsymbol Q$ for $L=1$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/11_lb_Q_Sing_Val.svg){#fig-fig_55} + +::: + +Figures @fig-fig_56 to @fig-fig_58 depict the original $\boldsymbol{Q}(\beta_{unseen} = 28.5)$, which is generated with CNM, the \gls{cnmc} predicted $\boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5)$ and their deviation $| \boldsymbol{Q}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5) |$, respectively. +In the graphs, the probabilities to move from centroid $c_p$ to $c_j$ are indicated. +Contrasting figure @fig-fig_56 and @fig-fig_57 exhibits barely noticeable differences. +For highlighting present deviations, the direct comparison between the \gls{cnm} and \gls{cnmc} predicted $\boldsymbol Q$ tensors is given in figure @fig-fig_58 . +It can be observed that the highest value is $max( \boldsymbol{Q}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5) |) \approx 0.0697 \approx 0.07$. +Note that all predicted $\boldsymbol Q$ and $\boldsymbol T$ tensors are obtained with \gls{rf} as the regression model. +\newline + +:::{#fig-fig_58_Full layout="[[1,1], [1]]"} + +![Original $\boldsymbol{Q}(\beta_{unseen} = 28.5)$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/12_lb_0_Q_Orig_28.5.svg){#fig-fig_56} + +![\gls{cnmc} predicted $\boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5)$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/13_lb_2_Q_Aprox_28.5.svg){#fig-fig_57} + +![Deviation $| \boldsymbol{Q}(\beta_{unseen}) - \boldsymbol{\tilde{Q}}(\beta_{unseen}) |$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/14_lb_4_Delta_Q_28.5.svg){#fig-fig_58} + + +*SLS*, \gls{svd}, original $\boldsymbol{Q}(\beta_{unseen} = 28.5)$ , \gls{cnmc} predicted $\boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5)$ and deviation $| \boldsymbol{Q}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5) |$ for $L=1$ +::: + +The same procedure shall now be performed with NMF. +The results are depicted in figures @fig-fig_59 and @fig-fig_60 . +Note that the original \gls{cnm} $\boldsymbol{Q}(\beta_{unseen} = 28.5)$ does not change, thus figure @fig-fig_56 can be reused. By exploiting +figure @fig-fig_61, it can be observed that the highest deviation for the \gls{nmf} version is $max( \boldsymbol{Q}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5) |) \approx 0.0699 \approx 0.07$. +The maximal error of \gls{nmf} $(\approx 0.0699)$ is slightly higher than that of \gls{svd} $(\approx 0.0697)$. +Nevertheless, both methods have a very similar maximal error and seeing visually other significant differences is hard. +\newline + +:::{layout="[[1,1]]"} + +![\gls{cnmc} predicted $\boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5)$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/15_lb_2_Q_Aprox_28.5.svg){#fig-fig_59} + +![Deviation $| \boldsymbol{Q}(\beta_{unseen} ) - \boldsymbol{\tilde{Q}}(\beta_{unseen} ) |$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/16_lb_4_Delta_Q_28.5.svg){#fig-fig_60} + +*SLS*, \gls{nmf}, \gls{cnmc} predicted $\boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5)$ and deviation $| \boldsymbol{Q}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{Q}}(\beta_{unseen} = 28.5) |$ for $L=1$ + +::: + +In order to have a quantifiable error value, the Mean absolute error (MAE) following equation @eq-eq_23 is leveraged. +The MAE errors for \gls{svd} and \gls{nmf} are $MAE_{SVD} = 0.002 580 628$ and $MAE_{NMF} = 0.002 490 048$, respectively. +\gls{nmf} is slightly better than \gls{svd} with $MAE_{SVD} - MAE_{NMF} \approx 1 \mathrm{e}{-4}$, which can be considered to be negligibly small. +Furthermore, it must be stated that \gls{svd} was only allowed to use $r_{SVD} = 4$ modes, due to the $99 \%$ energy demand, whereas \gls{nmf} used $r_{NMF} = 9$ modes. +Given that \gls{svd} is stable in computational time, i.e., it is not assumed that for low $L$, the computational cost scales up to hours, \gls{svd} is the clear winner for this single comparison. \newline + + +For the sake of completeness, the procedure shall be conducted once as well for the $\boldsymbol T$ tensor. +For this purpose figures @fig-fig_61 to @fig-fig_65 shall be considered. +It can be inspected that the maximal errors for \gls{svd} and \gls{nmf} are $max( \boldsymbol{T}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5) |) \approx 0.126$ and + $max( \boldsymbol{T}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5) | ) \approx 0.115$, respectively. +The MAE errors are, $MAE_{SVD} = 0.002 275 379$ and $MAE_{NMF} = 0.001 635 510$. +\gls{nmf} is again slightly better than \gls{svd} with $MAE_{SVD} - MAE_{NMF} \approx 6 \mathrm{e}{-4}$, which is a deviation of $\approx 0.06 \%$ and might also be considered as negligibly small. \newline + + + +:::{layout="[[1,1], [1]]"} + +![Original \gls{cnm} $\boldsymbol{T}(\beta_{unseen} = 28.5)$ ](../../3_Figs_Pyth/3_Task/2_Mod_CPE/17_lb_1_T_Orig_28.5.svg){#fig-fig_61} + +![\gls{cnmc} predicted $\boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5)$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/18_lb_3_T_Aprox_28.5.svg){#fig-fig_62} + +![Deviation $| \boldsymbol{T}(\beta_{unseen}) - \boldsymbol{\tilde{T}}(\beta_{unseen}) |$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/19_lb_5_Delta_T_28.5.svg){#fig-fig_63} + + +*SLS*, \gls{svd}, original $\boldsymbol{T}(\beta_{unseen} = 28.5)$, predicted $\boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5)$ and deviation $| \boldsymbol{T}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5) |$ for $L=1$ +::: + + +::: {layout="[[1,1]]"} + +![\gls{cnmc} predicted $\boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5)$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/20_lb_3_T_Aprox_28.5.svg){#fig-fig_64} + +![Deviation $| \boldsymbol{T}(\beta_{unseen}) - \boldsymbol{\tilde{T}}(\beta_{unseen}) |$](../../3_Figs_Pyth/3_Task/2_Mod_CPE/21_lb_5_Delta_T_28.5.svg){#fig-fig_65} + +*SLS*, \gls{nmf}, \gls{cnmc} predicted $\boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5)$ and deviation $| \boldsymbol{T}(\beta_{unseen} = 28.5) - \boldsymbol{\tilde{T}}(\beta_{unseen} = 28.5) |$ for $L=1$ +::: + + +Additional MAE errors for different $L$ and $\beta_{unseen}= 28.5,\, \beta_{unseen}= 32.5$ are collected in table @tbl-tab_7_NMF_SVD_QT . +First, it can be outlined that regardless of the chosen method, \gls{svd} or \gls{nmf}, all encountered MAE errors are very small. +Consequently, it can be recorded that \gls{cnmc} convinces with an overall well approximation of the $\boldsymbol Q / \boldsymbol T$ tensors. +Second, comparing \gls{svd} and \gls{nmf} through their respective MAE errors, it can be inspected that the deviation of both is mostly in the order of $\mathcal{O} \approx 1 \mathrm{e}{-2}$. +It is a difference in $\approx 0.1 \%$ and can again be considered to be insignificantly small.\newline + +Despite this, \gls{nmf} required the additional change given in equation @eq-eq_33, which did not apply to \gls{svd}. +The transition time entries at the indexes where the probability is positive should be positive as well. Yet, this is not always the case when \gls{nmf} is executed. To correct that, these probability entries are manually set to zero. +This rule was also actively applied to the results presented above. +Still, the outcome is very satisfactory, because the modeling errors are found to be small. +\newline + + + **$L$** | $\beta_{unseen}$ | $\boldsymbol{MAE}_{SVD, \boldsymbol Q}$ | $\boldsymbol{MAE}_{NMF, \boldsymbol Q}$ | $\boldsymbol{MAE}_{SVD, \boldsymbol T}$| $\boldsymbol{MAE}_{NMF, \boldsymbol T}$ +---------|----------------- |---------------------------------------------- | --------------------------------------------- | -------------------------------------------- | ---------------------------------------------- + $1$ | $28.5$ | $0.002580628$ | $0.002490048$ | $0.002275379$| $0.001635510$ + $1$ | $32.5$| $0.003544923$| $0.003650155$ | $0.011152145$ | $0.010690052$ + $2$ | $28.5$| $0.001823848$| $0.001776276$ | $0.000409955$| $0.000371242$ + $2$ | $32.5$| $0.006381635$| $0.006053059$ | $0.002417142$| $0.002368680$ + $3$ | $28.5$ | $0.000369228$ | $0.000356817$ | $0.000067680$ | $0.000062964$ + $3$ | $32.5$ | $0.001462458$ | $0.001432738$ | $0.000346298$ | $0.000343520$ + $4$ | $28.5$ | $0.000055002$| $0.000052682$| $0.000009420$| $0.000008790$ + $4$ | $32.5$ | $0.000215147$| $0.000212329$| $0.000044509$| $0.000044225$ + +: *SLS*, Mean absolute error for different $L$ and two $\beta_{unseen}$ {#tbl-tab_7_NMF_SVD_QT} + + +$$ +\begin{equation} + \begin{aligned} + TGZ := \boldsymbol T ( \boldsymbol Q > 0) \leq 0 \\ + \boldsymbol Q ( TGZ) := 0 + \end{aligned} + \label{eq_33} +\end{equation} +$$ {#eq-eq_33} + +In summary, both methods \gls{nmf} and \gls{svd} provide a good approximation of the $\boldsymbol Q / \boldsymbol T$ tensors. +The deviation between the prediction quality of both is negligibly small. +However, since \gls{svd} is much faster than \gls{nmf} and does not require an additional parameter study, the recommended decomposition method is \gls{svd}. +Furthermore, it shall be highlighted that \gls{svd} used only $r = 4$ modes for the $\boldsymbol Q$ case, whereas for \gls{nmf} $r=9$ were used. +Finally, as a side remark, all the displayed figures and the MAE errors are generated and calculated with \gls{cnm}'s default implemented methods. +\FloatBarrier \ No newline at end of file diff --git a/Data/1_Writing/3_Task/4_SVD_Regression.qmd b/Data/1_Writing/3_Task/4_SVD_Regression.qmd new file mode 100644 index 0000000000000000000000000000000000000000..17d6c59ab317095210c86776d18eac1bca0c2721 --- /dev/null +++ b/Data/1_Writing/3_Task/4_SVD_Regression.qmd @@ -0,0 +1,108 @@ +## Transition property regression models {#sec-sec_3_4_SVD_Regression} +In this section, the results of the 3 different regression methods, \glsfirst{rf}, AdaBoost and Gaussian Process (GP) are compared. +All the 3 regressors are implemented in \gls{cnmc} and can be selected via *settings.py*. +The utilized model configuration is *SLS* and the decomposition method is \gls{svd}.\newline + + +First, it shall be noted that \gls{cnmc} also offers the possibility to apply *pySindy*. +However, *pySindy* has struggled to represent the training data in the first place, thus it cannot be employed for predicting $\beta_{unseen}$. +The latter does not mean that *pySindy* is not applicable for the construction of a surrogate model for the decomposed $\boldsymbol Q / \boldsymbol T$ modes, but rather that the selected candidate library was not powerful enough. +Nevertheless, only results for the 3 initially mentioned regressors will be discussed.\newline + +In figures @fig-fig_66 to @fig-fig_71 the true (dashed) and the approximation (solid) of the first 4 $\boldsymbol Q / \boldsymbol T$ modes are shown for the methods RF, AdaBoost and GP, respectively. +To begin with, it can be noted that the mode behavior over different model parameter values $mod(\beta)$ is discontinuous, i.e., it exhibits spikes or sudden changes. +In figures @fig-fig_66 and @fig-fig_67 it can be observed that \gls{rf} reflects the actual behavior of $mod(\beta)$ quite well. +However, it encounters difficulties in capturing some spikes. +AdaBoost on the other hand proves in figures @fig-fig_68 and @fig-fig_69 to represent the spikes better. +Overall, AdaBoost outperforms \gls{rf} in mirroring training data. \newline + + +:::{layout="[[1,1]]"} + +![$\boldsymbol Q$](../../3_Figs_Pyth/3_Task/3_SVD_QT/0_model_Decomp_Regr_RF_More_Q.svg){#fig-fig_66} + +![$\boldsymbol T$](../../3_Figs_Pyth/3_Task/3_SVD_QT/1_model_Decomp_Regr_RF_More_T.svg){#fig-fig_67} + +*SLS*, \gls{svd}, $\boldsymbol Q / \boldsymbol T$ modes approximation with \gls{rf} for $L=1$ +::: + + +:::{layout="[[1,1]]"} + +![$\boldsymbol Q$](../../3_Figs_Pyth/3_Task/3_SVD_QT/2_model_Decomp_Regr_ABoost_More_Q.svg){#fig-fig_68} + +![$\boldsymbol T$](../../3_Figs_Pyth/3_Task/3_SVD_QT/3_model_Decomp_Regr_ABoost_More_T.svg){#fig-fig_69} + +*SLS*, \gls{svd}, $\boldsymbol Q / \boldsymbol T$ mode approximation with AdaBoost for $L=1$ +::: + +:::{layout="[[1,1]]"} + +![$\boldsymbol Q$](../../3_Figs_Pyth/3_Task/3_SVD_QT/4_model_Decomp_Regr_GP_More_Q.svg){#fig-fig_70} + +![$\boldsymbol T$](../../3_Figs_Pyth/3_Task/3_SVD_QT/5_model_Decomp_Regr_GP_More_T.svg){#fig-fig_71} + +*SLS*, \gls{svd}, $\boldsymbol Q / \boldsymbol T$ mode approximation with GP for $L=1$ +::: + +Gaussian Process (GP) is a very powerful method for regression. +Often this is also true when reproducing $mod(\beta)$. +However, there are cases where the performance is insufficient, as shown in figures @fig-fig_70 and @fig-fig_71 . +Applying GP results in absolutely incorrect predicted tensors +$\boldsymbol{\tilde{Q}}(\beta_{unseen}),\, \boldsymbol{\tilde{T}}(\beta_{unseen})$, +where too many tensors entries are wrongly forced to zero. +Therefore, $\boldsymbol{\tilde{Q}}(\beta_{unseen}),\, \boldsymbol{\tilde{T}}(\beta_{unseen})$ will eventually lead to an unacceptably high deviation from the original trajectory. +Consequently, the GP regression is not applicable for the decomposed $\boldsymbol Q / \boldsymbol T$ modes without further modification.\newline + +The two remaining regressors are \glsfirst{rf} and AdaBoost. +Although AdaBoost is better at capturing the true modal behavior $mod(\beta)$, there is no guarantee that it will always be equally better at predicting the modal behavior for unseen model parameter values $mod(\beta_{unseen})$. +In table @tbl-tab_8_RF_ABoost the MAE errors for different $L$ and $\beta_{unseen} = [\, 28 .5,\, 32.5\,]$ are provided. +Since the table exhibits much information, the results can also be read qualitatively through the graphs @fig-fig_72_QT_28 and @fig-fig_72_QT_32 for $\beta_{unseen} = 28.5$ and $\beta_{unseen} = 32.5$, respectively. +For the visual inspection, it is important to observe the order of the vertical axis scaling. +It can be noted that the MAE errors themselves and the deviation between the \gls{rf} and AdaBoost MAE errors are very low. +Thus, it can be stated that \gls{rf} as well ad AdaBoost are both well-suited regressors.\newline + + + **$L$** | $\beta_{unseen}$ | $\boldsymbol{MAE}_{RF, \boldsymbol Q}$ | $\boldsymbol{MAE}_{AdaBoost, \boldsymbol Q}$ | $\boldsymbol{MAE}_{RF, \boldsymbol T}$ | $\boldsymbol{MAE}_{AdaBoost, \boldsymbol T}$ +---------|------------------|----------------------------------------|----------------------------------------------|----------------------------------------|---------------------------------------------- + $1$ | $28.5$ | $0.002580628$ | $0.002351781$ | $0.002275379$ | $0.002814208$ + $1$ | $32.5$ | $0.003544923$ | $0.004133114$ | $0.011152145$ | $0.013054876$ + $2$ | $28.5$ | $0.001823848$ | $0.001871858$ | $0.000409955$ | $0.000503748$ + $2$ | $32.5$| $0.006381635$ | $0.007952153$ | $0.002417142$ | $0.002660403$ + $3$ | $28.5$ | $0.000369228$ | $0.000386292$ | $0.000067680$ | $0.000082808$ + $3$ | $32.5$ | $0.001462458$ | $0.001613434$ | $0.000346298$ | $0.000360097$ + $4$ | $28.5$ | $0.000055002$ | $0.000059688$ | $0.000009420$ | $0.000011500$ + $4$ | $32.5$| $0.000215147$ | $0.000230404$ | $0.000044509$ | $0.000046467$ + $5$ | $28.5$ | $0.000007276$ | $0.000007712$ | $0.000001312$ | $0.000001600$ + $5$ | $32.5$ | $0.000028663$ | $0.000030371$ | $0.000005306$ | $0.000005623$ + $6$ | $28.5$| $0.000000993$ | $0.000052682$| $0.000000171$ | $0.000000206$ + $6$ | $32.5$ | $0.000003513$ | $0.000003740$ | $0.000000629$ | $0.000000668$ + $7$ | $28.5$ | $0.000000136$ | $0.000000149$ | $0.000000023$ | $0.000000031$ + $7$ | $32.5$| $0.000000422$ | $0.000000454$| $0.000000078$ | $0.000000082$ +: *SLS*, Mean absolute error for comparing \gls{rf} and AdaBoost different $L$ and two $\beta_{unseen}$ {#tbl-tab_8_RF_ABoost} + + + +:::{#fig-fig_72_QT_28 layout="[[1,1]]"} + +![$\boldsymbol Q$](../../3_Figs_Pyth/3_Task/3_SVD_QT/6_Q_28_5.svg){#fig-fig_72_Q_28} + +![$\boldsymbol T$](../../3_Figs_Pyth/3_Task/3_SVD_QT/7_T_28_5.svg){#fig-fig_72_T_28} + +*SLS*, Mean absolute error for comparing \gls{rf} and AdaBoost different $L$ and $\beta_{unseen} = 28.5$ +::: + +:::{#fig-fig_72_QT_32 layout="[[1,1]]"} + +![$\boldsymbol Q$](../../3_Figs_Pyth/3_Task/3_SVD_QT/8_Q_32_5.svg){#fig-fig_72_Q_32} + +![$\boldsymbol T$](../../3_Figs_Pyth/3_Task/3_SVD_QT/9_T_32_5.svg){#fig-fig_72_T_32} + +*SLS*, Mean absolute error for comparing \gls{rf} and AdaBoost different $L$ and $\beta_{unseen} = 32.5$ +::: + + +In summary, the following can be said, \gls{rf} and AdaBoost are both performing well in regression. Furthermore, no clear winner between the two regressors can be detected. +The third option GP is dismissed as it sometimes has unacceptably low regression performance. +Finally, there is the possibility to use *pySindy*, however, for that, an appropriate candidate library must be defined. +\FloatBarrier \ No newline at end of file diff --git a/Data/1_Writing/3_Task/5_Pred.qmd b/Data/1_Writing/3_Task/5_Pred.qmd new file mode 100644 index 0000000000000000000000000000000000000000..90ed6637f7010c578369f5a38ab8f5098101a5ff --- /dev/null +++ b/Data/1_Writing/3_Task/5_Pred.qmd @@ -0,0 +1,29 @@ +## CNMc predictions {#sec-sec_3_5_Pred} +In this section, some representative outputs for the \gls{cnmc} predicted trajectories shall be discussed. +For that, first, the quality measurement abilities implemented in \gls{cnmc} are elaborated. +Next, the model *SLS* is analyzed and explained in detail in the subsection [-@sec-subsec_3_5_1_SLS]. +Finally, the outcome for other models shall be presented briefly in subsection [-@sec-subsec_3_5_2_Models].\newline + +There are several methods implemented in \gls{cnmc} to assess the quality of the predicted trajectories. +The first one is the autocorrelation, which will be calculated for all $\vec{\beta}_{unseen}$ and all provided $\vec{L}$, for the true, \gls{cnm} and \gls{cnmc} predicted trajectories. +As usual, the output is plotted and saved as HTML files for a feature-rich visual inspection. +For qualitative assessment, the MAE errors are calculated for all $\vec{\beta}_{unseen}$ and $\vec{L}$ for two sets. +The first set consists of the MAE errors between the true and the \gls{cnm} predicted trajectories. +The second set contains the MAE errors between the true and the \gls{cnmc} predicted trajectories. +Both sets are plotted as MAE errors over $L$ and stored as HTML files. +Furthermore, the one $L$ value which exhibits the least MAE error is printed in the terminal and can be found in the log file as well. \newline + +The second technique is the \gls{cpd}, which will also be computed for all the 3 trajectories, i.e., true, \gls{cnm} and \gls{cnmc} predicted trajectories. +The \gls{cpd} depicts the probability of being at one centroid $c_i$. +For each $\vec{\beta}_{unseen}$ and all $L$ the \gls{cpd} is plotted and saved. +The third method displays all the 3 trajectories in the state space. +Moreover, the trajectories are plotted as 2-dimensional graphs, i.e., each axis as a subplot over the time $t$. +The final method calculates the MAE errors of the $\boldsymbol Q / \boldsymbol T$ tensors for all $L$.\newline + +The reason why more than one quality measurement method is integrated into \gls{cnmc} is that \gls{cnmc} should be able to be applied to, among other dynamical systems, chaotic systems. +The motion of the Lorenz system @eq-eq_6_Lorenz is not as complex as of the, e.g., the *Four Wing* @eq-eq_10_4_Wing . +Nevertheless, the Lorenz system already contains quasi-random elements, i.e., the switching from one ear to the other cannot be captured exactly with a surrogate mode. However, the characteristic of the Lorenz system and other chaotic dynamical systems as well can be replicated. +In order to prove the latter, more than one method to measure the prediction quality is required. + +{{}} +{{}} \ No newline at end of file diff --git a/Data/1_Writing/3_Task/6_SLS.qmd b/Data/1_Writing/3_Task/6_SLS.qmd new file mode 100644 index 0000000000000000000000000000000000000000..208e420ba29b3a29b7f42714127491229e1b82c8 --- /dev/null +++ b/Data/1_Writing/3_Task/6_SLS.qmd @@ -0,0 +1,68 @@ +### Assessment of SLS {#sec-subsec_3_5_1_SLS} +In this subsection, the prediction capability for the *SLS* will be analyzed in detail. All the presented output is generated with \gls{svd} as the decomposition method and \gls{rf} as the $\boldsymbol Q / \boldsymbol T$ regressor.\newline + +The final objective of \gls{cnmc} is to capture the characteristics of the original trajectory. +However, it is important to outline that \gls{cnmc} is trained with the \gls{cnm} predicted trajectories. +Thus, the outcome of \gls{cnmc} highly depends on the ability of \gls{cnm} to represent the original data. +Consequently, \gls{cnmc} can only be as effective as \gls{cnm} is in the first place, with the approximation of the true data. +Figures @fig-fig_72 and @fig-fig_73 show the true, \gls{cnm} and \gls{cnmc} predicted trajectories and a focused view on the \gls{cnm} and \gls{cnmc} trajectories, respectively. +The output was generated for $\beta_{unseen} = 28.5$ and $L =1$. +First, it can be observed that \gls{cnm} is not able to capture the full radius of the Lorenz attractor. +This is caused by the low chosen number of centroids $K=10$. +Furthermore, as mentioned at the beginning of this chapter, the goal is not to replicate the true data one-to-one, but rather to catch the significant behavior of any dynamic system. +With the low number of centroids $K$, \gls{cnm} extracts the characteristics of the Lorenz system well. +Second, the other aim for \gls{cnmc} is to match the \gls{cnm} data as closely as possible. +Both figures @fig-fig_72 and @fig-fig_73 prove that \gls{cnmc} has fulfilled its task very well. \newline + +:::{layout="[[1,1]]"} + +![True, \gls{cnm} and \gls{cnmc} predicted trajectories](../../3_Figs_Pyth/3_Task/4_SLS/0_lb_28.5_All.svg){#fig-fig_72} + + +![\gls{cnm} and \gls{cnmc} predicted trajectories](../../3_Figs_Pyth/3_Task/4_SLS/1_lb_28.5.svg){#fig-fig_73} + +*SLS*, $\beta_{unseen}=28.5,\, L=1$, true, \gls{cnm} and \gls{cnmc} predicted trajectories +::: + + +A close-up of the movement of the different axes is shown in the picture @fig-fig_74 . +Here, as well, the same can be observed as described above. Namely, the predicted \gls{cnmc} trajectory is not a one-to-one reproduction of the original trajectory. +However, the characteristics, i.e., the magnitude of the motion in all 3 directions (x, y, z) and the shape of the oscillations, are very similar to the original trajectory. +Note that even though the true and predicted trajectories are utilized to assess, whether the characteristical behavior could be extracted, a single evaluation based on the trajectories is not sufficient and often not advised or even possible. +In complex systems, trajectories can change rapidly while dynamical features persist [@Fernex2021a]. +In \gls{cnmc} the predicted trajectories are obtained through the \gls{cnm} propagation, which itself is based on a probabilistic model, i.e. the $\boldsymbol Q$ tensor. +Thus, matching full trajectories becomes even more unrealistic. +The latter two statements highlight yet again that more than one method of measuring quality is needed. +To further support the generated outcome the autocorrelation and \gls{cpd} in figure @fig-fig_75 and @fig-fig_76, respectively, shall be considered. +It can be inspected that the \gls{cnm} and \gls{cnmc} autocorrelations are matching the true autocorrelation in the shape favorably well. +Nonetheless, the degree of reflecting the magnitude fully decreases quite fast. +Considering the \gls{cpd}, it can be recorded that the true \gls{cpd} could overall be reproduced satisfactorily.\newline + +![*SLS*, $\beta_{unseen}=28.5, \, L=1$, true, \gls{cnm} and \gls{cnmc} predicted trajectories as 2d graphs ](../../3_Figs_Pyth/3_Task/4_SLS/2_lb_28.5_3V_All.svg){#fig-fig_74} + +::: {layout="[[1,1]]"} + +![autocorrelation](../../3_Figs_Pyth/3_Task/4_SLS/3_lb_3_all_28.5.svg){#fig-fig_75} + +![\gls{cpd}](../../3_Figs_Pyth/3_Task/4_SLS/4_lb_28.5.svg){#fig-fig_76} + +*SLS*, $\beta_{unseen}= 28.5, \, L =1$, autocorrelation and \gls{cpd} for true, \gls{cnm} and \gls{cnmc} predicted trajectories +::: + + +To illustrate the influence of $L$, figure @fig-fig_77 shall be viewed. +It depicts the MAE error for the true and \gls{cnmc} predicted trajectories for $\beta_{unseen}= [\, 28.5,\, 32.5 \, ]$ with $L$ up to 7. +It can be observed that the choice of $L$ has an impact on the prediction quality measured by autocorrelation. +For $\beta_{unseen}=28.5$ and $\beta_{unseen}=32.5$, the optimal $L$ values are $L = 2$ and $L = 7$, respectively. To emphasize it even more that with the choice of $L$ the prediction quality can be regulated, figure @fig-fig_78 shall be considered. +It displays the 3 autocorrelations for $L = 7$. +Matching the shape of the true autocorrelation was already established with $L =1$ as shown in figure @fig-fig_75 . In addition to that, $L=7$ improves by matching the true magnitude. +Finally, it shall be mentioned that similar results have been accomplished with other $K$ tested values, where the highest value was $K =50$. + +:::{layout="[[1,1]]"} + +![*SLS*, MAE error for true and \gls{cnmc} predicted autocorrelations for $\beta_{unseen}= [\, 28.5,$ $32.5 \, ]$ and different values of $L$](../../3_Figs_Pyth/3_Task/4_SLS/5_lb_1_Orig_CNMc.svg){#fig-fig_77} + +![*SLS*, $\beta_{unseen}=32.5, \, L=7$, \gls{cnm} and \gls{cnmc} predicted autocorrelation](../../3_Figs_Pyth/3_Task/4_SLS/6_lb_3_all_32.5.svg){#fig-fig_78} + +::: +\FloatBarrier \ No newline at end of file diff --git a/Data/1_Writing/3_Task/7_Models.qmd b/Data/1_Writing/3_Task/7_Models.qmd new file mode 100644 index 0000000000000000000000000000000000000000..098ec6987b91bdc67e9fff0d2624780cce0771dd --- /dev/null +++ b/Data/1_Writing/3_Task/7_Models.qmd @@ -0,0 +1,166 @@ +### Results of further dynamical systems {#sec-subsec_3_5_2_Models} +In this subsection, the \gls{cnmc} prediction results for other models will be displayed. +The chosen dynamical systems with their configurations are the following. + +\begin{enumerate} + \item *FW50*, based on the *Four Wing* set of equations @eq-eq_10_4_Wing with $K=50, \, \vec{\beta }_{tr} = [\, \beta_0 = 8 ; \, \beta_{end} = 11 \,], \, n_{\beta, tr} = 13$. + + \item *Rössler15*, based on the *Rössler* set of equations @eq-eq_7_Ross with $K=15, \, \vec{\beta }_{tr} = [\, \beta_0 = 6 ; \, \beta_{end} = 13 \,], \, n_{\beta, tr} = 15$. + + \item *TS15*, based on the *Two Scroll* set of equations @eq-eq_9_2_Scroll with $K=15, \, \vec{\beta }_{tr} = [\, \beta_0 = 5 ; \, \beta_{end} = 12 \,], \, n_{\beta, tr} = 15$. +\end{enumerate} +All the presented outputs were generated with \gls{svd} as the decomposition method and \gls{rf} as the $\boldsymbol Q / \boldsymbol T$ regressor. +Furthermore, the B-spline interpolation in the propagation step of \gls{cnm} was replaced with linear interpolation. +The B-spline interpolation was originally utilized for smoothing the motion between two centroids. +However, it was discovered for a high number of $K$, the B-spline interpolation is not able to reproduce the motion between two centroids accurately, but rather would impose unacceptable high deviations or oscillations into the predictions. +This finding is also mentioned in [@Max2021] and addressed as one of *first CNMc's* limitations. +Two illustrative examples of the unacceptable high deviations caused by the B-spline interpolation are given in figures @fig-fig_82_Traject and @fig-fig_82_Autocorr . +The results are obtained for *LS20* for $\beta = 31.75$ and $\beta = 51.75$ with $L=3$. +In figures @fig-fig_82_Traj_B and @fig-fig_83_Traj_B it can be inspected that the B-spline interpolation has a highly undesired impact on the predicted trajectories. +In Contrast to that, in figures, @fig-fig_82_Traj_L and @fig-fig_83_Traj_L, where linear interpolation is utilized, no outliers are added to the predictions. +The impact of the embedded outliers, caused by the B-spline interpolation, on the autocorrelation is depicted in figures @fig-fig_82_Auto_B and @fig-fig_83_Auto_B . +The order of the deviation between the true and the \gls{cnmc} predicted autocorrelation can be grasped by inspecting the vertical axis scale. +Comparing it with the linear interpolated autocorrelations, shown in figures @fig-fig_82_Auto_L and @fig-fig_83_Auto_L, it can be recorded that the deviation between the true and predicted autocorrelations is significantly lower than in the B-spline interpolation case. +\newline + +Nevertheless, it is important to highlight that the B-spline interpolation is only a tool for smoothing the motion between two centroids. +The quality of the modeled $\boldsymbol Q / \boldsymbol T$ cannot be assessed directly by comparing the trajectories and the autocorrelations. +To stress that the \gls{cpd} in figure @fig-fig_82_CPD_B and @fig-fig_83_CPD_B shall be considered. +It can be observed that \gls{cpd} does not represent the findings of the autocorrelations, i.e., the true and predicted behavior agree acceptably overall. +This is because the type of interpolation has no influence on the modeling of the probability tensor $\boldsymbol Q$. +Thus, the outcome with the B-spline interpolation should not be regarded as an instrument that enables making assumptions about the entire prediction quality of \gls{cnmc}. The presented points underline again the fact that more than one method should be considered to evaluate the prediction quality of \gls{cnmc}. +\newline + + +:::{#fig-fig_82_Traject layout="[[1,1],[1,1]]"} + +![Trajectories, B-spline, $\beta_{unseen} = 31.75$ ](../../3_Figs_Pyth/3_Task/5_Models/18_lb_31.75_All.svg){#fig-fig_82_Traj_B} + +![Trajectories, B-spline, $\beta_{unseen} = 51.75$](../../3_Figs_Pyth/3_Task/5_Models/19_lb_51.75_All.svg){#fig-fig_83_Traj_B} + +![Trajectories, linear, $\beta_{unseen} = 31.75$ ](../../3_Figs_Pyth/3_Task/5_Models/24_lb_31.75_All.svg){#fig-fig_82_Traj_L} + +![Trajectories, linear, $\beta_{unseen} = 51.75$](../../3_Figs_Pyth/3_Task/5_Models/25_lb_51.75_All.svg){#fig-fig_83_Traj_L} + +Illustrative undesired oscillations cased by the B-spline interpolation and its impact on the predicted trajectory contrasted with linear interpolation, *LS20*, $\beta = 31.75$ and $\beta =51.75$, $L=3$ +::: + + + +:::{#fig-fig_82_Autocorr layout="[[1,1],[1,1]]"} + +![Autocorrelations, B-spline, $\beta = 31.75$ ](../../3_Figs_Pyth/3_Task/5_Models/20_lb_3_all_31.75.svg){#fig-fig_82_Auto_B} + +![Autocorrelations, B-spline, $\beta_{unseen} = 51.75$](../../3_Figs_Pyth/3_Task/5_Models/21_lb_3_all_51.75.svg){#fig-fig_83_Auto_B} + +![Autocorrelations, linear, $\beta = 31.75$ ](../../3_Figs_Pyth/3_Task/5_Models/26_lb_3_all_31.75.svg){#fig-fig_82_Auto_L} + +![Autocorrelations, linear, $\beta_{unseen} = 51.75$](../../3_Figs_Pyth/3_Task/5_Models/27_lb_3_all_51.75.svg){#fig-fig_83_Auto_L} + +Illustrative undesired oscillations cased by the B-spline interpolation and its impact on the predicted autocorrelations contrasted with linear interpolation, *LS20*, $\beta = 31.75$ and $\beta =51.75$, $L=3$ +::: + + +:::{layout="[[1,1],[1,1]]"} + +![\gls{cpd}, $\beta = 31.75$ ](../../3_Figs_Pyth/3_Task/5_Models/22_lb_31.75.svg){#fig-fig_82_CPD_B} + +![\gls{cpd}, $\beta_{unseen} = 51.75$](../../3_Figs_Pyth/3_Task/5_Models/23_lb_51.75.svg){#fig-fig_83_CPD_B} + +Illustrative the B-spline interpolation and its impact on the \glspl{cpd}, *LS20*, $\beta = 31.75$ and $\beta =51.75$, $L=3$ +::: + +\FloatBarrier +The results generated with the above mentioned linear interpolation for *FW50*, *Rössler15* and *TS15* are depicted in figures @fig-fig_79 to @fig-fig_81, respectively. +Each of them consists of an illustrative trajectory, 3D and 2D trajectories, the autocorrelations, the \gls{cpd} and the MAE error between the true and \gls{cnmc} predicted trajectories for a range of $\vec{L}$ and some $\vec{\beta}_{unseen}$. +The illustrative trajectory includes arrows, which provide additional information. +First, the direction of the motion, then the size of the arrows represents the velocity of the system. Furthermore, the change in the size of the arrows is equivalent to a change in the velocity, i.e., the acceleration. +Systems like the *TS15* exhibit a fast change in the size of the arrows, i.e., the acceleration is nonlinear. +The more complex the behavior of the acceleration is, the more complex the overall system becomes. +The latter statement serves to emphasize that \gls{cnmc} can be applied not only to rather simple systems such as the Lorenz attractor [@lorenz1963deterministic], but also to more complex systems such as the *FW50* and *TS15*.\newline + +All in all, the provided results for the 3 systems are very similar to those already explained in the previous subsection [-@sec-subsec_3_5_1_SLS]. +Thus, the results presented are for demonstration purposes and will not be discussed further. +However, the 3 systems also have been calculated with different values for $K$. +For *FW50*, the range of $\vec{K}= [\, 15, \, 30, \, 50 \, ]$ was explored with the finding that the influence of $K$ remained quite small. +For *Rössler15* and *TS15*, the ranges were chosen as $\vec{K}= [\, 15, \, 30, \, 100\,]$ and $\vec{K}= [\, 15, \, 75 \,]$, respectively. +The influence of $K$ was found to be insignificant also for the latter two systems. + + + + +:::{#fig-fig_79 layout="[[1,1],[1,1], [1,1]]"} + +![Illustrative trajectory $\beta = 9$](../../3_Figs_Pyth/3_Task/5_Models/0_lb_9.000.svg) + +![Trajectories, $\beta_{unseen} = 8.1$](../../3_Figs_Pyth/3_Task/5_Models/1_lb_8.1_All.svg) + + +![2D-trajectories, $\beta_{unseen} = 8.1$](../../3_Figs_Pyth/3_Task/5_Models/2_lb_8.1_3V_All.svg) + +![Autocorrelations, $\beta_{unseen} = 8.1$](../../3_Figs_Pyth/3_Task/5_Models/3_lb_3_all_8.1.svg) + + +![\gls{cpd}, $\beta_{unseen} = 8.1$](../../3_Figs_Pyth/3_Task/5_Models/4_lb_8.1.svg) + +![Autocorrelations $MAE(L,\, \beta_{unseen})$](../../3_Figs_Pyth/3_Task/5_Models/5_lb_1_Orig_CNMc.svg) + +Results for *FW50*, $\beta_{unseen} = 8.1, \, L= 2$ +::: + + + + + + + + +:::{#fig-fig_80 layout="[[1,1],[1,1], [1,1]]"} + +![Illustrative trajectory $\beta = 7.5$ ](../../3_Figs_Pyth/3_Task/5_Models/6_lb_7.500.svg) + +![Trajectories, $\beta_{unseen} = 9.6$](../../3_Figs_Pyth/3_Task/5_Models/7_lb_9.6_All.svg) + + +![2D-trajectories, $\beta_{unseen} = 9.6$](../../3_Figs_Pyth/3_Task/5_Models/8_lb_9.6_3V_All.svg) + +![Autocorrelations, $\beta_{unseen} = 9.6$](../../3_Figs_Pyth/3_Task/5_Models/9_lb_3_all_9.6.svg) + + +![\gls{cpd}, $\beta_{unseen} = 9.6$](../../3_Figs_Pyth/3_Task/5_Models/10_lb_9.6.svg) + +![Autocorrelations $MAE(L,\, \beta_{unseen})$](../../3_Figs_Pyth/3_Task/5_Models/11_lb_1_Orig_CNMc.svg) + +Results for *Rössler15*, $\beta_{unseen} = 9.6,\, L =1$ +::: + + + + + + + + +:::{#fig-fig_81 layout="[[1,1],[1,1], [1,1]]"} + +![Illustrative trajectory $\beta = 11$ ](../../3_Figs_Pyth/3_Task/5_Models/12_lb_11.000.svg) + +![Trajectories, $\beta_{unseen} = 5.1$](../../3_Figs_Pyth/3_Task/5_Models/13_lb_5.1_All.svg) + + +![2D-trajectories, $\beta_{unseen} = 5.1$](../../3_Figs_Pyth/3_Task/5_Models/14_lb_5.1_3V_All.svg) + +![Autocorrelations, $\beta_{unseen} = 5.1$](../../3_Figs_Pyth/3_Task/5_Models/15_lb_3_all_5.1.svg) + + + +![\gls{cpd}, $\beta_{unseen} = 5.1$](../../3_Figs_Pyth/3_Task/5_Models/16_lb_5.1.svg) + +![Autocorrelations $MAE(L,\, \beta_{unseen})$](../../3_Figs_Pyth/3_Task/5_Models/17_lb_1_Orig_CNMc.svg) + +Results for *TS15*, $\beta_{unseen} = 5.1,\, L =2$ +::: + + + + diff --git a/Data/1_Writing/4_Task/1_Concl.qmd b/Data/1_Writing/4_Task/1_Concl.qmd new file mode 100644 index 0000000000000000000000000000000000000000..780c3080f30b429fe98c0b90ff2121c4d6328988 --- /dev/null +++ b/Data/1_Writing/4_Task/1_Concl.qmd @@ -0,0 +1,37 @@ +# Conclusion and outlook +A tool to capture and predict the behavior of nonlinear complex and chaotic dynamical systems within a range of some model parameter values $\vec{\beta}$ is presented. +The tool is called \glsfirst{cnmc}. +It could be shown that \gls{cnmc} is able to capture and make predictions for the well-known Lorenz system [@lorenz1963deterministic]. +With having removed one of the major limitations in the first attempt of \gls{cnmc} [@Max2021], the introduced version of \gls{cnmc} is not limited to any dimension anymore. +Furthermore, the restriction of the dynamical system to exhibit a circular trajectory is removed. +Since these two limitations could be removed, the presented \gls{cnmc} can be applied to any general dynamical system. +To outline this fact, 10 different dynamical systems are implemented by default in \gls{cnmc}. +Some of these dynamical systems were used to evaluate \gls{cnmc} performance. +It could be observed that \gls{cnmc} is not only able to deal with the Lorenz system but also with more complicated systems. +The objective is to represent the characteristic behavior of general dynamical systems that could be fulfilled on all tested systems.\newline + +The third limitation which could be removed is the unacceptably high computational time with \glsfirst{nmf}. +It could be highlighted that \glsfirst{svd} returns the decomposition within seconds, instead of hours, without adding any inaccuracies. +Moreover, \gls{svd} does not require a parameter study. +Executing \gls{nmf} once is already computational more expensive than \gls{svd}, but with a parameter study, \gls{nmf} becomes even more unsatisfactory in the application. +By having removed these 3 major limitations, \gls{cnmc} can be applied to any dynamical system within a reasonable computational time on a regular laptop. +Nevertheless, \gls{cnmc} contains algorithms, which highly benefit from computational power. Thus, faster outputs are achieved with clusters. +Also, with having replaced the B-spline interpolation through linear interpolation, the predicted trajectories can be visually depicted appropriately without the +Another important introduced advancement is that the B-spline interpolation was replaced by linear interpolation. This allows to avoid unreasonably high interpolation errors (oscillations) of the trajectory and enables an appropriate visualization. +\newline + + +\gls{cnmc} Is written from scratch in a modular way such that implementing it into existing code, replacing employed algorithms with others is straightforward or used as a black-box function. +All important parameters can be adjusted via one file (*settings.py*). +Helpful post-processing features are part of \gls{cnmc} and can also be controlled with *settings.py*. +Overall \gls{cnmc} includes a high number of features, e.g., a log file, storing results at desired steps, saving plots as HTML files which allow extracting further information about the outcome, the ability to execute multiple models consequentially, and activating and disabling each step of \gls{cnmc}. +All displayed outputs in this thesis were generated with \gls{cnmc}. +Finally, one limitation which remains shall be mentioned. +The used \gls{svd} code receives sparse matrices, however, it returns a dense matrix. The consequence is that with high model orders $L$, quickly multiple hundreds of gigabytes of RAM are required. +The maximal $L$ which could be achieved on the laptop of the author, which has 16 GB RAM, is $L=7$.\newline + +As an outlook, a new \gls{svd} algorithm should be searched for or written from scratch. +The demand for the new \gls{svd} solver is that it must receive sparse matrices and also returns the solution in form of sparse matrices. +With that $L$ could be increased, i.e., $L>7$. +In this thesis, it could be shown that \gls{cnmc} can handle chaotic systems well. Thus, the next step could be, replacing the current data generation step, where differential equations are solved, with actual \gls{cfd} data as input. +Hence, the objective would be to apply \gls{cnmc} to real \gls{cfd} data to predict flow fields. \ No newline at end of file diff --git a/Data/1_Writing/4_Task/2_Zusammen_Deutsch.qmd b/Data/1_Writing/4_Task/2_Zusammen_Deutsch.qmd new file mode 100644 index 0000000000000000000000000000000000000000..39a79af421210c505faacbc96ec31b1d5fb386fb --- /dev/null +++ b/Data/1_Writing/4_Task/2_Zusammen_Deutsch.qmd @@ -0,0 +1,37 @@ +# Zusammenfassung auf Deutsch +Die Arbeit wurde an der Technischen Universität Braunschweig geschrieben. +Da diese Arbeit auf eine Fremdsprache geschrieben wurde, soll der Anforderung der TU-Braunschweig, dass eine Zusammenfassung auf Deutsch, welche etwa 1 DIN A4-Seite beträgt, nachgekommen werden. +Zunächst wird kurz die Motivation dieser Master-Arbeit erklärt. Im Anschluss sollen die Ergebnisse im Kurzen erörtert werden.\newline + +In dieser Master-Arbeit war es Ziel, eine bereits bestehende Methode, das sog. \glsfirst{cnmc}, zu verbessern. Die Vorversion ist in [@Max2021] beschrieben. Hier konnte gezeigt werden, dass \gls{cnmc} für das Lorenz System, [@lorenz1963deterministic] vielversprechende Approximationen zulässt. +Das Lorenz System ist recht bekannt unter den chaotischen Systemen. Ein chaotisches System ist ein dynamisches System, was selbst durch Differenzialgleichungen beschrieben wird. +Sinn von \gls{cnmc} ist daher, das Approximieren bzw. Vorhersagen von Trajektorien (zeitliche Lösung der Differenzialgleichung) von dynamischen Systemen. +\gls{cnmc} wurde innerhalb der ersten Version speziell für das Lorenz System entwickelt, sodass es nicht für allgemeingültige dynamische System verwendet werden konnte. +Die Limitierungen verlangten unter anderem, dass die Trajektorie kreisförmig seien müsse. Zudem, musste ein 3-dimensionales Problem vorliegen. Weiters kam hinzu, dass ein wichtiger Schritt in dem \gls{cnmc} Arbeitsablauf (Moden-Findung) mehrere Stunden in Anspruch nahm und somit die Anwendung von \gls{cnmc} unattraktiver machte. +Aufgrund dessen, dass es Schwierigkeiten beim Ausführen der ersten \gls{cnmc}-Version gab, wurde \gls{cnmc} von neu programmiert.\newline + + +Zunächst wurde der Code nun in der Form geschrieben, dass der Nutzer nach Belieben neue dynamische Systeme einfach hinzufügen kann. Standardmäßig kommt \gls{cnmc} bereits mit 10 verschiedenen dynamischen Systemen. Danach wurden zwei wichtige Limitierungen entfernt. Die Erste, \gls{cnmc} kann inzwischen mit jedem Verhalten der Trajektorie umgehen. In anderen Worten, die Trajektorie des dynamischen Systems muss nicht kreisförmig sein. Zweitens ist \gls{cnmc} nicht mehr durch die Anzahl der Dimension restriktiert. Vereinfacht ausgedrückt, ob \gls{cnmc} auf eine 3d oder eine andere beliege dimensionale Differenzialgleichung angewendet werden soll, spielt keine Rolle mehr. +Für den Schritt, in welchem die Moden einer Daten-Matrix gefunden werden, stehen aktuell zwei verschiedene Möglichkeiten zu Verfügung, \glsfirst{nmf} und \glsfirst{svd}. \gls{nmf} wurde bereits in der ersten Version von \gls{cnmc} verwendet. +Doch wurde es dahingehend weiter verbessert, dass jetzt das Finden des wichtigen Parameters, der Anzahl der verwendeten Moden, automatisiert durchgeführt wird. +Somit kann \gls{nmf} automatisiert auf unterschiedliche dynamische System angewendet werden. +\gls{svd} ist die zweite Methode und wurde implementiert, um die hohe Rechenzeit des \gls{nmf} zu verhindern. +Es konnte gezeigt werden, dass \gls{svd} tatsächlich, um ein vielfaches schneller als \gls{nmf} ist. +Die Rechenzeit von \gls{svd} bewegt sich im Bereich von Sekunden, wohingegen \gls{nmf} mehrere Stunden in Anspruch nehmen kann. +Auch wurde auch gezeigt, dass beide Methoden qualitativ gleichwertige Ergebnisse liefern.\newline + + +Eine weitere wichtige Änderung, welche in der aktuellen \gls{cnmc} Version implementiert ist die, dass eine sog. B-Spline Interpolation durch eine lineare Interpolation ersetzt wurde. Als Folge können unangebracht hohe Interpolationsfehler (Oszillationen) der Trajektorie umgangen werden. Durch letztere Änderung können die Ergebnisse nun auch Graph dargestellt werden, ohne dass durch die B-Spline Interpolation eingebrachte Ausreißer eine visuelle Auswertung unmöglich machen.\newline + + +Mit dieser Arbeit konnte gezeigt werden, dass \gls{cnmc} nicht nur für das Lorenz System, sondern für allgemeingültige dynamische Systeme verwendet werden kann. Hierfür wurden beispielsweise die Ergebnisse für drei andere dynamische Systeme gezeigt. Die aktuelle \gls{cnmc} Version wurde in einer modularen Art geschrieben, welche es erlaubt, einzelne Algorithmen leicht durch andere zu ersetzen. +Jeder einzelne Haupt-Schritt in \gls{cnmc} kann aktiviert oder deaktiviert werden. Dadurch können bereits vorhanden Ergebnisse eingeladen werden, anstatt diese jedes Mal neu zu berechnen. Das Resultat ist eine hohe Ersparnis an Rechenzeit. \gls{cnmc} kommt mit vielen Features, über eine einzige Datei lässt sich der gesamte Ablauf von \gls{cnmc} steuern. Wodurch bestimmt werden kann, welche Parameter in den einzelnen Schritten verwendet werden, wo Ergebnisse abgespeichert und geladen werden sollen, sowie auch wo und ob die Ergebnisse visuell abgespeichert werden sollen. +Die Resultate werden für die visuelle Inspektion als HTML-Dateien zur Verfügung gestellt. Damit ist es möglich weitere Informationen zu erhalten, wie beispielsweise, das Ablesen von Werten an bestimmten Stellen und anderen nützlichen Funktionen, wie etwa das Rotieren, Zoomen und Ausblenden einzelner Graphen. +Das Ziel war es, dem Nutzer einen Post-Processor mitzugeben, sodass er auch ohne weitere kostenpflichtige Software visuelle Auswertungen vornehmen kann. Doch \gls{cnmc} hat auch eine log-Datei integriert, in welcher alle Ausgaben, wie unter anderem Ergebnisse einzelner Qualitätsmesstechniken (Metriken bzw. Normen) nachgelesen werden können.\newline + + +Zusammenfassend lässt sich sagen, mit dieser Master-Thesis befindet sich \gls{cnmc} in einem Zustand, in welchem es für allgemeingültige dynamische Systeme angewendet werden kann. Das Implementieren von weiteren Systemen wurde vereinfacht und wichtige Limitierungen, wie Anzahl der Dimensional und unzulässig hohe Rechenzeit konnten beseitigt werden. Zudem ist das Tool gut dokumentiert, und bietet diverse Features an, worunter beispielsweise die Post-Processing Möglichkeiten inbegriffen sind. + + + + diff --git a/Data/1_Writing/5_Additional/0_Appendix.qmd b/Data/1_Writing/5_Additional/0_Appendix.qmd new file mode 100644 index 0000000000000000000000000000000000000000..73ac4966fd85ea3900b1725002bb331eda2ff1a6 --- /dev/null +++ b/Data/1_Writing/5_Additional/0_Appendix.qmd @@ -0,0 +1,217 @@ +# Further implemented dynamical systems {.appendix #sec-ch_Ap_Dyna} + +**Chen** [@Chen1999]: + $$ + \begin{equation} + \label{eq_8_Chen} + \begin{aligned} + \dot x &= a\, (y - x) \\ + \dot y &= x \,(\beta - a) - xz + \beta y \\ + \dot z &= x y -b z + \end{aligned} + \end{equation}$$ {#eq-eq_8_Chen} +--- + +**Lu** [@Lu2002]: + $$ + \begin{equation} + \label{eq_9_Lu} + \begin{aligned} + \dot x &= a \, (y -x) \\ + \dot y &= \beta y -x z \\ + \dot z &= x y - b z + \end{aligned} + \end{equation}$$ {#eq-eq_9_Lu} +--- + +**Van der Pol** [@VanderPol]: +$$ + \begin{equation} + \label{eq_14_VDP} + \begin{aligned} + \dot x &= y \\ + \dot y &= y \beta\,(1-x^2) -x + \end{aligned} + \end{equation}$$ {#eq-eq_14_VDP} + + \ No newline at end of file diff --git a/Data/1_Writing/5_Additional/10_References.qmd b/Data/1_Writing/5_Additional/10_References.qmd new file mode 100644 index 0000000000000000000000000000000000000000..90c4038336206e5a9f3a88080a6018a78b993f8b --- /dev/null +++ b/Data/1_Writing/5_Additional/10_References.qmd @@ -0,0 +1,5 @@ +### References + + +::: {#refs} +::: \ No newline at end of file diff --git a/Data/1_Writing/5_Additional/1_Appendix.qmd b/Data/1_Writing/5_Additional/1_Appendix.qmd new file mode 100644 index 0000000000000000000000000000000000000000..fe84fc03c942a8e329d9771ee2c49a8699c47abe --- /dev/null +++ b/Data/1_Writing/5_Additional/1_Appendix.qmd @@ -0,0 +1,180 @@ +# Some basics about chaotic systems {.appendix #sec-ch_Ap_Chaotic} +Since +Chaotic systems are the height +of intricacy when considering dynamical systems. +The reason why the term intricacy was chosen +instead of complexity is that chaotic systems can be, but are not necessarily +complex. For the relation between complex and +chaotic the reader is referred to [@Rickles2007]. +The mentioned intricacy of chaotic systems shall be explained by +reviewing two reasons. First, +chaotic systems are sensitive to their initial conditions. +To understand this, imagine we want to solve an \gls{ode}. In order to solve any +differential +equation, the initial condition or starting state must be known. Meaning, that the +solution to the \gls{ode} at the very first initial step, from where the +remaining interval is solved, must be identified beforehand. +One might believe, a starting point, which is not guessed unreasonably off, +should suffice to infer the system's future dynamics.\newline + +This is +an educated attempt, however, it is not true for systems that exhibit +sensitivity to initial conditions. These systems amplify any +perturbation or deviation exponentially +as time increases. From this it can be concluded +that even in case the initial value would be accurate to, e.g., 10 decimal places, +still after some time, the outcome can not be trusted anymore. +Visually +this can be comprehended by thinking of initial conditions +as locations in space. Let us picture two points with two initial conditions +that are selected to be next to each other. Only by zooming in multiple times, +a small spatial deviation should be perceivable. +As the time changes, the points will leave the location defined through the initial condition. \newline + + +With +chaotic systems in mind, both initially neighboring +points will diverge exponentially fast from each other. +As a consequence of the initial condition not being +known with infinite precision, the initial microscopic +errors become macroscopic with increasing time. Microscopic mistakes +might be considered to be imperceptible and thus have no impact +on the outcome, which would be worth to be mentioned. +Macroscopic mistakes on the other hand are visible. Depending on +accuracy demands solutions might be or might not be accepted. +However, as time continues further, the results eventually +will become completely unusable and diverge from the actual output on a macroscopic scale.\newline + + +The second reason, why chaotic systems are very difficult +to cope with, is the lack of a clear definition. It can be +argued that even visually, it is not always possible to +unambiguously identify a chaotic system. The idea +is that at some time step, a chaotic system appears to +be evolving randomly over time. The question then arises, +how is someone supposed to distinguish between something which +is indeed evolving randomly and something which only appears +to be random. The follow-up question most likely is going to be, +what is the difference between chaos and randomness, or +even if there is a difference. \newline + +Maybe randomness itself is only +a lack of knowledge, e.g., the movement of gas particles +can be considered to be chaotic or random. If the +velocity and spatial position of each molecule are +trackable, the concept of temperature is made +redundant. Gibbs only invented the concept of temperature +in order to be able to make some qualitative statements +about a system [@Argyris2017]. +A system that can not be described microscopically. +Here the question arises if the movement of the molecules +would be random, how is it possible that every time +some amount of heat is introduced into a system, the temperature +changes in one direction. If a random microscale system +always tends to go in one direction within a macroscale view, +a clear definition of randomness is required. \newline + +Laplace once said if the initial condition +(space and velocity) of each atom would be known, +the entire future +could be calculated. In other words, if a system is +build on equations, which is a deterministic way +to describe an event, the outcome should just +depend on the values of the variables. +Thus, the future, for as long as it is desired could be predicted +or computed exactly. To briefly summarize this conversion, +Albert Einstein once remarked that God would not play dice. Nils +Bohr replied that it +would be presumptuous of us human beings to prescribe to the Almighty +how he is to take his decisions. A more in-depth introduction to +this subject is provided by [@Argyris2017]. +Nevertheless, by doing literature research, one way to +visually distinguish between +randomness and chaos was found [@Boeing2016]. +Yet, in [@Boeing2016] the method was only +deployed on a logistic map. Hence, further research +is required here. \newline + +As explained, a clear definition of chaos does not exist. +However, some parts of definitions do occur regularly, e.g., +the already mentioned \glsfirst{sdic}. Other definition parts are the following: Chaotic +motion is \textbf{aperiodic} and based on a \textbf{deterministic} system. +An aperiodic system is not repeating any +previous \textbf{trajectory} and a deterministic system is +described by governing equations. A trajectory is the evolution +of a dynamical system over time. For instance, a dynamical system +consisting of 3 variables is denoted as a 3-dimensional dynamical system. +Each of the variables has its own representation axis. +Assuming these +3 variables capture space, motion in the x-,y- and z-direction +is possible. For each point in a defined time range, there is one set of x, y and z values, which fully describes the output of the dynamical system or the position at a chosen time point. +Simply put, the trajectory is the movement +or change of the variables of the differential equation over time. Usually, the +trajectory is displayed in the phase space, i.e., the axis represents the state or values of the variables of a dynamical system. An example can be observed in section [-@sec-subsec_1_1_3_first_CNMc]. \newline + + +One misconception which is often believed [@Taylor2010] +and found, e.g., in +Wikipedia [@Wiki_Chaos] is that +strange attractors would only appear as a consequence of +chaos. Yet, Grebogi et al. [@Grebogi1984] proved +otherwise. According to +\cite{Boeing2016,Taylor2010} strange attractors exhibit +self-similarity. This can be understood visually by imaging any shape +of a trajectory. Now by zooming in or out, the exact same shape +is found again. The amount of zooming in or out and consequently +changing the view scale, will not change the perceived +shape of the trajectory. Self-similarity happens to be +one of the fundamental properties of a geometry +in order to be called a fractal [@Taylor2010]. +In case one believes, +strange attractors would always be chaotic and knows that by definition strange attractors phase +space is self-similar, then +something further misleading is concluded. +Namely, if a geometry is turned out not only +to be self-similar but also to be a fractal, this +would demand interpreting every fractal to be +chaotic. \newline + +To refute this, consider the Gophy +attractor [@Grebogi1984]. +It exhibits the described self-similarity, +moreover, it is a fractal, and it is also a +strange attractor. However, the Gophy +attractor is not chaotic. The reason is found, when +calculating the Lyapunov exponent, which is negative +[@Taylor2010]. Latter tells us that two neighboring +trajectories are not separating exponentially fast +from each other. Thus, it does not obey the +sensitive dependence +of initial conditions requirement and is +regarded to be non-chaotic. The key messages are +that a chaotic attractor surely is a strange +attractor and a strange attractor is not necessarily +chaotic. A strange attractor refers to a fractal +geometry in which chaotic behavior may +or may not exist [@Taylor2010]. +Having acquired the knowledge that strange attractors +can occur in chaotic systems and form a fractal, +one might infer another question. If a chaotic +strange attractor always generates a geometry, which +stays constant when scaled, can chaos be +regarded to be random?\newline + + +This question will not be discussed in detail here, but for the sake of completeness, the 3 known types of nonstrange attractors +shall be mentioned. These are +the fixed point attractor, the limit cycle attractor, and the +torus attractor [@Taylor2010]. +A fixed point attractor is one point in the phase space, which attracts or pulls nearby trajectories to itself. +Inside the fix-point attractor, there is no motion, meaning +the derivative of the differential equation is zero. +In simpler words, +once the trajectory runs into a fix-point, the trajectory ends there. +This is because no change over time can be found here. +A limit cycle can be expressed as an endlessly repeating loop, e.g. in the shape of a circle. +The trajectory can start at +any given initial condition, still, it can go through a place in the phase space, from where the trajectory is continued as an infinitely +repeating loop. +For a visualization of the latter and the tours, as well more +detail the reader is referred to [@Argyris2017; @Kutz2022; @Strogatz2019; @Taylor2010]. \ No newline at end of file diff --git a/Data/2_Figures/0_Deco/dlr_Logo.jpeg b/Data/2_Figures/0_Deco/dlr_Logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1c75daeb23c64dec3ba3c8e73c51415064579c62 Binary files /dev/null and b/Data/2_Figures/0_Deco/dlr_Logo.jpeg differ diff --git a/Data/2_Figures/0_Deco/signature_1.jpg b/Data/2_Figures/0_Deco/signature_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c151837f1284160af11205f5eccc8d9ab59d089c Binary files /dev/null and b/Data/2_Figures/0_Deco/signature_1.jpg differ diff --git a/Data/2_Figures/1_Task/1_CNMc.pdf_tex b/Data/2_Figures/1_Task/1_CNMc.pdf_tex new file mode 100644 index 0000000000000000000000000000000000000000..f8caae75c59d4731f0b8cdd44e3951b3b89f8516 --- /dev/null +++ b/Data/2_Figures/1_Task/1_CNMc.pdf_tex @@ -0,0 +1,64 @@ +%% Creator: Inkscape 1.1.1 (3bf5ae0, 2021-09-20), www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file '1_CNMc.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{390.56629299bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.206667)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{1_CNMc.pdf}}% + \put(0.1191066,0.12649743){\color[rgb]{0,0,0}\makebox(0,0)[t]{\lineheight{0}\smash{\begin{tabular}[t]{c}data of dynamical \\systems\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{1_CNMc.pdf}}% + \put(0.62094431,0.18590992){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}predicted trajectories\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=3]{1_CNMc.pdf}}% + \put(0.6177457,0.03178386){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}accuracy mesaurements\end{tabular}}}}% + \put(0.25913988,0.14946513){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l} \hspace{2cm} CNMc \vspace{0.4cm}\\ \hspace{1cm} \textbf{C}ontrol-oriented \vspace{0.25cm}\\\hspace{1.4cm}\textbf{C}luster based \vspace{0.25cm}\\\hspace{1cm} \textbf{N}etwork \textbf{M}odeling \end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/Data/2_Figures/1_Task/1_CNMc.svd.pdf_tex b/Data/2_Figures/1_Task/1_CNMc.svd.pdf_tex new file mode 100644 index 0000000000000000000000000000000000000000..9fa8c22c455633e9c80360209b641a99bdaace0c --- /dev/null +++ b/Data/2_Figures/1_Task/1_CNMc.svd.pdf_tex @@ -0,0 +1,64 @@ +%% Creator: Inkscape 1.1.1 (3bf5ae0, 2021-09-20), www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file '1_CNMc.svd.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{390.56629299bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.206667)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{1_CNMc.svd.pdf}}% + \put(0.1191066,0.12649743){\color[rgb]{0,0,0}\makebox(0,0)[t]{\lineheight{0}\smash{\begin{tabular}[t]{c}data of dynamical \\systems\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{1_CNMc.svd.pdf}}% + \put(0.62094431,0.18590992){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}predicted trajectories\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=3]{1_CNMc.svd.pdf}}% + \put(0.6177457,0.03178386){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}accuracy mesaurements\end{tabular}}}}% + \put(0.25913988,0.14946513){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l} \hspace{2cm} CNMc \vspace{0.4cm}\\ \hspace{1cm} \textbf{C}ontrol-oriented \vspace{0.25cm}\\\hspace{1.4cm}\textbf{C}luster based \vspace{0.25cm}\\\hspace{1cm} \textbf{N}etwork \textbf{M}odeling \end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/Data/2_Figures/1_Task/Backup/1_CNMc.pdf_tex b/Data/2_Figures/1_Task/Backup/1_CNMc.pdf_tex new file mode 100644 index 0000000000000000000000000000000000000000..264019ce6eb9b6380d6d621b01ca0d82264d6189 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/1_CNMc.pdf_tex @@ -0,0 +1,64 @@ +%% Creator: Inkscape 1.1.1 (3bf5ae0, 2021-09-20), www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file '1_CNMc.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{404.52154367bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.19953737)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{1_CNMc.pdf}}% + \put(-0.00048947,0.15218788){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}training data $\bm{X}$ \end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{1_CNMc.pdf}}% + \put(-0.00041018,0.07428271){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}model parameter $\beta$ \end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=3]{1_CNMc.pdf}}% + \put(0.63116912,0.10435806){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}prediction model $\hat{P}$ \end{tabular}}}}% + \put(0.28469819,0.14430886){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l} \hspace{1.5cm} CNMc \vspace{0.4cm}\\ \hspace{1cm} \textbf{C}ontrol-oriented \vspace{0.25cm}\\\hspace{1.25cm}\textbf{C}luster based \vspace{0.25cm}\\\hspace{1cm} \textbf{N}etwork \textbf{M}odeling \end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/Data/2_Figures/1_Task/Backup/1_Missioninformer.pdf_tex b/Data/2_Figures/1_Task/Backup/1_Missioninformer.pdf_tex new file mode 100644 index 0000000000000000000000000000000000000000..158b11cade3e1526f44fabbf5b47e35cd82353d7 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/1_Missioninformer.pdf_tex @@ -0,0 +1,65 @@ +%% Creator: Inkscape 1.1 (c4e8f9e, 2021-05-24), www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file '1_Missioninformer.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{364.92483989bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.16274847)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{1_Missioninformer.pdf}}% + \put(0.33105899,0.07013677){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Missioninformer\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{1_Missioninformer.pdf}}% + \put(-0.00066314,0.14098503){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Missioninput\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=3]{1_Missioninformer.pdf}}% + \put(0.70890721,0.14053291){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Fuel burnt\end{tabular}}}}% + \put(-0.00087415,0.00045215){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}Database\end{tabular}}}}% + \put(0.70890722,0.00611908){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}Fuel burnt gradients\end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/Data/2_Figures/1_Task/Backup/2_CNMc_Prediction.pdf_tex b/Data/2_Figures/1_Task/Backup/2_CNMc_Prediction.pdf_tex new file mode 100644 index 0000000000000000000000000000000000000000..51125106a39d500f20c744b0b26e432e908cbd00 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/2_CNMc_Prediction.pdf_tex @@ -0,0 +1,62 @@ +%% Creator: Inkscape 1.1.1 (3bf5ae0, 2021-09-20), www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file '2_CNMc_Prediction.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{404.68746933bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.19945556)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{2_CNMc_Prediction.pdf}}% + \put(0,0.14403963){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l} desired model \vspace{0.25cm}\\ parameter $\beta_d$ \end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{2_CNMc_Prediction.pdf}}% + \put(0.63132034,0.10431527){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}predicted results $\tilde{P}$ \end{tabular}}}}% + \put(0.28499147,0.14424969){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l} \hspace{1.5cm} CNMc \vspace{0.4cm}\\ \hspace{1cm} \textbf{C}ontrol-oriented \vspace{0.25cm}\\\hspace{1.25cm}\textbf{C}luster based \vspace{0.25cm}\\\hspace{1cm} \textbf{N}etwork \textbf{M}odeling \end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/Data/2_Figures/1_Task/Backup/2_LoD.pdf_tex b/Data/2_Figures/1_Task/Backup/2_LoD.pdf_tex new file mode 100644 index 0000000000000000000000000000000000000000..5bf463e216ba36d6283893ef8fad8df5f3597b10 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/2_LoD.pdf_tex @@ -0,0 +1,65 @@ +%% Creator: Inkscape 1.1 (c4e8f9e, 2021-05-24), www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file '2_LoD.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \newcommand*\fsize{\dimexpr\f@size pt\relax}% + \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{406.73589407bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.15126512)% + \lineheight{1}% + \setlength\tabcolsep{0pt}% + \put(0,0){\includegraphics[width=\unitlength,page=1]{2_LoD.pdf}}% + \put(0.2507913,0.06603709){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Interpolation-Generator\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=2]{2_LoD.pdf}}% + \put(-0.00059498,0.12960239){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$Ma, h, mass$\end{tabular}}}}% + \put(0,0){\includegraphics[width=\unitlength,page=3]{2_LoD.pdf}}% + \put(0.63603399,0.12919675){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Interpolationmodel\\\\\end{tabular}}}}% + \put(-0.00078429,0.0035158){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}$LoD$\end{tabular}}}}% + \put(0.82756372,0.06704591){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{0}\smash{\begin{tabular}[t]{l}$\tilde{LoD}$\end{tabular}}}}% + \end{picture}% +\endgroup% diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.aux b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.aux new file mode 100644 index 0000000000000000000000000000000000000000..f23e54680b733bda6c050da350d99bdea7fb9933 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.aux @@ -0,0 +1 @@ +\relax diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.fdb_latexmk b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.fdb_latexmk new file mode 100644 index 0000000000000000000000000000000000000000..00768db8abafb9289731b07e0d4e336236f29f2d --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.fdb_latexmk @@ -0,0 +1,148 @@ +# Fdb version 3 +["pdflatex"] 1650287996 "/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tex" "/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.pdf" "3_Miss_Workflow" 1650288028 + "/etc/texmf/web2c/texmf.cnf" 1608579973 475 c0e671620eb5563b2130f56340a5fde8 "" + "/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles.tex" 1616075288 4164 1d7431f2da162c935b7b8431144518ae "" + "/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux" 1650287997 8 a94a2480d3289e625eea47cd1b285758 "" + "/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tex" 1648987947 758 53870ef1df8e027e13559dfb515ee5d1 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm" 1136768653 1316 b636689f1933f24d1294acdf6041daaa "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss8.tfm" 1136768653 1296 d77f431d10d47c8ea2cc18cf45346274 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssi10.tfm" 1136768653 1520 ca2bb4b78ac9800bd686e30c6d19ef95 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssi8.tfm" 1136768653 1500 7f49257eca65a87057f17452e9fe3ef5 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb" 1248133631 24457 5cbb7bdf209d5d1ce9892a9b80a307cc "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssi10.pfb" 1248133631 25150 e0d09798d232ab9d00c5c0a8df6cc22d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssi8.pfb" 1248133631 25168 33771b85f45c82138dd7745db7092d1c "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1573336935 6902 30fdaf7dc5636b8e3afa306210c45cae "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty" 1572645307 1057 525c2192b5febbd8c1f662c9468335bb "" + "/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1576624883 18552 1e1cc7b75da0dfaacce7cdcb27d306bf "" + "/usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty" 1466003200 5870 5c4dd54f0f0c0983167985107b28c800 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1557692582 992 fb3cda354707a54fda62787a411c7c22 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1546728038 43820 bc6cf5aa959817914ace33f5c6232161 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1557692582 19324 c9a64402f22bd8d81821141a357af653 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1546728038 6038 d639d02574be9a72f3c602c2a3510e02 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1546728038 6948 284bbe3c9a7ca0a826c1c03895e69b9f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1546728038 4883 a6f3eb1f71d8c4affaf43a169828b043 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1546728038 2544 3b1b198fd49f01e328adc9162a07b213 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1576793519 44189 1fd6229dad4c898883516c032f2ca5d2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1546728038 17311 3092579be20ef0f229c42ad3f09da85c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1546728038 21302 d6c4b340248adbe650ebf6ca76bdccca "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1562964315 9690 7585efa5a591822837f837bc5bc35621 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1576793519 33335 942ccafe284041918d36e54696b98aa7 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1546728038 2965 502761b60f43ab2de5ecb2f4625163ae "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex" 1546728038 5196 f8c5c775d4d6e2cb050392127cabda72 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1576793519 20726 ed6ec1d6f0f35e7a93de4e79af83dbce "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1557692582 35249 144a6b9c4df4644618bb3a0a40472608 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1546728038 21989 266e83c51fe41eb8b8d5e6896dc71cc1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1546728038 8842 5cc856e132fac404805c6da091779283 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex" 1546728038 319 8fc6edce901e074ba09de320a8fc686b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex" 1546728038 6810 9562573689b2943dc161b16e6637a913 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex" 1546728038 1179 bb12be2a349da04542eb1820d6ef2546 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex" 1546728038 3937 20cd45386ca23052ce976464f0ada984 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex" 1546728038 981 26c7891417089814cf93d1b7140ec047 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex" 1546728038 2889 cc480f49ed20c2fcdee5258286919df6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex" 1546728038 339 153f95b6d1982135aac9ba139d8a4870 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex" 1546728038 329 b7a8d335163f5b4dbd019ac579f101d8 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1576793519 11544 2a5d66a3270abf4ef673e8a0b7734a90 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1576967981 187592 7922ceab1864698dec4c84978d5b182f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex" 1546728038 31874 d843d507175f2bdfa3abf01f0349dac8 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex" 1546728038 2563 97c355d55617296f2e7ef7030bada827 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1546728038 32995 a4d54c043ae5274ceaaddeb36ad43a6f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex" 1546728038 160992 a39094cdc3a2bf5a131b9fd00f9002aa "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex" 1546728038 46241 d4ce0f60786a8555b975b7d1ddfb331c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex" 1557692582 3063 8c415c68a0f3394e45cfeca0b65f6ee6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1557692582 521 c70cf6ad609de83a27ee7929eb356332 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1557692582 13391 933cab19c6d27039dbfc487330d1005a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1557692582 104938 15f2d8bdabd6bf9ca70f62cd8e3d4940 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1557692582 10157 218d58ab074e5bd0d027de45ec64cc00 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1576793519 28176 568b081ec39645f2db1a29fbd0c635e2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1562964315 9054 388d21239a1b6df2cc8beaae31c976b0 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1557692582 3865 cddf7ddc80f018587c55afdcc79fc333 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1557692582 3177 27d85c44fbfe09ff3b2cf2879e3ea434 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1557692582 10925 df50b8a6e5660a585e3a2bf55726dcc8 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1562964315 7787 1750fc3f164703caf31fc8ea9218c67e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1557692582 3379 cbd0948a550bd7a495a160ca6beee9ed "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1557692582 92405 bba89470858d7b0788a9c09331c39653 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1576793519 36526 453db1f8626a56b5ebb0fad496d6a39f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1576793519 8471 b18959397c76e1e582402ab9f592ed9f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1576793519 21201 46a4dded6619f990ac7347f99fbaac9f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1557692582 16121 9e240115374a8d489f2f786115df83a9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1576793519 43259 3e05ba63539916af2eaca603c2eda780 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex" 1578520427 465 1f401ab1e7fc6cb7ede39e96c66531fd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1557692582 926 70ff613fabeb70f5d1673dc0c93987bd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1557692582 5546 3586827e6032c95512b2a6682d2979a3 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1562964315 12603 c02869ea216d842c29d52fae8738264e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1557692582 60269 e86bc0081af83a4ad47e4500ee09a2e4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1557692582 1896 82c274ff520f9e450ccea4e3ef4edc12 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1557692582 7778 a25a32a10ca820357491d4c7b3ac02ea "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1562964315 23777 cb6c8f02f87d86d621f5cb92c44f4998 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1576793519 36815 f7f1772c398f07af2cb741992963045c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1562964315 37439 bd44d50aef702b03193f731207931834 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1557692582 4494 7e5ace0ccf59408f2cf63219a5d36927 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1557692582 7250 03b2b9fb5fa38e7ca5cc3c45860fb210 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1576793519 28309 488ccc6c701bbdd1bf671f708757aa5c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1562964315 6286 1bd76fc45da9929ab2a64f51cba3ab6f "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1523134290 2211 ca7ce284ab93c8eecdc6029dc5ccbd73 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1523134290 4161 7f6eb9092061a11f87d08ed13515b48d "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1580683321 85660 baee036978c7a91f4e2bba43f05e5945 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1523134290 4116 32e6abd27229755a83a8b7f18e583890 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1523134290 2432 8ff93b1137020e8f21930562a874ae66 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1580683321 20023 e427dd9e17e239bf926ef3aab67fe35e "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1580683321 8446 9874cccac5fee462272c582807dbbf56 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1578002852 41601 9cf6c5257b1bc7af01a58859749dd37a "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1580683321 16932 04729abe63b66ec59ea56edcd722b058 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1580683321 9067 1b996612394a52e1efe89c8bfe8a5892 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 "" + "/usr/share/texlive/texmf-dist/tex/latex/grfext/grfext.sty" 1575499774 7133 b94bbacbee6e4fdccdc7f810b2aec370 "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1575152344 22520 c4c2dab203104295e1e618be7e5c0f5b "" + "/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def" 1580854751 25404 9d60f463a00d154207ec0048dee27cf0 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty" 1177890616 3878 6aa7c08ff2621006e0603349e40a30a8 "" + "/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty" 1574631863 19963 36fd8e818f9f0f32e2db8413d4970122 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1546728038 1090 d20f587ea9464d1841bd0d13d3ff9856 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1288312291 410 5bf12ea7330e5f12c445332a4fe9a263 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1546728038 21013 e98e1aaaf40d31632787c2bd25d24b57 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1546728038 989 2cf3da8e8ec55131c49389428d565e37 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1203877327 339 592cf35cba3d400082b8a9a5d0199d70 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1393459310 306 0796eafca5e159e6ec2167a6d22d81b1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1393459310 443 0b2e781830192df35c0fd357cf13e26e "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1393459310 348 8927fde343487e003b01a4c2ca34073b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1203727794 274 4cad6e665cc93ac2ac979039a94fa1e1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1203877327 325 2bcd023400636339210573e2b3ee298b "" + "/usr/share/texlive/texmf-dist/tex/latex/sfmath/sfmath.sty" 1188837685 16929 0d8105d5b3b8ef96941bdcebf463a715 "" + "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1463002160 55589 34128738f682d033422ca125f82e5d62 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/usr/share/texmf/tex/latex/preview/preview.sty" 1585855387 13744 fd2b9d988939098c13cbd8d581418452 "" + "/usr/share/texmf/tex/latex/preview/prtightpage.def" 1585855387 4841 763a1efd128d3821c07232f7b2638b7b "" + "/usr/share/texmf/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1608582488 4770781 1ed1abab22da9c3e2cc82e4db562318b "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1608582516 8259073 13adf85190395f560aa9c7ad8cae046f "" + "3_Miss_Workflow.aux" 1650287997 8 a94a2480d3289e625eea47cd1b285758 "pdflatex" + "3_Miss_Workflow.tex" 1648987947 758 53870ef1df8e027e13559dfb515ee5d1 "" + "3_Miss_Workflow.tikz" 1648987947 2830 a7ded844a538a36d0a14bdbda539f398 "" + (generated) + "/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.log" + "3_Miss_Workflow.aux" + "/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.pdf" + "3_Miss_Workflow.log" + "3_Miss_Workflow.pdf" diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.fls b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.fls new file mode 100644 index 0000000000000000000000000000000000000000..a69847a7330cd80d6bdd78a22cee01352ba4955f --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.fls @@ -0,0 +1,226 @@ +PWD /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tex +OUTPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.log +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/sfmath/sfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/sfmath/sfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +OUTPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.pdf +INPUT /usr/share/texmf/tex/latex/preview/preview.sty +INPUT /usr/share/texmf/tex/latex/preview/preview.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty +INPUT /usr/share/texmf/tex/latex/preview/prtightpage.def +INPUT /usr/share/texmf/tex/latex/preview/prtightpage.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +INPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux +INPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux +OUTPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/grfext/grfext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/grfext/grfext.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tikz +INPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tikz +INPUT /home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles.tex +INPUT /home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles.tex +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssi10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssi8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssi8.tfm +INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map +INPUT /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssi10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssi8.pfb diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.log b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.log new file mode 100644 index 0000000000000000000000000000000000000000..e7e10a5819b61d25cab278b29a452d95dc9e7890 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.log @@ -0,0 +1,551 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.12.21) 18 APR 2022 15:19 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tex +(/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2019/12/20 v1.4l Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count167 +\c@section=\count168 +\c@subsection=\count169 +\c@subsubsection=\count170 +\c@paragraph=\count171 +\c@subparagraph=\count172 +\c@figure=\count173 +\c@table=\count174 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 +) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) (/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + (/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2019/11/07 v1.0c TeX engine tests +)) +\Gm@cnth=\count175 +\Gm@cntv=\count176 +\c@Gm@tempcnt=\count177 +\Gm@bindingoffset=\dimen135 +\Gm@wd@mp=\dimen136 +\Gm@odd@mp=\dimen137 +\Gm@even@mp=\dimen138 +\Gm@layoutwidth=\dimen139 +\Gm@layoutheight=\dimen140 +\Gm@layouthoffset=\dimen141 +\Gm@layoutvoffset=\dimen142 +\Gm@dimlist=\toks15 +) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\@emptytoks=\toks16 +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2020/01/20 v2.17e AMS math features +\@mathmargin=\skip49 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks17 +\ex@=\dimen143 +)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen144 +) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count178 +LaTeX Info: Redefining \frac on input line 227. +\uproot@=\count179 +\leftroot@=\count180 +LaTeX Info: Redefining \overline on input line 389. +\classnum@=\count181 +\DOTSCASE@=\count182 +LaTeX Info: Redefining \ldots on input line 486. +LaTeX Info: Redefining \dots on input line 489. +LaTeX Info: Redefining \cdots on input line 610. +\Mathstrutbox@=\box45 +\strutbox@=\box46 +\big@size=\dimen145 +LaTeX Font Info: Redeclaring font encoding OML on input line 733. +LaTeX Font Info: Redeclaring font encoding OMS on input line 734. +\macc@depth=\count183 +\c@MaxMatrixCols=\count184 +\dotsspace@=\muskip16 +\c@parentequation=\count185 +\dspbrk@lvl=\count186 +\tag@help=\toks18 +\row@=\count187 +\column@=\count188 +\maxfields@=\count189 +\andhelp@=\toks19 +\eqnshift@=\dimen146 +\alignsep@=\dimen147 +\tagshift@=\dimen148 +\tagwidth@=\dimen149 +\totwidth@=\dimen150 +\lineht@=\dimen151 +\@envbody=\toks20 +\multlinegap=\skip50 +\multlinetaggap=\skip51 +\mathdisplay@stack=\toks21 +LaTeX Info: Redefining \[ on input line 2859. +LaTeX Info: Redefining \] on input line 2860. +) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols +) (/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty (/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks22 +\pgfutil@tempdima=\dimen152 +\pgfutil@tempdimb=\dimen153 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box47 + (/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2020/01/08 v3.1.5b (3.1.5b) +)) +Package: pgf 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) + (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) + (/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. + (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen154 +\Gin@req@width=\dimen155 +) (/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks23 +\pgfkeys@temptoks=\toks24 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +\pgfkeys@tmptoks=\toks25 +)) +\pgf@x=\dimen156 +\pgf@y=\dimen157 +\pgf@xa=\dimen158 +\pgf@ya=\dimen159 +\pgf@xb=\dimen160 +\pgf@yb=\dimen161 +\pgf@xc=\dimen162 +\pgf@yc=\dimen163 +\pgf@xd=\dimen164 +\pgf@yd=\dimen165 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count190 +\c@pgf@countb=\count191 +\c@pgf@countc=\count192 +\c@pgf@countd=\count193 +\t@pgf@toka=\toks26 +\t@pgf@tokb=\toks27 +\t@pgf@tokc=\toks28 +\pgf@sys@id@count=\count194 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2020/01/08 v3.1.5b (3.1.5b) +) +Driver file for pgf: pgfsys-pdftex.def + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +File: pgfsys-common-pdf.def 2020/01/08 v3.1.5b (3.1.5b) +))) (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +File: pgfsyssoftpath.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgfsyssoftpath@smallbuffer@items=\count195 +\pgfsyssoftpath@bigbuffer@items=\count196 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +File: pgfsysprotocol.code.tex 2020/01/08 v3.1.5b (3.1.5b) +)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen166 +\pgfmath@count=\count197 +\pgfmath@box=\box48 +\pgfmath@toks=\toks29 +\pgfmath@stack@operand=\toks30 +\pgfmath@stack@operation=\toks31 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex))) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count198 +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +File: pgfcorepoints.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgf@picminx=\dimen167 +\pgf@picmaxx=\dimen168 +\pgf@picminy=\dimen169 +\pgf@picmaxy=\dimen170 +\pgf@pathminx=\dimen171 +\pgf@pathmaxx=\dimen172 +\pgf@pathminy=\dimen173 +\pgf@pathmaxy=\dimen174 +\pgf@xx=\dimen175 +\pgf@xy=\dimen176 +\pgf@yx=\dimen177 +\pgf@yy=\dimen178 +\pgf@zx=\dimen179 +\pgf@zy=\dimen180 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +File: pgfcorepathconstruct.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgf@path@lastx=\dimen181 +\pgf@path@lasty=\dimen182 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +File: pgfcorepathusage.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgf@shorten@end@additional=\dimen183 +\pgf@shorten@start@additional=\dimen184 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +File: pgfcorescopes.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgfpic=\box49 +\pgf@hbox=\box50 +\pgf@layerbox@main=\box51 +\pgf@picture@serial@count=\count199 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +File: pgfcoregraphicstate.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgflinewidth=\dimen185 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +File: pgfcoretransformations.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgf@pt@x=\dimen186 +\pgf@pt@y=\dimen187 +\pgf@pt@temp=\dimen188 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +File: pgfcoreobjects.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +File: pgfcorepathprocessing.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +File: pgfcorearrows.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgfarrowsep=\dimen189 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgf@max=\dimen190 +\pgf@sys@shading@range@num=\count266 +\pgf@shadingcount=\count267 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +File: pgfcoreexternal.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgfexternal@startupbox=\box52 +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +File: pgfcorelayers.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +File: pgfcoretransparency.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +File: pgfcorepatterns.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2020/01/08 v3.1.5b (3.1.5b) +))) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgfnodeparttextbox=\box53 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +Package: pgfcomp-version-0-65 2020/01/08 v3.1.5b (3.1.5b) +\pgf@nodesepstart=\dimen191 +\pgf@nodesepend=\dimen192 +) (/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +Package: pgfcomp-version-1-18 2020/01/08 v3.1.5b (3.1.5b) +)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +\pgffor@iter=\dimen193 +\pgffor@skip=\dimen194 +\pgffor@stack=\toks32 +\pgffor@toks=\toks33 +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +File: pgflibraryplothandlers.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgf@plot@mark@count=\count268 +\pgfplotmarksize=\dimen195 +) +\tikz@lastx=\dimen196 +\tikz@lasty=\dimen197 +\tikz@lastxsaved=\dimen198 +\tikz@lastysaved=\dimen199 +\tikz@lastmovetox=\dimen256 +\tikz@lastmovetoy=\dimen257 +\tikzleveldistance=\dimen258 +\tikzsiblingdistance=\dimen259 +\tikz@figbox=\box54 +\tikz@figbox@bg=\box55 +\tikz@tempbox=\box56 +\tikz@tempbox@bg=\box57 +\tikztreelevel=\count269 +\tikznumberofchildren=\count270 +\tikznumberofcurrentchild=\count271 +\tikz@fig@count=\count272 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\pgfmatrixcurrentrow=\count273 +\pgfmatrixcurrentcolumn=\count274 +\pgf@matrix@numberofcolumns=\count275 +) +\tikz@expandcount=\count276 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +File: tikzlibrarytopaths.code.tex 2020/01/08 v3.1.5b (3.1.5b) +))) (/usr/share/texlive/texmf-dist/tex/latex/sfmath/sfmath.sty +Package: sfmath 2007/08/27 v0.8 sans serif maths +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/cmss/m/n on input line 329. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 330. +\symSFMath=\mathgroup6 +LaTeX Font Info: Overwriting symbol font `SFMath' in version `normal' +(Font) OT1/cmss/m/sl --> OT1/cmss/m/sl on input line 343. +LaTeX Font Info: Overwriting symbol font `SFMath' in version `bold' +(Font) OT1/cmss/m/sl --> OT1/cmss/bx/n on input line 344. +LaTeX Font Info: Redeclaring math symbol \imath on input line 398. +LaTeX Font Info: Redeclaring math symbol \jmath on input line 399. +\symSFMathUp=\mathgroup7 +LaTeX Font Info: Overwriting symbol font `SFMathUp' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmss/m/n on input line 406. +LaTeX Font Info: Overwriting symbol font `SFMathUp' in version `bold' +(Font) OT1/cmss/m/n --> OT1/cmss/bx/n on input line 407. +LaTeX Font Info: Redeclaring math symbol \ldotp on input line 410. +\symSFMathGreek=\mathgroup8 +LaTeX Font Info: Overwriting symbol font `SFMathGreek' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmss/m/n on input line 419. +LaTeX Font Info: Overwriting symbol font `SFMathGreek' in version `bold' +(Font) OT1/cmss/m/n --> OT1/cmss/bx/n on input line 420. +LaTeX Font Info: Redeclaring math symbol \Gamma on input line 422. +LaTeX Font Info: Redeclaring math symbol \Delta on input line 423. +LaTeX Font Info: Redeclaring math symbol \Theta on input line 424. +LaTeX Font Info: Redeclaring math symbol \Lambda on input line 425. +LaTeX Font Info: Redeclaring math symbol \Xi on input line 426. +LaTeX Font Info: Redeclaring math symbol \Pi on input line 427. +LaTeX Font Info: Redeclaring math symbol \Sigma on input line 428. +LaTeX Font Info: Redeclaring math symbol \Upsilon on input line 429. +LaTeX Font Info: Redeclaring math symbol \Phi on input line 430. +LaTeX Font Info: Redeclaring math symbol \Psi on input line 431. +LaTeX Font Info: Redeclaring math symbol \Omega on input line 432. +\symSFMathUpGreek=\mathgroup9 +LaTeX Font Info: Overwriting symbol font `SFMathUpGreek' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmss/m/n on input line 436. +LaTeX Font Info: Overwriting symbol font `SFMathUpGreek' in version `bold' +(Font) OT1/cmss/m/n --> OT1/cmss/bx/n on input line 437. +LaTeX Font Info: Overwriting math alphabet `\mathnormal' in version `normal' +(Font) OML/cmm/m/it --> OT1/cmss/m/sl on input line 446. +LaTeX Font Info: Overwriting math alphabet `\mathnormal' in version `bold' +(Font) OML/cmm/b/it --> OT1/cmss/bx/n on input line 447. +LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmss/m/n on input line 449. +LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/cmss/bx/n on input line 450. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 452. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 453. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/cmss/m/sl on input line 455. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/cmss/m/sl on input line 456. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmss/m/n on input line 458. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/cmss/bx/n on input line 459. +LaTeX Font Info: Overwriting math alphabet `\mathsl' in version `bold' +(Font) OT1/cmss/m/sl --> OT1/cmss/m/sl on input line 466. +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +File: tikzlibraryarrows.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +File: pgflibraryarrows.code.tex 2020/01/08 v3.1.5b (3.1.5b) +\arrowsize=\dimen260 +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarychains.code.tex +File: tikzlibrarychains.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +File: tikzlibrarypositioning.code.tex 2020/01/08 v3.1.5b (3.1.5b) +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryscopes.code.tex +File: tikzlibraryscopes.code.tex 2020/01/08 v3.1.5b (3.1.5b) +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +File: tikzlibraryshapes.geometric.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +File: pgflibraryshapes.geometric.code.tex 2020/01/08 v3.1.5b (3.1.5b) +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +File: tikzlibraryshapes.misc.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +File: pgflibraryshapes.misc.code.tex 2020/01/08 v3.1.5b (3.1.5b) +)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +File: tikzlibraryshadows.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +File: tikzlibraryfadings.code.tex 2020/01/08 v3.1.5b (3.1.5b) + (/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +File: pgflibraryfadings.code.tex 2020/01/08 v3.1.5b (3.1.5b) +))) (/usr/share/texmf/tex/latex/preview/preview.sty +Package: preview 2017/04/24 11.91 (AUCTeX/preview-latex) + (/usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty +Package: luatex85 2016/06/15 v1.4 pdftex aliases for luatex +) (/usr/share/texmf/tex/latex/preview/prtightpage.def +\PreviewBorder=\dimen261 +) +\pr@snippet=\count277 +\pr@box=\box58 +\pr@output=\toks34 +) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count278 +\l__pdf_internal_box=\box59 +) (/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux) +\openout1 = `3_Miss_Workflow.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(92.14519pt, 430.00462pt, 92.14519pt) +* v-part:(T,H,B)=(95.39737pt, 556.47656pt, 143.09605pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=430.00462pt +* \textheight=556.47656pt +* \oddsidemargin=19.8752pt +* \evensidemargin=19.8752pt +* \topmargin=-13.87262pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=65.0pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +ABD: EveryShipout initializing macros (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count279 +\scratchdimen=\dimen262 +\scratchbox=\box60 +\nofMPsegments=\count280 +\nofMParguments=\count281 +\everyMPshowfont=\toks35 +\MPscratchCnt=\count282 +\MPscratchDim=\dimen263 +\MPnumerator=\count283 +\makeMPintoPDFobject=\count284 +\everyMPtoPDFconversion=\toks36 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf + (/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) (/usr/share/texlive/texmf-dist/tex/latex/grfext/grfext.sty +Package: grfext 2019/12/03 v1.3 Manage graphics extensions (HO) + (/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +)) (/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) + (/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) +) (/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +)) (/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485. +Package grfext Info: Graphics extension search list: +(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPEG,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 504. + (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live +)) +Preview: Fontsize 10pt +Preview: PDFoutput 1 +(/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.tikz (/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles.tex +\pgf@layerbox@data=\box61 +\pgf@layerboxsaved@data=\box62 +\pgf@layerbox@process=\box63 +\pgf@layerboxsaved@process=\box64 +) +LaTeX Font Info: Trying to load font information for U+msa on input line 21. + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 21. + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +Overfull \hbox (260.08519pt too wide) in paragraph at lines 100--100 +[][] + [] + +Preview: Tightpage -327680 -327680 327680 327680 +[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]) (/home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.aux) ) +Here is how much of TeX's memory you used: + 15360 strings out of 481239 + 312930 string characters out of 5920376 + 534896 words of memory out of 5000000 + 30318 multiletter control sequences out of 15000+600000 + 536000 words of font info for 38 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 60i,21n,83p,475b,998s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on /home/jav/Schreibtisch/Uni/27_Master/3_Latex/2_Writing/2_Figures/1_Task/Backup/3_Miss_Workflow.pdf (1 page, 39635 bytes). +PDF statistics: + 51 PDF objects out of 1000 (max. 8388607) + 27 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 109 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.synctex.gz b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.synctex.gz new file mode 100644 index 0000000000000000000000000000000000000000..a6443fe0bf75f7a15655b997b09cdfebac9331bc --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.synctex.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d13aa4c5bf1c5a328f9583cf23e11e51966b1303f22fb6871253ba9dae6dfdb +size 7241 diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.tex b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.tex new file mode 100644 index 0000000000000000000000000000000000000000..ae3a13f9a2d0c7ec2b1052e0afd185a4eaa3ea56 --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"3_Miss_Workflow.tikz"} + +\end{document} diff --git a/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.tikz b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.tikz new file mode 100644 index 0000000000000000000000000000000000000000..72d96f657ae7edc7c1f84fda5d005c18adef1d7d --- /dev/null +++ b/Data/2_Figures/1_Task/Backup/3_Miss_Workflow.tikz @@ -0,0 +1,100 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_mission_Inf) {$\begin{array}{c}mission input, database\end{array}$};& +& +& +& +& +& +\\ +%Row 1 +\node [Function] (mission_Inf) {$\begin{array}{c}\text{missioninformer}\end{array}$};& +\node [DataInter] (mission_Inf-st_interpol) {$\begin{array}{c}$$LoD, AoA, TSFC$$\end{array}$};& +\node [DataInter] (mission_Inf-grad_interpol) {$\begin{array}{c}\frac{LoD}{dp}, \frac{d\alpha}{dp}, \frac{dTSFC}{dp}\end{array}$};& +& +& +& +\\ +%Row 2 +& +\node [Function] (st_interpol) {$\begin{array}{c}\text{state intp. model:} = \tilde{S}\end{array}$};& +& +\node [DataInter] (st_interpol-st_fuel_burn) {$\begin{array}{c} \tilde{S}\end{array}$};& +\node [DataInter] (st_interpol-grad_fuel_burn) {$\begin{array}{c} \tilde{S}\end{array}$};& +& +\\ +%Row 3 +& +& +\node [Function] (grad_interpol) {$\begin{array}{c}\text{grad intp. model:} = \tilde{G}\end{array}$};& +& +\node [DataInter] (grad_interpol-grad_fuel_burn) {$\begin{array}{c}\tilde{G}\end{array}$};& +& +\\ +%Row 4 +& +& +& +\node [ImplicitFunction] (st_fuel_burn) {$\begin{array}{c}\text{fuel burn state} \\ \text{equation}\end{array}$};& +& +& +\node [DataIO] (right_output_st_fuel_burn) {$\begin{array}{c}\text{state fuel burnt}\end{array}$};\\ +%Row 5 +& +& +& +& +\node [ImplicitFunction] (grad_fuel_burn) {$\begin{array}{c}\text{fuel burn gradient} \\ \text{equation}\end{array}$};& +& +\node [DataIO] (right_output_grad_fuel_burn) {$\begin{array}{c}\text{gradients fuel burnt}\end{array}$};\\ +%Row 6 +& +& +& +& +& +& +\\ +}; + +% XDSM process chains + + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(mission_Inf) edge [DataLine] (mission_Inf-st_interpol) +(mission_Inf) edge [DataLine] (mission_Inf-grad_interpol) +(st_interpol) edge [DataLine] (st_interpol-st_fuel_burn) +(st_interpol) edge [DataLine] (st_interpol-grad_fuel_burn) +(grad_interpol) edge [DataLine] (grad_interpol-grad_fuel_burn) +(st_fuel_burn) edge [DataLine] (right_output_st_fuel_burn) +(grad_fuel_burn) edge [DataLine] (right_output_grad_fuel_burn) +% Vertical edges +(mission_Inf-st_interpol) edge [DataLine] (st_interpol) +(mission_Inf-grad_interpol) edge [DataLine] (grad_interpol) +(st_interpol-st_fuel_burn) edge [DataLine] (st_fuel_burn) +(st_interpol-grad_fuel_burn) edge [DataLine] (grad_fuel_burn) +(grad_interpol-grad_fuel_burn) edge [DataLine] (grad_fuel_burn) +(mission_Inf) edge [DataLine] (output_mission_Inf); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/0_Workflow.tex b/Data/2_Figures/2_Task/0_Workflow.tex new file mode 100644 index 0000000000000000000000000000000000000000..959b81da6ef6ef0aeccd1bbfe72c41c6356a11c6 --- /dev/null +++ b/Data/2_Figures/2_Task/0_Workflow.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"0_Workflow.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/0_Workflow.tikz b/Data/2_Figures/2_Task/0_Workflow.tikz new file mode 100644 index 0000000000000000000000000000000000000000..d6e33303f13bfc12e6fdcaea25bb1b32bf637ff8 --- /dev/null +++ b/Data/2_Figures/2_Task/0_Workflow.tikz @@ -0,0 +1,121 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_cnmc) {$\begin{array}{c}\text{settings.py}\end{array}$};& +& +& +& +& +& +& +\\ +%Row 1 +\node [Optimization] (cnmc) {$\begin{array}{c}\text{CNMc}\end{array}$};& +\node [DataInter] (cnmc-data) {$\begin{array}{c}\text{data st}\end{array}$};& +\node [DataInter] (cnmc-clust) {$\begin{array}{c}\text{clustering st}\end{array}$};& +\node [DataInter] (cnmc-track) {$\begin{array}{c}\text{tracking st}\end{array}$};& +\node [DataInter] (cnmc-model) {$\begin{array}{c}\text{modeling st}\end{array}$};& +\node [DataInter] (cnmc-pred) {$\begin{array}{c}\text{prediction st}\end{array}$};& +& +\\ +%Row 2 +\node [DataInter] (data-cnmc) {$\begin{array}{c}\text{Informer,} \\ \text{log file}\end{array}$};& +\node [Function] (data) {$\begin{array}{c}\text{Data Generation}\end{array}$};& +& +& +& +& +& +\node [DataIO] (right_output_data) {$\begin{array}{c}\text{SOP}\end{array}$};\\ +%Row 3 +& +& +\node [Function] (clust) {$\begin{array}{c}\text{Clustering}\end{array}$};& +& +& +& +& +\node [DataIO] (right_output_clust) {$\begin{array}{c}\text{SOP}\end{array}$};\\ +%Row 4 +& +& +& +\node [Function] (track) {$\begin{array}{c}\text{Tracking}\end{array}$};& +& +& +& +\node [DataIO] (right_output_track) {$\begin{array}{c}\text{SOP}\end{array}$};\\ +%Row 5 +& +& +& +& +\node [Function] (model) {$\begin{array}{c}\text{Modeling}\end{array}$};& +& +& +\node [DataIO] (right_output_model) {$\begin{array}{c}\text{SOP}\end{array}$};\\ +%Row 6 +& +& +& +& +& +\node [Function] (pred) {$\begin{array}{c}\text{Prediction}\end{array}$};& +& +\node [DataIO] (right_output_pred) {$\begin{array}{c}\text{SOP}\end{array}$};\\ +%Row 7 +& +& +& +& +& +& +& +\\ +}; + +% XDSM process chains + + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(cnmc) edge [DataLine] (cnmc-data) +(cnmc) edge [DataLine] (cnmc-clust) +(cnmc) edge [DataLine] (cnmc-track) +(cnmc) edge [DataLine] (cnmc-model) +(cnmc) edge [DataLine] (cnmc-pred) +(data) edge [DataLine] (data-cnmc) +(data) edge [DataLine] (right_output_data) +(clust) edge [DataLine] (right_output_clust) +(track) edge [DataLine] (right_output_track) +(model) edge [DataLine] (right_output_model) +(pred) edge [DataLine] (right_output_pred) +% Vertical edges +(cnmc-data) edge [DataLine] (data) +(cnmc-clust) edge [DataLine] (clust) +(cnmc-track) edge [DataLine] (track) +(cnmc-model) edge [DataLine] (model) +(cnmc-pred) edge [DataLine] (pred) +(data-cnmc) edge [DataLine] (cnmc) +(cnmc) edge [DataLine] (output_cnmc); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/1_Data_Gen.tex b/Data/2_Figures/2_Task/1_Data_Gen.tex new file mode 100644 index 0000000000000000000000000000000000000000..01b3bc28c11f9379f1c5ad53ab83197ced524a3f --- /dev/null +++ b/Data/2_Figures/2_Task/1_Data_Gen.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.1. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"1_Data_Gen.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/1_Data_Gen.tikz b/Data/2_Figures/2_Task/1_Data_Gen.tikz new file mode 100644 index 0000000000000000000000000000000000000000..8e17ba4abdec21f7f4d1951b05945138a7c37052 --- /dev/null +++ b/Data/2_Figures/2_Task/1_Data_Gen.tikz @@ -0,0 +1,60 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/Python_Virt/virt_Py3.9/lib/python3.9/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_data) {$\begin{array}{c}\text{data settings}\end{array}$};& +& +& +\\ +%Row 1 +\node [Function] (data) {$\begin{array}{c}\text{Data Generation}\end{array}$};& +\node [DataInter] (data-ode) {$\begin{array}{c}\text{model information,} \\ $$\vec{\beta}$$\end{array}$};& +& +\\ +%Row 2 +& +\node [Function,stack] (ode) {$\begin{array}{c}$$ODE(\vec{\beta})$$\end{array}$};& +& +\node [DataIO] (right_output_ode) {$\begin{array}{c}\text{save: trajectories,} \\ \text{plots}\end{array}$};\\ +%Row 3 +& +& +& +\\ +}; + +% XDSM process chains +{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (data); +\chainin (ode) [join=by ProcessHVA]; +\end{pgfonlayer} +} + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(data) edge [DataLine] (data-ode) +(ode) edge [DataLine] (right_output_ode) +% Vertical edges +(data-ode) edge [DataLine] (ode) +(data) edge [DataLine] (output_data); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/1_Tracking/3_Track.tex b/Data/2_Figures/2_Task/1_Tracking/3_Track.tex new file mode 100644 index 0000000000000000000000000000000000000000..ae8adb3e43a5b3e1f9415a6b978179131502d423 --- /dev/null +++ b/Data/2_Figures/2_Task/1_Tracking/3_Track.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"3_Track.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/1_Tracking/3_Track.tikz b/Data/2_Figures/2_Task/1_Tracking/3_Track.tikz new file mode 100644 index 0000000000000000000000000000000000000000..993b619bf5598f04cd9dfbc674f099ddaff43f96 --- /dev/null +++ b/Data/2_Figures/2_Task/1_Tracking/3_Track.tikz @@ -0,0 +1,146 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_track) {$\begin{array}{c}\text{tracking settings}\end{array}$};& +& +& +& +& +& +& +& +\\ +%Row 1 +\node [Function] (track) {$\begin{array}{c}\text{Tracking}\end{array}$};& +\node [DataInter] (track-ordering) {$\begin{array}{c}\text{clustered data}$$(\vec{\beta}),$$ \\ \text{ordering settings}\end{array}$};& +& +& +& +& +& +& +\\ +%Row 2 +& +\node [Function,stack] (ordering) {$\begin{array}{c}\text{ordering}$$\,(\vec{\beta})$$\end{array}$};& +\node [DataInter] (ordering-cost_A) {$\begin{array}{c}\text{ord}$$_O\,(\vec{\beta})$$ \end{array}$};& +& +& +& +& +& +\node [DataIO] (right_output_ordering) {$\begin{array}{c}\text{save: trajectories,} \\ \text{plots}\end{array}$};\\ +%Row 3 +& +& +\node [Function] (cost_A) {$\begin{array}{c}\text{calc. } $$A\, (\vec{\beta})$$\end{array}$};& +\node [DataInter] (cost_A-path) {$\begin{array}{c}$$A\,(\vec{\beta})$$ \end{array}$};& +& +& +& +& +\\ +%Row 4 +& +& +& +\node [Function] (path) {$\begin{array}{c}\text{best path} $$\,(\vec{\beta})$$\end{array}$};& +\node [DataInter] (path-validity) {$\begin{array}{c}\text{path}$$_O\,(\vec{\beta})$$ \end{array}$};& +& +& +& +\\ +%Row 5 +& +& +& +& +\node [Function] (validity) {$\begin{array}{c}\text{validity} \\ \text{check}\end{array}$};& +\node [DataInter] (validity-final) {$\begin{array}{c}\text{outcome} \end{array}$};& +& +& +\\ +%Row 6 +& +& +& +& +& +\node [Function] (final) {$\begin{array}{c}\text{truncate,} \\ \text{final path}\end{array}$};& +\node [DataInter] (final-transform) {$\begin{array}{c}\text{final path}$$_O$$ \end{array}$};& +& +\\ +%Row 7 +& +& +& +& +& +& +\node [Function,stack] (transform) {$\begin{array}{c}\text{transform}\end{array}$};& +& +\node [DataIO] (right_output_transform) {$\begin{array}{c}\text{save: trajectories,} \\ \text{plots}\end{array}$};\\ +%Row 8 +& +& +& +& +& +& +& +& +\\ +}; + +% XDSM process chains +{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (track); +\chainin (ordering) [join=by ProcessHVA]; +\chainin (cost_A) [join=by ProcessHVA]; +\chainin (path) [join=by ProcessHVA]; +\chainin (validity) [join=by ProcessHVA]; +\chainin (final) [join=by ProcessHVA]; +\chainin (transform) [join=by ProcessHVA]; +\end{pgfonlayer} +} + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(track) edge [DataLine] (track-ordering) +(ordering) edge [DataLine] (ordering-cost_A) +(cost_A) edge [DataLine] (cost_A-path) +(path) edge [DataLine] (path-validity) +(validity) edge [DataLine] (validity-final) +(final) edge [DataLine] (final-transform) +(ordering) edge [DataLine] (right_output_ordering) +(transform) edge [DataLine] (right_output_transform) +% Vertical edges +(track-ordering) edge [DataLine] (ordering) +(ordering-cost_A) edge [DataLine] (cost_A) +(cost_A-path) edge [DataLine] (path) +(path-validity) edge [DataLine] (validity) +(validity-final) edge [DataLine] (final) +(final-transform) edge [DataLine] (transform) +(track) edge [DataLine] (output_track); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/2_Modeling/0_Modeling.tex b/Data/2_Figures/2_Task/2_Modeling/0_Modeling.tex new file mode 100644 index 0000000000000000000000000000000000000000..36365a0016f462c786b61697c79e0c40e9257bfb --- /dev/null +++ b/Data/2_Figures/2_Task/2_Modeling/0_Modeling.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"0_Modeling.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/2_Modeling/0_Modeling.tikz b/Data/2_Figures/2_Task/2_Modeling/0_Modeling.tikz new file mode 100644 index 0000000000000000000000000000000000000000..3205097df5ade2b913be6690ac16a54889de1288 --- /dev/null +++ b/Data/2_Figures/2_Task/2_Modeling/0_Modeling.tikz @@ -0,0 +1,78 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_data) {$\begin{array}{c}\text{modelling settings}\end{array}$};& +& +& +& +\\ +%Row 1 +\node [Function] (data) {$\begin{array}{c}\text{Modeling}\end{array}$};& +\node [DataInter] (data-ode) {$\begin{array}{c}\text{CPE settings,} \\ \text{tracked state}$$\,(\beta)$$\end{array}$};& +\node [DataInter] (data-qt) {$\begin{array}{c}$$\boldsymbol{Q} / \boldsymbol{T}$$\text{ settings,} \\ \text{tracked state}$$\,(\beta)$$\end{array}$};& +& +\\ +%Row 2 +& +\node [Function,stack] (ode) {$\begin{array}{c}\text{Model} \\ \text{CPE}$$\,(\beta)$$\end{array}$};& +& +& +\node [DataIO] (right_output_ode) {$\begin{array}{c}\text{save: CPE}$$\,(\beta)$$ \\ \text{plots}\end{array}$};\\ +%Row 3 +& +& +\node [Function,stack] (qt) {$\begin{array}{c}\text{Model} \\ $$\boldsymbol{Q} / \boldsymbol{T} \,(\beta)$$\end{array}$};& +& +\node [DataIO] (right_output_qt) {$\begin{array}{c}\text{save:}$$ \boldsymbol{Q} / \boldsymbol{T} \,(\beta)$$ \\ \text{plots}\end{array}$};\\ +%Row 4 +& +& +& +& +\\ +}; + +% XDSM process chains +{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (data); +\chainin (ode) [join=by ProcessHVA]; +\end{pgfonlayer} +}{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (data); +\chainin (qt) [join=by ProcessHVA]; +\end{pgfonlayer} +} + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(data) edge [DataLine] (data-ode) +(data) edge [DataLine] (data-qt) +(ode) edge [DataLine] (right_output_ode) +(qt) edge [DataLine] (right_output_qt) +% Vertical edges +(data-ode) edge [DataLine] (ode) +(data-qt) edge [DataLine] (qt) +(data) edge [DataLine] (output_data); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/2_Modeling/1_Pos_Mod.tex b/Data/2_Figures/2_Task/2_Modeling/1_Pos_Mod.tex new file mode 100644 index 0000000000000000000000000000000000000000..cc28cb061af480faeda2ba468641ed26af24a28a --- /dev/null +++ b/Data/2_Figures/2_Task/2_Modeling/1_Pos_Mod.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"1_Pos_Mod.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/2_Modeling/1_Pos_Mod.tikz b/Data/2_Figures/2_Task/2_Modeling/1_Pos_Mod.tikz new file mode 100644 index 0000000000000000000000000000000000000000..402c467c9621d8fb1145735c74ddecef10a6746f --- /dev/null +++ b/Data/2_Figures/2_Task/2_Modeling/1_Pos_Mod.tikz @@ -0,0 +1,131 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_theta) {$\begin{array}{c}\text{tracked state}$$\,(\vec{\beta})$$\end{array}$};& +& +& +& +& +& +\\ +%Row 1 +\node [Function] (theta) {$\begin{array}{c}$$ \boldsymbol \theta \, (\vec{\beta}) $$\end{array}$};& +\node [DataInter] (theta-linear) {$\begin{array}{c}$$ \boldsymbol \theta \, (\vec{\beta}) $$\end{array}$};& +\node [DataInter] (theta-pysindy) {$\begin{array}{c}$$ \boldsymbol \theta \, (\vec{\beta}) $$\end{array}$};& +\node [DataInter] (theta-elastic) {$\begin{array}{c}$$ \boldsymbol \theta \, (\vec{\beta}) $$\end{array}$};& +& +& +\\ +%Row 2 +& +\node [Function] (linear) {$\begin{array}{c}\text{Linear}\end{array}$};& +& +& +\node [DataInter] (linear-comp) {$\begin{array}{c}$$ md_{lin} $$\end{array}$};& +& +\\ +%Row 3 +& +& +\node [Function] (pysindy) {$\begin{array}{c}\text{pySindy}\end{array}$};& +& +\node [DataInter] (pysindy-comp) {$\begin{array}{c}$$ md_{pysind} $$\end{array}$};& +& +\\ +%Row 4 +& +& +& +\node [Function] (elastic) {$\begin{array}{c}\text{Elastic net}\end{array}$};& +\node [DataInter] (elastic-comp) {$\begin{array}{c}$$ md_{elast} $$\end{array}$};& +& +\\ +%Row 5 +& +& +& +& +\node [Function] (comp) {$\begin{array}{c}\text{compare}\end{array}$};& +& +\node [DataIO] (right_output_comp) {$\begin{array}{c}\text{save: best modesl}\end{array}$};\\ +%Row 6 +& +& +& +& +& +& +\\ +}; + +% XDSM process chains +{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (theta); +\chainin (linear) [join=by ProcessHVA]; +\end{pgfonlayer} +}{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (theta); +\chainin (pysindy) [join=by ProcessHVA]; +\end{pgfonlayer} +}{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (theta); +\chainin (elastic) [join=by ProcessHVA]; +\end{pgfonlayer} +}{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (elastic); +\chainin (comp) [join=by ProcessHVA]; +\end{pgfonlayer} +}{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (linear); +\chainin (comp) [join=by ProcessHVA]; +\end{pgfonlayer} +}{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (pysindy); +\chainin (comp) [join=by ProcessHVA]; +\end{pgfonlayer} +} + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(theta) edge [DataLine] (theta-linear) +(theta) edge [DataLine] (theta-pysindy) +(theta) edge [DataLine] (theta-elastic) +(linear) edge [DataLine] (linear-comp) +(pysindy) edge [DataLine] (pysindy-comp) +(elastic) edge [DataLine] (elastic-comp) +(comp) edge [DataLine] (right_output_comp) +% Vertical edges +(theta-linear) edge [DataLine] (linear) +(theta-pysindy) edge [DataLine] (pysindy) +(theta-elastic) edge [DataLine] (elastic) +(linear-comp) edge [DataLine] (comp) +(pysindy-comp) edge [DataLine] (comp) +(elastic-comp) edge [DataLine] (comp) +(theta) edge [DataLine] (output_theta); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/2_Modeling/2_QT_Mod.tex b/Data/2_Figures/2_Task/2_Modeling/2_QT_Mod.tex new file mode 100644 index 0000000000000000000000000000000000000000..ad94c4260cc540cda170ceefbb2469881e5bfb2f --- /dev/null +++ b/Data/2_Figures/2_Task/2_Modeling/2_QT_Mod.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"2_QT_Mod.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/2_Modeling/2_QT_Mod.tikz b/Data/2_Figures/2_Task/2_Modeling/2_QT_Mod.tikz new file mode 100644 index 0000000000000000000000000000000000000000..11a8df1f952bf62105ea18820148203cac9571a7 --- /dev/null +++ b/Data/2_Figures/2_Task/2_Modeling/2_QT_Mod.tikz @@ -0,0 +1,107 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_cnm) {$\begin{array}{c}\text{tracked state}$$\,(\beta)$$\end{array}$};& +& +& +& +& +& +\\ +%Row 1 +\node [Function,stack] (cnm) {$\begin{array}{c}\text{CNM}$$ \, (\beta) $$\end{array}$};& +\node [DataInter] (cnm-transform) {$\begin{array}{c}\text{dicts: }$$ \boldsymbol{Q} / \boldsymbol{T} \, (\beta) $$ \end{array}$};& +& +& +& +& +\node [DataIO] (right_output_cnm) {$\begin{array}{c}\text{save}\end{array}$};\\ +%Row 2 +& +\node [Function,stack] (transform) {$\begin{array}{c}\text{transform}\end{array}$};& +\node [DataInter] (transform-stack) {$\begin{array}{c}$$ \boldsymbol{Q} / \boldsymbol{T} \, (\beta) $$\end{array}$};& +& +& +& +\\ +%Row 3 +& +& +\node [Function] (stack) {$\begin{array}{c}\text{stacking}\end{array}$};& +\node [DataInter] (stack-decomp) {$\begin{array}{c}$$\boldsymbol{Q} / \boldsymbol{T}_{stack} \, (\beta) $$\end{array}$};& +& +& +\\ +%Row 4 +& +& +& +\node [Function] (decomp) {$\begin{array}{c}\text{decomposition}\end{array}$};& +\node [DataInter] (decomp-regr) {$\begin{array}{c}\text{modes}\end{array}$};& +& +\node [DataIO] (right_output_decomp) {$\begin{array}{c}\text{save, plots}\end{array}$};\\ +%Row 5 +& +& +& +& +\node [Function,stack] (regr) {$\begin{array}{c}\text{regression}\end{array}$};& +& +\node [DataIO] (right_output_regr) {$\begin{array}{c}\text{save, plots}\end{array}$};\\ +%Row 6 +& +& +& +& +& +& +\\ +}; + +% XDSM process chains +{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (cnm); +\chainin (transform) [join=by ProcessHVA]; +\chainin (stack) [join=by ProcessHVA]; +\chainin (decomp) [join=by ProcessHVA]; +\chainin (regr) [join=by ProcessHVA]; +\end{pgfonlayer} +} + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(cnm) edge [DataLine] (cnm-transform) +(transform) edge [DataLine] (transform-stack) +(stack) edge [DataLine] (stack-decomp) +(decomp) edge [DataLine] (decomp-regr) +(cnm) edge [DataLine] (right_output_cnm) +(decomp) edge [DataLine] (right_output_decomp) +(regr) edge [DataLine] (right_output_regr) +% Vertical edges +(cnm-transform) edge [DataLine] (transform) +(transform-stack) edge [DataLine] (stack) +(stack-decomp) edge [DataLine] (decomp) +(decomp-regr) edge [DataLine] (regr) +(cnm) edge [DataLine] (output_cnm); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/2_Figures/2_Task/9_Clust.tex b/Data/2_Figures/2_Task/9_Clust.tex new file mode 100644 index 0000000000000000000000000000000000000000..90e9b04d61aa90d687015dde092c2d75994d6c94 --- /dev/null +++ b/Data/2_Figures/2_Task/9_Clust.tex @@ -0,0 +1,27 @@ + +% XDSM diagram created with pyXDSM 2.2.0. +\documentclass{article} +\usepackage{geometry} +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{tikz} + +% Optional packages such as sfmath set through python interface +\usepackage{sfmath} + +% Define the set of TikZ packages to be included in the architecture diagram document +\usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + + +% Set the border around all of the architecture diagrams to be tight to the diagrams themselves +% (i.e. no longer need to tinker with page size parameters) +\usepackage[active,tightpage]{preview} +\PreviewEnvironment{tikzpicture} +\setlength{\PreviewBorder}{5pt} + +\begin{document} + +\input{"9_Clust.tikz"} + +\end{document} diff --git a/Data/2_Figures/2_Task/9_Clust.tikz b/Data/2_Figures/2_Task/9_Clust.tikz new file mode 100644 index 0000000000000000000000000000000000000000..10a034ce423659ee21e435f01e586b2efa8dcea4 --- /dev/null +++ b/Data/2_Figures/2_Task/9_Clust.tikz @@ -0,0 +1,60 @@ + +%%% Preamble Requirements %%% +% \usepackage{geometry} +% \usepackage{amsfonts} +% \usepackage{amsmath} +% \usepackage{amssymb} +% \usepackage{tikz} + +% Optional packages such as sfmath set through python interface +% \usepackage{sfmath} + +% \usetikzlibrary{arrows,chains,positioning,scopes,shapes.geometric,shapes.misc,shadows} + +%%% End Preamble Requirements %%% + +\input{"/home/jav/.local/lib/python3.8/site-packages/pyxdsm/diagram_styles"} +\begin{tikzpicture} + +\matrix[MatrixSetup]{ +%Row 0 +\node [DataIO] (output_data) {$\begin{array}{c}\text{clustering settings}\end{array}$};& +& +& +\\ +%Row 1 +\node [Function] (data) {$\begin{array}{c}\text{Clustering}\end{array}$};& +\node [DataInter] (data-ode) {$\begin{array}{c}\text{kmeans++ settings,} \\ $$F(\vec{\beta})$$\end{array}$};& +& +\\ +%Row 2 +& +\node [Function,stack] (ode) {$\begin{array}{c}\text{Kmeans++ }$$(\beta)$$\end{array}$};& +& +\node [DataIO] (right_output_ode) {$\begin{array}{c}\text{save: trajectories,} \\ \text{plots}\end{array}$};\\ +%Row 3 +& +& +& +\\ +}; + +% XDSM process chains +{ [start chain=process] + \begin{pgfonlayer}{process} +\chainin (data); +\chainin (ode) [join=by ProcessHVA]; +\end{pgfonlayer} +} + +\begin{pgfonlayer}{data} +\path +% Horizontal edges +(data) edge [DataLine] (data-ode) +(ode) edge [DataLine] (right_output_ode) +% Vertical edges +(data-ode) edge [DataLine] (ode) +(data) edge [DataLine] (output_data); +\end{pgfonlayer} + +\end{tikzpicture} diff --git a/Data/3_Figs_Pyth/get.jpg b/Data/3_Figs_Pyth/get.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf4073415867f1d8bd90de06d27dc85632ea50d8 Binary files /dev/null and b/Data/3_Figs_Pyth/get.jpg differ diff --git a/Data/4_Bib/references.bib b/Data/4_Bib/references.bib new file mode 100644 index 0000000000000000000000000000000000000000..fa41f46286167290d3dea56703e6711f4e68e436 --- /dev/null +++ b/Data/4_Bib/references.bib @@ -0,0 +1,557 @@ +@article{knuth84, + author = {Knuth, Donald E.}, + title = {Literate Programming}, + year = {1984}, + issue_date = {May 1984}, + publisher = {Oxford University Press, Inc.}, + address = {USA}, + volume = {27}, + number = {2}, + issn = {0010-4620}, + url = {https://doi.org/10.1093/comjnl/27.2.97}, + doi = {10.1093/comjnl/27.2.97}, + journal = {Comput. J.}, + month = may, + pages = {97–111}, + numpages = {15} +} + +@MastersThesis{Max2021, + author = {Maximilian Pierzyna}, + school = {TU Braunschweig}, + title = {Control-oriented cluster-basednetwork modeling}, + year = {2021}, + month = aug, + type = {resreport}, +} + +@Article{Fernex2021, + author = {Daniel Fernex and Bernd R. Noack and Richard Semaan}, + journal = {Science Advances}, + title = {Cluster-based network modeling{\textemdash}From snapshots to complex dynamical systems}, + year = {2021}, + month = {jun}, + number = {25}, + volume = {7}, + doi = {10.1126/sciadv.abf5006}, + publisher = {American Association for the Advancement of Science ({AAAS})}, +} + +@Article{Boeing2016, + author = {Geoff Boeing}, + journal = {Systems}, + title = {Visual Analysis of Nonlinear Dynamical Systems: Chaos, Fractals, Self-Similarity and the Limits of Prediction}, + year = {2016}, + month = {nov}, + number = {4}, + pages = {37}, + volume = {4}, + doi = {10.3390/systems4040037}, + publisher = {{MDPI} {AG}}, +} + +@Book{Argyris2017, + author = {John Argyris and Gunter Faust and Maria Haase and Rudolf Friedrich}, + publisher = {Springer Berlin Heidelberg}, + title = {Die Erforschung des Chaos}, + year = {2017}, + note = {Translation conducted by the author of this thesis}, + doi = {10.1007/978-3-662-54546-1}, +} + +@Misc{pysindy_Home, + month = apr, + note = {https://pysindy.readthedocs.io/en/latest/examples/1\_feature\_overview.html - (2022-04-06)}, + title = {pySindy's remark on RK45 vs. LSODA}, + year = {2022}, + timestamp = {2022-04-06}, + url = {https://pysindy.readthedocs.io/en/latest/examples/1_feature_overview.html}, +} + +@Article{Taylor2010, + author = {Taylor, Robert LV}, + journal = {Society for Industrial and Applied Mathematics, Undergraduate Research Online}, + title = {Attractors: Nonstrange to chaotic}, + year = {2010}, + pages = {72--80}, +} + +@Article{Grebogi1984, + author = {Celso Grebogi and Edward Ott and Steven Pelikan and James A. Yorke}, + journal = {Physica D: Nonlinear Phenomena}, + title = {Strange attractors that are not chaotic}, + year = {1984}, + issn = {0167-2789}, + number = {1}, + pages = {261-268}, + volume = {13}, + abstract = {It is shown that in certain types of dynamical systems it is possible to have attractors which are strange but not chaotic. Here we use the word strange to refer to the geometry or shape of the attracting set, while the word chaotic refers to the dynamics of orbits on the attractor (in particular, the exponential divergence of nearby trajectories). We first give examples for which it can be demonstrated that there is a strange nonchaotic attractor. These examples apply to a class of maps which model nonlinear oscillators (continuous time) which are externally driven at two incommensurate frequencies. It is then shown that such attractore are persistent under perturbations which preserve the original system type (i.e., there are two incommensurate external driving frequencies). This suggests that, for systems of the typw which we have considered, nonchaotic strange attractors may be expected to occur for a finite interval of parameter values. On the other hand, when small perturbations which do not preserve the system type are numerically introduced the strange nonchaotic attractor is observed to be converted to a periodic or chaotic orbit. Thus we conjecture that, in general, continuous time systems (“flows”) which are not externally driven at two incommensurate frequencies should not be expected to have strange nonchaotic attractors except possibly on a set of measure zero in the parameter space.}, + doi = {https://doi.org/10.1016/0167-2789(84)90282-3}, + url = {https://www.sciencedirect.com/science/article/pii/0167278984902823}, +} + +@TechReport{Butt2021, + author = {Javed Butt}, + institution = {TU Braunschweig}, + title = {Development of a module for mission analysis for a gradient-based aerodynamic shape optimization process}, + year = {2021}, + month = {September}, + abstract = {The overall goal of this thesis is to calculate the fuel consumption and its gradients with respect to later introduced shape parameters for one or multiple individual flight missions.}, + keywords = {Multidisciplinary Optimization, Navier-Stokes equations, gradients}, + url = {https://elib.dlr.de/144285/}, +} + +@TechReport{Arthur2006, + author = {Arthur, David and Vassilvitskii, Sergei}, + institution = {Stanford}, + title = {k-means++: The advantages of careful seeding}, + year = {2006}, +} + +@Book{Frochte2020, + author = {Jörg Frochte}, + publisher = {Carl Hanser Verlag {GmbH} {\&} Co. {KG}}, + title = {Maschinelles Lernen}, + year = {2020}, + month = apr, + note = {Translation conducted by the author of this thesis}, + doi = {10.3139/9783446463554}, +} + +@Article{Lloyd1982, + author = {Lloyd, Stuart}, + journal = {IEEE transactions on information theory}, + title = {Least squares quantization in PCM}, + year = {1982}, + number = {2}, + pages = {129--137}, + volume = {28}, + publisher = {IEEE}, +} + +@Misc{Sergei_Black_Art, + note = {https://theory.stanford.edu/~sergei/slides/BATS-Means.pdf - 30.11.2021}, + title = {k-means++ visual explanation}, + owner = {Sergei Vassilvitskii}, + url = {https://theory.stanford.edu/~sergei/slides/BATS-Means.pdf}, +} + +@Misc{Sergei_Visual, + note = {https://theory.stanford.edu/~sergei/slides/kdd10-thclust.pdf - 30.11.2021}, + title = {k-means finding set of initial points}, + owner = {Sergei Vassilvitskii}, + url = {https://theory.stanford.edu/~sergei/slides/BATS-Means.pdf}, +} + +@Article{Kaiser2014, + author = {Kaiser, Eurika and Noack, Bernd R and Cordier, Laurent and Spohn, Andreas and Segond, Marc and Abel, Markus and Daviller, Guillaume and {\"O}sth, Jan and Krajnovi{\'c}, Sini{\v{s}}a and Niven, Robert K}, + journal = {Journal of Fluid Mechanics}, + title = {Cluster-based reduced-order modelling of a mixing layer}, + year = {2014}, + pages = {365--414}, + volume = {754}, + publisher = {Cambridge University Press}, +} + +@Article{Brunton2016, + author = {Brunton, Steven L and Proctor, Joshua L and Kutz, J Nathan}, + journal = {IFAC-PapersOnLine}, + title = {Sparse identification of nonlinear dynamics with control (SINDYc)}, + year = {2016}, + number = {18}, + pages = {710--715}, + volume = {49}, + publisher = {Elsevier}, +} + +@Article{Li2021, + author = {Li, Hao and Fernex, Daniel and Semaan, Richard and Tan, Jianguo and Morzy{\'n}ski, Marek and Noack, Bernd R}, + journal = {Journal of Fluid Mechanics}, + title = {Cluster-based network model}, + year = {2021}, + volume = {906}, + publisher = {Cambridge University Press}, +} + +@Article{Lee1999, + author = {Lee, Daniel D and Seung, H Sebastian}, + journal = {Nature}, + title = {Learning the parts of objects by non-negative matrix factorization}, + year = {1999}, + number = {6755}, + pages = {788--791}, + volume = {401}, + publisher = {Nature Publishing Group}, +} + +@Article{Rickles2007, + author = {D. Rickles and P. Hawe and A. Shiell}, + journal = {Journal of Epidemiology {\&} Community Health}, + title = {A simple guide to chaos and complexity}, + year = {2007}, + month = {nov}, + number = {11}, + pages = {933--937}, + volume = {61}, + doi = {10.1136/jech.2006.054254}, + publisher = {{BMJ}}, +} + +@InProceedings{Langer2014, + author = {Stefan Langer and Axel Schw{\"o}ppe and Norbert Kroll}, + booktitle = {52nd Aerospace Sciences Meeting}, + title = {The DLR Flow Solver TAU - Status and Recent Algorithmic Developments}, + year = {2014}, + month = {January}, + abstract = {The only implicit smoothing method implemented in the DLR Flow Solver TAU is the LU-SGS method. It was chosen several years ago because of its low memory requirements and low operation counts. Since in the past for many examples a severe restriction of the CFL number and loss of robustness was observed, it is the goal of this paper to revisit the LU-SGS implementation and to discuss several alternative implicit smoothing strategies used within an agglomeration multigrid for unstructured meshes. Starting point is a full implicit multistage Runge-Kutta method. Based on this method we develop and suggest several additional features and simplifications such that the implicit method is applicable to high Reynolds number viscous flows, that is the required matrices fit into the fast memory of our cluster hardware and the arising linear systems can be approximately solved efficiently. To this end we focus on simplifications of the Jacobian as well as efficient iterative approximate solution methods. To significantly improve the approximate linear solution methods we take care of grid anisotropy for both approximately solving the linear systems and agglomeration strategy. The procedure creating coarse grid meshes is extended by strategies identifying structured parts of the mesh. This seems to improve the quality of coarse grid meshes in the way that an overall better reliability of multigrid can be observed. Furthermore we exploit grid information within the iterative solution methods for the linear systems. Numerical examples demonstrate the gain with respect to reliability and efficiency.}, + keywords = {TAU, LU-SGS, implicit smoothing, implicit multistage Runge-Kutta}, + url = {https://elib.dlr.de/90979/}, +} + +@Online{plotly, + address = {Montreal, QC}, + author = {Plotly Technologies Inc.}, + publisher = {Plotly Technologies Inc.}, + title = {Collaborative data science}, + url = {https://plot.ly}, + year = {2015}, +} + +@Article{harris2020array, + author = {Charles R. Harris and K. Jarrod Millman and St{\'{e}}fan J. van der Walt and Ralf Gommers and Pauli Virtanen and David Cournapeau and Eric Wieser and Julian Taylor and Sebastian Berg and Nathaniel J. Smith and Robert Kern and Matti Picus and Stephan Hoyer and Marten H. van Kerkwijk and Matthew Brett and Allan Haldane and Jaime Fern{\'{a}}ndez del R{\'{i}}o and Mark Wiebe and Pearu Peterson and Pierre G{\'{e}}rard-Marchant and Kevin Sheppard and Tyler Reddy and Warren Weckesser and Hameer Abbasi and Christoph Gohlke and Travis E. Oliphant}, + journal = {Nature}, + title = {Array programming with {NumPy}}, + year = {2020}, + month = sep, + number = {7825}, + pages = {357--362}, + volume = {585}, + doi = {10.1038/s41586-020-2649-2}, + publisher = {Springer Science and Business Media {LLC}}, + url = {https://doi.org/10.1038/s41586-020-2649-2}, +} + +@Article{Hunter:2007, + author = {Hunter, J. D.}, + journal = {Computing in Science \& Engineering}, + title = {Matplotlib: A 2D graphics environment}, + year = {2007}, + number = {3}, + pages = {90--95}, + volume = {9}, + abstract = {Matplotlib is a 2D graphics package used for Python for + application development, interactive scripting, and publication-quality + image generation across user interfaces and operating systems.}, + doi = {10.1109/MCSE.2007.55}, + publisher = {IEEE COMPUTER SOC}, +} + +@article{scikit-learn, + title={Scikit-learn: Machine Learning in {P}ython}, + author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. + and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. + and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and + Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.}, + journal={Journal of Machine Learning Research}, + volume={12}, + pages={2825--2830}, + year={2011} +} + +@Article{2020SciPy-NMeth, + author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and Haberland, Matt and Reddy, Tyler and Cournapeau, David and Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and Bright, Jonathan and {van der Walt}, St{\'e}fan J. and Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and Kern, Robert and Larson, Eric and Carey, C J and Polat, {\.I}lhan and Feng, Yu and Moore, Eric W. and {VanderPlas}, Jake and Laxalde, Denis and Perktold, Josef and Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and Harris, Charles R. and Archibald, Anne M. and Ribeiro, Ant{\^o}nio H. and Pedregosa, Fabian and {van Mulbregt}, Paul and {SciPy 1.0 Contributors}}, + journal = {Nature Methods}, + title = {{{SciPy} 1.0: Fundamental Algorithms for Scientific Computing in Python}}, + year = {2020}, + pages = {261--272}, + volume = {17}, + adsurl = {https://rdcu.be/b08Wh}, + doi = {10.1038/s41592-019-0686-2}, +} + +@Book{VanRossum2009, + author = {Van Rossum, Guido and Drake, Fred L.}, + publisher = {CreateSpace}, + title = {Python 3 Reference Manual}, + year = {2009}, + address = {Scotts Valley, CA}, + isbn = {1441412697}, +} + +@Article{Silva2020, + author = {Brian de Silva and Kathleen Champion and Markus Quade and Jean-Christophe Loiseau and J. Kutz and Steven Brunton}, + journal = {Journal of Open Source Software}, + title = {{PySINDy}: A Python package for the sparse identification of nonlinear dynamical systems from data}, + year = {2020}, + month = {may}, + number = {49}, + pages = {2104}, + volume = {5}, + doi = {10.21105/joss.02104}, + publisher = {The Open Journal}, +} + +@Article{Kaptanoglu2022, + author = {Kaptanoglu, Alan and De Silva, Brian and Fasel, Urban and Kaheman, Kadierdan and Goldschmidt, Andy and Callaham, Jared and Delahunt, Charles and Nicolaou, Zachary and Champion, Kathleen and Loiseau, Jean-Christophe and Kutz, J and Brunton, Steven}, + journal = {Journal of Open Source Software}, + title = {PySINDy: A comprehensive Python package for robust sparse system identification}, + year = {2022}, + month = {1}, + number = {69}, + pages = {3994}, + volume = {7}, + date = {2022-01-29}, + day = {29}, + doi = {10.21105/joss.03994}, + publisher = {The Open Journal}, +} + +@Misc{Wiki_Chaos, + month = nov, + note = {https://en.wikipedia.org/wiki/Chaos\_theory - (29.11.2021)}, + title = {Wikipedia entry on chaos theory}, + year = {2021}, + timestamp = {2021-11-29}, + url = {https://en.wikipedia.org/wiki/Chaos_theory}, +} + +@Misc{Kutz2022, + author = {Prof. J. Nathan Kutz}, + month = apr, + note = {Lecutre Notes of Course}, + title = {AMATH 568Advanced Differential Equations: Asymptotics \& Perturbations}, + year = {2022}, +} + +@Book{Strogatz2019, + author = {Strogatz, Steven}, + publisher = {CRC Press}, + title = {Nonlinear dynamics and chaos : with applications to physics, biology, chemistry, and engineering}, + year = {2019}, + address = {Boca Raton}, + isbn = {9780367092061}, +} + +@Article{lorenz1963deterministic, + author = {Lorenz, Edward N}, + journal = {Journal of atmospheric sciences}, + title = {Deterministic nonperiodic flow}, + year = {1963}, + number = {2}, + pages = {130--141}, + volume = {20}, +} + +@Article{FourWing, + author = {Li, Chunbiao and Pehlivan, Ihsan and Sprott, Julien Clinton and Akgul, Akif}, + journal = {IEICE Electronics Express}, + title = {A novel four-wing strange attractor born in bistablity}, + year = {2015}, + month = {02}, + volume = {12}, + doi = {10.1587/elex.12.20141116}, +} + +@Article{TwoScroll, + author = {Vaidyanathan, Sundarapandian and Sambas, Aceng and Zhang, Sen and Zeng, Yicheng and Mohamed, Mohamad Afendee and Mamat, Mustafa}, + journal = {Telkomnika}, + title = {A new two-scroll chaotic system with two nonlinearities: dynamical analysis and circuit simulation}, + year = {2019}, + number = {5}, + pages = {2465--2474}, + volume = {17}, + publisher = {Ahmad Dahlan University}, +} + +@Article{sprott2020we, + author = {SPROTT, Julien}, + journal = {Chaos Theory and Applications}, + title = {Do we need more chaos examples?}, + year = {2020}, + number = {2}, + pages = {49--51}, + volume = {2}, +} + +@Article{Lambe2012, + author = {Andrew B. Lambe and Joaquim R. R. A. Martins}, + journal = {Structural and Multidisciplinary Optimization}, + title = {Extensions to the Design Structure Matrix for the Description of Multidisciplinary Design, Analysis, and Optimization Processes}, + year = {2012}, + pages = {273-284}, + volume = {46}, + doi = {10.1007/s00158-012-0763-y}, +} + +@Misc{Brunton2019, + author = {Brunton, Steven and Kutz, J}, + month = {1}, + title = {Data-Driven Science and Engineering}, + year = {2019}, + date = {2019-01-31}, + day = {31}, + doi = {10.1017/9781108380690}, + publisher = {Cambridge University Press}, +} + +@Article{gerbrands1981relationships, + author = {Gerbrands, Jan J}, + journal = {Pattern recognition}, + title = {On the relationships between SVD, KLT and PCA}, + year = {1981}, + number = {1-6}, + pages = {375--381}, + volume = {14}, + publisher = {Elsevier}, +} + +@Article{Roessler1976, + author = {O.E. Rössler}, + journal = {Physics Letters A}, + title = {An equation for continuous chaos}, + year = {1976}, + issn = {0375-9601}, + number = {5}, + pages = {397-398}, + volume = {57}, + abstract = {A prototype equation to the Lorenz model of turbulence contains just one (second-order) nonlinearity in one variable. The flow in state space allows for a “folded” Poincaré map (horseshoe map). Many more natural and artificial systems are governed by this type of equation.}, + doi = {https://doi.org/10.1016/0375-9601(76)90101-8}, + url = {https://www.sciencedirect.com/science/article/pii/0375960176901018}, +} + +@Article{Lu2002, + author = {Lu, Jinhu and Chen, Guanrong}, + journal = {I. J. Bifurcation and Chaos}, + title = {A New Chaotic Attractor Coined.}, + year = {2002}, + month = {03}, + pages = {659-661}, + volume = {12}, + doi = {10.1142/S0218127402004620}, +} + +@Article{Chen1999, + author = {Chen, Guanrong and Ueta, Tetsushi}, + journal = {International Journal of Bifurcation and chaos}, + title = {Yet another chaotic attractor}, + year = {1999}, + number = {07}, + pages = {1465--1466}, + volume = {9}, + publisher = {World Scientific}, +} + +@Article{VanderPol, + author = {Devia Narvaez, Diana and Velez, German and Devia Narvaez, Diego}, + journal = {Contemporary Engineering Sciences}, + title = {Bifurcation analysis of the Van der Pol oscillator}, + year = {2018}, + number = {85}, + pages = {4245-4252}, + volume = {11}, + date = {2018}, + doi = {10.12988/ces.2018.88389}, + publisher = {Hikari, Ltd.}, +} + +@Article{SR3, + author = {Zheng, Peng and Askham, Travis and Brunton, Steven L and Kutz, J Nathan and Aravkin, Aleksandr Y}, + journal = {IEEE Access}, + title = {A unified framework for sparse relaxed regularized regression: SR3}, + year = {2018}, + pages = {1404--1423}, + volume = {7}, + publisher = {IEEE}, +} + +@Article{Lasso, + author = {Tibshirani, Robert}, + journal = {Journal of the Royal Statistical Society: Series B (Methodological)}, + title = {Regression shrinkage and selection via the lasso}, + year = {1996}, + number = {1}, + pages = {267--288}, + volume = {58}, + publisher = {Wiley Online Library}, +} + +@Article{protas2015optimal, + author = {Protas, Bartosz and Noack, Bernd R and {\"O}sth, Jan}, + journal = {Journal of Fluid Mechanics}, + title = {Optimal nonlinear eddy viscosity in Galerkin models of turbulent flows}, + year = {2015}, + pages = {337--367}, + volume = {766}, + publisher = {Cambridge University Press}, +} + +@Article{Adaboost, + author = {Ying CAO and Qi-Guang MIAO and Jia-Chen LIU and Lin GAO}, + journal = {Acta Automatica Sinica}, + title = {Advance and Prospects of AdaBoost Algorithm}, + year = {2013}, + issn = {1874-1029}, + number = {6}, + pages = {745-758}, + volume = {39}, + abstract = {AdaBoost is one of the most excellent Boosting algorithms. It has a solid theoretical basis and has made great success in practical applications. AdaBoost can boost a weak learning algorithm with an accuracy slightly better than random guessing into an arbitrarily accurate strong learning algorithm, bringing about a new method and a new design idea to the design of learning algorithm. This paper first introduces how Boosting, just a conjecture when proposed, was proved right, and how this proof led to the origin of AdaBoost algorithm. Second, training and generalization error of AdaBoost are analyzed to explain why AdaBoost can successfully improve the accuracy of a weak learning algorithm. Third, different theoretical models to analyze AdaBoost are given. Meanwhile, many variants derived from these models are presented. Fourth, extensions of binary-class AdaBoost to multiclass AdaBoost are described. Besides, applications of AdaBoost algorithm are also introduced. Finally, interested directions which need to be further studied are discussed. For Boosting theory, these directions include deducing a tighter generalization error bound and finding a more precise weak learning condition in multiclass problem. For AdaBoost, the stopping conditions, the way to enhance anti-noise capability and how to improve the accuracy by optimizing the diversity of the base classifiers, are good questions to be in-depth researched.}, + doi = {https://doi.org/10.1016/S1874-1029(13)60052-X}, + keywords = {Ensemble learning, Boosting, AdaBoost, generalization error, classification margin, multiclass classification}, + url = {https://www.sciencedirect.com/science/article/pii/S187410291360052X}, +} + +@Book{bishop2006pattern, + author = {Bishop, Christopher}, + publisher = {Springer}, + title = {Pattern Recognition and Machine Learning}, + year = {2006}, + month = {January}, + abstract = {This leading textbook provides a comprehensive introduction to the fields of pattern recognition and machine learning. It is aimed at advanced undergraduates or first-year PhD students, as well as researchers and practitioners. No previous knowledge of pattern recognition or machine learning concepts is assumed. This is the first machine learning textbook to include a comprehensive coverage of recent developments such as probabilistic graphical models and deterministic inference methods, and to emphasize a modern Bayesian perspective. It is suitable for courses on machine learning, statistics, computer science, signal processing, computer vision, data mining, and bioinformatics. This hard cover book has 738 pages in full colour, and there are 431 graded exercises. + +Solutions for these exercises and extensive support for course instructors are provided on Christopher Bishop's page. + +Now available to download in full as a PDF.}, + url = {https://www.microsoft.com/en-us/research/publication/pattern-recognition-machine-learning/}, +} + +@InCollection{Rasmussen2004, + author = {Carl Edward Rasmussen}, + booktitle = {Advanced Lectures on Machine Learning}, + publisher = {Springer Berlin Heidelberg}, + title = {Gaussian Processes in Machine Learning}, + year = {2004}, + pages = {63--71}, + doi = {10.1007/978-3-540-28650-9_4}, +} + +@Article{lee_contribution_2021, + author = {Lee, D.S. and Fahey, D.W. and Skowron, A. and Allen, M.R. and Burkhardt, U. and Chen, Q. and Doherty, S.J. and Freeman, S. and Forster, P.M. and Fuglestvedt, J. and Gettelman, A. and De León, R.R. and Lim, L.L. and Lund, M.T. and Millar, R.J. and Owen, B. and Penner, J.E. and Pitari, G. and Prather, M.J. and Sausen, R. and Wilcox, L.J.}, + journal = {Atmospheric Environment}, + title = {The contribution of global aviation to anthropogenic climate forcing for 2000 to 2018}, + year = {2021}, + issn = {13522310}, + month = jan, + pages = {117834}, + volume = {244}, + doi = {10.1016/j.atmosenv.2020.117834}, + file = {Volltext:/home/jav/Zotero/storage/CNSMHQQX/Lee et al. - 2021 - The contribution of global aviation to anthropogen.pdf:application/pdf}, + language = {en}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S1352231020305689}, + urldate = {2021-08-09}, +} + +@InBook{Fernex2021a, + author = {Fernex, Daniel and Semaan, Richard and Noack, Bernd}, + publisher = {American Institute of Aeronautics and Astronautics}, + title = {Generalized Cluster-Based Network Model for an Actuated Turbulent Boundary Layer}, + year = {2021}, + month = {1}, + booktitle = {AIAA Scitech 2021 Forum}, + date = {2021-01-04}, + day = {4}, + doi = {10.2514/6.2021-1333}, +} + +@Comment{jabref-meta: databaseType:bibtex;} + + diff --git a/Data/6_Html_Data/0_Viz/mPV_16.78.html b/Data/6_Html_Data/0_Viz/mPV_16.78.html new file mode 100644 index 0000000000000000000000000000000000000000..f805026ea0089c044cf7de8ec88f570b7c52ff60 --- /dev/null +++ b/Data/6_Html_Data/0_Viz/mPV_16.78.html @@ -0,0 +1,7 @@ + + + +
+
+ + \ No newline at end of file diff --git a/README.md b/README.md index fb34faa510ef3e4a676ee2299bf5caaa8f84d701..0d19dc1ba33a97d920da307f48c51223bb0fedce 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ --- title: Master Thesis -emoji: 🐢 -colorFrom: yellow -colorTo: pink +emoji: 📚 +colorFrom: green +colorTo: gray sdk: static pinned: false --- diff --git a/Usage_Info/info_0 b/Usage_Info/info_0 new file mode 100644 index 0000000000000000000000000000000000000000..9e2ea78986a510346f4203bc1cf3d51d2b9581bd --- /dev/null +++ b/Usage_Info/info_0 @@ -0,0 +1,50 @@ +# --------------------------- chapters and sections -------------------------- # + +Example: +## Introduction {#sec-introduction} + +See @sec-introduction for additional context. + +Notice: +the label name must start with sec-(here) +here can now be anxthing - it can contain sneak case or jav style or any other thing + +chapter subsections and so on -> use sec-Label + +works: +#sec-Introduction-Here-some +#sec-Introduction_Here_some + + +see: https://quarto.org/docs/authoring/appendices.html +## Acknowledgments {.appendix} + + + +png, jpeg works +![caption](../../3_Figs_Pyth/get.jpg) +![Elephant](elephant.png) + +svg works fine +![caption](../../3_Figs_Pyth/outp.svg) + +pdf_tex does not work + +supported foramts: +1) png +2) jpeg +3) pdf +4) svg + +not supported: +1) pdf_tex +2) tikz +3) tex + + +![caption](../../3_Figs_Pyth/outp.svg) +![caption](../../3_Figs_Pyth/get.jpg) +![caption](../../2_Figures/1_Task/1_CNMc.pdf_tex) +![caption](../../2_Figures/1_Task/1_CNMc.pdf) + +![Caption of the fiure](../../3_Figs_Pyth/outp.svg){#fig_1_CNMC_Workflow} \ No newline at end of file diff --git a/Usage_Info/modifications_2_Master.qmd b/Usage_Info/modifications_2_Master.qmd new file mode 100644 index 0000000000000000000000000000000000000000..dd655094dccfa4c48adc8149d4c04284c624ab1a --- /dev/null +++ b/Usage_Info/modifications_2_Master.qmd @@ -0,0 +1,8 @@ +Modifcations that have been made to the original master thesis as in pdf +1) The images for the pdf were embeeded as pdf files --> for this web view the images were all converted from pdf to svg using inkscape. Note at the begining of the thesis all figures were generated as .svg, pngs and pdfs via an automated process. However, too much images were saved, thus only svgs and pngs were kept at some point. It would be possible to generate all the images and embeed them as svgs without any loss of quality as with a conversion from pdf to svg might be encountered. Considering the high number of used figures, the converion from pdf to svg is much faster. Latter also because, not only the figures would have to be expoerted, but rather all the differential equations must have been solved again. So in a nutshell, svgs are used instead of pdfs, though a converzing process, which might envolve some quality losses + +2) the order, references and appendix +3) the two appendix in the web view have their own seperate pages +4) The first 3 set of equations and figures in section [-@sec-sec_3_2_MOD_CPE] are displayed in full width instead of equation and correspodning being next to each other in a two column representation +5) The original master thesis pdf was written in Latex +6) The section you are reading right now, is not found in the pdf file, due to obvious reasons diff --git a/Usage_Info/open.md b/Usage_Info/open.md new file mode 100644 index 0000000000000000000000000000000000000000..01a6f93c597623f95f1681b0ff0048ab7a9dd841 --- /dev/null +++ b/Usage_Info/open.md @@ -0,0 +1,39 @@ +1) equation Equation.1 --> equation @ew-Eq_Label +2) section/subsection/chapter/figure/table/ +3) tag equation, eq_5_NMF +$$ +\begin{equation} + \boldsymbol {A_{i \mu}} \approx \boldsymbol A^{\prime}_{i \mu} = (\boldsymbol W \boldsymbol H)_{i \mu} = \sum_{a = 1}^{r} + \boldsymbol W_{ia} \boldsymbol H_{a \mu} + \tag{} +\end{equation} +$$ +4) Comments +5) gls +6) figures +7) cites +8) vspace +9) Appendix +10) Some images must be redone in inkscape + 1) 1_Task/1_CNMc.svg +11) Allow downloading images multiple output formats as you have seen it once +12) Make sure to mention + 1) You are using now a much more powerful tool than a simple pdf or latex (which is already is quite powerful, but clearly not as featurerich as html, css and javascript) --> it was tried to replicate the orignal master thesis pdf --> thus a lot of imporivements which are now possible have been not implemented. However, some features were just to tempting to not implement them. Note, some mistakes which the author made, i.e. spelling and simmilar mistakes were not removed, since it can be considered to be more honest to stick to the original version --> best representation of the master thesis output at that time + 2) The reader finds it much easier to get the abbreviations --> thus interactive hover is enabled + 3) Maybe some modifications are going to be made. If so, then this shall be highledted lcearly, inshallah (with the premission and help of the allmighty Allah) +13) praise to the ONE, acknowledge, make the one big +14) glossary +15) include pdfs and make sure the order matches with the true pdf +16) list of figures and tables +17) integrate buymeacofee +18) share on other webpages +19) interactive main page +20) left nav bar color +21) interactive main image on top left side +22) contact information +23) money buymeacofee or kofi integration +24) https://animate.style/ add rubberband on headers if clicked +25) Add all licenses -- correct refering +26) small gif that shows the capabilties of yout website +27) Latex writing style looks nice --> make it your own thing +28) loading banner - make sure that the first image is shown and if not the user shall wait for it \ No newline at end of file diff --git a/Usage_Info/regex b/Usage_Info/regex new file mode 100644 index 0000000000000000000000000000000000000000..e14e448c60209a82b1d44457ef7636742e437890 --- /dev/null +++ b/Usage_Info/regex @@ -0,0 +1,288 @@ +/* --------------------------------- chapter -------------------------------- */ +Example: +\chapter{Further implemented dynamical systems} +\label{ch_Ap_Dyna} + +regex: +\\chapter\{(.*?)\} +\\label\{(.*?)\} + +replace with: +# $1 {#sec-$2} + +/* --------------------------------- section -------------------------------- */ +search: +\\section\{(.*)\} +\\label\{(.*?)\} + +replace: +## $1 {#sec-$2} + +/* ------------------------------- subsection ------------------------------- */ +search: +\\subsection\{(.*)\} +\\label\{(.*?)\} + +replace: +### $1 {#sec-$2} + +/* -------------------------------- sections -------------------------------- */ +[-@sec{chapers, sections, subsections}] --> without Quatroos Chapters, sections, Subsection.. see: https://quarto.org/docs/authoring/cross-references.html + +regex: +(@sec-[\w\d]+) + +replace +[-$1] + +/* ------------------------------ ref sections ------------------------------ */ +syntax +## Introduction {#sec-introduction} +See @sec-introduction for additional context. + +latex syntax: +\ref{subsec_1_1_1_Principles} + +search +make search non greedy +\\ref\{(.*?)\} + +replace: +@sec-$1 + +/* ------------------ ref fig,eq,chapter and more with dot ------------------ */ +example: +@eq-eq_1_1_MPV. --> @eq-eq_1_1_MPV . + +search: +@([\w+\d+\.-]+)\. + +replace +@$1 . + +/* ---------------------------- ref sections dot ---------------------------- */ +@sec-(.*?)\. + +@sec-$1 . +/* ----------------------------- boldsymbol math ---------------------------- */ +\\bm +\boldsymbol + +/* -------------------------- equation Equation jb -------------------------- */ + + + +/* ------------------------------- equations_0 ------------------------------ */ +match all that do not start with $$ like: +$$ +\begin{equation} + F = \dot{\vec{x}}(t) = \frac{\vec{x}(t)}{dt} = f(\vec{x}(t))^ + \label{eq_1_0_DGL} +\end{equation} +$${#eq-eq_1_0_DGL_} + +match like: +\begin{equation} + \boldsymbol A_{3\times 3}\,(\vec{\beta}) = + \begin{bmatrix} + \beta_{1,1} & \beta_{1,2} & \beta_{1,3}\\ + \beta_{2,1} &\beta_{2,2} & \beta_{2,3}\\ + \beta_{3,1} & \beta_{3,2} &\beta_{3,3} + \end{bmatrix} + \label{eq_17_Dist_A} + \end{equation} + + +serach: +^(?!\$\$) +(\\begin\{equation\} +(.|\n)*?\\label\{(.*?)\}(.|\n)*?\\end\{equation\}) + +replace with: +$$$$ +$1 +$$$$ {#eq-$3} + + +/* ---------------------------------- eqref --------------------------------- */ +\\eqref\{(.*?)\} + +replace: +@eq-$1 + + +/* ------------------------------ math sings_0 ------------------------------ */ + + +/* -------------------------------- bold word ------------------------------- */ +\\textbf\{(.*?)\} + +replace: +**$1** + + +/* ---------------------------------- tags ---------------------------------- */ +repeat label see: +$$ +\begin{equation} + \boldsymbol {A_{i \mu}} \approx \boldsymbol A^{\prime}_{i \mu} = (\boldsymbol W \boldsymbol H)_{i \mu} = \sum_{a = 1}^{r} + \boldsymbol W_{ia} \boldsymbol H_{a \mu} +\end{equation} +$$ + +2_Task/7_QT.md + +/* --------------------------------- italic --------------------------------- */ +\\emph\{(.*?)\} +*$1* + +/* -------------------------------- comments -------------------------------- */ +tripple comment +search for +(%.*) +(%.*) +(%.*) + + + + + +single advanced comment, includes tripple comment +(^%.*|^\s%.*|^\s+%.*) + + +/* ---------------------------------- cite ---------------------------------- */ +single cite +\\cite\{([\d\s\w:-]+)\} +[@$1] + +double cite +find: +\\cite\{([\d\s\w,]+)\} + +replace manually --> see example +[@Silva2020; @Kaptanoglu2022] + +regex abailites: +should not start with:[ --> negative look behind +should not coninue with: negative look ahead +(? + ul.list-unstyled > + li.sidebar-item > + div.sidebar-item-container > + a { + color: var(--cl_Neon_Green); + + } + +/* the colors of the left side bar - here the sub entries */ +.sidebar-menu-container > + ul.list-unstyled > + li.sidebar-item > + ul.collapse > + li.sidebar-item > + div.sidebar-item-container > + a { + color: var(--shiny_White); + } + + +/* animation for all header and titles - the title class has to be added seperately as well */ +.h1:active, h2:active, h3:active, .header-section-number:active, .title:active { + animation-name: scale_In_X; + animation-duration: 1s; + transform-origin: left; + } + + @keyframes scale_In_X { + 0% { + color: var(--shiny_White); + transform: scaleX(1.1); + } + 50% { + color: var(--cl_Neon_Green); + transform: scaleX(1.3); + } + 100% { + color: var(--shiny_White); + transform: scaleX(1); + } + } + +.h1:hover, h2:hover, h3:hover, .header-section-number:hover, .title:hover { + color: var(--shiny_White); + font-weight: 633; + transform-origin: left; + } + + +.gls{ + color: var(--shiny_White) +} + diff --git a/Web_Code/CSS/css_0.css b/Web_Code/CSS/css_0.css new file mode 100644 index 0000000000000000000000000000000000000000..61add141715c9faa9ce65c5b74e7ff7c10d91949 --- /dev/null +++ b/Web_Code/CSS/css_0.css @@ -0,0 +1,31 @@ +/* define some variables */ +:root { + --cl_Neon_Green: rgb(236, 255, 127); + --shiny_White: rgb(255, 253, 250); + } + + +/* tell that a tranformation shall be performed with a duration of 0.3 seconds and style easei-in */ +.figure{ + transition: transform .3s ease-in; + + /* let also the margins be applied as an animation */ + transition: margin .3s ease-in; +} + +/* here the actual transformation is performed */ +.figure:hover{ + transform: scale(1.3); + z-index: 999; + margin: 87px; + position: relative; +} + +/* .modebar-btn{ + visibility: hidden; +} */ + +/* plotly logo */ +.modebar-btn--logo{ + visibility: hidden; +} \ No newline at end of file diff --git a/Web_Code/CSS/gls_Tooltip.css b/Web_Code/CSS/gls_Tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..1346687674ebd6ac3f6408d242f9752d995f2bed --- /dev/null +++ b/Web_Code/CSS/gls_Tooltip.css @@ -0,0 +1,104 @@ +/* @import url(http://fonts.googleapis.com/css?family=Kalam); */ + +.gls { + /* An inline element does not start on a new line and only takes up as much width as necessary to display its content. */ + display: inline; + + /* stack order with z and is only possible for some postions: relative, fixed or sticky. */ + position: relative; + + /* appear above other elements with a lover z stack value */ + z-index: 999; + + /* depends on dark and light theme */ + /* color: rgb(255, 253, 250); */ + + /* remove the underline */ + text-decoration: none; +} + +/* the board which pops up - hover */ +.gls_Content { + position: absolute; + + /* define background image */ + background: url(../../Data/5_Icons/blackboard.svg) no-repeat center bottom; + background-size: 100% 100%; + + /* stack order */ + z-index: 9999; + + /* text width and also placement of the board */ + width: 280px; + height: 200px; + + bottom: 50%; + left: 50%; + margin-left: -100px; + padding: 50px 30px; + text-align: center; + + /* text color, does NOT depend on the theme */ + /* var defined in css_0.css */ + color: var(--shiny_White); + + opacity: 0; + cursor: pointer; + + /* font-size: 0.55em; */ + /* line-height: 1.4; */ + /* font-family: 'Kalam', cursive; */ + + pointer-events: none; + + + -webkit-transform: scale3d(0.1,0.2,1); + transform: scale3d(0.1,0.2,1); + -webkit-transform-origin: 50% 120%; + transform-origin: 50% 120%; + + -webkit-transition: opacity 0.4s, -webkit-transform 0.3s; + transition: opacity 0.4s, transform 0.3s; + + -webkit-transition-timing-function: ease, cubic-bezier(0.6,0,0.4,1); + transition-timing-function: ease, cubic-bezier(0.6,0,0.4,1); +} + +/* propperties when the hover is active */ +.gls:hover .gls_Content { + opacity: 1; + pointer-events: auto; + -webkit-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + + /* size of the writing */ + font-size: 14px; + + /* padding of the font */ + padding-top: 70px; + + /* width of the font inside the board */ + width: 180px; + + text-align: left; + +} + +/* the board which pops up - hover */ +/* pseudo element, .a:hover is psedo class */ +/* this is the arrow point up to the board */ +.gls_Content::after { + + /* pseduo elements require a content */ + content: ''; + position: absolute; + top: 74%; + left: 39%; + width: 20%; + height: 20%; + z-index: 999; + + /* background-image: url(../../_static/imgs/shape2.svg) */ + background: url(../../Data/5_Icons/blackboard.svg) no-repeat center bottom; + +} \ No newline at end of file diff --git a/Web_Code/CSS/light.scss b/Web_Code/CSS/light.scss new file mode 100644 index 0000000000000000000000000000000000000000..6e4e74378e66aff37c1840bdbb4cbe6a3060cbbc --- /dev/null +++ b/Web_Code/CSS/light.scss @@ -0,0 +1,81 @@ +/*-- scss:defaults --*/ + +// see: https://quarto.org/docs/output-formats/html-themes.html +// see: https://github.com/twbs/bootstrap/blob/main/scss/_variables.scss +// Base document colors +// $body-bg: black; + +// // shining white font color +// $body-color: rgb(255, 253, 250); + +$toc-color: black; +/* ========================================================================== */ +/* ================================= OWN CSS ================================ */ +/* ========================================================================== */ + +// variables are defined within css_0 + +/* all headers and the numbering before it */ +h1, h2, h3, .header-section-number { + color: black; +} + + +/* figure captions color */ +.figure-caption, .sidebar-title{ + color: black; +} + +/* the colors of the left side bar - here only the big titles */ +.sidebar-menu-container > + ul.list-unstyled > + li.sidebar-item > + div.sidebar-item-container > + a { + color: black; + } + +/* the colors of the left side bar - here the sub entries */ +.sidebar-menu-container > + ul.list-unstyled > + li.sidebar-item > + ul.collapse > + li.sidebar-item > + div.sidebar-item-container > + a { + color: black; + } + + +/* animation for all header and titles - the title class has to be added seperately as well */ +.h1:active, h2:active, h3:active, .header-section-number:active, .title:active { + animation-name: scale_In_X_Light; + animation-duration: 1s; + transform-origin: left; + } + + @keyframes scale_In_X_Light { + 0% { + color: black; + transform: scaleX(1.1); + } + 50% { + color: gray; + transform: scaleX(1.3); + } + 100% { + color: black; + transform: scaleX(1); + } + } + +.h1:hover, h2:hover, h3:hover, .header-section-number:hover, .title:hover { + color: black; + font-weight: 633; + transform-origin: left; + } + + +.gls{ + color: black; +} \ No newline at end of file diff --git a/_quarto.yml b/_quarto.yml new file mode 100644 index 0000000000000000000000000000000000000000..97a311e2b3e84c9a1828dc0b8fb5279bbedbcf90 --- /dev/null +++ b/_quarto.yml @@ -0,0 +1,208 @@ +project: + type: book + + +filters: + # see: https://dialoa.github.io/first-line-indent/ + - first-line-indent + + # see: https://github.com/quarto-ext/lightbox :MIT + - lightbox + + # https://github.com/schochastics/quarto-social-share :MIT + # - social-share + + - Code/gls/gls_Main.lua + +# see: https://github.com/quarto-ext/lightbox +lightbox: + match: auto + effect: zoom + desc-position: right + +# https://github.com/sellorm/quarto-social-embeds :MIT +# share: +# permalink: "https://mr.schochastics.net/" +# description: "awesome page" +# twitter: true +# facebook: true +# reddit: true +# stumble: true +# tumblr: true +# linkedin: true + +# see: https://quarto.org/docs/reference/formats/html.html#table-of-contents +toc-depth: 4 +toc-location: right + +# number-sections: false +number-depth: 4 + +crossref: + # see: https://quarto.org/docs/authoring/cross-references.html#options + fig-prefix: "" # (default is "Figure") + eq-prefix: "" # (default is "Equation") + tbl-prefix: "" # (default is "Table") + sec-prefix: "" # default is Chapter + title-delim: — # (default is ":") + + +# ============================================================================ # +# =================================== book =================================== # +# ============================================================================ # +# see: https://quarto.org/docs/reference/projects/books.html#meta-project-type-upper +book: + title: "Flow predictions using control-oriented +cluster-based network modeling" + subtitle: "Master thesis at the technical university Braunschweig - Germany " + author: "Javed Arshad Butt" + date: "5.3.2023" + page-navigation: true + + # --------------------------------- sidebar -------------------------------- # + # see: https://quarto.org/docs/reference/projects/books.html#sidebar + sidebar: + search: true + # logo: Data/6_Html_Data/1_Logo_Img/0_Tornado.svg + logo: Data/6_Html_Data/1_Logo_Img/1_Tornado.svg + # logo: Data/3_Figs_Pyth/2_Task/2_Tornado.svg + title: "master thesis javed Arshad Butt" + # subtitle:"" + + tools: + # you as a muslim cannot simply use the pic of an living beeing + - icon: facebook + href: https://github.com/ + + # --------------------------------- navbar --------------------------------- # + # # navbar horizontal bar + # # see: https://quarto.org/docs/reference/projects/books.html#navbar + # navbar: + # left: + # - icon: github + # href: https://github.com/ + # aria-label: GitHub + + # # always show + # # pinned: true + + + downloads: [pdf, epub] + sharing: [twitter, facebook] + # cover-image: + + + # -------------------------------------------------------------------------- # + # --------------------------------- content -------------------------------- # + # -------------------------------------------------------------------------- # + chapters: + # index is the main page of the book + - index.qmd + + + - part: "Good manners" + chapters: + - trials.qmd + - Data/1_Writing/0_Deco/2_Thanks.qmd + - Data/1_Writing/0_Deco/1_Erkl.qmd + + # add pdfs intro and tasks + - Data/1_Writing/0_Deco/4_Mast.pdf + + - Data/1_Writing/0_Deco/2_1_Abstract.qmd + + # toc, list figures, list tables + + - Data/1_Writing/0_Deco/3_Used_Abbrev.qmd + # -------------------------------- 1 task -------------------------------- # + # - part: "Introduction" + - part: Data/1_Writing/1_Task/1_Introduction.qmd + + chapters: + - Data/1_Writing/1_Task/2_0_Motivation.qmd + - Data/1_Writing/1_Task/2_State_Of_Art.qmd + - Data/1_Writing/1_Task/3_CNM.qmd + # - Data/1_Writing/1_Task/4_CNMc.qmd # subsection + + + # -------------------------------- 2 task -------------------------------- # + # - part: "Methodology" + - part: Data/1_Writing/2_Task/0_Methodlogy.qmd + + chapters: + - Data/1_Writing/2_Task/1_0_CNMC_Data.qmd + - Data/1_Writing/2_Task/1_Data_Gen.qmd + - Data/1_Writing/2_Task/2_Clustering.qmd + - Data/1_Writing/2_Task/3_Tracking.qmd # master + # - Data/1_Writing/2_Task/4_Track_Workflow.qmd # subsec + # - Data/1_Writing/2_Task/5_Track_Validity.qmd # subsec + - Data/1_Writing/2_Task/6_Modeling.qmd # master + # - Data/1_Writing/2_Task/7_QT.qmd # subsec + + # -------------------------------- 3 task -------------------------------- # + - part: Data/1_Writing/3_Task/0_Results.qmd + + chapters: + - Data/1_Writing/3_Task/1_Track_Results.qmd + - Data/1_Writing/3_Task/2_Mod_CPE.qmd + - Data/1_Writing/3_Task/3_SVD_NMF.qmd + - Data/1_Writing/3_Task/4_SVD_Regression.qmd + + - Data/1_Writing/3_Task/5_Pred.qmd # master + # - Data/1_Writing/3_Task/6_SLS.qmd # subsec + # - Data/1_Writing/3_Task/7_Models.qmd # subsec + + # -------------------------------- 4 task -------------------------------- # + - part: Data/1_Writing/4_Task/1_Concl.qmd + chapters: + - Data/1_Writing/4_Task/2_Zusammen_Deutsch.qmd + + # ------------------------------ references ------------------------------ # + - Data/1_Writing/5_Additional/10_References.qmd + + appendices: + # ------------------------------- appendix ------------------------------- # + - Data/1_Writing/5_Additional/0_Appendix.qmd + - Data/1_Writing/5_Additional/1_Appendix.qmd + +bibliography: Data/4_Bib/references.bib + +# --------------------------------- book end --------------------------------- # + +# ---------------------------------- format ---------------------------------- # +format: + html: + theme: + + # default theme is: cosmo + # more can be found at: https://bootswatch.com/ + # also: https://quarto.org/docs/output-formats/html-themes.html + # dark: [cosmo, Web_Code/CSS/cosmo.scss] + dark: [cosmo, Web_Code/CSS/cosmo_Dark.scss] + + light: [cosmo, Web_Code/CSS/light.scss] + + css: + - Web_Code/CSS/css_0.css + - Web_Code/CSS/gls_Tooltip.css + + + # see: https://dialoa.github.io/first-line-indent/ + indent: false + + highlight-style: dracula + + + + + pdf: + documentclass: scrreprt + + # see: https://dialoa.github.io/first-line-indent/ + indent: false + keep-tex: true + +# make the table captions appear at the bottom +tbl-cap-location: bottom + + diff --git a/gls_Init/.gitignore b/gls_Init/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e8ce50347bc927fbe85cf7132c4e79e2fd279340 --- /dev/null +++ b/gls_Init/.gitignore @@ -0,0 +1,4 @@ +*.html +*.pdf +*_files/ +/.luarc.json diff --git a/gls_Init/README.md b/gls_Init/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d5d3ead5a0edd85004f8a2359c2531e3b6d89ed2 --- /dev/null +++ b/gls_Init/README.md @@ -0,0 +1,23 @@ +# Gls_Init Extension For Quarto + +_TODO_: Add a short description of your extension. + +## Installing + +_TODO_: Replace the `` with your GitHub organization. + +```bash +quarto add /gls_init +``` + +This will install the extension under the `_extensions` subdirectory. +If you're using version control, you will want to check in this directory. + +## Using + +_TODO_: Describe how to use your extension. + +## Example + +Here is the source code for a minimal example: [example.qmd](example.qmd). + diff --git a/gls_Init/example.qmd b/gls_Init/example.qmd new file mode 100644 index 0000000000000000000000000000000000000000..01e0b56df3411bd8f95ef8565bbe9a4ab1793d63 --- /dev/null +++ b/gls_Init/example.qmd @@ -0,0 +1,11 @@ +--- +title: "Gls_Init Example" +filters: + - gls_init +--- + +## Heading + +This filter adds formatting to heading text. + + diff --git a/index.qmd b/index.qmd new file mode 100644 index 0000000000000000000000000000000000000000..dac8e4efb23201b4e29c5a2d30ac66a24f49c6d6 --- /dev/null +++ b/index.qmd @@ -0,0 +1,106 @@ +# Preface {.unnumbered} + + + +```{python} +# | echo: false +#| code-fold: true +import numpy as np +import plotly.io as pio +pio.renderers.default = "plotly_mimetype+notebook_connected" +import plotly.graph_objects as go # to combine figures + +# load data from the numpy npz file +data = np.load('Data/6_Html_Data/0_Viz/plt_Dat_16.78.npz') + +# extraxt the data - load it +x_Traj = data["x"] +y_Traj = data["y"] +z_Traj = data["z"] +x_Cone = data["x_Cone"] +y_Cone = data["y_Cone"] +z_Cone = data["z_Cone"] +u_Cone = data["u_Cone"] +v_Cone = data["v_Cone"] +w_Cone = data["w_Cone"] + +# The trajectory +fig = go.Figure(data=[go.Scatter3d( + x= x_Traj, + y= y_Traj, + z= z_Traj, + name = "Trajectory", + showlegend = False, + )]) + + +fig.update_traces(marker_size = 2, + mode = "lines", + marker_color ="green") + + +# Cones +fig_Cones = go.Figure(data=go.Cone( x = x_Cone , + y = y_Cone , + z = z_Cone , + u = u_Cone , + v = v_Cone , + w = w_Cone , + name = "Direction", + showlegend = False, + + ) + ) + + +# hiding color-bar +fig_Cones.update_traces(showscale=False) + +# combine cone and trajectory +fig.add_traces(data = fig_Cones.data) + + +# style the figure +fig.update_layout( + # plotlyexpress 3d axes: + scene = dict( + xaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False,), + yaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False,), + zaxis = dict( + showbackground = False, + showticklabels = False, + title='', + showgrid = False, + zeroline = False, + ), + ), + # template= 'plotly_dark' + # template= 'plotly' + paper_bgcolor='rgba(0,0,0,0)', + plot_bgcolor='rgba(0,0,0,0)', + modebar = dict(bgcolor='rgba(0, 0, 0, 0)'), + margin=dict( + l=0, + r=0, + b=0, + t=0, + pad=0 + ), + + scene_camera_eye=dict(x=0, + y=1, + z=0), +) + +fig.show() +``` \ No newline at end of file diff --git a/style.css b/style.css deleted file mode 100644 index 114adf441e9032febb46bc056b2a8bb651075f0d..0000000000000000000000000000000000000000 --- a/style.css +++ /dev/null @@ -1,28 +0,0 @@ -body { - padding: 2rem; - font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif; -} - -h1 { - font-size: 16px; - margin-top: 0; -} - -p { - color: rgb(107, 114, 128); - font-size: 15px; - margin-bottom: 10px; - margin-top: 5px; -} - -.card { - max-width: 620px; - margin: 0 auto; - padding: 16px; - border: 1px solid lightgray; - border-radius: 16px; -} - -.card p:last-child { - margin-bottom: 0; -} diff --git a/tornado.html b/tornado.html new file mode 100644 index 0000000000000000000000000000000000000000..746b70ef88d3038efca4b3b9d8f16d9982cf153c --- /dev/null +++ b/tornado.html @@ -0,0 +1,7 @@ + + + +
+
+ + \ No newline at end of file diff --git a/trials.qmd b/trials.qmd new file mode 100644 index 0000000000000000000000000000000000000000..b9f2073769dddb81fdaa296ad50d94e3ee1fb09f --- /dev/null +++ b/trials.qmd @@ -0,0 +1,56 @@ +# Trials + +Thissince \gls{cnmc} + + + + +
+

Hello, World!

+

This is my first HTML code.

+
+ +
+

Hello, World!

+ +
+ + +
+

Final header

+

This is my first HTML code.

+
+ + + \ No newline at end of file