# Stage: implémentation en Julia d'un simulateur de réseaux booléens
<!--
###### tags: `position`, `BNeDiction`, `internship`
-->
**Encadrant**: Loïc Paulevé - https://loicpauleve.name - [loic.pauleve@labri.fr](mailto:loic.pauleve@labri.fr)
**Lieu**: LaBRI, Université de Bordeaux
**Mots clés**: programmation, logique, simulation
**Résumé**: Un réseau booléen est constitué d'un ensemble de variables binaires, et associe à chacune d'elle une règle logique pour calculer sa valeur en fonction des autres variables. Par exemple, le réseau
$$\begin{align*}
f_a(a,b) &= ! a \,\&\, ! b\\
f_b(a,b) &= a \,|\,b
\end{align*}$$
définit deux variables, $a$ et $b$. Si l'on considère la configuration où $a=0$ et $b=0$, la règle pour $a$ indique qu'il peut passer à $1$, alors que la règle pour $b$ indique qu'il reste à $0$. Ainsi, la configuration (unique) suivante est $a=1,b=0$. Maintenant, d'après $f$, $a$ peut passer à $0$ et $b$ à $1$. Plusieurs possibilités sont alors à considérer: soit les deux variables changent de valeur simultanément (menant à $a=0,b=1$), soit une variable va changer avant l'autre: si $a$ est mis à jour en premier, alors on revient à la configuration $a=0,b=0$ , si $b$ est mis à jour en premier, on arrive à la configuration $a=1,b=1$.
La simulation d'un réseau booléen revient à faire un choix (guidé par une distribution de probabilité) pour décider de variables à mettre à jour. Plusieurs simulations du même réseau depuis la même configuration initiale donneront potentiellement des comportements très différents.
Très récemment, nous avons mis au point de nouveaux algorithmes pour la simulation des réseaux booléens apportant des garanties formelles pour le raisonnement abstrait sur des systèmes quantitatifs. Ces algorithmes reposent sur des manipulations des règles logiques, de construction d'espaces booléens, et de tirages aléatoires selon différentes distributions de probabilité.
L'objectif de ce stage est d'implémenter de manière efficace ces algorithmes avec le langage Julia et d'évaluer la performance du simulateur selon différents paramétrages et heuristiques à définir.
**À lire:** https://interstices.info/predire-le-comportement-des-cellules-avec-la-modelisation-booleenne/