This commit is contained in:
Martin Potier 2017-07-08 18:46:08 +02:00
parent 39d7daf528
commit d74d3cd290
7 changed files with 2 additions and 2461 deletions

View file

@ -25,7 +25,6 @@
BoldFont = *-RB ,
ItalicFont = *-RI ,
BoldItalicFont = *-RBI ]
%\setsansfont {Linux Biolinum O}
\setsansfont{LinBiolinum}[
Path = fonts/ ,
Extension = .otf ,
@ -33,7 +32,6 @@
BoldFont = *-RB ,
ItalicFont = *-RI ]
%\setmonofont {Fantasque Sans Mono}
\setmonofont{FantasqueSansMono}[
Path = fonts/ ,
Extension = .ttf ,
@ -42,7 +40,6 @@
ItalicFont = *-Italic ,
BoldItalicFont = *-BoldItalic ]
%\setmathfont[mathbf=sym] {Asana Math}
\setmathfont[mathbf=sym] {Asana-Math}[
Path = fonts/ ,
Extension = .otf ]
@ -100,40 +97,5 @@
\definecolor{cyan} {HTML}{2aa198}
\definecolor{green} {HTML}{859900}
%Theme SMYCK
% 0x00 (dark black ) #000000
% 0x01 (dark red ) #C75646
% 0x02 (dark green ) #8EB33B
% 0x03 (dark yellow ) #D0B03C
% 0x04 (dark blue ) #72B3CC
% 0x05 (dark magenta) #C8A0D1
% 0x06 (dark cyan ) #218693
% 0x07 (dark white ) #B0B0B0
% 0x10 (light black ) #5D5D5D
% 0x11 (light red ) #E09690
% 0x12 (light green ) #CDEE69
% 0x13 (light yellow ) #FFE377
% 0x14 (light blue ) #9CD9F0
% 0x15 (light magenta) #FBB1F9
% 0x16 (light cyan ) #77DFD8
% 0x17 (light white ) #F7F7F7
%\definecolor{ darkblack }{HTML}{#000000}
%\definecolor{ darkred }{HTML}{#C75646}
%\definecolor{ darkgreen }{HTML}{#8EB33B}
%\definecolor{ darkyellow }{HTML}{#D0B03C}
%\definecolor{ darkblue }{HTML}{#72B3CC}
%\definecolor{ darkmagenta}{HTML}{#C8A0D1}
%\definecolor{ darkcyan }{HTML}{#218693}
%\definecolor{ darkwhite }{HTML}{#B0B0B0}
%\definecolor{lightblack }{HTML}{#5D5D5D}
%\definecolor{lightred }{HTML}{#E09690}
%\definecolor{lightgreen }{HTML}{#CDEE69}
%\definecolor{lightyellow }{HTML}{#FFE377}
%\definecolor{lightblue }{HTML}{#9CD9F0}
%\definecolor{lightmagenta}{HTML}{#FBB1F9}
%\definecolor{lightcyan }{HTML}{#77DFD8}
%\definecolor{lightwhite }{HTML}{#F7F7F7}
%NoUglyEmptySet
%\let\oldemptyset\emptyset
\let\emptyset\varnothing

View file

@ -2,8 +2,6 @@
\minitoc
\section{Introduction}
% D'où activité ?
% C'est quoi le contexte
Nous commencerons cette partie en introduisant la notion d'activité, ses
origines et son rapport à la modélisation multi-niveau. Après une partie
@ -99,7 +97,6 @@ sous-parties différentes dans un même système. Il est ainsi difficile de
déterminer quelle partie du système a contribué au fonctionnement global et dans
quelle proportion.
% DONE: ajouter la définition de l'activité en économie
\paragraph{Activité économique} L'activité est au cœur des sciences
économiques de part l'objet d'étude de cette discipline. En effet l'économie
est une science qui se focalise sur la manière dont des ressources rares sont
@ -137,11 +134,6 @@ décompte du nombre d'évènements concernant des ressources rares. Un exemple
d'usage prospectif est donné dans la section intitulée « Optimal Control
Model of Activity » de \cite{muzy_refounding_2013}.
% DONE: conclure avec une considération générale comme c'est bordélique,
% pourrait-on trouver un point de vue plus fédérateur pour la
% modélisation en tt cas ?
% DONE: donner dans chaque cas ce que ma thèse apporte
\bigskip\noindent Pour conclure cette section sur l'activité, nous émettons les
remarques suivantes:
\begin{itemize}
@ -157,20 +149,6 @@ nouveau type d'activité, l'activité spatiale, dans le contexte de \mgs{} et qu
cette activité nous apportera une représentation du système utile à la fois pour
la simulation et pour la modélisation.
%L'activité est couramment utilisée pour décrire, durant ou après une simulation,
%ce qui change dans un système, que ce soit :
%\begin{itemize}
% \item en économie, pour décrire les tâches entreprises par des individus, et
% les moyens mis en œuvre pour y parvenir ;
% \item en biologie, pour décrire les parties du système étudié qui produisent,
% consomment ou échangent des éléments chimiques ;
% \item en DEVS, pour décrire un ensemble d'évènements répartis dans le temps
% \item ou initialement en simulation, comme l'intervalle entre chaque évènement
% de la simulation.
%\end{itemize}
% L'activité est aussi une manière de modéliser à un autre niveau de
% représentation, il reste à inventer cette nouvelle manière de modéliser.
\section{Complexe cellulaire abstrait}
\label{sec:cca}
Les développements présentés dans la suite de ce chapitre reposent sur une
@ -256,9 +234,6 @@ noté $\ccaK_2 \subset \ccaK_1$, si :
et $\sigma$ est appelée la \emph{coface} de $\tau$.
\end{mpo-definition}
% Il est pratique de construire le diagramme de Hasse de la relation d'incidence
% d'un complexe $\ccaK$ (voir figure~\ref{fig:cc}).
Nous définissons ci-dessous trois opérateurs (fermeture, étoile et liaison)
sur les \cca\ utilisant la relation d'incidence ; ils sont extraits des travaux
d'Axen~\cite{axen_topological_1998}. La fermeture d'un \cca\ « sélectionne »
@ -303,8 +278,6 @@ $\left\{ \sigma \in \ccaK \mid \exists \tau \in S,\: \tau \preceq \sigma
\label{fig:operateurs}
\end{figure}
%
% Voisinage et chemin
% n-squelette (pas utile)
\section[\mgs{} et \dsds]{\mgs{} : un langage dédié à la modélisation et à la
simulation des \dsds}
@ -436,19 +409,6 @@ sous-jacent. Cette remarque prendra du sens dans la
section~\ref{sec:transformations} consacrée aux transformations.
% \paragraph{Ensemble} Dans la structure de donnée Ensemble, chaque élément est
% voisin de tous les autres. Les éléments forment les points d'un graphe complet.
% Elle est donc représentée par un complexe cellulaire abstrait où chaque élément
% $i$ est une \cell{0} $c_i$. Toutes les cellules étant voisines, pour chaque
% paire de cellules $(c_i,c_j)$ en prenant $i \neq j$, il existe une \cell{1}
% $c_{i,j}$ telle que $c_i \preceq d_{i,j}$ et $c_j \preceq d_{i,j}$. Dans \mgs,
% cette structure de donnée a pour type |'set| et la syntaxe pour un ensemble de
% trois éléments $a, b, c$ est
% \begin{MGScode}
% 'a, 'b, 'c, ():'set
% \end{MGScode}
\paragraph{\gbf} Les \emph{Group-Based Field} (\gbf)
\cite{giavitto_group-based_1996, spicher_topological_2004} sont une collection
topologique fondée sur les graphes de Cayley, des graphes qui encodent la
@ -550,30 +510,12 @@ nous permet
\item d'identifier des structures d'ordre supérieur dans un modèle ainsi que
de les suivre lors des simulations.
\end{enumerate}
% The former will be illustrated in a
% following paragraph, the latter will be reviewed in the discussion.
% In this section, we present a generic way to track an active region
% throughout the simulation.
Dans cette section nous présentons une méthode générique pour suivre une région
active durant la simulation.
%
% This report provides, in its previous section, enough material to
% allow the reader to follow the next parts. To obtain complementary
% information about \mgs, one should refer to our previous
% publications~\cite{spicher_spatial_2010,bigo_spatial_2010,spicher_arbitrary_2012}.
%Un \gbf{} est une collection topologique dont le complexe cellulaire abstrait
%sous-jacent est le graphe de Cayley de la présentation d'un groupe Abélien. Les
%éléments de ce groupe représentent les déplacements atomiques autorisés.
Pour des raisons de simplicité, nous nous restreignons aux motifs ne comportant
au maximum que deux éléments en interaction.
%
%Par exemple, le motif +x, y, z+ (\ie trois éléments où +y+
%est un voisin de +x+ et +z+ est un voisin de +y+)
%est hors de notre champ d'étude. Néammoins, une généralisation est possible.
%
Nous illustrons cette idée avec un exemple simple mais paradigmatique : un
modèle de propagation de feu de forêt~\cite{potier_topological_2013} où le
\emph{feu} se propage au travers d'une \emph{forêt} en laissant derrière lui de
@ -680,33 +622,6 @@ du feu de forêt.
\end{figure}
%
%% \begin{definition} Let $\text{Coll}$ be the type of a topological collection,
%% $C$ and $S_C$ be two topological collections and $T$ a transformation. We define
%% $$
%% \begin{array}{lccl}
%% \mathbb{M}_T : &\text{Coll} &\rightarrow &\text{Coll}\\
%% \mathbb{M}_T : &C &\rightarrow &S_C \\
%% \end{array}
%% $$
%% to be the matching function returning the topological subcollection $S_C$ of
%% cells matched in $C$ by a rule application of the transformation $T$.
%% \end{definition}
%% %
%% %
%% \begin{definition}
%% Let $C$ be a topological collection, $T$ a transformation and $\mathbb{M}_T$ the
%% matching function over $T$, then we define $A$, the \emph{active subcollection}
%% of $C$, as:
%% $$ A = \bigcup_{S_j \in \mathbb{M}_T(C)}{S_j} $$
%% \end{definition}
%% %
%% \begin{definition}\label{def:quies} Let $C$ be a topological collection, let $A$
%% be the active subcollection of $C$. We define the \emph{quiescent subcollection}
%% $Q$ of $C$ as:
%% $$ Q = C - A $$
%% \end{definition}
%% %
\paragraph{Dynamique de l'activité}
Afin de suivre une région active au cours de la simulation d'un modèle, nous
@ -738,12 +653,6 @@ pour atteindre le but recherché.
Un autre exemple, dans le domaine de la modélisation discrète, est la classe
\emph{automate complexe}~\cite{hoekstra_towards_2007} qui correspond à un «
graphe d'automates cellulaires ».
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sometimes scales can be separated, meaning that the coupling between scales
% can be localized at some isolated interaction points in space and time.
% Then, the resulting computation corresponds to a hierarchical process with a
% directed flow of information, although it is not always the case.
Considérons $(C^0,C^1,\dots)$ la trajectoire des collections par l'application
successive de la transformations $T$, où $C^{i+1} = T(C^i)$ pour $i \ge 0$.
@ -888,226 +797,7 @@ la topologie des espaces. Brièvement, cette théorie traite des \emph{fonctions
de Morse} -- une manière d'inonder l'espace avec un « liquide » -- et des
\emph{points critiques} -- où le liquide révèle des bassins, des cols, des îles
dans la topographie de l'espace.
%%
% We are currently investigating the analogy between Morse theory and
% activity tracking: Morse functions will correspond to activity
% propagation and critical points to space-time positions where
% independent activity zones segregate or collide, pointing out
% important events in the model.
%% \begin{figure*}[!t]
%% \begin{center}
%% \begin{equation*}
%% \begin{array}{c}
%% (\Cl\,\sigma_1\cap\St\,\sigma_2)\cup
%% (\St\,\sigma_1\cap\Cl\,\sigma_2)=\emptyset
%% \\
%% (\Cl\,\sigma_1\cap\Cl\,\sigma_2)\cup
%% (\St\,\sigma_1\cap\St\,\sigma_2)\neq\emptyset
%% \end{array}
%% \end{equation*}
%% \begin{equation*}
%% \begin{array}{c}
%% (s_2 \in \Cl(\St\,s_1) \vee s_2 \in \St(\Cl\,s_1)) \wedge s_2\notin(\Cl(\St\,s_1) \cap \St(\Cl\,s_1))\\
%% (s_2 \in \Cl(\St\,s_1) \vee s_2 \in \St(\Cl\,s_1)) \wedge \neg(s_2\in\Cl(\St\,s_1) \wedge s_2\in\St(\Cl\,s_1))\\
%% (\St\,s_2 \cap \St\,s_1\ne\emptyset \vee \Cl\,s_2 \cap \Cl\,s_1\ne\emptyset) \wedge \neg(\St\,s_2\cap\St\,s_1\ne\emptyset \wedge \Cl\,s_2\cap\Cl\,s_1\ne\emptyset)\\
%% (\St\,s_2 \cap \St\,s_1\ne\emptyset \vee \Cl\,s_2 \cap \Cl\,s_1\ne\emptyset) \wedge (\St\,s_2\cap\St\,s_1=\emptyset \vee \Cl\,s_2\cap\Cl\,s_1=\emptyset)\\
%% \\
%% (\Cl\,\sigma_1\cap\St\,\sigma_2)\cup(\St\,\sigma_1\cap\Cl\,\sigma_2)=\emptyset\wedge(\Cl\,\sigma_1\cap\Cl\,\sigma_2)\cup(\St\,\sigma_1\cap\St\,\sigma_2)\neq\emptyset\\
%% (\Cl\,\sigma_1\cap\St\,\sigma_2)=\emptyset\wedge(\St\,\sigma_1\cap\Cl\,\sigma_2)=\emptyset\wedge(\Cl\,\sigma_1\cap\Cl\,\sigma_2)\cup(\St\,\sigma_1\cap\St\,\sigma_2)\neq\emptyset\\
%% (\Cl\,\sigma_1\cap\Cl\,\sigma_2)\cup(\St\,\sigma_1\cap\St\,\sigma_2)\neq\emptyset\wedge(\Cl\,\sigma_1\cap\St\,\sigma_2)=\emptyset\wedge(\St\,\sigma_1\cap\Cl\,\sigma_2)=\emptyset\\
%% (\St\,\sigma_1\cap\St\,\sigma_2\neq\emptyset\vee\Cl\,\sigma_1\cap\Cl\,\sigma_2\neq\emptyset)\wedge(\Cl\,\sigma_1\cap\St\,\sigma_2)=\emptyset\wedge(\St\,\sigma_1\cap\Cl\,\sigma_2)=\emptyset\\
%% \\
%% (\Cl\,\sigma_1\cap\St\,\sigma_2)\cup(\St\,\sigma_1\cap\Cl\,\sigma_2)=\emptyset\\
%% (\Cl\,\sigma_1\cup(\St\,\sigma_1\cap\Cl\,\sigma_2))\cap(\St\,\sigma_2\cup(\St\,\sigma_1\cap\Cl\,\sigma_2))=\emptyset\\
%% (\Cl\,\sigma_1\cup\St\,\sigma_1)\cap(\Cl\,\sigma_1\cup\Cl\,\sigma_2)\cap(\St\,\sigma_2\cup\St\,\sigma_1)\cap(\St\,\sigma_2\cup\Cl\,\sigma_2)=\emptyset\\
%% \\
%% toto
%% \end{array}
%% \end{equation*}
%% \end{center}
%% \end{figure*}
%% tau in cl(st(sigma)) \ st(cl(sigma)) cup st(cl(sigma)) \ cl(st(sigma))
%% tau in N sigma
%% <=>
%% (exists gamma, tau < gamma > sigma || tau > gamma < sigma) &
%% not (tau in cl(sigma) || tau in st(sigma))
%% <=>
%% (tau in cl(st(sigma)) || tau in st(cl(sigma))) &
%% not (tau in cl(sigma) cup st(sigma))
%% <=>
%% (tau in cl(st(sigma)) || tau in st(cl(sigma))) &
%% tau notin cl(sigma) cup st(sigma)
%% tau in cl(st(sigma)) & tau notin st(cl(sigma))
%% <=>
%% (st(tau) cap st(sigma) ne empty) &&
%% (exists c1 tau < c1 > sigma & notexists c2 tau > c2 < sigma) ||
%% (exists c1 tau > c1 < sigma & notexists c2 tau < c2 > sigma)
%% <=>
%% ((exists c1 tau < c1 > sigma) || (exists c1 tau > c1 < sigma & notexists c2 tau < c2 > sigma)) &
%% ((notexists c2 tau > c2 < sigma) || (exists c1 tau > c1 < sigma & notexists c2 tau < c2 > sigma))
%% <=>
%% ((exists c1 tau < c1 > sigma) || (exists c1 tau > c1 < sigma)) & ((notexists c2 tau > c2 < sigma) || (notexists c2 tau < c2 > sigma)) &
%% ((exists c1 tau < c1 > sigma) || (notexists c2 tau < c2 > sigma)) &
%% ((notexists c2 tau > c2 < sigma) || (exists c1 tau > c1 < sigma))
%% Decomposing the evolution relation yields two members: a quiescent subcollection
%% $Q^i$ of $C^i$, where no rule of the transformation matches, and the
%% transformation of the active subcollection $A^i$ of $C^i$ \emph{knowing} $Q^i$.
%% %
%% \begin{equation}
%% \label{eq:split}
%% A^{i+1} + Q^{i+1} = T(A^i | Q^i) + T(Q^i)
%% \end{equation}
%% %
%% These unresolved terms represent the splitting of $A^i$ and $Q^i$ into
%% \emph{new} active cells and \emph{new} quiescent cells.
%% The trajectory of the simulation of a system with \MGS is given by the
%% successive application of the transformation rules as depicted in figure
%% \ref{fig:evolution}. At iteration $i$, given a topological collection $C^i$ of
%% the simulation of the system and a transformation $T$, the evolution relation is
%% As stated in section \ref{sec:interaction}, two cells are neighbors if they may
%% interact during the simulation of the system. Thus, only neighbors of $A^i$ are
%% required to compute the transformation of $A^i$ knowing $Q^i$. We can replace
%% the term $T(A^i | Q^i)$ in (\ref{eq:split}) by $T(A^i | F^i)$, $F^i$ being the
%% subcollection of quiescent cells which have a neighbor in $A^i$.
%% % Là on fait un choix: |Fi| \in |Qi| et pas |Fi| \in |Ai| (même si c'est dual)
%% %
%% \begin{equation}
%% A^{i+1} + Q^{i+1} = T(A^i | F^i) + T(Q^i - F^i + F^i)
%% \end{equation}
%% %
%% %
%% \begin{equation}
%% A^{i+1} + Q^{i+1} = T(A^i | F^i) + T(Q^i - F^i) + T(F^i)
%% \end{equation}
%% %
%% There is a grey area, namely $T(F^i)$, for which we cannot predict in all
%% generality whether it yields new active or quiescent cells or both. Since
%% some cells of $F^i$ may be active cells at the next iteration, we can
%% \emph{over-approximate} here by choosing to include them in the new active
%% subcollection as represented on figure \ref{fig:assembly}.
%% %
%% \begin{equation}\label{eq:ident}
%% A^{i+1} + Q^{i+1} =
%% \left( T(A^i | F^i) + T(F^i) \right) + \left( T(Q^i - F^i) \right)
%% \end{equation}
%% %
%% Note that no rule of the transformation $T$ can ever match $Q^i-F^i$, thus
%% %
%% \begin{equation}\label{eq:noeffect}
%% T(Q^i - F^i) = Q^i - F^i
%% \end{equation}
%% %
%% and since $F^i$ is a part of $Q^i$, no rule of $T$ will ever match in $F^i$
%% %
%% \begin{equation}
%% T(F^i) = F^i
%% \end{equation}
%% %
%% although the cells of $F^i$ can become active at the \emph{next} iteration.
%% For the following proposition, we will consider that $C^i$ is a topological
%% collection at some iteration $i$ of the simulation, $A^i$ and $Q^i$ are
%% respectively the active and quiescent subcollections of $C^i$ at some iteration
%% $i$ of the simulation. $F^i$ is the subcollection of cells $Q^i$ which have
%% a neighbor in $A^i$. For a topological collection $X$, $|X|$ denotes the
%% underlying ACC structure of $X$.
%% %
%% \begin{proposition}
%% $$ |Q^i - F^i| \subseteq |Q^{i+1}| $$
%% %\begin{proposition}$ |A^{i+1}| \subseteq |A^i - F^i| $\end{proposition}
%% %
%% Informally: any quiescent cell, at some iteration of the simulation, having
%% no active neighbor cells will remain quiescent at the next iteration of the
%% simulation.
%% \end{proposition}
%% %
%% \begin{proof}
%% We will show that if for any cell $c \in |Q^i-F^i|$, then $c \in |Q^{i+1}|$
%% holds.
%% \begin{displaymath}
%% \begin{array}{rcll}
%% c \in |Q^i-F^i| &\Leftrightarrow & c \in | T(Q^i-F^i) |
%% & (\text{by (\ref{eq:noeffect})}) \\
%% &\Leftrightarrow & c \in | Q^{i+1} |
%% & (\text{by id. in (\ref{eq:ident})}) \\
%% \end{array}
%% \end{displaymath}
%% \end{proof}
%% %
%% In fact, $F^i$ can be automatically computed. We reintroduce here
%% Cl, the closure operator, and St, the star operator defined in
%% section~\ref{sec:topcol}, to work on ACC:
%% \begin{definition}
%% Let $S$ be an ACC, Cl and St are defined as
%% \begin{displaymath}
%% \text{Cl}(S) = \bigcup_{\sigma\in S}\text{Cl}~\sigma
%% \hspace{.5cm}\text{and}\hspace{.5cm}
%% \text{St}(S) = \bigcup_{\sigma\in S}\text{St}~\sigma
%% \end{displaymath}
%% \end{definition}
%% Our $\mathbf{Lk}$ operator is an extension of the link operator of
%% combinatorial topology defined in \cite{axen98}. We define $\mathbf{Lk}(S)$
%% to be the symetrical difference between $\text{Cl}(\text{St}(S))$ and
%% $\text{St}(\text{Cl}(S))$. Figure \ref{fig:lk} shows an application example. It
%% corresponds to the union of the usual $\text{Lk}$ and $\text{coLk}$ operators of
%% simplicial complexes.
%% %
%% \begin{definition}
%% Let $S$ be an ACC, let Cl be the closure operator on ACC, let St be the star
%% operator on ACC, and let $\Delta$ be the symetrical difference between two
%% ACC, the link operator $\mathbf{Lk}$ is defined as
%% %
%% $$\mathbf{Lk}(S) = \text{St}(\text{Cl}(S))~\Delta~\text{Cl}(\text{St}(S))$$
%% %
%% Doing so allows us to catch cells that are neighbors of $S$ both through
%% higher and lower dimensional incidence cells.
%% \end{definition}
%% %
%% %
%% \begin{definition}
%% As the link operator catches all cells neighbors to $A$ and not in $A$, we
%% define $F^i$ as follows
%% $$ |F^i| = \mathbf{Lk}(|A^i|) $$
%% \end{definition}
%% %
%% %
%% \begin{figure}[t]
%% \begin{center}
%% \includegraphics[width=0.45\linewidth]{s}
%% \hfill
%% \includegraphics[width=0.45\linewidth]{lks}
%% \caption{Application of the $\mathbf{Lk}$ operator (right) on a given ACC
%% (left).}
%% %
%% \label{fig:lk}
%% \end{center}
%% \end{figure}
%% %
%% By rewriting the evolution relation as follows,
%% \begin{equation}
%% C^{i+1} = T(A^i | F^i) + F^i + (Q^i - F^i)
%% \end{equation}
%% and using the $\mathbf{Lk}$ operator, computing $A^{i+1}$ only depends on $A^i$.
%% Let $X$ be a topological collection, $\mathbb{M}_T(X)$ represents the
%% subcollection matched in $X$ by a rule of a transformation $T$.
%% %DONE: Attention, erreur de typage entre une collection topologique et son
%% % support
\section{Propagation d'un feu de forêt}
\label{sec:fire}
@ -1253,11 +943,6 @@ l'activité}
Nous avons réécrit l'exemple précédent afin que le mécanisme de filtrage ne
s'applique que dans la zone active.
% As with the theoretical view that we presented earlier, the cellular automata
% space is split between Active cells which take part in a transformation of
% their neighbors and Quiescent cells which have no role to play whatsoever in
% the current iteration. As seen in the end of section~\ref{sec:mgs-activity},
% activity spreads like a wave, as does forest fire.
En accord avec l'approche théorique présentée un peu plus tôt, l'espace
des cellules de l'\ac\ est partagé entre les cellules actives qui prennent
part à l'évolution de leurs voisines et les cellules quiescentes ne
@ -1267,9 +952,6 @@ l'instar du feu de forêt.
\begin{figure}[ht]
\begin{center}
%\includegraphics{normal000}~\includegraphics{active000} \\[1ex]
%\includegraphics{normal110}~\includegraphics{active110} \\[1ex]
%\includegraphics{normal687}~\includegraphics{active687}
\includegraphics[width=.3\linewidth]{fire-normal05}
\includegraphics[width=.3\linewidth]{fire-normal22}
\includegraphics[width=.3\linewidth]{fire-normal95} \\[1ex]
@ -1302,11 +984,6 @@ actives à l'itération suivante et correspond exactement à notre définition p
d'un front d'incendie. Au début de la simulation, $F^0 = \emptyset$.
\paragraph{Mise à jour de l'état des cellules}
% The first part of the algorithm is about updating the state of active cells.
% This operation is simply the application of the transformation rule $T$ on cells
% of $A$ instead of all cells. Once completed, a new separation between active an
% quiescent arises and needs to be computed: some cells become active, some other
% become quiescent.
La première partie de l'algorithme concerne la mise à jour des cellules actives.
Elle résulte de l'application des règles d'une transformation $T$ sur les cellules
de $A$ plutôt que sur toutes les cellules. Une fois effectuée, une nouvelle
@ -1326,9 +1003,6 @@ certaines cellules deviennent actives, d'autres deviennent quiescentes.
\end{algorithm}
\paragraph{Mise à jour de la zone active}
% To sort between active and quiescent cells, we need and use an activity
% predicate $P$ to point out which cells are active, either remaining active in
% $A^i$ or becoming active in $F^i$.
Afin de trier entre cellules active et quiescentes, nous utilisons un prédicat
d'activité $P$ pour déterminer quelles cellules sont actives, soit restant active
dans $A^i$ ou devenant active dans $F^i$.
@ -1512,8 +1186,6 @@ accueillir une particule à l'itération suivante.
\subsubsection{Spécification dynamique en \mgs}
Spécifier la dynamique d'une \ald\ dans une transformation revient à rédiger
deux règles appliquées suivant une stratégie \emph{maximal-parallel}:
%DONE: (WONTFIX) orly? Comment on fait du random alors? Pire, si on fait du
% random, comment on s'assure que la première match en priorité?
\label{mgs:ald-evol}
\begin{MGScode}
trans evolution = {
@ -1763,23 +1435,3 @@ niveau du langage \mgs.
original de l'opérateur de vague, emprunté à la théorie de Morse, et notre
exploration de l'activité spatiale.
% Organisation plutôt thématique que long/court terme
% I. Réifier le front d'activité
% Intégrer l'activité (sa reconnaissance) dans MGS
% - Implique de définir la reconnaissance de l'activité pour chaque collection
% topologique, c'est peut-être pas si simple
% - Implique de résoudre la question du suivi
% - Implique de définir une syntaxe
% Prouver le lien entre l'optimisation par activité et une technique
% classique d'optimisation sur les automates cellulaires. On peut ainsi
% démontrer que notre technique d'optimisation est plus générique.
% Lien entre suivi de activité et théorie de Morse
% Les différentes activités spatiales (elles sont issues des règles de
% transformation, donc on peut faire des groupes de règles, les prendre une
% par une, et voir ce que ça donne). Exemple potentiel: activité de capture,
% activité de déplacement (d'après les règles de l'ALD) et leur interaction.
% II. Étendre les exemples, traiter plus de cas
% Tester sur plus d'exemples: il faut étendre les résultat pour leur donner
% plus de poids
% III. Étendre

View file

@ -2,19 +2,6 @@
Dans ce très court chapitre, nous résumons les chapitres précédents et
présentons nos contributions au projet de recherche ANR \synbiotic.
% C'est fini, on bien bossé, regardez. On va maintenant présenter:
% - le résumé des travaux, séparément, puis
% - synbiotic -> délivrable;
% - Quelles nouvelles questions ça ouvre ?
% - Et nous, on continue sur quoi ? (nos travaux futurs)
% On a déjà fait une conclusion par chapitre, qu'ajouter dans celle-là ?
% - Donner un modèle de l'activité dans le cadre du multi-niveau de la partie 1
% -
% Résumé des travaux
%Deux nouvelles techniques de modélisation inspirées par un formalisme unifiant:
%modélisation par l'activité spatiale et par des automates cellulaires étendus
\section{Résumé de nos travaux}

View file

@ -155,32 +155,6 @@ fonction qui associe une sortie à une entrée mais spécifie un système dynami
(biologique) distribué qui essaie de maintenir des invariants en dépit des
perturbations et des changements de l'environnement.
% \synbiotic est un projet de recherche fondamentale à long terme qui s'inscrit
% dans le domaine à la fois des langages de programmation non conventionnels et
% dans l'analyse/validation de propriété de systèmes dynamiques. Il s'agit
% d'un projet informatique qui vise à utiliser les nouveaux supports de calcul
% fournis par les avancées de la biologie synthétique et non à les produire.
% \synbiotic a pour objectif d'étendre les techniques et les outils développés
% dans la modélisation et la simulation de processus biologiques complexes
% et d'intégrer de nouvelles approches de la programmation (programmation
% spatiale, programmation amorphe et programmation autonome) afin de faire face
% à de nouvelles classes d'applications caractérisées par l'émergence d'un
% comportement global dans une grande population d'entités localisées et
% irrégulièrement interconnectées de manière dynamique.
%
% \paragraph{Une approche informatique en amont de l'ingénierie génétique.}
% Si la plupart des études actuelles cherchent à formaliser, concevoir,
% caractériser et valider des composants biologiques réutilisables, nous nous
% positionnons en amont de cette étape. La biologie synthétique regroupe des
% stratégies scientifiques et des technologies très différentes qui incluent
% la conception et la construction de génomes, la conception de protéines,
% la synthèse de composés biochimiques par de nouvelles voies métaboliques
% et la construction de circuits de régulation génique dans des cellules et
% des micro-organismes. Pour ce qui nous concerne, nous faisons l'hypothèse
% qu'il existe des bibliothèques standardisées de comportements biochimiques
% élémentaires qui peuvent être composés dans une bactérie, comme par exemple
% les BioBricks.
%
Notre objectif est d'adresser la conception de grands systèmes biologiques
par une approche langage, de la même manière que VHDL permet la conception
de système de traitement de l'information à partir de portes et de blocs
@ -223,7 +197,6 @@ le cadre de la programmation spatiale et de la programmation amorphe. Un des
enjeux du projet est de montrer que ces techniques peuvent être appliquées avec
succès à la synthèse de biosystèmes.
% \paragraph{La prise en compte du spatial.}
Enfin, notre dernière hypothèse est que, même si pour l'instant la biologie
synthétique se focalise sur la « programmation d'une seule bactérie »,
le développement de biosystèmes un tant soit peu complexe reposera sur
@ -240,13 +213,6 @@ ouvre la voie à une ingénierie du développement (« développement » au
sens biologique du terme), ce qui permet de rêver à des applications qui vont
bien au-delà de la conception de la cellule comme « usine chimique ».
%
% \paragraph{Un volet validation.}
% Le positionnement du projet est résolument informatique et se
% concentre sur le développement de techniques de compilation et de validation
% en amont de l'ingénierie génétique. Cependant, afin de valider les outils
% développés, nous souhaitons les mettre en œuvre concrètement à travers leur
% utilisation à l'intérieur du projet par une application de morphogénèse et,
% à l'extérieur, par une équipe iGEM.
\paragraph{Découpage des tâches.}
Le projet \synbiotic est découpé en six \emph{Work Packages} (WP), dont les WP
@ -300,8 +266,6 @@ des catégories, introduisant la validation, l'abstraction et la composition
des modèles dans ce cadre. Nous instancions finalement sur un exemple les
définitions précédentes mettant en lumière les relations existantes entre quatre
modèles d'un système proie-prédateur.
%enfin poser les fondements
%des relations entre modèles tel que nous les avons présentés plus
\paragraph{Chapitre 3: L'activité spatiale comme outil de modélisation}
Dans ce chapitre nous présentons le langage L1 du WP2 en posant un cadre
@ -401,304 +365,4 @@ du chapitre \ref{chap:partie-otb}.
intitulé «Modélisation et simulation d'une population de bactéries en
\opencl» duquel la toute première version de \otb est issu.
\end{itemize}
% \begin{itemize}
% \item DEVS-FIRE (X Hue)
% \item Parallèle avec la physique du solide et la physique du point ->
% complexification (même si tout marcherai avec de la mécanique du point);
% Distinction entre règles internes et règles externes.
% \item Discrete Differential Forms for Computational Modeling (Desbrun, Kanso,
% Tong)
% \item Computation with competing patterns in Life-like automaton (Martinez,
% Adamatzky, Morita, Margensten)
% \item Predicting Wildfire Spreading Through a Hexagonal Cellular Automata Model
% (Trunfio, p401 de Cellular Automata)
% \item Modelling Wildfire Dynamics via Interacting Automata (Dunn, Milne, CA
% p411)
% \item Downward Causation and the autonomy of Weak Emergence (Mark Bedeau)
% \item Multi-level simulation of farmer's land use and social organization
% decision-making; an agent-based approach (Speelman, Jager, Grot, Garcia,
% Tittonell)
% \item Problème de l'identité (Derek Parfit - Reasons and Persons - Livre de
% 400p)
% \item Mail du 16 avril 2013 à 19:06 (+photos)
% \item Accroche toi au niveau, j'enlève l'échelle (Gil-Quijano, Hutzler, Louail)
% \item Closes point method (Forest fire, level sets on surfaces)
% \item Symbiotic simulation (Fujimoto et al), Rapport Dagstuhl
% \item Filippi front tracking (modèle MGS dans le CVS
% Exemple/Exemble-bezier/Front)
% \item Can we computerize an Elephant (David Harel, 2009, 2015) (AAMAS 2015)
% \item The detection of intermediate-level emergent structures and patterns
% (Villani et al)
% \item Thèse Duboz : intégration de modèles hétérogènes pour la modélisation et
% la simulation de systèmes complexes. (c'est du DEVS)
% \item WAVE parallel programming language
% \item Méchanotransduction (INSERM Workshop)
% \item Mathematical formulation of multi-layer networks (à mettre dans les
% modèles formels)
% \item Introduction to the Mathematical Theory of Systems and Control (Polderman
% \& Willems) -- inspiration pour la définiton générale de modèle.
% \item Kurtz, the relationship between stochastic and deterministic models for
% chemical reactions.
% \item Spicher, Verlan -- Generalized Communicating P Systems Working in Fair
% Sequential Mode
% \item
% \end{itemize}
% Appel à projet pour la création d'un DIM recherche transversale sur
% les systèmes complexes
% \section{Modéliser des systèmes complexes}
% % Modéliser?
% Concevoir des modèles est une pratique courante pour comprendre le
% fonctionnement d'un phénomène ou la structure d'un objet \emph{compliqué}. Le
% modélisateur a pour tâche de
% \begin{enumerate}
% \item \emph{identifier} les parties du phénomène étudié et en donner une
% représentation simplifiée,
% \item \emph{assembler} ces parties, à l'aide d'un formalisme ou d'un langage de
% programation,
% \item \emph{comparer} les propriétés principale du phénomène étudié avec les
% propriétés annoncées par son modèle.
% \end{enumerate}
%
% \bigskip
% La première tâche du modélisateur est d'identifier les parties du système qu'il
% souhaite modéliser. C'est au modélisateur que revient la décision de nommer une
% partie qu'il a identifiée; cette tâche peut-être rendue difficile suivant les
% cas. En philosophie, la notion d'identité recouvre plusieurs concepts proches,
% elle est donc ambigüe et poser des problèmes dans certains cas, voici quelques
% exemples de paradoxes concernant l'identité.
%
% \paragraph{Un tas de riz}%
% Dans le langage courant, nous utilisons des mots pour nous réferer aux objets
% qui nous entourent. Quand plusieurs objets sont regroupés, ils peuvent être
% assimilés à un nouvel objet unique. Un exemple est le tas de riz. Le mot tas
% désigne un objet unique, constitué de multiples autres objets, en l'occurence
% des grains de riz. Comme il n'y a pas de limite claire concernant le nombre de
% grains de riz nécessaires à former un tas, il est apparemment difficile de
% déterminer lequel de ces raisonnements est approprié:
% %
% \begin{itemize}
% \item Un grain de riz n'est pas un tas. Ajouter un grain de riz à ce grain de
% riz ne forme pas un tas. Ajouter un grain de riz à ces deux grains de riz ne
% forme pas un tas. Donc ajouter un grain de riz à plusieurs grains de riz ne
% forme pas un tas. Il semblerait, en raisonnant par récurrence qu'\emph{un
% nombre arbitraire de grains de riz ne forme pas un tas};
% \item Un tas n'est pas un grain de riz. Enlever un grain de riz à un tas ne
% change pas sa nature. Nous devrions pouvoir répéter cette opération jusqu'à
% atteindre le moment où il ne reste qu'un seul grain de riz et déduire
% qu'\emph{un grain de riz est un tas}.
% \end{itemize}
%
%
%
% \bigskip Pour la seconde tâche du modélisateur, construire le modèle, la science
% informatique et l'outil informatique sont principalement utilisés. Il existe de
% nombreuses techniques et outils de modélisation suivant les besoins et les
% domaines. Par exemple, la modélisation qualitative ou quantitative, discrète ou
% continue et l'étude des systèmes dynamiques. Couramment, les approches
% classiques de modélisation individu-centrés nécessitent la description des
% entités et des lois qui régissent les évolutions du système à un seul et unique
% \emph{niveau de description}: la molécule, la cellule ou le tissu en biologie;
% le quartier, la ville ou le pays en urbanisme; la note, la mesure ou le thème en
% musique… Certains phénomènes à modéliser opèrent clairement à plusieurs niveaux
% de description. Par exemple en biologie, l'embryogenèse est typiquement un
% problème décrit comme étant multiniveau. Comment, à partir d'une unique cellule,
% se développe un organisme multicellulaire autonome ? Comment modéliser le
% passage de l'individu à la population ? Comment décrire le phénomène de
% mécanotransduction, où l'application d'une force mécanique altère le
% développement d'un embryon ? Pour répondre à ces questions, il nous faut de
% nouveaux outils de modélisation prenant en compte plusieurs niveaux de
% description.
%
% Pour les nouvelles sciences de la complexité, les phénomènes ayant plusieurs
% niveau de description sont parfois appelés \emph{systèmes complexes}. Voici une
% définition qu'en donne l'Institut des Systèmes Complexes (\ISC):
% \begin{quote}
% Les systèmes complexes sont des systèmes présentant un grand nombre d'entités
% différenciées, interagissant de manière complexe : interactions non linéaires,
% boucles de rétroaction, mémoire des interactions passées. Ils se caractérisent
% par l'\emph{émergence}, au niveau global, de propriétés nouvelles non
% observables au niveau des entités constitutives. Le niveau local fait émerger
% des formes organisées au niveau global, lequel influence en retour le niveau
% local (appelé «immergence»). Interactions locales et interactions globales
% peuvent ainsi se conjuguer dans la description de leurs dynamiques. \hfill\ISC
% \end{quote}
% Cette définition nous fourni une image où deux niveaux de description, le niveau
% local et le niveau global, interagissent l'un sur l'autre, de local à global par
% l'émergence et de global à local par l'immergence, et où les propriétés des
% éléments observés sont restreintes à leur niveau de description.
%
% % le 2016-09-08, Martin a une révélation… Il était temps…
% \begin{quote}
% Les propriétés d'un objet du monde réel \emph{dépendent} de son cadre de
% modélisation, c'est à dire du modèle utilisé pour le décrire.
% \end{quote}
% En d'autre termes, les propriétés d'un objet modélisé \emph{ne sont pas} des
% propriétés de l'objet mais des propriétés du modèle. Cette hypothèse de travail
% est importante et se trouve au fondement de nos travaux. Sa première implication
% est qu'un niveau de description correspond à un modèle particulier.
%
% Cette limitation a pour conséquence directe de ne pas permettre de référencer
% les entités intervenant dans d'autres niveaux de description. Ainsi, en biologie
% moléculaire, ne disposant d'aucune notion de cellule, on ne peut décrire
% directement des processus tels que le \emph{transport actif} ou le \emph{quorum
% sensing}. De façon plus générale, ces approches purement locales et
% réductionnistes ne permettent pas de prendre en compte des connaissances dont on
% dispose aux autres niveaux de description ni des relations causales qui existent
% entre les niveaux de description. Le défi que nous nous proposons de relever est
% de proposer un cadre à la fois pratique et théorique pour modéliser et simuler
% des systèmes dynamiques complexes en prenant en compte plusieurs niveaux de
% description.
%
% %Niveau de description
%
% Dans quelques travaux de recherche en informatique et en philosophie nous avons
% pu rencontrer le terme d'\emph{émergence}. Par exemple :
% \begin{itemize}
% \item Émergence forte ou émergence faible
% \item Émergence synchronique et diachronique
% \item Émergence computationnelle et combinatoire
% \end{itemize}
% Pour le reste de ce manuscrit, nous supposerons que la notion d'émergence, en
% tant que concept transversal et définit de manière différente suivant les
% domaines et les travaux, peut se résumer comme un problème de vocabulaire
% permettant d'énumérer les propriétés d'un modèle. Nous faisons donc l'hypothèse
% suivante :
% \begin{quote}
% Soit un modèle $m_1$; une \emph{propriété émergente} du modèle $m_1$ est une
% propriété appartenant nécessairement à un autre modèle que $m_1$.
% \end{quote}
% Comme parfois la présence de propriétés émergentes détermine l'aspect complexe
% du modèle d'un système, nous rendons par ce fait explicitement non-complexe les
% propriétés déterminables dans le modèle utilisé.
%
%
%
% %\subsection{Compliqué n'est pas complexe}
% \paragraph{Ce qui est compliqué: la complexité comme une mesure}
% Dans le champ de l'algorithmique, la complexité est une \emph{mesure} sur une
% chaîne de caractères $s$ où plus une chaîne est complexe, plus elle est
% difficile à compresser. D'un côté, la complexité de Kolmogorov est la longueur
% du plus petit programme informatique, écrit dans un langage formel donné,
% produisant $s$. D'un autre côté, les modèles de calculs sont des formalisations
% mathématiques d'une méthode de calcul d'un résultat $f(x)$ par une fonction $f$
% sur une entrée donnée $x$. En terme de puissance d'expression, tous les modèles
% de calculs universels se valent, leur complexité est donc évalué:
% \begin{itemize}
% \item en fonction du \emph{nombre de pas de calculs} nécessaire à une machine de
% Turing pour reconnaître un mot donné, appelé complexité en temps, puis
% \item en fonction de la \emph{taille de la bande} nécessaire à une machine de
% Turing pour reconnaître un mot donné, appelé complexité en espace.
% \end{itemize}
% Cette mesure donne naissance à toute une hiérarchie de classes de complexités.
% Nous ne nous intéressons pas, dans ce manuscrit, à la \emph{complexité comme une
% mesure} dans le cadre de l'alogrithmique.
%
% \paragraph{Ce qui est complexe: la complexité comme une «propriété»}
% Nous nous intéressons dans nos travaux aux systèmes possédant la propriété
% d'être complexe, qualifiés de systèmes complexes dont les exemples les plus
% courants sont les systèmes biologiques, à tous leurs niveaux de description.
% Cette appellation porte à confusion et nous n'avons pas trouvé de définition
% faisant consensus. Nous avons cependant défini, grâce à \MGS, une catégorie de
% modèles recouvrant la plupart des systèmes complexes: ce sont les Systèmes
% Dynamiques à Structure Dynamique\footnote{en anglais Dynamical Systems with a
% Dynamical Structure, abbrégé en DSDS, ou encore (DS)²}. C'est la définition à
% laquelle nous nous réfèrerons et nous nous abstiendrons d'utiliser le terme de
% système complexe dans la mesure du possible.
% La présente thèse apporte sa contribution sur trois plans principaux: le premier
% concerne la participation au WP2 avec la définition de l'activité spatiale
% au sein du langage \mgs, la seconde concerne le WP3 avec la conception du
% simulateur de bactéries \otb et le troisième livre une réflexion en cours sur la
% nature des modèles du multi-niveau, thématiques au cœur du projet \synbiotic.
%
% %simulateur
% \paragraph{Un accès aux grandes populations} La simulation par \otb\ d'une
% population de bactéries concerne le bas de la tour des langages, au plus près
% de l'assembleur génétique. Sa conception a pour vocation d'accélérer les
% retours concernant des hypothèses de travail et nous permet de savoir si elles
% sont plausibles, ou bien à rejeter. C'est donc une étape préalable à la
% conception d'une expérience en laboratoire. De plus, il est moins coûteux
% d'obtenir des réponses d'un simulateur que de construire une expérience
% \emph{in vivo} et d'attendre qu'une population de bactérie se développe
% dans un environnement contrôlé ; \otb\ a donc une place centrale pour une
% partie des travaux de recherche du projet. \otb, par son rendu grahpique
% accéléré par OpenGL et son usage du calcul parallèle avec OpenCL, permet
% d'observer la croissance d'une importante population de bactérie avoisinnant
% le million d'individus, dans un environnement de taille variable s'adaptant
% à la répartition spatiale des entités. Il permet ainsi de tirer des
% conclusions qualitatives sur le comportement de grandes populations. \otb\
% utilise également un langage d'entrée déclaratif, Synthetic Biology Genetic
% Programming~\cite{pascalie_morphogenetic_2016}, proche de celui de \gro~%
% \cite{jang_specification_2012}, ce qui permet de reprendre des précédentes
% simulations pour des tests à plus grande échelle. De par sa conception,
% \otb\ est aisément extensible grâce au langage de haut niveau OCaml et son
% architecture est modulaire, ce qui permet à un développeur d'ajouter ou de
% modifier facilement des fonctionnalités au simulateur. Enfin ce logiciel est
% libre, ouvrant la voie à des corrections et des améliorations sans entrave.
%
% %multi-modèle
% \paragraph{Un travail transversal}
% Nos travaux présentent, dans le premier chapitre, une approche formelle
% à la modélisation multi-niveau, issu d'un point de vue particulier sur
% le multi-modèle.
% %
% L'approche choisie par le projet \synbiotic est celle de l'ingénierie
% génétique : en choisissant d'emprunter la même voie que l'ingénierie des
% machines qui a donné le jour aux ordinateurs modernes et aux langages de
% programation, le projet tente de révéler des relations réductionnistes et
% de définir des sous-tâches plus simples à résoudre. De part l'élaboration
% de cette \emph{tour de langages}, le projet de recherche emprunte une approche
% informatique, où la complexité est entendue avec son sens algorithmique.
% Il est cependant intéressant de noter que la principale difficulté rencontrée
% concerne la description et la compréhension de ce qui constitue une forme de
% complexité inhérente au monde biologique : \emph{la complexité du vivant}.
% % Complexité
% Il n'y a pour l'instant pas de correspondance claire entre la complexité
% algorithmique et la complexité associée au vivant. Les systèmes complexes, au
% sens de la définition de l'ISC présentent la singulière caractéristique d'être
% simulables mais extrèmement difficiles à prédire. En d'autre terme, nous ne
% connaissons pas de \emph{lois} décrivant leur comportement \emph{global}. Les
% populations de cellules biologiques, par exemple, font partie des systèmes
% complexes. À l'inverse, la complexité des algorithmes est formellement définie.
% Les problèmes sont répartis en classes de complexité, dont on sépare les
% classes en temps ($\text{TIME}(t(n))$, $\text{NTIME}(t(n))$, …) des classes en
% espace ($\text{SPACE}(s(n))$, $\text{NSPACE}(s(n))$, …) ; toutes ces classes
% sont définies par rapport à un modèle de calcul central en informatique : les
% machines de Turing. Les classes en temps reflètent le nombre de pas nécessaire à
% une machine de Turing pour résoudre un problème tandis que les classes en espace
% reflètent la longueur de la bande, c'est à dire le nombre de cases mémoire,
% nécessaire pour résoudre un problème. La simulation d'un système complexe étant
% effectuée par un ordinateur, cette simulation fait donc au moins partie de la
% classe des problèmes décidables, car il suffit d'attendre l'itération de la
% simulation qui permet de décider d'une propriété.
%
% À l'instar de \synbiotic, d'autres projets de recherche s'intéressent à la
% question de la complexité du vivant. L'approche générique suivie par ces autres
% projet revient à assembler plusieurs modèles mathématiques ensemble pour
% reproduire les valeurs des observables observées dans la nature. Le lecteur
% trouvera d'autres exemples dans l'introduction au chapitre suivant.
% \paragraph{Aggrégation spatiale (Spatial Aggregation)}: L'aggrégation spatiale
% est un paradigme et un langage générique~\cite{yip_spatial_1996} unifiant la
% descriptions plusieurs solveurs de problème imagistiques. Ce langage leur permet
% de proposer un cadre commun pour décrire le fonctionnement de trois solveurs de
% problèmes spécialisés dans l'extraction d'informations qualitatives depuis des
% systèmes hamiltoniens (\textsc{Kam}), les structures d'espace d'était de
% systèmes dissipatifs (\textsc{Maps}) et de systèmes mécaniques à parties rigides
% (\textsc{Hipair}). Certains concepts utilisés se rapprochent de la programmation
% spatiale telle qu'implémentée dans \mgs{} telle que la structure de données
% générique sous forme de graphe de voisinage est un cas particulier de collection
% topologique. Dans chaque cas, l'objet à analyser est assimilable à un champ
% continu duquel l'outil utilisé tire des informations et correspond au niveau
% d'abstraction le plus bas. Le langage inclus des opérateurs pour transformer
% chaque niveau un niveau plus abstrait, par le biais d'agrégation et de
% classification. Les rapports montant et descendant entre les niveaux sont
% apparemment maintenu. Ces travaux adressent bien une partie de notre propre
% problématique, à ceci près qu'ils sont limités à quelques cas particuliers.

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,5 @@
\chapter{Travelling Bacteria}\label{chap:partie-otb}
\minitoc
%DONE: (WONTFIX) Rendre la figure plus claire
\begin{figure}[h]
\centerline{%
\includegraphics[width=19cm]{figures/otb2-display}}
@ -132,9 +131,6 @@ la validité d'un modèle concernant l'évolution d'une population de bactéries
modifié ou non;
\end{description}
% \subsection{GRO} % Pourquoi pas GRO
% À l'instar de \gro~\cite{jang_specification_2012}, …
\subsection{\ocaml} % Adaptabilité, stabilité
Pour répondre aux critères \emph{d'adaptabilité} et de \emph{stabilité},
nous avons choisi d'implémenter \otb avec le langage \ocaml, un langage de
@ -146,28 +142,10 @@ l'assistant de preuve Coq\footnote{cf. la page «à propos» du projet Coq
son actif de belles réussites comme l'analyseur statique \textsc{Astrée} en
usage chez Airbus.
%DONE: Repasser sur ça avec Antoine (WONTFIX)
\paragraph{Langage de programmation fonctionnel}
La programmation fonctionnelle est issue du $\lambda$-calcul, un modèle de
calcul mathématique reposant sur des variables, des applications et des
abstractions regroupées sous le nom de \emph{$\lambda$-termes}.
% \begin{mpo-definition}[Ensemble des $\lambda$-termes]
% Un $\lambda$-terme est composé:
% \begin{itemize}
% \item de variables, notées $v_1,v_2,\ldots,\v_n,\ldots$;
% \item des symboles d'abstraction $\lambda$ et $.$;
% \item des parenthèses ouvrante et fermante.
% \end{itemize}
% L'ensemble des $\lambda$-termes, $\Lambda$ peut être définit par induction:
% \begin{enumerate}
% \item Si $x$ est une variable, alors $x \in \Lambda$
% \item Si $x$ est une variable et $M\in \Lambda$, alors $(\lambda x.M)\in
% \Lambda$
% \item Si $M, N \in \Lambda$, alors $(M\ N)\in \Lambda$
% \end{enumerate}
% Les $\lambda$-termes issus de la règle 2 sont appelés \emph{abstractions} et
% ceux issus de la règle 3 sont appelés \emph{applications}.
% \end{mpo-definition}
Dans le modèle du $\lambda$-calcul, la règle centrale pour le calcul des
$\lambda$-termes est la \emph{substitution} dont les deux principaux
représentants sont l'$\alpha$-conversion et la $\beta$-réduction. Le calcul de
@ -248,7 +226,6 @@ Déclarer les types
permet au compilateur de distinguer deux chaînes de caractères identiques, mais
dont le sens est différent, ce qui est représenté par deux types différents.
%modulaire
\paragraph{Modularité native}
Lors de la rédaction d'un programme, il est vite nécessaire de «compartimenter»
le code source, d'abord parce que certaines fonctionnalité sont génériques et
@ -267,12 +244,7 @@ interfaces — du moment qu'elles sont toutes compatibles avec les types de
l'implémentation — et plusieurs modules peuvent vérifier une même interface.
Enfin, \ocaml dispose de modules paramétriques nommés \emph{foncteurs} qui
sont des structures paramétrées par d'autres structures.
% Quand ils sont répartis dans des fichiers séparés, chaque fichier source
% terminant en \texttt{.ml} est un module dont le nom est celui du fichier,
% auquel on peut adjoindre un fichier interface dont le nom termine en
% \texttt{.mli}.
%interfaçable avec C
% http://caml.inria.fr/pub/docs/manual-ocaml/intfc.html
\paragraph{Interface avec le langage C}
Un aspect important pour les besoins du cahier des charges (voir
@ -375,11 +347,6 @@ bibliothèque logicielle nous permet de proposer une ou plusieurs fenêtre
de rendu en temps réel pour présenter des informations qualitatives sur la
progression d'une simulation.
% Scalabilité
%détection dynamique de la configuration de l'utilisateur
% Ouverture
%licence libre
\subsection{Modélisation d'une cellule}
\begin{figure}[t]
\centering
@ -391,10 +358,6 @@ progression d'une simulation.
\label{fig:ecoli}
\end{figure}
% \caption{Longueur totale d'une bactérie : $L = 2 \cdot{} (r + l)$
%Surface totale : $S = 2 \cdot{} r \cdot{} 2 \cdot{} l + \pi \cdot r^2
% = 4 \cdot{} r \cdot{} l + \pi \cdot r^2$}
\Ecoli\ est une bactérie bacillaire, c'est à dire en forme de bâtonnet, du genre
\emph{Escherichia}. C'est une bactérie vivant habituellement dans l'intestin des
animaux à sang chaud, dont elle constitue 0,1\% de la flore intestinale.
@ -404,7 +367,6 @@ la microbiologie industrielle, notamment pour sa disponibilité et sa facilité
culture. La souche K-12, adaptée à l'étude en laboratoire, est également un des
premiers organisme dont le génome a été séquencé \cite{blattner_complete_1997}.
%Usages de ecoli
Elle est à l'origine du domaine de la biotechnologie en étant choisie comme
premier organisme génétiquement modifié contenant de l'ADN recombiné, c'est à
dire de l'ADN dont la séquence des nucléotides à été altérée pour modifier
@ -427,10 +389,8 @@ fonctionnelles~\cite{han_escherichia_2006}.
\hline
Longueur & $L = 2 (l+r)$ & \num{2.5+-0.6} & \si{\micro\meter} \\
Largeur ou Diamètre & $d = 2r$ & \num{0.88+-0.09} & \si{\micro\meter} \\
% Masse & $m$ & 0 & g \\
Volume & $V$ & \num{1.4} & \si{\femto\liter} \\
Vitesse rectiligne & $v$ & \num{29+-6} & \si{\micro\meter\per\second} \\
% Vitesse angulaire & $\omega$ & \num{29+-6} & \si{\micro\meter\per\second} \\
Temps de génération & $G$ & 20 — 30 & \si{\minute} \\
\hline
\end{tabular}
@ -466,7 +426,6 @@ Ce phénomène s'appelle la \emph{chimiotaxie}. Il résulte de la transmission
de signaux extracellulaires, détectés par les récepteurs de la membrane, aux
moteurs des flagelles qui contrôlent le comportement de la cellule.
% Modèle discret entre concentration d'un morphogène et temps de tumble et run
D'un point de vue macroscopique, \ecoli{} effectue une marche aléatoire
biaisée vers une direction particulière. Elle détecte la variation
\emph{dans le temps} de la concentration d'un chimioeffecteur. Ainsi, lorsque
@ -656,7 +615,6 @@ que via le langage C, ainsi les modules de bas niveau \texttt{Viewer} et
\texttt{OpenCL} sont en partie dédiés à la traduction entre l'interface C et
\ocaml.
%% Représentation schématique des modules
\begin{figure}[ht]
\centering
\includegraphics[width=\textwidth]{figures/otbModules}
@ -696,7 +654,6 @@ environnement. C'est ce modèle qui permet aux bactéries de déposer des
morphogènes dans leur environnement et de consommer les morphogènes qui y sont
présent.
%% 3 vues du simulateur
\begin{figure}[h]
\centering
\includegraphics[width=\textwidth]{otb-multi-view}%
@ -792,11 +749,6 @@ diffusion et de dégradation sous forme de nombres réels.
["beta", 1.5, 1]
]
\end{SBGPcode}
% Par exemple, l'extrait de code précédent est compilé vers l'en-tête C suivante:
% \begin{Ccode}
% alpha := signal(0.050000,0.010000) ;
% beta := signal(1.500000,1.2) ;
% \end{Ccode}
\paragraph{Déclaration des réactions}
Les réactions sont déclarés dans une liste. Chaque réaction consiste en un
@ -812,14 +764,8 @@ réaction $2\alpha + \beta \xrightarrow{0.15} \gamma$:
]
]
\end{SBGPcode}
% Il se compile vers l'en-tête C suivante:
% \begin{Ccode}
% reaction({alpha,alpha,beta},{gamma},0.15) ;
% \end{Ccode}
\paragraph{Déclaration des types}
% The bacterial types are declared in a list of IDs, the following block
% indicates the list of types involved in the genome:
Les types de bactéries légaux sont déclarés dans une liste d'identifiants. Le
bloc suivant donne la liste des types impliqués dans le génome:
\begin{SBGPcode}
@ -831,24 +777,8 @@ bloc suivant donne la liste des types impliqués dans le génome:
"DEAD"
]
\end{SBGPcode}
% All types in the \sbgp{} file are declared as integer variables in Gro. These
% types are indexed starting from 0 (type of the initial bacterium). The
% following SBGPcode shows the Gro code produced by the \sbgp{} compiler:
% Tous les types déclarés dans le fichier \sbgp{} sont transformés en nombre entier
% dans \tb{}. Ces types sont indexés à partir de 0 — le type de la bactérie initiale.
% L'extrait \sbgp{} précédent est compilé comme suit:
% \begin{Ccode}
% QUIESCENT := 0 ;
% LEADER := 1 ;
% FLESH := 2 ;
% SKIN := 3 ;
% DEAD := 4 ;
% \end{Ccode}
\paragraph{Déclaration du comportement}
% Type-specific behaviors are declared in an associative list: for each label
% declared in the type block, a list of instructions is given. As an example the
% following code gives the behavior of the \texttt{LEADER} type:
Les comportements spécifiques aux types sont déclarés dans une liste
associative; une liste d'instructions est donnée pour chaque étiquette
déclaré dans le bloc type. Par exemple, le code suivant donne le comportement
@ -865,49 +795,31 @@ Une instruction est décrite conformément à la structure suivante:
\begin{SBGPcode}
{ "InstructionID" : ["param1", ... ,"paramN"] }
\end{SBGPcode}
% The \texttt{InstructionID} must be a member of the \sbgp{} instruction set.
% These instructions and their Gro equivalent are given in the following table:
La valeur du champ \texttt{InstructionID} doit être pris parmi l'ensemble des
instructions \sbgp{} suivantes:
\begin{itemize}
\item \texttt{EmitSignal(s,q)}: dépose une quantité |q| du morphogène |s| à
la position courante de la bactérie dans l'environnement;
% & emit\_signal(s,q) \\
\item \texttt{AbsorbSignal(s,q)}: consomme une quantité |q| du morphogène
|s| à la position courante de la bactérie dans l'environnement;
% & absorb\_signal(s,q) \\
\item \texttt{Differentiate(A)}: force un changement de type de la bactérie vers
le type |A| (il doit exister dans la liste des types);
% & mem.type := A \\
\item \texttt{Die()}: détruit la bactérie. Elle est en pratique marquée comme
inactive et réinitialisée;
% & die() \\
\item \texttt{Freeze()}: place le marqueur |immobile| sur une bactérie. Dans cet
état une bactérie est immobile et ne croît pas;
% & freeze() \\
\item \texttt{Unfreeze()}: retire le marqueur |immobile|;
% & unfreeze() \\
\item \texttt{Divide(r)}: définit le taux de croissance de la bactérie à la
valeur particulière |r|;
% & set("ecoli\_growth\_rate",0.1) \\
\item \texttt{StopDivide()}: définit le taux de croissance de la bactérie comme
nul, l'empêchant ainsi de se diviser;
% & set("ecoli\_growth\_rate",0) \\
\item \texttt{Accumulate(p,q)}: incrémente le compteur de morphogènes |p| avec
la valeur |q|;
% & p := p + q \\
\item \texttt{Deplete(p,q)}: décrémente le compteur de morphogènes |p| avec la
valeur |q|.
% & p := p - q \\
\end{itemize}
\paragraph{Déclaration des transitions}
% The transition block is a matrix that encapsulates the differentiation graph
% of the genome. The size of the matrix is dependent on the number of types.
% When a link exists between two types, a label is set in the corresponding
% element the matrix, if not, the keyword \texttt{NA} is specified. The
% following SBGPcode shows how is the differentiation graph of the 2-layered
% homeostatic core:
Le bloc transition est une matrice encodant le graphe de différentiation du
génome. La taille de la matrice dépend du nombre de types. Lorsque qu'une
transition existe entre deux types, une étiquette est définie dans la case de la
@ -935,61 +847,30 @@ instructions \sbgp{} suivantes:
opérations classiques de la logique booléenne;
\item \texttt{EqThreshold(s,q)}: ce prédicat n'est vérifié que si la
concentration du morphogène |s| est égale à |q|;
% & get\_signal(s) $=$ q \\
\item \texttt{LessThreshold(s,q)}: ce prédicat n'est vérifié que si la
concentration du morphogène |s| est inférieure à |q|;
% & get\_signal(s) $<$ q \\
\item \texttt{GreaterThreshold(s,q)}: ce prédicat n'est vérifié que si la
concentration du morphogène |s| est supérieure à |q|;
% & get\_signal(s) $>$ q \\
\item \texttt{LessEqThreshold(s,q)}: ce prédicat n'est vérifié que si la
concentration du morphogène |s| est inférieure ou égale à |q|;
% & get\_signal(s) $>=$ q \\
\item \texttt{GreaterEqThreshold(s,q)}: ce prédicat n'est vérifié que si la
concentration du morphogène |s| est supérieure ou égale à |q|;
% & get\_signal(s) $<=$ q \\
\item \texttt{BetweenThreshold(s,q1,q2)}: ce prédicat n'est vérifié que si la
concentration du morphogène |s| est comprise strictement entre |q1| et
|q2|;
\item \texttt{InternalProtEqCond(p,q)}: ce prédicat n'est vérifié que si le
compteur de morphogènes |p| est égal à la valeur |q|;
% & p $=$ q \\
\item \texttt{InternalProtLessCond(p,q)}: ce prédicat n'est vérifié que si le
compteur de morphogènes |p| est inférieur strictement à la valeur |q|;
% & p $<$ q \\
\item \texttt{InternalProtGreatCond(p,q)}: ce prédicat n'est vérifié que si le
compteur de morphogènes |p| est supérieur strictement à la valeur |q|;
% & p $>$ q \\
\item \texttt{InternalProtLessEqCond(p,q)}: ce prédicat n'est vérifié que si le
compteur de morphogènes |p| est inférieur ou égal à la valeur |q|;
% & p $<=$ q \\
\item \texttt{InternalProtGreatEqCond(p,q)}: ce prédicat n'est vérifié que si le
compteur de morphogènes |p| est supérieur ou égal à la valeur |q|;
% & p $>=$ q \\
\item \texttt{MidPlane(a,b,t)}: ce prédicat n'est vérifié que si la valeur de la
concentration du morphogène |a| moins la concentration du morphogène |b|
est comprise entre |-t| et |t|.
% & (get\_signal(a) $-$ get\_signal(b)) $>$ $-$t \\
% & \& (get\_signal(a) $-$ get\_signal(b)) $<$ t\\
%\item \texttt{OscillHigh(a,b,t)}
% % & cos(a $*$ mem.time) $>$ t \\
%\item \texttt{OscillLow(a,b,t)}
% % & cos(a $*$ mem.time) $<$ t \\
% & get\_signal(s) $>$ q1 \& get\_signal(s) $<$ q2 \\
%\item \texttt{EqThresholdRefracted(s,q)}
% % & get\_signal(s) $=$ q \& mem.tn > tr\\
%\item \texttt{LessThresholdRefracted(s,q,tr)}
% % & get\_signal(s) $<$ q \& mem.tn > tr\\
%\item \texttt{GreaterThresholdRefracted(s,q,tr)}
% % & get\_signal(s) $>$ q \& mem.tn > tr\\
%\item \texttt{LessEqThresholdRefracted(s,q,tr)}
% % & get\_signal(s) $>=$ q \& mem.tn > tr\\
%\item \texttt{GreaterEqThresholdRefracted(s,q,tr)}
% % & get\_signal(s) $<=$ q \& mem.tn > tr\\
%\item \texttt{BetweenThresholdRefracted(s,q1,q2,tr)}
% % & get\_signal(s) $>$ q1 \& get\_signal(s) $<$ q2 \& mem.tn > tr\\
%\item \texttt{Rate(p)}
% % & rate(p) \\
\end{itemize}
@ -1014,11 +895,6 @@ Conway\footnote{lors de sa publication dans les pages du Scientific American en
automates cellulaires sont un outil des paradigmes de programmation non
conventionnels, d'un côté permettant de formaliser les processus biologiques
observés, et de l'autre de les modéliser et de les simuler.
% Ce n'est néammoins qu'à partir des années 1980 et avec le physicien Stephen
% Wolfram que la recherche scientifique dans ce domaine s'est vraiment étendue.
% Son travail de classification des automates cellulaires a abouti à la
% publication en 2002 d'un livre intitulé «A New Kind of Science» désormais
% considéré comme une référence du domaine.
\begin{mpo-definition}[Configuration]
Soit $\oQ$ un ensemble d'états, $G$ un groupe, $c_\oQ : G \rightarrow \oQ$ est
@ -1102,23 +978,6 @@ d'automates cellulaires réversibles. Toffoli et Margolus montrent également qu
la classe des automates à partitions est équivalente à celles des automates
cellulaires, et que ces deux modèles peuvent se simuler l'un l'autre.
%\begin{mpo-definition}[Division entière] $\text{div}_k$ est la division entière
% par $k$, une fonction retournant la partie entière de la division euclidienne
% par $k$. Pour $k \in \mathbb{N}_+$ et $x \in \mathbb{R}$ :
% \[
% \text{div}_k(x) = \left\lfloor \frac{x}{k} \right\rfloor
% \]
% avec la fonction partie entière $\lfloor x \rfloor = \text{max} \{ m \in
% \mathbb{Z} \,|\, m \leq x \}$.
%\end{mpo-definition}
%\begin{mpo-definition}[Rang] Le rang d'un groupe $G$, noté $\text{rank}(G)$
% donne la plus petite cardinalité d'un ensemble de générateurs de $G$ :
% \[
% \text{rank}(G) = min \{ |X| : X \subseteq G, \langle X \rangle = G \}.
% \]
%\end{mpo-definition}
\begin{mpo-definition}[Automate cellulaire à blocs] Un automate cellulaire à
blocs, aussi appelé automate à partitions, est un tuple
$B=(M,\oQ,p,\text{\em shift},f)$ avec:
@ -1142,9 +1001,6 @@ cellulaires, et que ces deux modèles peuvent se simuler l'un l'autre.
\end{itemize}
La fonction de transition locale $f$ induit une fonction de transition
globale, dont la définition est décrite par l'algorithme
%\[
% F(c)(m) = \left[ f (c (T^s \beta(m))) \right]_m
%\]
\begin{algorithm}
\ForAll {$s \in \text{shift}$}
{ \ForAll {$m \in M$} {
@ -1191,8 +1047,6 @@ sous division de l'espace: à chaque cellule du maillage on fait correspondre un
cellule du même maillage, ce qui expose immédiatement la structure et la
régularité du pavage.
% def générale
Le voisinage de Margolus est la règle de partitionnement du maillage d'un
automate à blocs en une grille composée de blocs de $2$ cellules (ou en carrés
de $2\times 2$ cellules en deux dimensions, en cubes de $2\times 2\times 2$
@ -1209,7 +1063,6 @@ automates à blocs):
\] et
\item shift est l'élément $\sum\limits_{i=1}^{n}{1\ g_i} \in M$.
\end{itemize}
%restrictions
\begin{figure}[ht]
\centering
@ -1273,73 +1126,6 @@ extrémité de chaque indicateur, ce qui nous fournit le quadruplet $(\text{posN
\text{posS}, \text{posE}, \text{posW})$ de positions de coupe au nord, au sud à
l'est et à l'ouest respectivement.
%#trivial?
%\begin{algorithm}[h]
% \SetKwInOut{Input}{input}\SetKwInOut{Output}{output}
% \SetKwData{PosN}{posN}
% \SetKwData{PosS}{posS}
% \SetKwData{PosE}{posE}
% \SetKwData{PosW}{posW}
%
% \Input{Une bounding box de dimension $w \times h$ et deux indicateurs $c_w,c_h$}
% \Output{Un quadruplet de positions de découpe}
% $\PosN \gets \infty$,
% $\PosS \gets \infty$,
% $\PosE \gets \infty$,
% $\PosW \gets \infty$\;
%
% $i \gets 0$ \tcp*{Coupe ouest}
% \While{$i < w$}{
% \If{$c_h[i] = 1$}{
% $\PosW \gets i$\;
% break\;
% }
% $i \gets i + 1$\;
% }
% \tcp{...}
%\end{algorithm}
%\begin{algorithm}[h]
% \setcounter{AlgoLine}{12}
% \SetKwData{PosN}{posN}
% \SetKwData{PosS}{posS}
% \SetKwData{PosE}{posE}
% \SetKwData{PosW}{posW}
%
% \tcp{...}
%
% $i \gets w - 1$ \tcp*{Coupe est}
% \While{$i \ge 0$} {
% \If{$c_h[i] = 1$}{
% $\PosE \gets i$\;
% break\;
% }
% $i \gets i - 1$\;
% }
%
% $j \gets 0$ \tcp*{Coupe sud}
% \While{$j < h$}{
% \If{$c_w[j] = 1$}{
% $\PosS \gets j$\;
% break\;
% }
% $j \gets j + 1$\;
% }
%
% $j \gets h - 1$ \tcp*{Coupe nord}
% \While{$j \ge 0$}{
% \If{$c_w[j] = 1$}{
% $\PosN \gets j$\;
% break\;
% }
% $j \gets j - 1$\;
% }
%
% \Return (\PosN,\PosS,\PosE,\PosW)
% \caption{Détermination des indicateurs de coupe}
%\end{algorithm}
%L'instruction \textbf{break} sert à terminer la boucle courante immédiatement
%indiquant que la recherche termine au plus tôt.
La seconde partie de cet algorithme détermine la nouvelle dimension de la
bounding box, en prenant en compte les deux marges notée $d_c$ et $d_f$ et en
fonction des positions de coupe déterminées auparavant. La fonction
@ -1554,18 +1340,6 @@ existe différentes méthodes pour approcher par des méthodes discrètes la
solution de l'équation~\ref{eq:reaction-diffusion-2D}. L'implémentation actuelle
du simulateur utilise la méthode d'Euler, la méthode d'intégration numérique la
plus simple:
%\begin{align*}
% \displaystyle
% \varphi^{t + \Delta t}_{1,i,j} &= \Delta t\,\text{X}_1(\varphi^t_{1,i,j}, \varphi^t_{2,i,j})
% + \frac{\text{D}_1\Delta t}{(\Delta x)^2}
% (\varphi^t_{1,i-1,j} + \varphi^t_{1,i+1,j} + \varphi^t_{1,i,j-1} + \varphi^t_{1,i,j+1}
% - 4\varphi^t_{1,i,j})\\
% \displaystyle
% \varphi^{t + \Delta t}_{2,i,j} &= \Delta t\,\text{X}_2(\varphi^t_{1,i,j}, \varphi^t_{2,i,j})
% + \frac{\text{D}_2\Delta t}{(\Delta x)^2}
% (\varphi^t_{2,i-1,j} + \varphi^t_{2,i+1,j} + \varphi^t_{2,i,j-1} + \varphi^t_{2,i,j+1}
% - 4\varphi^t_{2,i,j})
%\end{align*}
\begin{align}\label{eq:num-int}
\displaystyle
\varphi^{t + \Delta t}_{k,i,j} &= \Delta t\,\text{X}_1(\varphi^t_{1,i,j}, \ldots, \varphi^t_{k,i,j})
@ -1585,11 +1359,6 @@ menés. En choisissant un $\Delta t$ suffisamment petit, en l'occurrence $\Delta
t = \num{0.01}$, nous avons pu reproduire des réactions chimiques classiques,
dont une réaction BZ (voir section~\ref{sec:bz}).
% However, cellular automata models cannot be calibrated and validated from real
% parameters (kinetic reaction rates and diffusion coefficients), as the
% physical and chemical mechanisms that characterize the observed phenomena are
% generally continuous models —
% https://taf.menf.in/_media/bibliographie/reaction-diffusion-calibration.pdf
\paragraph{Fonction de transition}
\newcommand{\RTable}{\ensuremath{\mathit{RTable}}}
@ -1663,14 +1432,6 @@ Fig.~\ref{fig:ecoli} droite). Son orientation est représentée de manière
équivalente, soit par un angle $t$, soit par un vecteur directeur $d =
(d_x,d_y)$ en prenant $d_x = \mathit{cos}(t)$ et $d_y = \mathit{sin}(t)$. La
longueur totale d'une bactérie est notée $L$ et sa surface $S$.
%\[
% L = 2 \times (r + l)
%\]
%et sa surface est obtenue comme suit
%\begin{align*}
% S &= 2 r \times 2 l + \pi r^2\\
% &= 4 r l + \pi r^2
%\end{align*}
Nous ajoutons deux points $f=(f_x,f_y)$ et $b=(b_x,b_y)$ représentant respectivement l'avant et
l'arrière de la bactérie
\begin{align*}
@ -1878,8 +1639,6 @@ par le moment d'inertie de chacune des bactéries
\orr{\omega}'_{2} = \orr{\omega}_{ac2} - (\orr{r}_2 \wedge j \orr{n}) / I_2
\end{equation*}
%http://www.myphysicslab.com/collision.html#resting_contact
\noindent
Après résolution des équations précédentes pour $j$, on obtient
\begin{equation*}
@ -1943,12 +1702,6 @@ L'espace ainsi segmenté en cellules est une \emph{configuration}. Afin que notr
automate cellulaire soit complet, il nous reste à spécifier la fonction de
transition locale à utiliser pour mettre à jour cette configuration.
% $n\Slot[0][0] \gets \Evol($\\
% $0011,$\tcp*[f]{Cellule courante $A$}\\
% $0000,0001,0100,0110,$\\
% $1100,1001,1000,0010)$
% \;
\begin{algorithm}
\SetKwData{Evol}{evol}
\SetKwData{GCol}{getCollisions}
@ -2072,7 +1825,6 @@ précédées de \ç|init| sont issues de l'initialisation de la simulation.
\Fn{\Evol(c: cell, H: configuration, E: configuration): cell}{
\For{$i$ \KwFrom $0$ \KwTo $\NBPC - 1$}{
%(c[i].px - $H_0$.x)/$\Delta$ x + (c[i].py - $H_0$.y)/$\Delta$ x *
\tcp{Indice de la cellule de $H$ correspondant à la bactérie courante}
$j \gets projection(H,(c[i].px,c[i].py))$\;
@ -2107,16 +1859,6 @@ simulation s'effectue de la façon suivante:
\end{enumerate}
%Diffusion multi-échelle sur automate~\cite{hoekstra_complex_2010}
%\subsection{Validation qualitative}
%Nous présentons dans cette section quelques validations qualitatives effectuées
%avec la version courante du simulateur. Pour chacune des simulations nous
%donnons son fichier de configuration \sbgp{} ainsi que des rendus graphique à
%différents moments de la simulation.l
\FloatBarrier
\section{Mise en œuvre}\label{sec:mise-en-oeuvre}
Dans cette section nous présentons trois exemples de simulation avec \otb. Pour
@ -2182,9 +1924,7 @@ conformément aux réactions BZ effectuées en boîte de Petri.
vert et le bleu au cours du temps}
\label{fig:reaction-BZ}
\end{figure}
%DONE: (WONTFIX) rapport temps réel/temps simulé
% Physique sectorisation!
\subsection{Sectorisation d'une population de \ecoli{}}
Pour la validation du moteur physique, nous avons reproduit une expérience de la
littérature~\cite{hallatschek_genetic_2007}. Dans cet article, les auteurs
@ -2405,20 +2145,12 @@ De nos travaux sur \otb nous tirons deux résultats:
et pourrait donc aisément être adapté à d'autres types de population.
\end{itemize}
% Retour critique
\subsection{Perspectives}
Nos travaux futurs s'articulent autour des grands axes suivants, dont
l'objectif principal est la pérennisation d'\otb comme outil de simulation:
\begin{description}
% Effectuer des test de précision pour valider l'écart par rapport à une
% expérience in vivo.
% Implémenter plus de modèles (reprendre les exemples de jonathan)
% Collaborer avec des équipes de chercheurs dans les sciences du vivant
% s'intéressant à la morphogénèse.
\item[Calibration]
Nous projetons de comparer les résultats de simulation avec des résultats
d'expériences \emph{in vivo} connus afin d'étalonner au mieux les moteurs
@ -2430,8 +2162,6 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
à la morphogénèse ou plus largement aux dynamiques d'une population de
bactéries.
% Effectuer des test de performance pour valider l'efficacité de l'algorithme
% par rapport à GRO
\item[Performance]
La performance actuelle du simulateur \otb provient principalement d'une
planification en amont de sa conception. Il est encore possible d'améliorer
@ -2444,7 +2174,6 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
\otb par rapport à d'autres simulateurs de population de bactéries comme
\gro~\cite{jang_specification_2012}.
% Retravailler le GUI
\item[Interface de sortie]
L'interface utilisateur de \otb est à ce jour rudimentaire. Pour qu'un plus
grand nombre d'utilisateurs puissent utiliser le simulateur au quotidien
@ -2456,7 +2185,7 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
des mesures quantitatives agrégées sous forme de graphes en fonction du
temps de la simulation comme, par exemple, l'orientation moyenne des
bactéries, leur nombre, leur taille moyenne, leur volume moyen, etc.
% Refaire l'interface d'entrée
\item[Interface d'entrée]
La description d'une simulation par un fichier \sbgp{} peut encore être
améliorée. Il est d'abord nécessaire d'optimiser le contenu de ce fichier
@ -2467,10 +2196,6 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
interface graphique regroupant les interfaces d'entrée et de sortie pour un
usage plus intuitif.
% Étendre les types de bactéries supportées, déjà d'autres types du genre
% bacillus (en testant diplobacilli, streptobacilli, …) voir d'autres formes
% (Cocci)
% https://upload.wikimedia.org/wikipedia/commons/6/69/Bacterial_morphology_diagram.svg
\item[Formes de bactérie]
De part sa conception, \otb est modulaire et extensible. Une piste
de travail futur est l'exploration de la simulation d'autre formes de
@ -2481,7 +2206,6 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
pour les bactéries bacillaires. Ces développements se feront également en
lien avec le point «Calibration» en fonction des besoins.
% Passer à l'hexagonal
\item[Grille hexagonale]
Une propriété des grilles hexagonales est que toutes les cellules ont un
bord en commun et leur centres sont équidistants (ce qui n'est pas le cas
@ -2491,7 +2215,6 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
de la méthode d'intégration actuelle du moteur chimique et du calcul de
collision du moteur physique.
% Collection topologique OTB
\item[\mgs]
Dans le point «Interface d'entrée» nous avons indiqué qu'il était
envisageable qu'un programme externe serve d'interface de contrôle pour
@ -2504,209 +2227,3 @@ l'objectif principal est la pérennisation d'\otb comme outil de simulation:
\end{description}
%TODO: maybe? Citer Dugovson
% Fakesection \section{Simulation physique}
%%Première partie physique moteur de collision etc
%L'efficacité de \tb\ repose sur sa simulation en parallèle sur plusieurs
%cœurs de calcul. Deux niveaux de description sont identifiables : le niveau
%dynamique dans lequel les bactéries se déplacent, entrent en collision,
%se repoussent et tournent sur elles-même ; le niveau chimique duquel les
%bactéries consomment des morphogènes, dans lequel elles déposent des
%morphogènes et dans lequel les morphogènes se diffusent et réagissent.
%Afin que la simulation soit la plus efficace possible, des techniques de
%programmation sur GPU ont été employées et un algorithme sur mesure de calcul
%parallèle a été développé.
%
%
%
%
%
%
%
%
%
%%Comment calculer en parallèle une simulation physique ?
%\subsection{Automates réversibles et voisinage de Margolus}
%Notre algorithme a été développé à partir des constats suivants : pour
%simuler l'évolution d'objets soumis à des lois physiques (collisions,
%forces) il nous faut un modèle de calcul proche de la physique et dans le
%même temps, pour que la simulation soit rapide, il nous faut un modèle de
%calcul parallélisable, c'est à dire qui partitionne l'espace de calcul en
%«briques» indépendante en terme de données pour être envoyée sur un
%périphérique de calcul comprenant du nombreuses unités de calcul (GPU, CPU
%multi-cœur, …).
%
%Le modèle de calcul des automates cellulaires (\ac), en plus du fait d'être
%naturellement parallèle, semble particulièrement bien adapté à la
%simulation physique. Les concepts de temps et d'espace y sont naturellement
%présents et les \ac\ respectent quelques propriétés attendues des lois
%physiques comme l'\emph{uniformité} et la \emph{localité}. La plupart
%des lois physiques sont \emph{réversibles}, cependant, en général un
%\ca\ ne l'est pas ; ce sujet a été largement abordé dans la litérature
%\cite{margolus_physics-like_1984,truc,bidule}.
%%Voisinage de margolus
%Margolus établit à partir d'un voisinage particulier les conditions sur les
%fonctions de transition dans lequel les automates cellulaires sont réversibles,
%appelé voisinage de Margolus (voir figure \ref{fig:margolus-neighborgood}).
%Au delà de la motivation principale de l'auteur, le voisinage de Margolus
%présente la particularité de pouvoir être utilisé pour simuler n'importe
%quel automate sans avoir recours à une technique de double-buffering.
%
%\begin{figure}[t]
% \centering
% \includegraphics[page=1,width=.4\textwidth]{figures/ca-neighborhood}\hspace{1cm}
% \includegraphics[page=2,width=.4\textwidth]{figures/ca-neighborhood}
% \caption{Voisinage classique (à gauche) et voisinage de Margolus (à droite)
% d'un automate cellulaire 1D. Chaque ligne correspond à un pas dans la
% simulation de l'automate, de haut en bas.}
% \label{fig:margolus-neighborgood}
%\end{figure}
%
%\subsection{Voisinage de Moore et moteur physique}
%\begin{figure}[t]
% \centering
% \includegraphics[page=2,width=.4\textwidth]{figures/margolus}\hspace{1cm}%
% \includegraphics[page=3,width=.4\textwidth]{figures/margolus}
% \caption{Voisinage de Margolus (au centre, en noir) d'un automate cellulaire
% en deux dimensions dont les cellules sont en gris. Division de l'état des
% cellules en quatre sous-partie (à droite), dont trois contiennent une copie
% du contenu des cellules voisines. La sous-partie principale est en blanc sur
% fond noir et contient l'état de la cellule. Les états de quatre cellules
% sont donnés}
% \label{fig:margolus-grid}
%\end{figure}
%
%Cet algorithme fonctionne de la manière suivante : à chaque pas, la grille
%de l'automate est découpée en blocs de $2 \times 2$ cellules qui sont
%ensuite calculés indépendamment les uns des autres, voir les figures
%\ref{fig:margolus-grid} ; au pas suivant, un nouveau découpage de blocs de $2
%\times 2$ cellules, décalé de $(1,1)$ par rapport au découpage précédent,
%est effectué et l'opération recommence. Cette manière de découper une grille
%d'automate est introduite par Margolus dans \cite{margolus_physics-like_1984} et
%\cite{toffoli_cellular_1987}, où il présente un automate découpé en blocs
%obéissant à la loi de conservation locale où chaque transition conserve les
%proportions d'états, ce voisinage est communément connu comme « voisinage de
%Margolus ».
%
%Les automates cellulaires sont un modèle de calcul intrinsèquement parallèle,
%néammoins, mettre à jour une cellule requiert d'aller lire les cellules
%voisines, ce qui cause en pratique des collision de lecture, des lectures
%multiples et oblige finalement à accompagner chaque cellule de son voisinage
%pour le calcul. Afin de pouvoir rendre autonome le calcul de chaque bloc
%dans un voisinage de Margolus, les valeurs des douze cellules voisines sont
%copiées (voir figure \ref{fig:margolus-grid}) au sein de chaque état de
%chaque cellule d'un bloc de Margolus. Une technique similaire est employée par
%\cite{morita_computation_1989} ; cependant, leur but n'est pas tant d'améliorer
%la localité des données, mais de montrer l'universalité d'un automate
%cellulaire unidimensionnel réversible en réponse à une conjecture de Toffoli.
%
%\begin{figure}[t]
% \centering
% \centerline{%
% \includegraphics[page=4,width=.4\linewidth]{figures/margolus}
% \includegraphics[page=5,width=.4\linewidth]{figures/margolus}
% \includegraphics[page=6,width=.4\linewidth]{figures/margolus}}
% \caption{Détail des tâches effectuées avant un décalage de grille}
% \label{fig:margolus-inter}
%\end{figure}
%
%Le reste de la procédure est, à notre connaissance, complètement originale.
%Avant le décalage de la grille suivant, les états des cellules sont mis à
%jour avec les « bonnes » valeurs pour pouvoir poursuivre le calcul. Pour
%commencer, la sous-partie principale des quatre cellules du bloc est mis à jour
%indépendamment des autres blocs grâce à la recopie précédente des états
%des voisins (figure \ref{fig:margolus-inter} gauche). Ensuite, chaque cadran
%est rempli de la manière suivante : l'état à jour de la cellule est recopié
%dans le coin extérieur qui et les trois autres reçoivent une copie des états
%des nouvelles voisines (figure \ref{fig:margolus-inter} centre). Après cette
%mise à jour, on constate que les quatre nouveaux blocs sont identiques (figure
%\ref{fig:margolus-inter} droite), à ceci près que la sous-partie principale de
%la cellule est différente suivant la cellule ; il suffit donc de calculer les
%mises à jour de chaque cellule puis de recopier quatre fois la même cellule
%pour obtenir le bloc mis à jour.
%
%\subsection{Voisinage de Von Neuman et moteur de réaction-diffusion}
%
%
%% Publication de OTB, test de charge, cahier des charges…
%%
%% Modélisation discrète, continue.
%%
%% Le modèle est continu, implémentation discrète
%%
%% Partie associée : modélisation MGS qui montre comment les deux modèles
%% communiquent.
%%
%% Montrer qu'on est coincé car le couplage est important : problématique de
%% multi-modèle.
%%
%% Valoriser les algos développés
%%
%% Montrer
%%
%% Corps
%%
%% Margolus, bench (on y gagne)
%%
%% Rapport avec techniques d'optimisation noir/rouge
%%
%% Approche particulière par rapport au multi-agent : On aurait tendance à faire
%% un tableau de bactérie qui se met à jour (problème de voisinage, problème de
%% création de bact). Optim, oc-tree, AABB, etc. mais pas facile sur GPU. Du
%% coup on utilise des collections à la margolus.
%%
%% 50% d'encadrement Romain dans lequel a été développé l'algo de collision.
%%
%%
%\section{Organisation logicielle du simulateur}
%% Organisation logicielle : valoriser l'architecture, interfacement MGS, collection TB
%Présentation des différentes briques logicielles de TB. On utilise \ocaml
%car langage haut niveau, bien typé et facilement interfaçable en C.
%
%Interfaces bas niveau vers OpenCL et OpenGL
%
%Schéma de l'architecture haut niveau, liens entre les modules
%%
%\section{Collection topologique et OTB}
%% Collection TB, présentation formelle des deux collections et comment on les
%% fait marcher ensemble.
%%
%% Reprendre le rapport de stage de GRO et faire pareil dans un chapitre.
%%
%% Lien avec symbiotique
%%
%% Lien avec multi-niveau
%%
%% Conclusion et perspectives
%%
%% Passer à l'hexagonal
%

View file

@ -42,109 +42,45 @@ modèle chimique, qui décrit la réaction et la diffusion des morphogènes, et
modèle de prise de décision, qui décrit l'interaction entre les bactéries et
leur support.
}
% Abstraction
% Activité spatiale
% Automate cellulaire
% Collection topologique
% Complexe
% Comportement
% Composition
% E. Coli
% Formalisme
% MGS
% Modèle
% Modéliser
% Multi-niveau
% PPM
% Parallèle
% Point de vue
% Programmation spatiale
% Relation
% Simulation
% Système
% Transformation
% Validation
%
\begin{center}
\huge\textsc{Abstract}
\end{center}
\begin{english}
\small
%La description et la compréhension d'un système passe souvent par la
%construction d'un modèle mathématique.
We often build mathematical models to describe and understand what a system
does.
%Ce dernier constitue un point de vue
%particulier sur le système (structurel, dynamique, etc.).
Each model gives a specific point of view on the system (structure, dynamics,
etc.).
%Constituer des modèles plus complets, c'est-à-dire multi-point-de-vue atteint
%rapidement les limites des formalismes qui les supportent.
Building more comprehensive models that encompass many different points of view
is limited by the formalism they are written in.
%Une solution alternative passe par le couplage de plusieurs modèles «simples».
Coupling “simple” models to form a bigger one is an alternative.
%Dans le cas où chaque modèle correspond à un niveau de description du système,
%comme le niveau de la molécule, le niveau de la cellule, le niveau de l'organe,
%pour un système biologique, nous parlerons de modélisation multi-niveau.
If each model corresponds to a level of description of the system, e.g., the
molecular level, the cellular level, the organ level in biology, then we call
this technique multi-level modelling.
%Ces niveaux sont organisés et interagissent.
Levels of description are organized and interact with each other.
%Nous pensons que la modélisation multi-niveau ouvre une voie satisfaisante pour
%l'étude des systèmes complexes, traditionnellement durs à modéliser.
We think that multi-level modelling is a promising technique to model complex
systems, which are known to be difficult to model.
%%
%Nous explorons trois voies pour la compréhension du fonctionnement de ces
%modèles en nous restreignant à la question de la relation entre global et
%local, c'est à dire entre l'individu et la population.
%To investigate the link between local and global properties, for instance
%an entity and its population, which is a case of classical complex systems'
%problems, we have opened three distinct research tracks.
We have opened three distinct research tracks to investigate the link between
local and global properties, for instance between those of an entity and its
population — a classical opposition in complex systems.
%La première voie est formelle et passe par la définition mathématique de
%«modèle» indépendamment du formalisme qui le supporte, par la présentation
%des différents types de modèles que l'on peut construire et par la définition
%explicite des relations qu'ils entretiennent.
On the first track, we give precise definitions of a model — independently
of its underlying formalism, of a system and of some of the relations models
have (validation, abstraction, composition).
%We also introduce different kinds of models and how they relate to their
%classical definition (dynamic models, spatial models, and so on).
We also introduce different classes of models and show how they relate to some
classical definitions (dynamic models, spatial models, etc.)
%%
%La seconde voie est portée par l'activité, définie dans le cadre de \mgs, un
%langage de programmation spatiale, dont le modèle de calcul est fondé sur la
%réécriture topologique des collections topologiques au moyen de transformations.
On the second track, we look at \mgs, a spatial programming language based on
the rewriting of topological collections by means of transformation functions.
%Nous fournissons une méthode constructive pour l'obtention d'une description
%de plus haut niveau (une abstraction) des systèmes étudiés en déterminant
%automatiquement quelle est la sous-collection active sans la nécessité de faire
%référence à la sous-collection quiescente.
We present a constructive method giving us access to a higher level of
description of the system (an abstraction). This method automatically computes
the active sub-collection of a model, without any knowledge about the quiescent
sub-collection, and follows it for each time step.
%%
%La dernière voie est pratique, elle passe par programmation de \otb, un outil
%de simulation parallèle pour l'étude de la morphogénèse dans une population
%de bactéries \ecoli, pour lequel nous avons conçu un algorithme générique de
%calcul parallèle, adapté aux cartes graphiques grand public.
Finally, on the third track, we present \otb, a parallel simulator for the
study of morphogenesis in a population of \ecoli bacteria. We provide a generic
algorithm for the parallel simulation of two-dimensional cellular automata
on general-purpose graphics cards.
%Le modèle embarqué dans \otb est correspond au couplage de trois modèles
%correspondant chacun à un niveau de description du système: le modèle physique,
%qui décrit la dynamique des collisions entre bactéries, le modèle chimique, qui
%décrit la réaction et la diffusion des morphogènes, et le modèle de prise de
%décision, qui décrit l'interaction entre les bactéries et leur support.
\otb itself is built around a multi-level model for the population of bacteria.
This model is the result of the coupling of three “simple” (base) models: a
physical model, describing how bacteria collide, a chemical model, describing