From fe5bce1043869cd2a4571eedd2afc24b4b9b8a58 Mon Sep 17 00:00:00 2001 From: Arne Graf Date: Tue, 29 Sep 2015 22:52:18 +0200 Subject: [PATCH] modelflow not compiling --- doc/mathesisargraf/masterthesisArGrTeX.tex | 35 ++++++++++++--------- doc/mathesisargraf/modelchart.tex | 36 +++++++++++++--------- 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/doc/mathesisargraf/masterthesisArGrTeX.tex b/doc/mathesisargraf/masterthesisArGrTeX.tex index a6a51c18..c16790b5 100644 --- a/doc/mathesisargraf/masterthesisArGrTeX.tex +++ b/doc/mathesisargraf/masterthesisArGrTeX.tex @@ -350,18 +350,18 @@ is adding the distance-dependand\footnote{The correlation of distance and force % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %\vspace*{1cm} - -\begin{align*} -&\textbf{TEST Model:}\\ -\end{align*} +\newpage +\begin{center} +\textbf{TEST Model:}\\ +\end{center} \begin{align*} &\Delta\vec{x}_{n}&&= \Delta t\cdot\vec{v}_{n, res}\\ &\vec{v}_{n, res}&&= \left\{ \begin{aligned} %&\left(1-\frac{1}{2}\left[(\hat{v}\cdot(-\nabla \hat{d}))+\vert(\hat{v}\cdot(-\nabla \hat{d}))\vert\right]\right) & P(\vec{v}_{n}) \quad &: & d(\vec{x})&& < 0.1\\ - &\left(1-\langle\vec{v}_{n},-\nabla \hat{d}\rangle\right) & P(\vec{v}_{n}) \quad & \textbf{if} \quad && d(\vec{x}) < && 0.1; \quad \langle\vec{v}_{n},-\nabla \hat{d}\rangle \ge 0 \\ + &\left(1-\langle\vec{v}_{n},-\nabla d\rangle\right) & P(\vec{v}_{n}) \quad & \textbf{if} \quad && d(\vec{x}) < && \alpha_{h}; \quad \langle\vec{v}_{n},-\nabla d\rangle \ge 0 \\ %&\left(1-\frac{1}{2}\left[(\hat{v}\cdot(-\nabla \hat{d}))+\vert(\hat{v}\cdot(-\nabla \hat{d}))\vert\right]\right) & \vec{v}_{n} \quad &: \quad 0.1 < & d(\vec{x})&& < 0.2\\ - &\left(1-\langle\vec{v}_{n},-\nabla \hat{d}\rangle\right) & \vec{v}_{n} \quad & \textbf{if} \quad 0.1 < && d(\vec{x}) < && 0.2 ;\quad \langle\vec{v}_{n},-\nabla \hat{d}\rangle \ge 0\\ + &\left(1-\langle\vec{v}_{n},-\nabla d\rangle\right) & \vec{v}_{n} \quad & \textbf{if} \quad \alpha_{h} < && d(\vec{x}) < && \alpha_{s} ;\quad \langle\vec{v}_{n},-\nabla d\rangle \ge 0\\ & &\vec{v}_{n} \quad & \textbf{else} && &&%& d(\vec{x})&& > 0.2 \end{aligned} \right.\\ @@ -373,30 +373,30 @@ is adding the distance-dependand\footnote{The correlation of distance and force % \left(1-\frac{1}{2}\left[(\hat{v}\cdot(-\nabla \hat{d}))+\vert(\hat{v}\cdot(-\nabla \hat{d}))\vert\right]\right)\cdot\vec{v}_{n} & \quad : \quad d(\vec{x}) < 0.2,\\ % \vec{v}_{n} & \quad : \quad d(\vec{x}) > 0.2 % \end{cases}\\ -&\vec{v}_{n}&&= 0.8\cdot\vec{v}_{n-1, res} + 0.2\cdot g\left(g(\vec{v}_{ff})+g(\sum_{i=1}^n\vec{v}_{repP,i})\right) +&\vec{v}_{n}&&= \alpha\cdot\vec{v}_{n-1, res} + (1 - \alpha)\cdot g\left(g(\vec{v}_{ff})+g(\sum_{i=1}^n\vec{v}_{repP,i})\right) \end{align*} - -\vspace*{2cm} +% +%\vspace*{2cm} %\begin{alignat}{1} %\Delta\vec{x}\quad=\quad & \Delta t\cdot\vec{v}_{res}\\ %\vec{v}_{res}\quad=\quad & \left(1-\frac{1}{2}\left[(\vec{v}_{n}\cdot(-\nabla distances)_{n})+\vert(\vec{v}_{n}\cdot(-\nabla distances)_{n})\vert\right]\right)\cdot\vec{v}_{n}\\ %\vec{v}_{n}\quad=\quad & g(g(\vec{v}_{ff})+g(\sum\vec{v}_{repP,i}))\\ %\vec{v}_{ff}\quad=\quad & v_{ff}(\vec{x})\\ %\end{alignat} - +% %\begin{align} %\Delta\vec{x}\quad= & \quad\Delta t\cdot\vec{v}_{res}\\ %\vec{v}_{res}\quad= & \quad\bigg(1-\frac{1}{2}\bigg[\langle\vec{v}_{n},(-\nabla distances)_{n}\rangle+\big\vert\langle\vec{v}_{n},(-\nabla distances)_{n}\rangle\big\vert\bigg]\bigg)\cdot\vec{v}_{n}\\ %\vec{v}_{n}\quad= & \quad g\big(\quad g(\vec{v}_{ff})+g(\underset{\small i}{\sum}\vec{v}_{repP,i})\quad\big)\\ %\vec{v}_{ff}\quad= & \quad v_{ff}(\vec{x}) %\end{align} - +% %\subsection{Variant Model} - +% %<< short (!) overview over the model-modules >> - +% %The model can be sectioned into these modules: - +% %\begin{itemize} %\item Floorfield \begin{itemize} % \item distance-field @@ -407,7 +407,12 @@ is adding the distance-dependand\footnote{The correlation of distance and force %\item Anti-Overlapping %\item Speed Calculator %\end{itemize} - +% +\begin{figure}[h!] +\begin{center} +\input{./modelchart.tex} +\end{center} +\end{figure} What might seem curious at first, is the fact, that both, the navigation field $\vec{v}_{ff}$ and the \emph{sum} of pedestrian forces $\sum\vec{v}_{repP,i}$, are restricted to the length of 1 unit by $g$. Then their sum in turn is restricted again. This obviously breaks the principle of superposition of forces. We cannot talk about a force-based model here and loose the analogy to Newton's second law the first time applying $g$ on the sum of forces $\sum\vec{v}_{repP,i}$. The resulting vector indicates a new orientation and a slow-down mechanic, as the vector can be of length $\le 1$ unit. The sum of the navigation field (static) and the accumulated pedestrian forces (dynamic) are restricted by $g$ and then weighted by 20\%, the speed vector of the last time-step gets weighted by 80\%. This is done to reduce flickering\footnote{We want to shortly address a second alternative approach. If one is willing to accept flickering agents with fast changing orientations, one could ommit the speed-vector of the time-step $n-1$ and postprocess the trajectories. As we only get positions at discrete time-steps, one could easily create a smooth trajectory by using \emph{B-splines}.} of agents and must be kept in mind, as this approach could result in a tendency to create oscillation in narrow corridors. The weighted sum limits the change of orientation and thus an agent could bounce between two opposing walls as seen in \ref{bounce}. If oscillation should occur in any case, the weight should be shifted away from the last time-step. This way, agents get enabled to turn more aggressive and closely follow the navigation-floor-field. diff --git a/doc/mathesisargraf/modelchart.tex b/doc/mathesisargraf/modelchart.tex index b90aac76..91640df4 100644 --- a/doc/mathesisargraf/modelchart.tex +++ b/doc/mathesisargraf/modelchart.tex @@ -35,22 +35,30 @@ \begin{tikzpicture}[auto] % Place nodes left block - \node [block] (dfield) {create distance field\\ $d$}; - \node [block, below = 0.8cm of dfield] (sfield) {create speed field\\ $s$}; - \node [block, below = 0.8cm of sfield] (nFF) {create navigation floor-field\\ $c$}; - \node [block1, below = 0.8cm of nFF] (nVF) {create vector field \\$(-1) \frac{\nabla c}{\left\Vert \nabla c \right\Vert}$}; - %\node [block, below of=Jsim] (agents) {send/recv agents}; - %\node [decision, below of=agents] (done) {done?}; - %\node [cloud, below of=done, node distance=3cm] (end) {shutdown \emph{mobsim}}; + \node [block] (compi) {get Neighbors of ped $i$}; + \node [block, below = 0.8cm of compi] (getj) {get Neighbor j}; + \node [decision, below = 0.8cm of getj] (valinf) {is influencing ped $i$?}; + \node [block, below = 0.8cm of valinf] (addinf) {add influence to sum}; + \node [decision, below = 0.8cm of addinf] (checkloop) {more neighbors to ped $i$?}; + \node [block, below = 0.8cm of checkloop] (calcrep) {calculate $g(sum)$}; + \node [block, below = 0.8cm of calcrep] (calcpuremov) {calculate $g(g(sum) + g(\nabla c))$}; + \node [block, below = 0.8cm of calcpuremov] (calcjitter) {calc $\alpha$ oldmov $+ (1-\alpha)$ newmov}; + \node [decision, below = 0.8cm of calcjitter] (isslowed) {is in slowdown band $d \leq \alpha_{s}$?}; + \node [decision, below = 0.8cm of isslowed] (toWall) {geared towards wall $\langle\vec{v}_{n},-\nabla d\rangle \ge 0$?}; + \node [decision, below = 0.8cm of toWall] (isredir) {is in redirection band $d \leq \alpha_{h}$?}; + \node [block, below = 0.8cm of isredir] (redir) {redirect to move parallel to wall}; + \node [block, below = 0.8cm of redir] (slow) {slowdown with $(1-\langle\vec{v}_{n},-\nabla d\rangle)$}; + \node [decision, below = 0.8cm of slow] (checkoutloop) {next pedestrian?} % Draw edges - \path [line] (dfield) -- (sfield); - \path [line] (sfield) -- (nFF); - \path [line] (nFF) -- (nVF); - %\path [line] (agents) -- (done); - %\path [line] (done) -- node [near start] {yes} (end); + \path [line] (compi) -- (getj); + \path [line] (getj) -- (valinf); + \path [line] (valinf) -- (addinf); + \path [line] (addinf) -- (checkloop); + \path [line] (checkloop) -- node [near start] {yes} (getj); + \path [line] (checkoutloop) -- node [near start] {yes} (compi); %\path [line] (done) -| node [anchor=south, near start] {no} +(-2.2,0) |- (Msim.west); % ------- Middle block - \node [block1, right = 2cm of nVF] (wVF) {create vector field\\ $(-1) \nabla d$}; + %\node [block1, right = 2cm of nVF] (wVF) {create vector field\\ $(-1) \nabla d$}; %\node [block1, below of=m2j] (req) {send agent request}; %\node [decision1, below of=req] (isplace) {is space?}; %\node [block1, below of=isplace, node distance=3cm] (send) {send agent}; @@ -76,7 +84,7 @@ %\path [line] (isplace2) -- node [near start] {yes} (recv); %\path [line] (recv) -- (sim); %\path [line] (sim) -- (end3); - \path [line] (dfield) -| node [near start] {} (wVF); + %\path [line] (dfield) -| node [near start] {} (wVF); \end{tikzpicture} -- GitLab