Initial commit

This commit is contained in:
Martin Potier 2017-07-06 15:54:32 +02:00
parent d8de609e06
commit 91c8b7ceca
38 changed files with 2698 additions and 0 deletions

43
activity.in.mgs.tex Normal file
View file

@ -0,0 +1,43 @@
\newcounter{savedenum}
\newcommand*{\saveenum}{\setcounter{savedenum}{\theenumi}}
\newcommand*{\resume}{\setcounter{enumi}{\thesavedenum}}
\begin{frame}
\frametitle{L'activité dans \mgs}
\framesubtitle{Quelles sont les dynamiques de mon système ?}
\begin{itemize}
\small
\item Occurences d'état (quel état de la simulation est actif?)
\item Occurences de temps (quand la simultaion est-elle active?)
\item Occurences d'espace
\begin{itemize}
\item Général: l'\alert{activité} est localisée où les évènements ont lieu
\item Modèle basé sur les interactions: l'\alert{activité} est localisée
où les interactions ont lieu
\end{itemize}
\end{itemize}
\begin{columns}[t]
\column{.5\textwidth}
\begin{enumerate}
\item Comment comprendre l'activité dans le contexte du formalisme \mgs ?
\begin{itemize}
\item L'activité est localisée où \structure{un motif d'une transformation
match}
\end{itemize}
\saveenum
\end{enumerate}
\column{.5\textwidth}
\begin{enumerate}
\resume
\item Comment suivre l'activité une fois qu'une règle d'une transformation a été
appliquée?
\begin{itemize}
\item L'activité progresse \structure{de proche en proche} (comme une vague)
\item On peut restreindre le filtrage de motif à la \structure{partie active} du
modèle
\end{itemize}
\end{enumerate}
\end{columns}
\end{frame}

66
activity.motivation.tex Normal file
View file

@ -0,0 +1,66 @@
\begin{frame}{Activité spatiale d'un feu de forêt}
\begin{columns}
\column{.9\textwidth}
\begin{block}{Définition}
\begin{quote}
[…] activity is considered as a \structure{measure of the number of events}
occuring during in a simulation.
\end{quote}
\centering
\mkCitation{Muzy et al.: “Activity Regions for the Specication of
Discrete Event Systems”, 2010}
\end{block}
\end{columns}
\begin{columns}
\column{.5\textwidth}
\begin{center}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0pt,gridded] (img) at (0,0) {
\includegraphics[width=\textwidth]{raster/forest-fire}
};
\uncover<2>{
\clip (img.south west) rectangle (img.north east);
\fill[forest,opacity=.7]
(25mm,0) .. controls (43mm,22mm) and (35mm,35mm) .. (1cm,4cm |- img.north)
-- (img.north east)
-- (img.south east)
-- cycle;
\fill[ashes,opacity=.7]
(0,0)
-- (25mm,0) .. controls (43mm,22mm) and (35mm,35mm) .. (1cm,4cm |- img.north)
-- (img.north west)
-- cycle;
\draw[fire,line width=2mm,cap=round]
(25mm,0) .. controls (43mm,22mm) and (35mm,35mm) .. (1cm,4cm |- img.north);
}
\end{tikzpicture}\\
\mkCitation{National Park Service, Alaska Region - Currant Creek Fire,
Lake Clark NP, 6-26, NPS PhotoUploaded by AlbertHerring, Public Domain,
\url{https://commons.wikimedia.org/w/index.php?curid=29598171}}
\end{center}
\column{.5\textwidth}
\begin{itemize}
\item \structure{Système}: Feu de forêt
\item \structure{Formalisme}: MGS
\item \structure{Modèles}:
\begin{enumerate}
\item un automate à 3 états
\item \structure{[Karafyllidis et Thanailakis, 1997]}
\end{enumerate}
\end{itemize}
\medskip
\begin{itemize}
\item Observation:
\begin{itemize}
\item \textcolor{ashes}{cendres} (à gauche)
\item \textcolor{fire}{feu} (au milieu)
\item \textcolor{forest}{forêt} (à droite)
\end{itemize}
\end{itemize}
\end{columns}
\end{frame}

187
chemical.model.tex Normal file
View file

@ -0,0 +1,187 @@
\begin{frame}{Moteur chimique}
\begin{columns}
\column{.7\textwidth}\centering
\begin{itemize}
\item \structure{Modèle}
\begin{itemize}
\item Réaction-Diffusion-Évaporation à la Turing
\medskip
\item EDP couplées
\begin{equation*}
\frac{\partial\orr\varphi}{\partial t} =
\orr{\text{X}}(\orr\varphi) +
\orr{\text{D}} \cdot
\nabla^2\orr\varphi
- \orr{\text{E}} \cdot \orr\varphi
\end{equation*}
\end{itemize}
\item \structure{Simulation}
\begin{itemize}
\item Discrétisation de type différences finies sur un automate
cellulaire 2D
\medskip
\item Algorithme Propagation Parallèle à la Margolus (PPM)
\begin{itemize}
\item Simuler un automate cellulaire sur un support SIMD
\item Faire correspondre la segmentation de l'espace aux processus
\item Éviter les accès concurrents à la même zone mémoire
\end{itemize}
\end{itemize}
\end{itemize}
\column{.2\textwidth}
\moteurs[structure!30]
\end{columns}
% Animation du «calque» de démonstration de PPM
\uncover<2->{
\tikz[overlay,opacity=.95,transform canvas={scale around=.8:(current page.center)}]
\draw[black,fill=white,rounded corners,ultra thick]
(current page.south west) rectangle (current page.north east);
\only<2-7>{
\tikz[overlay] \node[anchor=center] at (current page.center) {
\begin{tikzpicture}[
cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\TINY},
neighbor cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\small},
center cell/.style={cell,white,fill=black},
spy using outlines={circle,red,size=58mm,magnification=4,connect spies}]
\begin{scope}[scale=.5]
\clip (-27mm,-27mm) rectangle (27mm,27mm);
% Background
\only<2,4-6>{%
\fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
}
\only<3,6->{%
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
\fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
}
\only<4-7>{
\begin{scope}
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
}
\only<4-6>{
\begin{scope}[shift={(-1cm,0)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\begin{scope}[shift={(-1cm,-1cm)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\begin{scope}[shift={(0cm,-1cm)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
}
\only<2,3>{
\node[center cell,font=\small] at ( -0mm, -0mm) {$A$};
\node[cell,font=\small] at (-10mm, -0mm) {$B$};
\node[cell,font=\small] at (-10mm,-10mm) {$C$};
\node[cell,font=\small] at ( -0mm,-10mm) {$D$};
}
\only<2,3,4>{
% Voisins
\node[neighbor cell] at ( 1cm, 0cm) {$v_{A,1}$};
\node[neighbor cell] at ( 1cm, 1cm) {$v_{A,2}$};
\node[neighbor cell] at ( 0cm, 1cm) {$v_{A,3}$};
\node[neighbor cell] at (-1cm, 1cm) {$v_{B,1}$};
\node[neighbor cell] at (-2cm, 1cm) {$v_{B,2}$};
\node[neighbor cell] at (-2cm, 0cm) {$v_{B,3}$};
\node[neighbor cell] at (-2cm,-1cm) {$v_{C,1}$};
\node[neighbor cell] at (-2cm,-2cm) {$v_{C,2}$};
\node[neighbor cell] at (-1cm,-2cm) {$v_{C,3}$};
\node[neighbor cell] at ( 0cm,-2cm) {$v_{D,1}$};
\node[neighbor cell] at ( 1cm,-2cm) {$v_{D,2}$};
\node[neighbor cell] at ( 1cm,-1cm) {$v_{D,3}$};
}
\only<4>{
\begin{scope}[scale=0.5,shift={(-5mm,-5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A$};
\node[cell] at (-10mm, -0mm) {$B$};
\node[cell] at (-10mm,-10mm) {$C$};
\node[cell] at ( -0mm,-10mm) {$D$};
\node[cell] at ( 1cm, 0cm) {$v_{A,1}$};
\node[cell] at ( 1cm, 1cm) {$v_{A,2}$};
\node[cell] at ( 0cm, 1cm) {$v_{A,3}$};
\node[cell] at (-1cm, 1cm) {$v_{B,1}$};
\node[cell] at (-2cm, 1cm) {$v_{B,2}$};
\node[cell] at (-2cm, 0cm) {$v_{B,3}$};
\node[cell] at (-2cm,-1cm) {$v_{C,1}$};
\node[cell] at (-2cm,-2cm) {$v_{C,2}$};
\node[cell] at (-1cm,-2cm) {$v_{C,3}$};
\node[cell] at ( 0cm,-2cm) {$v_{D,1}$};
\node[cell] at ( 1cm,-2cm) {$v_{D,2}$};
\node[cell] at ( 1cm,-1cm) {$v_{D,3}$};
\end{scope}
}
\only<5>{
\begin{scope}[scale=0.5,shift={(-5mm,-5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
\only<6>{
\begin{scope}[scale=0.5,shift={(5mm,5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(-15mm,5mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(-15mm,-15mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(5mm,-15mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
\only<7>{
\begin{scope}[scale=0.5,shift={(5mm,5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
% Grilles:
\draw[xshift=5mm,yshift=5mm,thin] ( -5cm, -5cm) grid ( 5cm, 5cm);
\only<2,4-6>{\draw[xshift=5mm,yshift=5mm, step=2cm, thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<3,7>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<2,4-6>{
\coordinate (spyhook) at (-5mm,-5mm);
}
\only<3,7>{
\coordinate (spyhook) at (5mm,5mm);
}
\end{scope}
\spy on (spyhook) in node (zoom) at (5cm,0);
\end{tikzpicture}
};
}
}
\end{frame}

17
closing.tex Normal file
View file

@ -0,0 +1,17 @@
\begin{frame}[plain,noframenumbering]{}
\Huge\centering
\includegraphics[width=.6\textwidth]{vector/discussion.pdf}
\bigskip
Questions!
\end{frame}
\bgroup
\setbeamercolor{background canvas}{bg=black}
\begin{frame}[plain,noframenumbering]{}
\centering
\Huge\color{base03}
Lumière!
\end{frame}
\egroup

24
decision.model.tex Normal file
View file

@ -0,0 +1,24 @@
\begin{frame}
\frametitle{Moteur comportemental}
\begin{columns}
\column{.7\textwidth}\centering
\begin{itemize}
\item \structure{Couplage} entre le moteur chimique et le moteur
physique
\begin{itemize}
\item Déclencher des actions individuelles ($R, T, G, D, A$)
\item Consommer ($C$) ou synthétiser ($S$) des morphogènes
\end{itemize}
\medskip
\item \structure{Exemples}
\begin{enumerate}
\item Sectorisation
\item Cercles concentriques
\end{enumerate}
\end{itemize}
\column{.2\textwidth}\moteurs[transparent][transparent][structure!30]
\end{columns}
\end{frame}

144
ecoli.model.tex Normal file
View file

@ -0,0 +1,144 @@
\tikzset{
bacillus/.style={draw,fill=white,shape=rounded rectangle,minimum width=2cm,
minimum height=5mm,inner sep=0,anchor=center},
backshape/.style={densely dotted},
arrowz/.style={line cap=round,ultra thick,-Stealth,black!50},
tumbler/.style={transform canvas={rotate around=38:(tumble.center)},
shorten <=2pt}
}
\begin{frame}
\frametitle{Moteur physique: spécification}
\begin{columns}
\column{.7\textwidth}\centering
\begin{itemize}
\item \structure{Dynamique individuelle}:
\begin{center}
\begin{tikzpicture}[node distance=7mm]
\node (outrun) {
\begin{tikzpicture}[rotate=90,baseline]
\node[bacillus,backshape,rotate=90] (run) {};
\node[bacillus,yshift=4mm,rotate=90] {};
\draw[arrowz] (run.center) -- +(1cm,0);
\end{tikzpicture}
};
\node[right=of outrun] (outumble) {
\begin{tikzpicture}[rotate=90,baseline]
\node[bacillus,backshape,rotate=90] (tumble) {};
\node[bacillus,rotate around=128:(tumble.center)] {};
\draw[arrowz,tumbler]
(tumble.north east) to ($(tumble.north east) + (0,5mm)$);
\draw[arrowz,tumbler]
(tumble.south west) to ($(tumble.south west) + (0,-5mm)$);
\end{tikzpicture}
};
\node[right=of outumble] (outgrow) {
\begin{tikzpicture}[rotate=90,baseline]
\node[bacillus,minimum width=2.2cm,minimum height=6mm,rotate=90] (grow) {};
\node[bacillus,backshape,rotate=90,anchor=center] at (grow.center) {};
\end{tikzpicture}
};
\node[right=of outgrow] (outdivide) {
\begin{tikzpicture}[rotate=90,baseline]
\node[bacillus,backshape,rotate=90] (divide) {};
\node[bacillus,minimum width=1cm,anchor=west,rotate=90] at (divide.west) {};
\node[bacillus,minimum width=1cm,anchor=east,rotate=90] at (divide.east) {};
\end{tikzpicture}
};
\node[right=of outdivide] (outdie) {
\begin{tikzpicture}[rotate=90,baseline]
\node[bacillus,backshape,rotate=90] {};
\end{tikzpicture}
};
\node[below=12mm of outrun.center] {$R$};
\node[below=12mm of outumble.center] {$T$};
\node[below=12mm of outgrow.center] {$G$};
\node[below=12mm of outdivide.center] {$D$};
\node[below=12mm of outdie.center] {$A$};
\end{tikzpicture}
\end{center}
\medskip
\item \structure{Dynamique collective}:
\begin{itemize}
\item \structure{Entrer} en collision avec ses voisines
\item \structure{Inhiber} sa croissance (densité des bactéries)
\end{itemize}
\end{itemize}
\column{.2\textwidth}\moteurs[transparent][structure!30]
\end{columns}
\end{frame}
\begin{frame}{Moteur physique: modèle}
\begin{columns}
\column{.75\textwidth}\centering
\begin{columns}
\column{.6\textwidth}
\begin{itemize}
\item \structure{Bactérie virtuelle}
\begin{itemize}
\item Centre de masse, angle, \\longueur ($l$), rayon ($r$)
\item Inertie ($I$), masse ($m$)
\item Vitesse linéaire, vitesse angulaire, vitesse de croissance
\item Âge de la membrane \\
{\small\structure{[Stewart 2005]}}
\end{itemize}
\end{itemize}
\column{.4\textwidth}
\begin{center}
\includegraphics[page=1,width=\textwidth]{vector/bacteria}
\end{center}
\end{columns}
\begin{columns}
\column{.4\textwidth}
\begin{center}
\includegraphics[page=3,width=\textwidth]{vector/collision-these}
\end{center}
\column{.6\textwidth}
\begin{itemize}
\item \structure{Collision}
\begin{itemize}
\item Conservation des moments
\item Conservation des quantités de mouvement
\item Théorie de l'impulsion
\end{itemize}
\medskip\footnotesize
\begin{equation*}
j = \displaystyle\frac{-(1 + Cr)\ \orr{v}_{ac12} \cdot{} \orr{n}} { 1/m_1 +
1/m_2 + (\orr{r}_1 \wedge \orr{n})^2 / I_1 + (\orr{r}_2 \wedge \orr{n})^2
/ I_2}
\end{equation*}
\end{itemize}
\end{columns}
\column{.2\textwidth}\moteurs[transparent][structure!30]
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Moteur physique: réalisation}
\begin{columns}
\column{.7\textwidth}\centering
\begin{itemize}
\item \structure{Implémentation} sur automate cellulaire 2D du modèle agent
\bigskip
\item \structure{Utilisation de PPM}
\begin{itemize}
\item $N$ bactéries par cellule
\item Traitement par bloc de $2 \times 2$
\item Tri des bactéries « voyageuses »
\end{itemize}
\end{itemize}
\begin{center}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (img) at (0,0) {\includegraphics[width=5cm]{raster/ecoli-ca}};
\draw (img.south west) grid (img.north east);
\draw[very thick,step=2cm] (img.south west) grid (img.north east);
\end{tikzpicture}
\end{center}
\column{.2\textwidth}\moteurs[transparent][structure!30]
\end{columns}
\end{frame}

26
example.dla.tex Normal file
View file

@ -0,0 +1,26 @@
\begin{frame}%[label=this one]
\frametitle{Résultats préliminaires (DLA)}
\framesubtitle{Filtrage sur zone active}
\begin{columns}
\column{.55\textwidth}
\begin{block}{Exemple: diffusion limitée par aggrégation}
\begin{itemize}
\item Mise en évidence de la \structure{population des cellules mobiles}
\item Speedup \structure{moins important} (bien que toujours linéaire en la
quantité de cellules actives)
\end{itemize}
\end{block}
\column{.4\textwidth}\centering
\animate<2-10>% Doesn't work with zathura
\animatevalue<1-10>{\currentimg}{0}{773}
\includegraphics[width=.45\textwidth]{animation/dla-normal-frame-\the\currentimg.png}
\hspace{1mm}
\includegraphics[width=.45\textwidth]{animation/dla-active-frame-\the\currentimg.png}
\end{columns}
\bigskip
\hspace{5mm}
\includegraphics[height=3.5cm]{raster/shots-dla.png}
\hfill
\includegraphics[height=3.55cm]{raster/graph-dla.png}
\hspace{5mm}
\end{frame}

26
example.forest.fire.tex Normal file
View file

@ -0,0 +1,26 @@
\begin{frame}
\frametitle{Résultats préliminaires (feu de forêt)}
\framesubtitle{Filtrage sur zone active}
\begin{columns}
\column{.55\textwidth}
\begin{block}{Exemple: application au feu de forêt}
\begin{itemize}
\item Mise en évidence du \structure{front de propagation}
\item Speedup \structure{important} (linéaire en la quantité de cellules actives)
\end{itemize}
\end{block}
\column{.4\textwidth}\centering
\animate<2-10>% Doesn't work with zathura
\animatevalue<1-10>{\currentimg}{0}{138}
\includegraphics[width=.45\textwidth]{animation/ffire-active-frame-\the\currentimg.png}
\hspace{1mm}
\includegraphics[width=.45\textwidth]{animation/ffire-normal-frame-\the\currentimg.png}
\end{columns}
\bigskip
\hspace{5mm}
\includegraphics[height=3.5cm]{raster/shots-ffire.png}
\hfill
\includegraphics[height=3.55cm]{raster/graph-ffire.png}
\hspace{5mm}
\end{frame}

35
experimental.model.tex Normal file
View file

@ -0,0 +1,35 @@
\begin{frame}{Différents types de modèles (formalismes)}
\begin{itemize}
\item Cadre minimal commun: la \alert{théorie des ensembles}
{\Large \[ \model \leadsto \ensm \]}
\pause
\item Exemples
\end{itemize}
\centering
\rowcolors[]{1}{}{black!5}
\begin{tabular}{lll}
\textbf{Type} & \textbf{Modèle \model} & \textbf{Ensemble support \ensm} \\\hline
Expérimental & $\ensm$ & Donné par extension
\\
À observables & $\langle \sigm,\bhvm \rangle$
& $\bhvm \subseteq \sigm$
\\
%monoïde + fonction de transition
Dynamique & $\langle \bhvm,\timm,\phim \rangle$
&
$\{ (x,\delta,\Phi_{\model}(x,\delta)) \mid x\in\bhvm, \delta \in \timm \}$
\\
%deux espaces topo + une fonction continue
À base de champs & $\langle \chsm,\chvm,\funm \rangle$
& $\{ (x,f_{\model}(x)) \mid x \in \chsm \}$
\\
%un espace mesurable et une probabilité sur cet espace
Probabiliste & $\langle \mesm,\prom \rangle$
& $\{ (A,\prom(A)) \mid A\in\trim \}$
\end{tabular}
\end{frame}

View file

@ -0,0 +1,87 @@
\begin{frame}{Système, Modèle, Formalisme}
\framesubtitle{Définitions}
\begin{center}
%\includegraphics[height=3cm]{vector/stub-formlism-model-system}
\begin{tikzpicture}[
%font=\small
node distance=1cm and 3cm]
\node[draw] (model) {Modèle};
\node[draw,below right=2cm of model] (system) {Système};
\node[draw,right=of model] (formalism) {Formalisme};
\draw[shorten <=3pt,shorten >=3pt,-Stealth] (formalism) to
node[auto,swap,font=\small] {description} (model);
\draw[shorten <=3pt,shorten >=3pt,very thick,line cap=round,<->,
out=170,in=-70] (system) to node[auto,font=\small] {sémantique} (model);
%node[auto,font=\small] {explique}
\coordinate (absconc) at ($(barycentric cs:model=1,system=1) + (5cm,0)$);
\draw [dashed] (barycentric cs:model=1,system=1) -- +(6cm,0) -- +(-3cm,0);
\node[label=above:Abstrait,label=below:Concret] at (absconc) {};
\end{tikzpicture}
\end{center}
%
\begin{itemize}
\item \structure{Système}\\
\small objet d'étude décomposé en parties
\medskip
\item \structure{Modèle}\\
\small vue simplifiée du système (abstraction) dont l'existence est
dépendante du système
\medskip
\item \structure{Formalisme}\\
\small langage, support d'expression du modèle
\end{itemize}
\end{frame}
\begin{frame}{Système, Modèle, Formalisme}
\framesubtitle{Points de vue sur les systèmes de Lindenmayer, $(\Sigma,w_0,P)$}
\begin{itemize}
\item \emph{L-System} comme \structure{formalisme} \\
{\small support de la description de la croissance des plantes}
\item \emph{L-System} comme \structure{modèle} \\
{\small modèle de calcul comme $\lambda$-calcul, machines de Turing,
grammaires de Chomsky, …}
\item \emph{L-System} comme \structure{système} \\
{\small objet d'étude formel dont un modèle pourrait être les fonctions de
croissance}
\end{itemize}
\medskip
\begin{columns}
\column{.33\textwidth}
\includegraphics[height=.4\textheight]{raster/lsystem-formalism}
\column{.33\textwidth}
\includegraphics[height=.4\textheight]{vector/lsystem-model}
\column{.33\textwidth}
%\includegraphics[width=\textwidth]{raster/lsystem-system}
\begin{tikzpicture}
\node[draw, text width=.9\textwidth] {\small
$$f(n) = | w_n |$$
$ \left\{\begin{array}{l}
a \rightarrow ab\\
b \rightarrow b
\end{array}\right. \qquad f(n) = n+1$
\medskip
$ \left\{\begin{array}{l}
a \rightarrow b\\
b \rightarrow ab
\end{array}\right. \qquad f(n) = \text{fib}(n)$
};
\end{tikzpicture}\\
\end{columns}
\begin{columns}[t]
\column{.4\textwidth}\centering
\mkCitation{P. Prusinkiewicz, A. Lindenmayer: “The algorithmic beauty of plants (the virtual laboratory)”, 1990}
\column{.6\textwidth}\centering
\mkCitation{G. Rozenberg, A. Salomaa: “The mathematical theory of L-Systems”, DAIMI Report Series, 3(33), 1974}
\end{columns}
\end{frame}

174
handout.tex Normal file
View file

@ -0,0 +1,174 @@
\documentclass{article}
\newcommand{\action}[1]{\emph{(#1)}}
\begin{document}
\input{title}
Mesdames, Messieurs, bienvenue à ma soutenance de thèse de doctorat en
informatique.
Je souhaiterai commencer cette présentation en remerciant les membres de mon
jury, ici présents, d'avoir accepté notre invitation à participer à cette
soutenance.
Entrons, si vous le voulez bien, dans le vif du sujet.
\input{synbiotic.presentation}
Comme vous le savez peut-être, ma thèse a été en partie financée sur le
projet ANR blanc SYNBIOTIC, et mon sujet de thèse est directement issue des
problématiques abordées par ce projet. SYNBIOTIC s'est étalé sur 3 ans, de
2011 à 2014, et a mobilisé une quinzaine de chercheurs, principalement en
informatique. Comme l'annonce la présentation officielle du projet:
\begin{citation}
La motivation finale est de permettre l'exploitation des propriétés
collectives d'une population bactérienne pour créer des biosystèmes
artificiels répondant à divers besoins dans le domaine de la santé, des
nanotechnologies, de l'énergie et de la chimie.
\end{citation}
Il s'agit ici de suivre le principe même de la biologie synthétique: monter
en abstraction et oublier les détails de fonctionnement, car l'objectif est
de \emph{spécifier} un comportement de la population. Par exemple, omettre
le détail du fonctionnement d'un réseau de régulation génétique au profit de
l'ingénierie directe des formes.
\action{montrer la flèche vers le haut sur le schéma}
L'approche empruntée est issue d'un domaine ayant fait ses preuves en ce qui
concerne la gestion de la complexité: l'informatique. L'idée est d'utiliser
le principe de la \emph{compilation}, qui permet de transformer un programme,
décrivant un comportement abstrait, vers une série de chiffres binaires exécutés
par le processeur.
Nous utilisons ce procédé pour constituer le chemin du retour, de la
spécification d'une forme à l'échelle de la population vers le réseau de
régulation génétique de chaque individu. Le projet décrit ainsi une tour de
langages (informatique) permettant de compiler successivement la spécification
des formes vers un langage de programmation spatiale (L1), de L1 vers un langage
de programmation orienté entitée (L2) et enfin de L2 vers un langage orienté
réseau de régulation génétique (L3).
Au cours de mon travail de thèse, je suis intervenu à différents étages de cette
tour: dans la deuxième partie de cette présentation nous parlerons de l'activité
dans MGS, le langage L1 et dans la troisième nous parlerons de OTB un simulateur
dont le langage d'entrée est L2.
\input{problem.statement}
Comme je viens de vous le décrire, il suffit de trouver un compilateur pour
passer d'un étage à l'étage inférieur de cette tour. Malheureusement, ça n'est
pas aussi simple.
Je souhaiterai attirer votre attention sur deux points essentiels qui me
permettront de poser la problématique. Le premier porte sur la sémantique.
(en pointant le schéma compilation)
I. En informatique.
Soit une fonction f, dans un certain langage de programmation bien connu,
disons C. Après compilation, nous obtenons cette suite d'instructions en
assembleur intel x86. Ces instructions peuvent être exécutées par le processeur
de votre ordinateur et le comportement que vous pouvez observer correspond bien,
par construction, à la fonction f.
Imaginons que vous n'aviez pas connaissance de cette fonction, et que vous
disposiez uniquement des instructions en assembleur. Avec beaucoup de travail,
vous pourriez deviner quel était la fonction f. Cette activité a d'ailleurs un
nom, c'est le reverse-engineering.
C'est mon premier point: la fonction f \emph{n'existe pas} en tant qu'objet
de première classe dans les instructions en assembleur. Cette fonction
disparaît à la compilation. Le vocabulaire des deux niveaux est distinct, mais
néammoins suffisamment proche pour pouvoir les lier (c'est bien là le rôle du
compilateur).
II. En biologie.
La difficulté est d'un cran supérieur: cette fonction f est issue d'un
support partiellement connu, pas des effets d'émergence. Les interactions au
niveau local sont complexes (1+1=3) et dûrement prédictibles. Notre but est
d'ingénierer l'émergence (WP1).
Problématique : le niveau local et le niveau global décrivent deux mondes, deux
univers différents que nous chercherons à lier.
Comment parler en même temps du niveau local et du niveau global dans une seule
et même description ? Nous apportons des pistes de réflexion dans la première
partie de cette présentation.
\input{plan}
C'est le plan
\mkPart{Multi-niveau}
\input{multimodel}
Nous l'avons vu en introduction, notre problématique est de décrire le lien
qu'il existe entre deux mondes: le niveau global et le niveau local. Ce sont
potentiellement deux modèles décrivant le \emph{même système} de deux points
de vues différents.
Nous nous sommes d'abord interessés à ce que l'on trouve dans la littérature en
ce qui concerne la modélisation multimodèle. Voici trois exemples emblématiques
de trois manières d'envisager la question:
(figure)
1) Couplage de modèles
Nous prenons l'exemple d'un multimodèle d'une cellule entière (image de la
publication). 28 modèles tirés d'études antérieures sont rassemblés et mettent à
jour un ensemble de 16 variables propres à la cellule. Ces modèles sont exécutés
en isolation et en parallèle. Une partie du travail de cette équipe de recherche
a été d'arbitrer la mise à jour des valeurs de chacune des variables de la
cellule. En effet ces variables sont lues et écrites par chacun des modèles.
Elles constituent de plus le lien entre chacun de ces modèles.
Cette construction est adhoc car elle dépend explicitement des spécificités de
chacun des modèles. Elle nécessite d'ajouter des programmes pour effectuer
la traduction en entrée et en sortie de chaque modèle importé. C'est un
fonctionnement en boîte noire où on ne connaît que les entrées et sorties des
modèles.
2) Transformation de modèles
Nous prenons l'exemple de l'ingénierie des modèles en informatique, dont le but
est de travailler \emph{directement} sur les modèles, et de les faire évoluer au
moyen de transformations de modèles. Par exemple, il est possible de spécifier
l'ajout d'une fonctionnalité à un programme en conservant certaines propriétés,
directement au niveau du modèle. Un exemple emblématique de l'ingénierie des
modèles est le langage UML (pour Unified Model Language). Dans ce langage de
spécification graphique, un modèle est constitué d'un ensemble diagrammes
décrivant son fonctionnement. Cette description opère à un niveau plus abstrait
que celui de l'implémentation.
3) Complexification
Nous prenons cette fois sur la méthodologie MENS (Memory Evolutive Neural
Systems) dont une des applications proposée porte sur la modélisation des
interactions neuronales.
\input{formalism.model.system}
\input{experimental.model}
\input{predator.prey}
\input{model.category}
%\input{representing.space}
%\input{representing.time}
%\input{representing.space.time.interaction}
\mkPart{Activité spatiale}
\input{mgs.topological.collections}
\input{mgs.topological.transformations}
\input{simple.ff.example}
\input{activity.in.mgs}
\input{where.is.activity}
\input{wave.algorithm}
\input{example.forest.fire}
\input{example.dla}
\mkPart{OTB}
\input{otb.general}
\input{otb.architecture}
\input{sbgp}
\input{ecoli.model}
\input{chemical.model}
\input{decision.model}
\input{otb.sectorisation}
\input{otb.stable.pop}
\input{otb.ppm}
\input{closing}
\end{document}

140
introduction.tex Normal file
View file

@ -0,0 +1,140 @@
\begin{frame}{Le projet ANR SynBioTIC (2011—2015)}
\framesubtitle{Biologie synthétique}
\begin{columns}
\column{.6\textwidth}
\begin{itemize}
% Abstraction, Découplage, Composition (ingénierie)
\item \structure{Biologie synthétique}
\begin{itemize}
\item Génie génétique \\
Production d'insuline par \structure{une} bactérie\\
\structure{[Riggs et Itakura, 1978]}
\item \structure{Abstraction}, standardisation, découplage
\end{itemize}
\medskip
\item Projet exploratoire:
« permettre l'exploitation des \structure{propriétés collectives} d'une
population bactérienne pour créer des biosystèmes artificiels.»\\
\medskip
\end{itemize}
\column{.3\textwidth}
\centering
\tourdelangages[white][white][white]
\tikz[overlay,abs/.style={ultra thick,-Stealth,thick,transform canvas={xshift=2mm}}]
\draw[abs] (genotype.east) to node[anchor=base,rotate=-90,yshift=1mm] {abstraction} (population.east);
\end{columns}
\end{frame}
%\newsavebox{\haskellfib}
%\begin{lrbox}{\haskellfib}
%\end{lrbox}
%\usebox{\haskellfib}
\begin{frame}[fragile]{Problématique}
\framesubtitle{compilation et multi-niveau}
\centering
\begin{tikzpicture}[%
node distance=15mm,
wp/.style={draw},%
compilation/.style={compilcol,line width=5mm,-Triangle Cap},
emergence/.style={alert,thick,-Stealth,decorate,decoration={snake,
amplitude=.5mm,segment length=2mm,post length=2mm}}]
\uncover<2-> {
\node[wp] (ibn) {%
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (3cm,2cm);
\node[anchor=center,yshift=-9mm] at (15mm,1cm) {%
\includegraphics[width=3cm]{vector/binary}};
\end{tikzpicture}
};
}
\begin{onlyenv}<2->
\node[wp,above=of ibn] (ihn) {%
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (3cm,2cm);
\node[anchor=center,text width=3cm] at (15mm,1cm) {%
\small
\lstset{style=haskell}
\begin{lstlisting}
fib 0 = 0
fib 1 = 1
fib n = fib (n-1)
+ fib (n-2)
\end{lstlisting}
};
\node[anchor=center,minimum width=3cm, minimum height=2cm,fill=white,
opacity=0.9] at (15mm,1cm){\fontsize{55pt}{0}$f$};
\end{tikzpicture}%
};
\draw[compilation] (ihn) to node[auto] {Compilation} (ibn);
\end{onlyenv}
\node[wp,right=3cm of ibn,label=below:{\small Niveau local}] (bbn) {%
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (3cm,2cm);
\node[anchor=center,yshift=9mm] at (15mm,1cm) {%
\includegraphics[height=37mm]{vector/ecolihelix}};
\end{tikzpicture}
};
\node[wp,above=of bbn,label=above:{\small Niveau global}] (bhn) {%
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (3cm,2cm);
\node[anchor=center] at (15mm,1cm) {%
\includegraphics[width=3cm]{vector/petri}};
\end{tikzpicture}
};
\draw[emergence,transform canvas={xshift=-1cm}] (bbn) to (bhn);%
\draw[emergence,transform canvas={xshift=1cm}] (bbn) to (bhn);%
\visible<1-2>{
\draw[emergence] (bbn) to node[black,fill=white,opacity=.8]
{émergence} (bhn);
}%
\visible<3>{
\draw[compilation] (bhn) to (bbn);
}
\uncover<2->{
\node[right=4mm of ihn,text width=2cm, align=center]
{\small Haut niveau\\ de description};
\node[right=4mm of ibn,text width=2cm, align=center]
{\small Bas niveau\\ de description};
}
\end{tikzpicture}
\end{frame}
\begin{frame}%[label=this one]
\frametitle{Le projet ANR \textsc{SynBioTIC} (2011—2015)}
\begin{columns}
\column{.8\textwidth}
\begin{itemize}
\item Découpe en work-package
\begin{itemize}
\item \textcolor{black!40}{WP1: Études des formes, fourni des exemples}
\item \structure<2>{WP2: Programmation spatiale (L1)}
\item \structure<2>{WP3: Programmation orienté entité (L2)}
\item WP4: Réseau de régulation génétique (L3)
\item \textcolor{black!40}{WP5: Calculabilité}
\item \textcolor{black!40}{WP6: Sûreté, sécurité}
\end{itemize}
\end{itemize}
\column{.2\textwidth}
\centering
\tourdelangages[white][white][white][compilcol]
\begin{tikzpicture}[overlay,
wp/.style={draw,text width=2cm,font=\footnotesize,align=center,
minimum width=22mm, minimum height=12mm},
]
%\path (population) to node[auto,xshift=-2mm,swap] {Compilation} (phenotype);
%\path (phenotype) to node[auto,xshift=-2mm,swap] {Compilation} (genotype);
\uncover<2>{
\node[structure,left=1mm of population] {L1};
\node[structure,left=1mm of phenotype] {L2};
\node[left=1mm of genotype] {L3};
}
\end{tikzpicture}
\end{columns}
\end{frame}

317
main.tex Normal file
View file

@ -0,0 +1,317 @@
\documentclass[10pt,table]{beamer}
\usepackage{pgfpages}
%\includeonlyframes{this one}
%[,label=this one]
\usepackage{polyglossia}
\setmainlanguage{french}
\setotherlanguage{english}
% Do this BEFORE unicode-math
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{mathrsfs}
\usepackage{amssymb}
\usepackage{siunitx}
\usefonttheme{professionalfonts}
\usepackage{unicode-math}
% Do this AFTER any math font package (see fontspec doc)
\usepackage{fontspec}
\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text}
\setromanfont{Fontin}[
Path = fonts/ ,
Extension = .ttf ,
UprightFont = *-Regular ,
BoldFont = *-Bold ,
ItalicFont = *-Italic ,
SmallCapsFont = *-SmallCaps ]
\setsansfont{Fontin-Sans}[
Path = fonts/ ,
Extension = .otf ,
UprightFont = *-Regular ,
BoldFont = *-Bold ,
ItalicFont = *-Italic ,
BoldItalicFont = *-BoldItalic ,
SmallCapsFont = *-SmallCaps ]
%\setmonofont[Scale=0.8]{Hack}
\setmonofont{FantasqueSansMono}[
Path = fonts/ ,
Extension = .ttf ,
UprightFont = *-Regular ,
BoldFont = *-Bold ,
ItalicFont = *-Italic ,
BoldItalicFont = *-BoldItalic ]
\setmathfont[mathbf=sym] {Asana-Math}[
Path = fonts/ ,
Extension = .otf ]
\usepackage{xspace}
\usepackage{xltxtra}
\usepackage{tikz}
\usepackage{tabularx}
\usepackage{pdfpages}
%\usetikzlibrary{shadows}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{backgrounds}
\usetikzlibrary{bending}
\usetikzlibrary{calc}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.text}
\usetikzlibrary{fit}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes}
\usetikzlibrary{spy}
\usepackage{listings}
\lstdefinestyle{haskell}{%
language=Haskell}
\usepackage{xparse} % LaTeX3 command declaration
\usetheme{Pittsburgh}
\usecolortheme{orchid}
%Titre + sous-titre c'est mieux.
\title{Modélisation multi-niveau}
\subtitle{Un cadre théorique pour l'intégration des niveaux d'organisation dans
les modèles. Applications à l'activité spatiale et à la simulation de grandes
populations de bactéries.}
\author{Martin \textsc{Potier}}
\institute[UPE]{Université Paris-Est}
\date{6 juillet 2017}
\tikzstyle{every picture}+=[remember picture]
\tikzset{
diagonal fill/.style 2 args={fill=#2, path picture={
\fill[#1, sharp corners] (path picture bounding box.south west) -|
(path picture bounding box.north east) -- cycle;}},
reversed diagonal fill/.style 2 args={fill=#2, path picture={
\fill[#1, sharp corners] (path picture bounding box.north west) |-
(path picture bounding box.south east) -- cycle;}}
}
\setbeamersize{text margin left=1mm,text margin right=1mm}
%\setbeamercovered{dynamic}
\beamertemplatenavigationsymbolsempty
\setbeamertemplate{section in toc}[sections numbered]
\setbeamertemplate{itemize items}[default]
\setbeamertemplate{enumerate items}[default]
\setbeamertemplate{section in toc shaded}[default][20]
%\setbeamercovered{transparent=20}
%\setbeamercolor{structure}{fg=blue}
\setbeamertemplate{footline}{
\begin{tikzpicture}[overlay]
\node [anchor=center,white,fill=structure,circle,
minimum size=7mm,text height=3.5mm,text depth=1.5mm,inner sep=1pt]
at ($(current page) + (64mm,-49mm) + (-5mm,6mm)$)
%{\insertframenumber~/~\inserttotalframenumber}
{\large\insertframenumber};
\end{tikzpicture}
}
\setbeamertemplate{frametitle}{
\color{structure}
%\bfseries
\insertframetitle
\par
\vskip-12pt
\pgfmathsetmacro{\progress}{\insertframenumber/\inserttotalframenumber}
\pgfmathsetmacro{\progress}{126*\progress}
\tikz[overlay]{\draw[structure,thick,gridded]
(0,0) -- (\progress mm,0);}\par
}
% Solarized set
\definecolor{base03}{HTML}{002B36}
\definecolor{base02}{HTML}{073642}
\definecolor{base01}{HTML}{586E75}
\definecolor{base00}{HTML}{657B83}
\definecolor{base0}{HTML}{839496}
\definecolor{base1}{HTML}{93A1A1}
\definecolor{base2}{HTML}{EEE8D5}
\definecolor{base3}{HTML}{FDF6E3}
\definecolor{orange}{HTML}{CB4B16}
\definecolor{red}{HTML}{DC322F}
\definecolor{green}{HTML}{859900}
\definecolor{yellow}{HTML}{B58900}
\definecolor{magenta}{HTML}{D33682}
\definecolor{violet}{HTML}{6C71C4}
\definecolor{blue}{HTML}{268BD2}
\definecolor{cyan}{HTML}{2AA198}
% Partie multi
\colorlet{compilcol}{black!80}
% Partie activité
\colorlet{active}{red}
\colorlet{ashes}{gray!60!black}
\colorlet{fire}{orange!70!red}
\colorlet{forest}{green}
\colorlet{frontier}{green}
\colorlet{quiescent}{blue}
% Partie OTB
\colorlet{c} {blue!60}
\colorlet{ocaml} {green!60}
\colorlet{opencl} {red!60}
\colorlet{sbgp} {magenta!60}
\newcount\currentimg % used in animations
%Commands and aliases
\newcommand{\mgs}{MGS\xspace}
\newcommand{\voisinde}[1]{%
\usebeamercolor{structure}%
\tikz[baseline,every node/.style={circle,anchor=base,inner sep=.5mm}]{%
\draw[draw=none] node (#1) {,};%
\uncover<2->{\node[draw,fg] (c#1) {,};}%
}}
\newcommand{\mkPart}[1]{\section{#1}\input{plan}}
\newcommand{\model}{\ensuremath{\mathfrak{M}}}
\newcommand{\bhvm}{\ensuremath{\mathfrak{B}_{\mathfrak{M}}}}
\newcommand{\ensm}[1][]{\ensuremath{E_{\mathfrak{M}_{#1}}}}
\newcommand{\mref}{\ensuremath{E_{\text{Réf}}}}
\newcommand{\sigm}{\ensuremath{\Sigma_{\mathfrak{M}}}}
\newcommand{\timm}{\ensuremath{\mathbb{T}_{\mathfrak{M}}}}
\newcommand{\phim}{\ensuremath{\Phi_{\mathfrak{M}}}}
\newcommand{\chsm}{\ensuremath{\mathbb{S}_{\mathfrak{M}}}}
\newcommand{\chvm}{\ensuremath{\mathbb{V}_{\mathfrak{M}}}}
\newcommand{\funm}{\ensuremath{f_{\mathfrak{M}}}}
\newcommand{\mesm}{\ensuremath{\mathbb{X}_{\mathfrak{M}}}}
\newcommand{\prom}{\ensuremath{\mathbb{P}_{\mathfrak{M}}}}
\newcommand{\trim}{\ensuremath{\mathcal{A}_{\mathfrak{M}}}}
\newcommand{\orr}[1]{\ensuremath{\vec{#1}}}
\newcommand{\mkCitation}[1]{{\Tiny\textcolor{gray}{{#1}}\par}}
\newcommand{\tocshowonlycurrentsection}{}
%\newcommand{\tourdelangages}[4][white][white][white][white]{
\DeclareDocumentCommand{\tourdelangages}{ O{transparent} O{transparent} O{transparent} O{transparent} }{
\begin{tikzpicture}[overlay,%
every node/.style={inner sep=1mm},
wp/.style={draw,text width=2cm,font=\footnotesize,align=center,
minimum width=22mm, minimum height=12mm},
compilation/.style={#4,line width=5mm,-Triangle Cap}]
\node[wp,anchor=east,xshift=-8mm] (phenotype) at (current page.east) {
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (2cm,1cm);
\node[anchor=center] at (1cm,0.5cm) {\includegraphics[height=1cm]{vector/badecoli}};
\end{tikzpicture}
};
\node[wp,below=of phenotype] (genotype) {
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (2cm,1cm);
\node[anchor=center] at (2mm,0.5cm) {\includegraphics[height=7mm,angle=47]{vector/helix}};
\end{tikzpicture}
};
\node[wp,above=of phenotype] (population) {
\begin{tikzpicture}
\clip (0cm,0cm) rectangle (2cm,1cm);
\node[anchor=center] at (1cm,0.5cm) {\includegraphics[height=2cm]{vector/petri}};
\end{tikzpicture}
};
\draw[compilation] (population) to (phenotype);
\draw[compilation] (phenotype) to (genotype);
\begin{scope}[on background layer]
\node[fit=(genotype) (phenotype) (population),rounded corners,
fill,#1,inner sep=3mm] {};
\node[fit=(population) (phenotype),rounded corners,
fill,#2,inner sep=3mm] {};
\node[fit=(phenotype),rounded corners,
fill,#3,inner sep=3mm] {};
\end{scope}
\end{tikzpicture}
}
\newcommand{\drawfigure}{\tourdelangages{}}
\DeclareDocumentCommand{\moteurs}{ O{transparent} O{transparent} O{transparent} }{
\begin{tikzpicture}[overlay,
node distance=8mm,
wp/.style={draw},
causation/.style={black!80,-{Triangle[width=8mm,length=5mm]},shorten >= 1mm,
shorten <=1mm,line width=5mm}%
]
\coordinate[xshift=-15mm] (centre) at (current page.east);
\node[wp,above=of centre] (moteur-physique) {%
\begin{tikzpicture}[scale=0.7]
\clip (0cm,0cm) rectangle (3cm,2cm);
\node[anchor=center] at (15mm,1cm) {%
\includegraphics[height=20mm]{vector/collision}};
\end{tikzpicture}
};
\node[wp,below=of centre] (moteur-chimique) {%
\begin{tikzpicture}[scale=0.7]
\clip (0cm,0cm) rectangle (3cm,2cm);
\node[anchor=center] at (15mm,1cm) {%
\includegraphics[height=14mm]{vector/chimie}};
\end{tikzpicture}
};
\draw[causation,transform canvas={xshift= 6mm}] (moteur-chimique) to (moteur-physique);
\draw[causation,transform canvas={xshift=-6mm}] (moteur-physique) to (moteur-chimique);
\begin{scope}[on background layer]
\node[fit=(moteur-chimique),rounded corners,
fill,#1,inner sep=3mm] {};
\node[fit=(moteur-physique),rounded corners,
fill,#2,inner sep=3mm] {};
\node[rounded corners,fill,#3,inner sep=3mm,minimum height=2cm, minimum width=3cm]
at (barycentric cs:moteur-chimique=1,moteur-physique=1) {};
\end{scope}
\end{tikzpicture}
}
\makeatletter
\patchcmd{\beamer@sectionintoc}
{\vfill}
{\vskip5\itemsep}
{}
{}
\makeatother
\begin{document}
%\input{test}
%
\input{title}
\input{introduction}
\input{plan}
\renewcommand{\tocshowonlycurrentsection}{currentsection}
\renewcommand{\drawfigure}{\tourdelangages[structure!30][transparent][transparent]}
\mkPart{Vers la modélisation multi-niveau}
\input{multimodel}
\input{formalism.model.system}
\input{experimental.model}
\input{predator.prey}
\input{model.category}
\input{part1.conclude}
\renewcommand{\drawfigure}{\tourdelangages[transparent][structure!30][transparent]}
\mkPart{Topologie de l'activité}
\input{activity.motivation}
\input{mgs.topological.collections}
\input{mgs.topological.transformations}
\input{simple.ff.example}
\input{where.is.activity}
\input{example.forest.fire}
\input{example.dla}
\input{part2.conclude}
\renewcommand{\drawfigure}{\tourdelangages[transparent][transparent][structure!30]}
\mkPart{Simulateur de colonie de bactéries}
\input{otb.general}
\input{otb.organisation}
\input{chemical.model}
\input{ecoli.model}
\input{decision.model}
\input{otb.sectorisation}
\input{otb.stable.pop}
\input{otb.architecture}
\input{part3.conclude}
\input{closing}
\end{document}
%\input{bilan}
%\input{sbgp}
%\input{otb.ppm}
%\input{wave.algorithm}
%\input{activity.in.mgs}

View file

@ -0,0 +1,31 @@
\begin{frame}
\frametitle{Formalisme \mgs}
\framesubtitle{Collections topologiques}
\begin{columns}[c]
\column{.5\textwidth}
\begin{itemize}
\item Une collection de \structure{cellules topologiques}
\begin{itemize}
\item
\alert<1>{0-cellule},
\alert<2>{1-cellule},
\alert<3>{2-cellule},
\alert<4>{3-cellule}, etc.
\end{itemize}
\medskip
\item Liées par une \structure{relation d'incidence}
\begin{itemize}
\item $\text{face}(\alert<6>{s_1}) = $%
\tikz[baseline=-0.5ex] \node (e) {$\{e_0,e_1,e_2,e_3,e_4,e_5\}$};
\end{itemize}
\medskip
\item Les cellules sont \structure{étiquetées} avec des valeurs
arbitraires
\end{itemize}
\column{.5\textwidth}
\input{vector/coll-topo-papillon.tikz}
\end{columns}
\end{frame}

View file

@ -0,0 +1,30 @@
\defverbatim[colored]\transformation{%
\small
\begin{semiverbatim}
trans evol = \{
\structure{pattern_1} => \alert{expression_1}
...
pattern_n => expression_n
\}
\end{semiverbatim}}
\begin{frame}[fragile]
\frametitle{Formalisme \mgs}
\framesubtitle{Transformations topologiques}
\only<1>{
\begin{itemize}
\item Fonctions définies \structure{par cas} sur les collections\\
{\small chaque cas détermine une \structure{sous-collection}}
\item Relation de réécriture: \structure{réécriture topologique}
\end{itemize}
}
\tikz[overlay] \node[text width=4cm]
at (current page.center) {\transformation};
\begin{center}
\input{vector/transformation-papillon.tikz}
\end{center}
\end{frame}

79
model.category.tex Normal file
View file

@ -0,0 +1,79 @@
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\begin{frame}[label=this one]
\frametitle{Catégorie des modèles}
\tikz[overlay] \node[yshift=-2cm] at (current page.north){
$ \mathbf{Abs}_S = (\alert{\mref} \downarrow \mathbf{Set})^{\mathbf{op}} $
};
\centering
\begin{tikzpicture}[overlay,%
node distance=13mm and 20mm,
model/.style={draw,rectangle,on grid=true,fill=white},
function/.style={-Stealth,thick},
abstraction/.style={function,very thick}
]
\alt<1-4>{
\node[model,left=of current page.center] (m1) {$\ensm[1]$};
\node[model,above=of current page.center] (m2) {$\ensm[2]$};
\node[model,below=of current page.center] (m3) {$\ensm[3]$};
\node[model,right=of current page.center] (m4) {$\ensm[4]$};
}{
\node[model,circle,left=of current page.center] (m1) {$\model_1$};
\node[model,circle,above=of current page.center] (m2) {$\model_2$};
\node[model,circle,below=of current page.center] (m3) {$\model_3$};
\node[model,circle,right=of current page.center] (m4) {$\model_4$};
\draw[abstraction] (m1) to (m2);
\draw[abstraction] (m1) to (m3);
\draw[abstraction] (m2) to (m4);
\draw[abstraction] (m3) to (m4);
}
\uncover<3-4>{
\draw[function] (m2) to (m1);
}
\uncover<4>{
\draw[function] (m3) to (m1);
\draw[function] (m4) to (m2);
\draw[function] (m4) to (m3);
}
\visible<1-4>{
\node[draw, very thick, rounded corners=2pt,inner sep=0pt,%
minimum width=.7\textwidth,minimum height=.65\textheight,yshift=-5mm]
(set) at (current page.center) {};
\node[below right] (setl) at (set.north west) {$\mathbf{Set}$};
}
\visible<2-4>{
\node[alert,draw,xshift=-12mm,yshift=6mm] (ms) at (set.south) {$\mref$};
\draw[function] (ms) to (m1);
\draw[function] (ms) to (m2);
\draw[function] (ms) to (m3);
\draw[function,bend right] (ms) to (m4);
}
\begin{pgfonlayer}{background}
\visible<5>{
\node[alert,draw,circle,xshift=-12mm,yshift=6mm] (ms) at (set.south) {$\model_{\texttt{Réf}}$};
\draw[black!50,abstraction] (m1) to (ms);
\draw[black!50,abstraction] (m2) to (ms);
\draw[black!50,abstraction] (m3) to (ms);
\draw[black!50,abstraction,bend left] (m4) to (ms);
}
\end{pgfonlayer}
\visible<4>{
\node[draw, dashed, very thick, rounded corners=2pt,inner sep=0pt,%
minimum width=.5\textwidth,minimum height=.46\textheight]
(abs) at (current page.center) {};
\node[below right] (absl) at (abs.north west) {$\mathbf{Abs}_S$};
}
\visible<5>{
\node[draw, very thick, rounded corners=2pt,inner sep=0pt,%
minimum width=.7\textwidth,minimum height=.65\textheight,yshift=-5mm]
(abs) at (current page.center) {};
\node[below right] (absl) at (abs.north west) {$\mathbf{Abs}_S$};
}
\end{tikzpicture}
\end{frame}

66
multimodel.tex Normal file
View file

@ -0,0 +1,66 @@
\begin{frame}%[label=this one]
\frametitle{Mettre en relation des «modèles»}
%\framesubtitle{dans la littérature}
\begin{columns}
\column{.5\textwidth}
\begin{itemize}
\item \structure{Couplage}
\begin{itemize}
\item \alert<1>{\emph{Modèle} de la croissance des villes}
\item \alert<2>{\emph{Modèle} intégratif d'une cellule}
\end{itemize}
\medskip
\item \structure{Transformation}
\begin{itemize}
\item \alert<3>{Transformation de \emph{modèles} UML}
\item \alert<4>{Raffinement de \emph{modèles}}
\end{itemize}
\medskip
\item \structure{Complexification}
\begin{itemize}
\item \alert<5>{Memory Evolutive (Neural) System}
\item \alert<5>{Cellular Non-linear Network}
\end{itemize}
\end{itemize}
\column{.5\textwidth}\centering
\only<1>{\includegraphics[width=\textwidth]{raster/simpop3}\\
\mkCitation{T. Louail “Comparer les morphogénèses urbaines en
Europe et aux États-Unis par la simulation à base d'agents -- Approches
multi-niveaux et environnements de simulation spatiale”, Thèse, 2010}
}
\only<2>{\includegraphics[height=4cm]{raster/whole-cell-models}\\
\mkCitation{J. R. Karr et al. “A whole-cell computational
model predicts phenotype from genotype”, Nature, 2012}
}
\only<3>{%
\includegraphics[height=21mm]{raster/transformation-1}\\
\includegraphics[height=21mm]{raster/transformation-2}\\
\mkCitation{A. Christoph et M. M. Müller “GREAT: UML
transformation tool for porting middleware applications”, Modeling
Languages and Applications: 6th International Conference, San Francisco,
CA, USA, 2003}
}
\only<4>{
\includegraphics[height=4cm]{raster/refinement-av}
\includegraphics[height=4cm]{raster/refinement-ap}\\
\mkCitation{D.-E. Gratie “Refinement of biomodels using Petri
nets”, TUCS dissertation, 2016}
}
\only<5->{%
\includegraphics[width=.9\textwidth,page=5]{vector/mens-neurons}\\[1em]
\includegraphics[width=.45\textwidth,page=1]{vector/cnn-synapses}\hfill
\includegraphics[width=.45\textwidth,page=2]{vector/cnn-synapses}\\
\mkCitation{K. Mainzer et L. O. Chua: “Local activity principle”, World Scientific, 2013}
}
\end{columns}
\bigskip\centering
\uncover<6>{
Cadre \structure{formel unifié},\\
«\structure{sémantique}» du système,\\
\structure{abstraction} et \structure{multi-niveau}
}
% Multi-niveau = aller au delà de l'abstraction
\end{frame}

49
otb.architecture.tex Normal file
View file

@ -0,0 +1,49 @@
\begin{frame}%[label=this one]
\frametitle{Architecture logicielle}
\begin{columns}
\column{.7\textwidth}
\begin{itemize}
\item[{\tikz[c]{\node[fill,rectangle]{};}}] \num{2300} lignes de C
\begin{itemize}
\item Programmation API, bas niveau
\item Interface avec OpenCL/OpenGL
\end{itemize}
\item[{\tikz[ocaml]{\node[fill,rectangle]{};}}] \num{2000} lignes de OCaml
réparties en 10 modules
\begin{itemize}
\item Programmation API, haut niveau
\item Processus maître, orchestration de simulation
\item Gestion des zones dynamiques
\end{itemize}
\item[{\tikz[opencl]{\node[fill,rectangle]{};}}] \num{700} lignes de kernel OpenCL
\smallskip
\item[{\tikz[sbgp]{\node[fill,rectangle]{};}}] SBGP
\end{itemize}
\begin{center}
\small
\begin{tikzpicture}[node distance=4mm and 1.3333cm,
box/.style={on grid,inner sep=0pt,rectangle,draw,
minimum height=4mm,font=\small},
full/.style={minimum width=4cm},
half/.style={minimum width=2cm},
third/.style={minimum width=1.3333cm},
]
\node[fill=black,draw=black,white,half,box] (cpu) {CPU};
\node[fill=black,draw=black,white,half,box,right=2cm of cpu] (gpu) {GPU};
\node[fill=c,third,box,above=of cpu.west,right] (os) {OS};
\node[fill=opencl,third,box,right=of os] (opencl) {OpenCL};
\node[fill=c,third,box,right=of opencl] (opengl) {OpenGL};
\node[fill=c,full,box,above=of os.west,right] (api1) {API OpenCL/OpenGL};
\node[fill=ocaml,full,box,above=of api1] (api2) {API Simulateur};
\node[diagonal fill={ocaml}{sbgp},full,box,above=of api2] (spec) {Spécification simulation};
\node[full,box,above=of spec,dashed] (ihm) {IHM};
\draw[white] (cpu.north east) -- (cpu.south east);
\end{tikzpicture}
\end{center}
\column{.2\textwidth}
\moteurs
\end{columns}
\end{frame}

55
otb.general.tex Normal file
View file

@ -0,0 +1,55 @@
\begin{frame}%[label=this one]
\frametitle{OTB, un simulateur de bactéries}
\begin{columns}
\column{.7\textwidth}
\begin{itemize}
\item \structure{Motivations}
\begin{itemize}
\item \structure{Assister} le travail du programmeur (L1, L2)
\item \structure{Observer} la morphogenèse à partir de la spécification
d'un comportement local
\end{itemize}
\medskip
\item \structure{Objectifs}
\begin{itemize}
\item Simulation raisonnable de grandes populations\\($10^5$ individus)
\item Simulation réaliste
\end{itemize}
\medskip
\item \structure{Utilisation du parallélisme}
\begin{itemize}
\item Nécessaire pour accélérer les calculs
\item Largement disponible (Multi-cœur, GPU)
\end{itemize}
\end{itemize}
\column{.2\textwidth}
\tourdelangages
\begin{tikzpicture}[overlay,
big red/.style={line width=1mm,line cap=round,red}]
\draw[big red] (genotype.south west) to (genotype.north east);
\draw[big red] (genotype.north west) to (genotype.south east);
\end{tikzpicture}
\end{columns}
\end{frame}
% Il nous faut un simulateur pour:
% \begin{itemize}
% \item Observer de l'expression d'un RRG au niveau de la population
% \item Tester des hypothèses et guider le design de L1 et L2
% \item Palier le manque de composants biologique dans le projet
% \end{itemize}
%
% \medskip Propriétés souhaitables:
% \begin{itemize}
% \item Simulation raisonnable de grandes populations ($10^5$ individus)
% \item Simulation réaliste
% \item Simulateur générique et modulaire pour adaptation facile à d'autres
% problématiques
% \end{itemize}
%
% \medskip Utilisation du parallélisme car
% \begin{itemize}
% \item nécessaire pour accélérer les calculs
% \item largement disponible (Multi-cœur, GPU)
% \end{itemize}

21
otb.organisation.tex Normal file
View file

@ -0,0 +1,21 @@
\begin{frame}%[label=this one]
\frametitle{Organisation}
\begin{columns}
\column{.7\textwidth}
\begin{itemize}
\item \structure{Moteur chimique}\\
{\small comportement du support sur lequel évoluent les bactéries}
\bigskip
\item \structure{Moteur physique}\\
{\small comportement mécanique des bactéries}
\bigskip
\item \structure{Moteur comportemental}\\
{\small couplage entre morphogènes et bactéries}
\end{itemize}
\column{.2\textwidth}
\moteurs
\end{columns}
\end{frame}

317
otb.ppm.tex Normal file
View file

@ -0,0 +1,317 @@
\begin{frame}{Propagation Paralèlle \emph{à la} Margolus}
{Le problème de la dépendance aux cellules voisines}
\vfill
\centering
\begin{tikzpicture}
\clip (-17mm,-17mm) rectangle (17mm,17mm);
\draw[xshift=5mm,yshift=5mm] ( -3cm, -3cm) grid ( 3cm, 3cm);
\node (x) at (0,0) {$x_i$};
\foreach[count=\n] \p in {(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1)} {
\node (v\n) at \p {$v_{\n_i}$};
}
\begin{scope}[on background layer]
\clip (-17mm,-17mm) rectangle (17mm,17mm);
\only<1>{%
\fill[black!10] (v6.south west) rectangle (v2.north east);
\fill[white] (v6.north east) rectangle (v2.south west);
\fill[red!60] (x) circle (3mm);
}
\only<2>{%
\fill[black!10] (v3.north east) rectangle ($(v7.south east)+(-10cm,0)$);
\fill[white] (v3.south west) rectangle ($(v7.north east)+(-10cm,0)$);
\fill[red!60] (v5) circle (3mm);
}
\end{scope}
\end{tikzpicture}
\alt<1>{%
$$ x_{i,1} = f(x_i , v_{1_i} , v_{2_i} , \ldots , v_{8_i}) $$
}{%
$$ v_{5_{i,1}} = f(v_{5_i} , x_i , v_{3_i}, v_{4_i} ,
\alert{? , ? , ?} , v_{6_i} , v_{7_i}) $$
}
\vfill~
\uncover<2>{Une partie du \structure{contexte} est manquant.}
\end{frame}
\begin{frame}{Propagation Paralèlle \emph{à la} Margolus}
{Le voisinage de margolus}
\vfill
\centering
\begin{tikzpicture}
\clip (-27mm,-27mm) rectangle (27mm,27mm);
\draw[xshift=5mm,yshift=5mm] ( -5cm, -5cm) grid ( 5cm, 5cm);
\fill[red] (0,0) circle (3mm);
\only<1>{\draw[xshift=5mm,yshift=5mm, step=2cm, very thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<2>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, very thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\begin{scope}[on background layer]
\only<1>{%
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);}
\only<2>{%
\fill[red!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);}
\end{scope}
\end{tikzpicture}
\vfill~
\end{frame}
\begin{frame}{Propagation Paralèlle \emph{à la} Margolus}
{Mise à jour \emph{indépendante} d'un bloc}
\vfill
\centering
\begin{tikzpicture}[
cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\TINY},
neighbor cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\small},
center cell/.style={cell,white,fill=black},
spy using outlines={circle,red,size=58mm,magnification=4,connect spies}]
\begin{scope}[scale=.5]
\clip (-27mm,-27mm) rectangle (27mm,27mm);
% Background
\only<1-3>{%
\fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
}
\only<4->{%
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
\fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
}
\begin{scope}
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\only<1-3>{
\begin{scope}[shift={(-1cm,0)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\begin{scope}[shift={(-1cm,-1cm)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\begin{scope}[shift={(0cm,-1cm)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
}
\only<1>{
% Voisins
\node[neighbor cell] at ( 1cm, 0cm) {$v_{A,1}$};
\node[neighbor cell] at ( 1cm, 1cm) {$v_{A,2}$};
\node[neighbor cell] at ( 0cm, 1cm) {$v_{A,3}$};
\node[neighbor cell] at (-1cm, 1cm) {$v_{B,1}$};
\node[neighbor cell] at (-2cm, 1cm) {$v_{B,2}$};
\node[neighbor cell] at (-2cm, 0cm) {$v_{B,3}$};
\node[neighbor cell] at (-2cm,-1cm) {$v_{C,1}$};
\node[neighbor cell] at (-2cm,-2cm) {$v_{C,2}$};
\node[neighbor cell] at (-1cm,-2cm) {$v_{C,3}$};
\node[neighbor cell] at ( 0cm,-2cm) {$v_{D,1}$};
\node[neighbor cell] at ( 1cm,-2cm) {$v_{D,2}$};
\node[neighbor cell] at ( 1cm,-1cm) {$v_{D,3}$};
\begin{scope}[scale=0.5,shift={(-5mm,-5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A$};
\node[cell] at (-10mm, -0mm) {$B$};
\node[cell] at (-10mm,-10mm) {$C$};
\node[cell] at ( -0mm,-10mm) {$D$};
\node[cell] at ( 1cm, 0cm) {$v_{A,1}$};
\node[cell] at ( 1cm, 1cm) {$v_{A,2}$};
\node[cell] at ( 0cm, 1cm) {$v_{A,3}$};
\node[cell] at (-1cm, 1cm) {$v_{B,1}$};
\node[cell] at (-2cm, 1cm) {$v_{B,2}$};
\node[cell] at (-2cm, 0cm) {$v_{B,3}$};
\node[cell] at (-2cm,-1cm) {$v_{C,1}$};
\node[cell] at (-2cm,-2cm) {$v_{C,2}$};
\node[cell] at (-1cm,-2cm) {$v_{C,3}$};
\node[cell] at ( 0cm,-2cm) {$v_{D,1}$};
\node[cell] at ( 1cm,-2cm) {$v_{D,2}$};
\node[cell] at ( 1cm,-1cm) {$v_{D,3}$};
\end{scope}
}
\only<2>{
\begin{scope}[scale=0.5,shift={(-5mm,-5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
\only<3>{
\begin{scope}[scale=0.5,shift={(5mm,5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(-15mm,5mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(-15mm,-15mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(5mm,-15mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
\only<4>{
\begin{scope}[scale=0.5,shift={(5mm,5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
% Grilles:
\draw[xshift=5mm,yshift=5mm,thin] ( -5cm, -5cm) grid ( 5cm, 5cm);
\only<1-3>{\draw[xshift=5mm,yshift=5mm, step=2cm, thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<4>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<1-3>{
\coordinate (spyhook) at (-5mm,-5mm);
}
\only<4>{
\coordinate (spyhook) at (5mm,5mm);
}
\end{scope}
\spy on (spyhook) in node (zoom) at (5cm,0);
\end{tikzpicture}
%\only<1-2>{
%Toute l'information \emph{nécessaire} est disponible pour mettre à jour $A$.
%$$ A' = f( A, v_{A_1}, v_{A_2}, v_{A_3}, v_{B_1}, B, C, D, v_{D_3} ) $$
%ainsi que $B$, $C$ et $D$, symétriquement.
%}
%\only<3>{
%Le bloc $(A',B',C',D')$ est répliqué 4 fois.}
%\only<4>{
%Au décalage de la grille, le nouveau bloc est prêt pour une mise à jour.
%}
\vfill~
\end{frame}
%\begin{frame}{Propagation Paralèlle \emph{à la} Margolus}
% {Mise à jour \emph{indépendante} d'un bloc}
% \vfill
%
% \begin{columns}[c]
% \column{.4\textwidth}\centering
% \begin{tikzpicture}[scale=.5]
% \clip (-27mm,-27mm) rectangle (27mm,27mm);
% \draw[xshift=5mm,yshift=5mm] ( -5cm, -5cm) grid ( 5cm, 5cm);
% \fill[red] (0,0) circle (3mm);
% \only<1-3>{\draw[xshift=5mm,yshift=5mm, step=2cm, very thick]%
% ( -5cm, -5cm) grid ( 5cm, 5cm);}
% \only<4->{\draw[xshift=-5mm,yshift=-5mm, step=2cm, very thick]%
% ( -5cm, -5cm) grid ( 5cm, 5cm);}
% \begin{scope}[on background layer]
% \only<1-3>{%
% \fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
% \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);}
% \only<4->{%
% \fill[red!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);}
% \end{scope}
% \end{tikzpicture}
% \column{.6\textwidth}\centering
% \begin{tikzpicture}
% \only<1-2,4>{%
% \fill[red!50] (-1cm,-1cm) rectangle (1cm,1cm);}
% \only<3>{%
% \fill[red!50, shift={(1cm,1cm)}] (0cm,0cm) rectangle (1cm,1cm);
% \fill[red!50, shift={(1cm,-2cm)}] (0cm,0cm) rectangle (1cm,1cm);
% \fill[red!50, shift={(-2cm,1cm)}] (0cm,0cm) rectangle (1cm,1cm);
% \fill[red!50, shift={(-2cm,-2cm)}] (0cm,0cm) rectangle (1cm,1cm);}
% \only<1>{%
% \fill[blue!50] (0cm,1cm) -- (0cm,2cm) -- (2cm,2cm) -- (2cm,0cm) -- (1cm,0cm) -- (1cm,1cm) -- cycle;}
% \draw[very thin,dashed] (-2,-2) grid (2,2);
% \draw[step=2cm] (-2,-2) grid (2,2);
% \draw[step=4cm, very thick, shift={(-2cm,-2cm)}] (-4mm,-4mm) grid (44mm,44mm);
% \only<1>{%
% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A) at (5mm,5mm) {A};%
% \node [draw=red, thick, dashed, minimum size=6mm, inner sep=0, circle] (B) at (-5mm,5mm) {B};%
% \node [draw=red, thick, dashed, minimum size=6mm, inner sep=0, circle] (C) at (-5mm,-5mm) {C};%
% \node [draw=red, thick, dashed, minimum size=6mm, inner sep=0, circle] (D) at (5mm,-5mm) {D};%
% \node (va1) at (15mm,5mm) {$v_{A_1}$};%
% \node (va2) at (15mm,15mm) {$v_{A_2}$};%
% \node (va3) at (5mm,15mm) {$v_{A_3}$};%
% \node (vb1) at (-5mm,15mm) {$v_{B_1}$};%
% \node (vd3) at (15mm,-5mm) {$v_{D_3}$};%
% }
% \only<2>{%
% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A') at (5mm,5mm) {A'};%
% \node (B') at (-5mm,5mm) {B'};%
% \node (C') at (-5mm,-5mm) {C'};%
% \node (D') at (5mm,-5mm) {D'};%
% }
% \only<3>{%
% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A') at (15mm,15mm) {A'};%
% \node (B') at ( 5mm,15mm) {B'};%
% \node (C') at ( 5mm, 5mm) {C'};%
% \node (D') at (15mm, 5mm) {D'};%
% \begin{scope}[shift={(-15mm,5mm)}]
% \node (A') at (10mm,10mm) {A'};%
% \node (B') at ( 0mm,10mm) {B'};%
% \node (C') at ( 0mm, 0mm) {C'};%
% \node (D') at (10mm, 0mm) {D'};%
% \end{scope}
% \begin{scope}[shift={(5mm,-15mm)}]
% \node (A') at (10mm,10mm) {A'};%
% \node (B') at ( 0mm,10mm) {B'};%
% \node (C') at ( 0mm, 0mm) {C'};%
% \node (D') at (10mm, 0mm) {D'};%
% \end{scope}
% \begin{scope}[shift={(-15mm,-15mm)}]
% \node (A') at (10mm,10mm) {A'};%
% \node (B') at ( 0mm,10mm) {B'};%
% \node (C') at ( 0mm, 0mm) {C'};%
% \node (D') at (10mm, 0mm) {D'};%
% \end{scope}
% }
% \only<4>{
% \begin{scope}[shift={(-15mm,-15mm)}]
% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A') at (10mm,10mm) {A};%
% \node (B') at ( 0mm,10mm) {B};%
% \node (C') at ( 0mm, 0mm) {C};%
% \node (D') at (10mm, 0mm) {D};%
% \end{scope}
% }
% \end{tikzpicture}
% \end{columns}
%
% \centering
% \only<1-2>{
% Toute l'information \emph{nécessaire} est disponible pour mettre à jour $A$.
% $$ A' = f( A, v_{A_1}, v_{A_2}, v_{A_3}, v_{B_1}, B, C, D, v_{D_3} ) $$
% ainsi que $B$, $C$ et $D$, symétriquement.
% }
% \only<3>{
% Le bloc $(A',B',C',D')$ est répliqué 4 fois.}
% \only<4>{
% Au décalage de la grille, le nouveau bloc est prêt pour une mise à jour.
% }
%
%
% \vfill~
%\end{frame}

35
otb.sectorisation.tex Normal file
View file

@ -0,0 +1,35 @@
\begin{frame}{Exemple 1: Sectorisation}
\begin{columns}
\column{.5\textwidth}\centering
\includegraphics[width=.6\textwidth]{raster/sectors-original}\\
\textcolor{gray}{\Tiny O. Hallatschek et al : “Genetic drift at expanding
frontiers promotes gene segregation”, 2007}\\[1em]
\column{.5\textwidth}\centering
\includegraphics[width=.6\textwidth]{raster/sectors}
\end{columns}
\bigskip
\begin{columns}
\column{.5\textwidth}
\begin{itemize}
\item Démarche expérimentale
\begin{enumerate}
\item Croissance $1 \rightarrow 1000$
\item Marquage 50\% \textcolor{red}{rouge}, 50\% \textcolor{green}{vert}
\item Croissance $1000 \rightarrow 200000$
\end{enumerate}
\end{itemize}
\column{.5\textwidth}
\begin{itemize}
\item Deux résultats
\begin{enumerate}
\item Moteur physique réaliste
\item Nouvelle hypothèse pour la sectorisation
\end{enumerate}
\end{itemize}
\end{columns}
\end{frame}

90
otb.stable.pop.tex Normal file
View file

@ -0,0 +1,90 @@
\begin{frame}[fragile]{Exemple 2: Cercles concentriques}
\begin{columns}
\column{.6\textwidth}
\begin{itemize}
\item \structure{Morphogènes} : Vert, Rouge, Bleu
\item \structure{États}
\begin{itemize}
\item $A$: Croissance(0.005), Dépôt(Vert,50), Tumble()
\item $B$: Croissance(0.005), Dépôt(Bleu,50), Tumble()
\item $C$: Croissance(0.005), Dépôt(Rouge,50), Tumble()
\item $D$: Destruction()
\end{itemize}
\item \structure{Transition}
\begin{itemize}
\item $c_1$: IsDaughter()
\item $c_2$: LessThreshold(Vert,0.1)
\item $c_3$: LessThreshold(Vert,0.1) $\wedge$ LessThreshold(Rouge,10.0)
\end{itemize}
\end{itemize}
\column{.4\textwidth}\center
\includegraphics[width=\textwidth]{raster/cercles}
\end{columns}
\begin{center}
\begin{tikzpicture}[
node distance=20mm,
state/.style={draw,circle,anchor=mid},
transition/.style={-Stealth,semithick,bend left}]
\node[state] (mere) {$A$};
\node[state,right=of mere] (fp) {$B$};
\node[state,right=of fp] (fl) {$C$};
\node[state,right=of fl] (ded) {$D$};
\draw[transition] (mere) to node [auto,]{$c_1$} (fp);
\draw[transition] (fp) to node [auto,]{$c_2$} (fl);
\draw[transition] (fl) to node [auto,]{$c_3$} (ded);
\end{tikzpicture}
\end{center}
\end{frame}
% \begin{lstlisting}
%{
% "signal" : [
% {"Vert" : [0.01, 2.5]},
% {"Rouge": [0.001, 1.5]},
% {"Bleu" : [0.001, 1.5]}
% ],
% "reaction" : [
% [["bleu","vert"], ["vert","vert"], 0.05],
% [["bleu"], ["bleu","bleu"], 0.05],
% [["vert"], [], 0.05]
% ],
% "type" : [
% "AALEADER",
% "CDAUGHTER",
% "FDAUGHTER",
% "ZOMBIE"
% ],
% "behaviour" : {
% "AALEADER" : [
% { "Divide" : 0.005 },
% { "Tumble" : [] },
% { "EmitSignal" : [ "Vert", 50 ] }
% ],
% "FDAUGHTER" : [
% { "Divide" : 0.005 },
% { "Tumble" : [] },
% { "EmitSignal" : [ "Bleu", 50 ] }
% ],
% "CDAUGHTER" : [
% { "Divide" : 0.005 },
% { "Tumble" : [] },
% { "EmitSignal" : [ "Rouge", 50 ] }
% ],
% "ZOMBIE" : [ { "Die" : [] } ]
% },
% "transition" : [
% ["NA","NA","NA","NA"],
% ["CD","NA","NA","NA"],
% ["NA","CF","NA","NA"],
% ["NA","NA","CA","ND"]
% ],
% "condition" : [
% {"CD" : "ISDAUGHTER()"},
% {"CF" : "LESSTHRESHOLD(VERT,1.e-1f)"},
% {"CA" : "AND(LESSTHRESHOLD(VERT,1.e-1f),LESSTHRESHOLD(ROUGE,10.f))"},
% {"ND" : "TRUE"}
% ]
%}
% \end{lstlisting}

19
part1.conclude.tex Normal file
View file

@ -0,0 +1,19 @@
\begin{frame}%[label=this one]
\frametitle{Conclusion et perspectives}
\begin{itemize}
\item Contributions
\begin{enumerate}
\item \structure{Cadre unifié} pour approcher la modélisation multi-niveau
\item \structure{Identification} de formalisme, modèle, système
\item \structure{Introduction} de $\mathbf{Abs}_S$
\end{enumerate}
\bigskip
\item Perspectives
\begin{enumerate}
\item \structure{Étude} de la catégorie $\mathbf{Abs}_S$
\item \structure{Intégrer} les niveaux de description
\end{enumerate}
\end{itemize}
\end{frame}

22
part2.conclude.tex Normal file
View file

@ -0,0 +1,22 @@
\begin{frame}[label=this one]
\frametitle{Conclusion et perspectives}
\begin{itemize}
\item \structure{Conclusion}
\begin{enumerate}
\item \structure{Spatialisation de l'activité} à partir des \structure{interactions}
\item \structure{Caractérisation topologique} de la progression de l'activité
\item \structure{Algorithme} générique de suivi du front d'activité
\item \structure{Optimisation} fondée sur l'activité
\end{enumerate}
\bigskip
\item \structure{Perspectives}
\begin{enumerate}
\item \structure{Ajouter} le support de l'activité à MGS
\item \structure{Raffiner} la zone active en sous-régions
\item \structure{Réifier} le bord de la zone active
\item \structure{Décrire} un modèle multi-niveau de la propagation du feu de forêt
\end{enumerate}
\end{itemize}
\end{frame}

23
part3.conclude.tex Normal file
View file

@ -0,0 +1,23 @@
\begin{frame}{Conclusion et perspectives}
\begin{itemize}
\item \structure{Conclusion}:
\begin{enumerate}
\item Développement d'un simulateur d'une colonie de bactéries
\item Programmation spécifique SIMD, non triviale
\item Proposition d'un algorithme (PPM) pour la simulation parallèle
d'un automate cellulaire 2D
\end{enumerate}
\bigskip
\item \structure{Perspectives}:
\begin{enumerate}
\item Calibrer les paramètres des moteurs physique et chimique
\item Tester d'autres méthodes de discrétisation pour l'équation de
réaction-diffusion
\item Construire une IHM (GUI, CLI, etc.)
\item Effectuer des tests de performance
\item Diffuser l'outil auprès de la communauté
\end{enumerate}
\end{itemize}
\end{frame}

9
plan.tex Normal file
View file

@ -0,0 +1,9 @@
\begin{frame}[noframenumbering]{ }
\begin{columns}
\column{.7\textwidth}
{\LARGE\tableofcontents[\tocshowonlycurrentsection]}
\column{.2\textwidth}
\centering\drawfigure
\end{columns}
\end{frame}

109
predator.prey.tex Normal file
View file

@ -0,0 +1,109 @@
\begin{frame}%[label=this one]
\frametitle{Système proies/prédateurs (système)}
\framesubtitle{Description du système}
\begin{columns}
\column{.7\textwidth}\centering
\includegraphics[width=.7\textwidth]{raster/system-predator-prey}\\
\mkCitation{S. S. Mader, Biology 6th edition, 1998}
\bigskip
\begin{itemize}
\item Les proies se reproduisent spontanément
\item Les prédateurs meurent spontanément
\item Les prédateurs chassent les proies
\begin{itemize}
\item Les proies meurent (chassées)
\item Les prédateurs peuvent se reproduire (efficacité de la chasse)
\end{itemize}
\end{itemize}
\end{columns}
\end{frame}
\begin{frame}%[label=this one]
\frametitle{Système proies/prédateurs (modèles)}
\framesubtitle{Modèles et formalismes}
\centering
\begin{tikzpicture}[overlay,%
node distance=13mm and 20mm,
model/.style={draw,circle,on grid=true,fill=white,minimum size=24pt},
abstraction/.style={-Stealth,thick}
]
\node[model, left=of current page.center] (m1) {$\model_1$};
\node[model,above=of current page.center] (m2) {$\model_2$};
\uncover<2->{
\node[model,below=of current page.center] (m3) {$\model_3$};
}
\uncover<3>{
\node[model,right=of current page.center] (m4) {?};
}
\uncover<4->{
\node[model,right=of current page.center] (m4) {$\model_4$};
}
\draw[abstraction] (m1) to node[anchor=south,midway,sloped]
{\tiny trajectoire moyenne} (m2);
\uncover<2->{
\draw[abstraction] (m1) to node[anchor=north,midway,sloped,swap]
{\tiny aggrégation de l'espace} (m3);
}
\uncover<3>{
\draw[abstraction,dashed] (m2) to (m4);
\draw[abstraction,dashed] (m1) to (m4);
\draw[abstraction,dashed] (m3) to (m4);
}
\uncover<4->{
\draw[abstraction] (m2) to node[anchor=south,midway,sloped,swap]
{\tiny aggrégation de l'espace} (m4);
\draw[abstraction] (m3) to node[anchor=north,midway,sloped]
{\tiny trajectoire moyenne} (m4);
}
\end{tikzpicture}
\begin{tikzpicture}[overlay]
\uncover<1-2>{
\node[anchor=south east] (m1eq) at (m1.north west) {\tiny$
\left\{
\arraycolsep=1.4pt%\def\arraystretch{2.2}
\begin{array}{rcl}
\displaystyle\frac{dU_V}{dt} &=& r U_V (1 - \displaystyle\frac{U_V}{K})
- g U_P U_V\\[1.5ex]
\displaystyle\frac{dU_P}{dt} &=& n U_V U_P - \mu U_P
\end{array}
\right.%}
$};
\node[anchor=north] at (m1eq.south) {\includegraphics[height=2cm]{vector/lv-graph}};
\node[anchor=south east] (m2eq) at ($(m2.north west)+(0,7pt)$) {\tiny$
\arraycolsep=1.4pt%\def\arraystretch{0}
\begin{array}{rl}
V + E &\overset{b}{\longrightarrow} 2\,V \\
P + V &\overset{p_1}{\longrightarrow} 2\,P \\
P + V &\overset{p_2}{\longrightarrow} P + E
\end{array}
\quad
\begin{array}{rl}
V &\overset{d_V}{\longrightarrow} E \\
P &\overset{d_P}{\longrightarrow} E
\end{array}
$};
\node[anchor=west] at (m2eq.east) {\includegraphics[width=2cm]{vector/lv-gil-graph}};
}
\uncover<2>{
\node[anchor=north] (m3eq) at (m3.south) {\tiny$
\left\{
\arraycolsep=1.4pt%\def\arraystretch{2.0}
\begin{array}{rcll}
\displaystyle\frac{du_V}{dt} &=& r u_V (1 - \displaystyle\frac{u_V}{K}) - g u_P u_V \\
&+& D_V (\nabla^2 u_V + u_V \nabla^2 u_P - u_P \nabla^2 u_V)
\\[1.5ex]
\displaystyle\frac{du_P}{dt} &=& n u_V u_P - \mu u_P \\
&+& D_P (\nabla^2 u_P + u_P \nabla^2 u_V - u_V \nabla^2 u_P)
\end{array}
\right.%}
$};
}
\uncover<4>{
\node[anchor=west] at (m4.east) {\structure{[Lugo et McKane 2008]}};
}
\end{tikzpicture}
\end{frame}

37
representing.space.tex Normal file
View file

@ -0,0 +1,37 @@
\begin{frame}{Representing Space}
\begin{columns}
\column{.6\textwidth}
\only<1>{\includegraphics[width=\textwidth]{raster/space-nospace-shade}}
\only<2>{\includegraphics[width=\textwidth]{raster/space-nospace}}
\column{.4\textwidth}
\begin{itemize}
\item<1> Without space
\item<2> With space
\end{itemize}
\end{columns}
\begin{columns}
\column{.6\textwidth}
\only<1>{\includegraphics[width=\textwidth]{raster/space-discrete-shade}}
\only<2>{\includegraphics[width=\textwidth]{raster/space-discrete}}
\column{.4\textwidth}
\begin{itemize}
\item<2> Discrete
\item<2> Continuous
\end{itemize}
\end{columns}
\begin{columns}
\column{.6\textwidth}
\only<1>{\includegraphics[width=\textwidth]{raster/space-newton-shade}}
\only<2>{\includegraphics[width=\textwidth]{raster/space-newton}}
\column{.4\textwidth}
\begin{itemize}
% Embedded in preexisting space
\item<2> Absolute (Newtonian)
% induced by relationship between entities
\item<2> Relative (Leibnizian)
\end{itemize}
\end{columns}
\end{frame}

View file

@ -0,0 +1,32 @@
\begin{frame}{Representing the Evolution Function}
\begin{center}
\includegraphics[height=1cm]{raster/evolution-function}
\end{center}
\begin{columns}
\column{.6\textwidth}
\includegraphics[width=\textwidth]{raster/sync-sync}
\column{.4\textwidth}
\begin{itemize}
\item Synchronous\\all the events
\end{itemize}
\end{columns}
\vspace{-2ex}
\begin{columns}
\column{.6\textwidth}
\includegraphics[width=\textwidth]{raster/sync-seq}
\column{.4\textwidth}
\begin{itemize}
\item Sequential\\exactly one event
\end{itemize}
\end{columns}
\vspace{-2ex}
\begin{columns}
\column{.6\textwidth}
\includegraphics[width=\textwidth]{raster/sync-async}
\column{.4\textwidth}
\begin{itemize}
\item Asynchronous\\at least one event
\end{itemize}
\end{columns}
\end{frame}

35
representing.time.tex Normal file
View file

@ -0,0 +1,35 @@
\begin{frame}{Representing Time}
\begin{columns}
\column{.4\textwidth}
\begin{itemize}
\item<1> Without time
\item<2> With time
\end{itemize}
\column{.6\textwidth}
\only<1>{\includegraphics[width=\textwidth]{raster/time-notime-shadetime}}
\only<2>{\includegraphics[width=\textwidth]{raster/time-notime-shadenotime}}
\end{columns}
\begin{columns}
\column{.4\textwidth}
\begin{itemize}
\item<2> Discrete
\item<2> Continuous
\end{itemize}
\column{.6\textwidth}
\only<1>{\includegraphics[width=\textwidth]{raster/time-discrete-shade}}
\only<2>{\includegraphics[width=\textwidth]{raster/time-discrete}}
\end{columns}
\begin{columns}
\column{.4\textwidth}
\begin{itemize}
\item<2> Absolute (Newtonian)
\item<2> Relative (Leibnizian)
\end{itemize}
\column{.6\textwidth}
\only<1>{\includegraphics[width=\textwidth]{raster/time-newton-shade}}
\only<2>{\includegraphics[width=\textwidth]{raster/time-newton}}
\end{columns}
\end{frame}

26
sbgp.tex Normal file
View file

@ -0,0 +1,26 @@
\begin{frame}[fragile]{Décrire une simulation avec SBGP}
\begin{columns}
\column{.4\textwidth}
\begin{lstlisting}
{
"signals" = [],
"reactions" = [],
"type" = [],
"behavior" = {},
"transition" = [],
"cond_transition" = []
}
\end{lstlisting}
\column{.5\textwidth}
\begin{itemize}[<+->]
\item signals: liste des morphogènes
\item reactions: liste des réactions
\item type: liste des états possibles pour les bactéries
\item behavior: liste des actions effectuées par les bactéries par type
\item transition: table de transition pour un changement de type
\item cond\_transition: liste des conditions de transition
\end{itemize}
\end{columns}
\end{frame}

77
shell.nix Normal file
View file

@ -0,0 +1,77 @@
#To run this, you need nix (https://ariya.io/2016/05/nix-as-os-x-package-manager)
#and the package nix-shell (just run `nix-env -iA nixos.nix-shell`)
#Then, in the directory of this file, just call `nix-shell`
#This will create a custom shell (with only the needed dependencies) for
#building the presentation
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "thesis-presentation";
shellHook = ''
latexmk \
-pvc \
-view=none \
-silent \
-time \
-interaction=nonstopmode \
-xelatex main.tex
latexmk -c
rm *.{snm,nav,vrb}
'';
buildInputs = [
( texlive.combine {
inherit (texlive)
scheme-basic
collection-langfrench
#algorithm2e
#biblatex
#caption
#enumitem
#logreq
#minitoc
#multirow
#pgf
#pgfplots
#placeins
#relsize
#setspace
#standalone
#xcolor
#xkeyval
#xstring
beamer
colortbl
euenc
extsizes
filehook
jknapltx
latexmk
listings
metafont
ms
pdfpages
polyglossia
realscripts
rsfs
siunitx
tools
ucharcat
unicode-math
xetex
xetex-def
xltxtra
zapfding
;} )
#biber
];
}
#thesis = buildEnv {
# name = "memoire-these";
# buildInputs = [
# ];
# shellHook = ''
# alias make=$(which buildthesis)
# ln -s $(which buildthesis) buildme
# echo "Juste type 'make' or './buildme' to build the thesis"
# '';
#};

61
simple.ff.example.tex Normal file
View file

@ -0,0 +1,61 @@
\begin{frame}[fragile]%,label=this one]
\frametitle{Modèle 1: un automate à 3 états}
%\framesubtitle{a 3-state fire propagation}
% Nécessaire plus loin pour l'activité
\hspace{5mm}
\input{vector/simpleexamplelegend.tikz}
\hfill
% PROPAGATION RULE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{vector/simpleexample-propagation.tikz}
\hfill
% EXTINCTION RULE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{vector/simpleexample-extinction.tikz}
\hspace{5mm}
\pause
\bigskip
\begin{columns}[t]
\column{.72\textwidth}
\begin{overlayarea}{\textwidth}{.35\textheight}
\begin{itemize}
\item<1-> Topologie des interactions
\medskip
\only<2>{\input{vector/simpleexample-moore.tikz}}
\item<3-> Lois d'évolution
\medskip
\only<3->{
\defverbatim[colored]\transevol{%
\begin{semiverbatim}
trans $T$ = \{
  {\color{forest}`Forest} / neighboursMember({\color{fire}`Fire}) => {\color{fire}`Fire};\par
  {\color{fire}`Fire} => {\color{ashes}`Ash};
\}
\end{semiverbatim}}
\transevol
}
\end{itemize}
\end{overlayarea}
\column{.24\textwidth}
\uncover<4->{
\begin{overlayarea}{.9\textwidth}{.2\textheight}
\begin{center}
\animatevalue<4-10>{\currentimg}{5}{16}
\includegraphics[width=\textwidth]{animation/ffire-frame-\the\currentimg.png}
\end{center}
\end{overlayarea}
\end{columns}
}
\only<2>{\begin{center}
{\small Deux cellules \structure{sont voisines} si le feu peut se propager de
l'une à l'autre}
\end{center}}
\only<3>{{\large
$$ C^{i+1} = T(C^i)$$
}}
\end{frame}

28
test.tex Normal file
View file

@ -0,0 +1,28 @@
\begin{frame}[plain,noframenumbering]{TEST}
\tikz[overlay] \node[very thick,minimum width=\textwidth,
minimum height=\textheight,draw] at (current page.center) {x};
\begin{tikzpicture}
\node {
\foreach \posx/\posy/\kolor in {%
0cm/7cm/orange,
0cm/6cm/red,
0cm/5cm/green,
0cm/4cm/yellow,
0cm/3cm/magenta,
0cm/2cm/violet,
0cm/1cm/blue,
0cm/0cm/cyan,
1cm/5cm/active,
1cm/4cm/ashes,
1cm/3cm/fire,
1cm/2cm/forest,
1cm/1cm/frontier,
1cm/0cm/quiescent}
\tikz \node[fill=\kolor,minimum size=5mm,inner sep=0pt,label=right:\kolor]
at (\posy,\posx) {};
};
\end{tikzpicture}
\end{frame}

29
title.tex Normal file
View file

@ -0,0 +1,29 @@
\begin{frame}[plain,noframenumbering]{}
\begin{center}
{\Huge\structure\inserttitle}
\medskip
\par\insertsubtitle
\end{center}
\vfill
\begin{center}
Soutenance de thèse de\\[.5em]
{\huge\insertauthor}
\bigskip
le 6 juillet 2017\\
\small LACL (Créteil, France)\\
\end{center}
\vfill
\hspace{5mm}
\includegraphics[height=.6cm]{raster/logo-lacl}
\hfill
\includegraphics[height=.6cm]{raster/logo-upe}
\hfill
\includegraphics[height=.6cm]{raster/logo-anr}
\hfill
\includegraphics[height=.6cm]{raster/logo-synbiotic}
\hspace{5mm}
\end{frame}

22
wave.algorithm.tex Normal file
View file

@ -0,0 +1,22 @@
\begin{frame}
\newcommand{\myA}{{\color{active}A}}
\newcommand{\myF}{{\color{frontier}F}}
\frametitle{Algorithme du suivi de l'activité}
\begin{columns}
\column{.5\textwidth}
\input{vector/algo-frontier.tikz}
\column{.5\textwidth}
\begin{tabular}{rl}
$A, F$:& set of cells\\
$C$:& collection
\end{tabular}
\[
\huge
\begin{array}{rl}
\uncover<1->{C &\leftarrow T(\myA|\myF)}\\
\uncover<2->{\myA &\leftarrow P_C(\myA) \cup P_C(\myF)}\\
\uncover<3->{\myF &\leftarrow \text{Lk}(\myA)}
\end{array}
\]
\end{columns}
\end{frame}

110
where.is.activity.tex Normal file
View file

@ -0,0 +1,110 @@
\begin{frame}
\frametitle{Localiser l'activité}
\centering
\input{vector/active-equation.tikz}
\begin{columns}
\column{.65\textwidth}\centering
\input{vector/active-quiescent-reprensentation.tikz}
\column{.35\textwidth}
\end{columns}
\end{frame}
\begin{frame}[label=this one]
\frametitle{Simulations \mgs et sous-collection active}
\begin{itemize}
\item Trajectoires dans \mgs
\begin{center}
\begin{tikzpicture} [scale=0.4,baseline,
cell/.style={minimum size=0.35cm}]
\fill (0.65,0.65) rectangle (8.35,8.35);
\foreach \p/\c in%
{ { (1,8)/forest},{(2,8)/forest},{(3,8)/forest},{(4,8)/forest},{(5,8)/forest},{(6,8)/forest},{(7,8)/forest},{(8,8)/forest}%
,{(1,7)/forest},{(2,7)/forest},{(3,7)/forest},{(4,7)/forest},{(5,7)/forest},{(6,7)/forest},{(7,7)/forest},{(8,7)/forest}%
,{(1,6)/forest},{(2,6)/forest},{(3,6)/fire}, {(4,6)/fire}, {(5,6)/forest},{(6,6)/forest},{(7,6)/forest},{(8,6)/forest}%
,{(1,5)/forest},{(2,5)/forest},{(3,5)/forest},{(4,5)/fire}, {(5,5)/forest},{(6,5)/forest},{(7,5)/forest},{(8,5)/forest}%
,{(1,4)/forest},{(2,4)/forest},{(3,4)/forest},{(4,4)/forest},{(5,4)/forest},{(6,4)/forest},{(7,4)/forest},{(8,4)/forest}%
,{(1,3)/forest},{(2,3)/forest},{(3,3)/forest},{(4,3)/forest},{(5,3)/forest},{(6,3)/forest},{(7,3)/forest},{(8,3)/forest}%
,{(1,2)/forest},{(2,2)/forest},{(3,2)/forest},{(4,2)/forest},{(5,2)/forest},{(6,2)/forest},{(7,2)/forest},{(8,2)/fire}%
,{(1,1)/forest},{(2,1)/forest},{(3,1)/forest},{(4,1)/forest},{(5,1)/forest},{(6,1)/forest},{(7,1)/forest},{(8,1)/fire}}
\node[cell,fill=\c,draw=white,line width=1pt] at \p {};
\node at (4.5,0) {$C^0$};
\end{tikzpicture}
\hfill
\begin{tikzpicture} [scale=0.4,baseline,
cell/.style={minimum size=0.35cm}]
\fill (0.65,0.65) rectangle (8.35,8.35);
\foreach \p/\c in%
{ { (1,8)/forest},{(2,8)/forest},{(3,8)/forest},{(4,8)/forest},{(5,8)/forest},{(6,8)/forest},{(7,8)/forest},{(8,8)/forest}%
,{(1,7)/forest},{(2,7)/fire}, {(3,7)/fire}, {(4,7)/fire}, {(5,7)/fire}, {(6,7)/forest},{(7,7)/forest},{(8,7)/forest}%
,{(1,6)/forest},{(2,6)/fire}, {(3,6)/ashes}, {(4,6)/ashes}, {(5,6)/fire}, {(6,6)/forest},{(7,6)/forest},{(8,6)/forest}%
,{(1,5)/forest},{(2,5)/fire}, {(3,5)/fire}, {(4,5)/ashes}, {(5,5)/fire}, {(6,5)/forest},{(7,5)/forest},{(8,5)/forest}%
,{(1,4)/forest},{(2,4)/forest},{(3,4)/fire}, {(4,4)/fire}, {(5,4)/fire}, {(6,4)/forest},{(7,4)/forest},{(8,4)/forest}%
,{(1,3)/forest},{(2,3)/forest},{(3,3)/forest},{(4,3)/forest},{(5,3)/forest},{(6,3)/forest},{(7,3)/fire}, {(8,3)/fire}%
,{(1,2)/forest},{(2,2)/forest},{(3,2)/forest},{(4,2)/forest},{(5,2)/forest},{(6,2)/forest},{(7,2)/fire}, {(8,2)/ashes}%
,{(1,1)/forest},{(2,1)/forest},{(3,1)/forest},{(4,1)/forest},{(5,1)/forest},{(6,1)/forest},{(7,1)/fire}, {(8,1)/ashes}}
\node[cell,fill=\c,draw=white,line width=1pt] at \p {};
\node at (4.5,0) {$C^1 = T(C^0)$};
\end{tikzpicture}
\hfill
\begin{tikzpicture} [scale=0.4,baseline,
cell/.style={minimum size=0.35cm}]
\fill (0.65,0.65) rectangle (8.35,8.35);
\foreach \p/\c in%
{ { (1,8)/fire}, {(2,8)/fire}, {(3,8)/fire}, {(4,8)/fire}, {(5,8)/fire}, {(6,8)/fire}, {(7,8)/forest},{(8,8)/forest}%
,{(1,7)/fire}, {(2,7)/ashes}, {(3,7)/ashes}, {(4,7)/ashes}, {(5,7)/ashes}, {(6,7)/fire}, {(7,7)/forest},{(8,7)/forest}%
,{(1,6)/fire}, {(2,6)/ashes}, {(3,6)/ashes}, {(4,6)/ashes}, {(5,6)/ashes}, {(6,6)/fire}, {(7,6)/forest},{(8,6)/forest}%
,{(1,5)/fire}, {(2,5)/ashes}, {(3,5)/ashes}, {(4,5)/ashes}, {(5,5)/ashes}, {(6,5)/fire}, {(7,5)/forest},{(8,5)/forest}%
,{(1,4)/fire}, {(2,4)/fire}, {(3,4)/ashes}, {(4,4)/ashes}, {(5,4)/ashes}, {(6,4)/fire}, {(7,4)/fire}, {(8,4)/fire}%
,{(1,3)/forest},{(2,3)/fire}, {(3,3)/fire}, {(4,3)/fire}, {(5,3)/fire}, {(6,3)/fire}, {(7,3)/ashes}, {(8,3)/ashes}%
,{(1,2)/forest},{(2,2)/forest},{(3,2)/forest},{(4,2)/forest},{(5,2)/forest},{(6,2)/fire}, {(7,2)/ashes}, {(8,2)/ashes}%
,{(1,1)/forest},{(2,1)/forest},{(3,1)/forest},{(4,1)/forest},{(5,1)/forest},{(6,1)/fire}, {(7,1)/ashes}, {(8,1)/ashes}}
\node[cell,fill=\c,draw=white,line width=1pt] at \p {};
\node at (4.5,0) {$C^2 = T(C^1) = T^2(C^0)$};
\end{tikzpicture}
\end{center}
\item Décomposition de l'activité et trajectoires
\begin{itemize}
\item \textcolor{active}{Sous-collection active $A_i$} et
\textcolor{quiescent}{sous-collection quiescente $Q_i$}
\item Décomposition de la relation d'évolution
\[ A^{i+1} + Q^{i+1} = T(A^i + Q^i) \]
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Relation entre $A^{i+1},Q^{i+1}$ et $A^i,Q^i$}
$$ A^{i+1} + Q^{i+1} = T(A^i + Q^i) $$
\begin{itemize}
\item Sous-collection \textcolor{frontier}{frontière $F^i$}
\end{itemize}
\begin{columns}
\column{.5\textwidth}
\begin{enumerate}
\item \structure{Propriété} $T(A^i + Q^i) = T(A^i \mid Q^i) + Q^i$
\item \structure{Propriété} $| A^{i+1} | \subseteq | A^i + F^i |$
\item \structure{Propriété} $| Q^i - F^i | \subseteq | Q^{i+1} |$
\item \structure{Définition} $F^i = \text{Lk}(A^i)$
\item \structure{Remarque} $T(A^i \mid Q^i) = T(A^i \mid F^i)$
\item \structure{Résultat} $C^{i+1} = T(A^i \mid F^i) + F^i + (Q^i - F^i)$
\end{enumerate}
\column{.5\textwidth}
$$ \text{Lk} \left(
\tikz[baseline] \node {\includegraphics[width=2cm]{vector/operateursS}};
\right) =
\tikz[baseline] \node {\includegraphics[width=2cm]{vector/operateursLkS}};
$$
\end{columns}
\bigskip
\[
\left\{
\arraycolsep=1.4pt%\def\arraystretch{2.2}
\begin{array}{rl}
A^0 &= \text{PatMatch}_T(C^0)\\
A^{i+1} &= \text{PatMatch}_T\left[ T(A^i \mid \text{Lk}(A^i)) + \text{Lk}(A^i) \right]
\end{array}
\right.
\]
\end{frame}