Un réseau de Petri est un graphe orienté composé de Places et de Transitions. Chaque place est
reliée à des transitions et chaque transition est reliée à des places. Une place peut contenir des
jetons. Ils sont consommés et/ou produits lors de l’activation des transitions. Une transition est
dite sensibilisée si chaque place qui la précède immédiatement dans le réseau possède un jeton.
Elle peut alors être déclenchée. Une transition peut être attachée au plus à un senseur et un
effecteur. Elle peut être déclenchée lorsqu’elle est sensibilisée et que la condition de son senseur
est validée. Puisque nous utilisons des réseaux de Petri saufs, chaque place du réseau n’accueille
au plus qu’un jeton. La raison de l’utilisation des réseaux saufs est détaillée dans la Section2.3.
Ceci n’a pas un impact fort sur notre utilisation, car nous ne modélisons qu’un seul processus
: l’évolution des scénarios possibles. La Figure3.6 donne un exemple de réseau de Petri utilisé
comme séquence dans la spécification des scénarios écrite dans le langage #SEVEN (formalisme
graphique). L’Algorithme 3donne son équivalent en formalisme XML.
Figure 3.6 –Équivalent graphique du XML de Algorithm3
Le marquage d’un réseau (nombre de jetons par places) définit son état courant. Les
places peuvent être définies comme “Initiales” ou “Finales”. Les places “initiales” (places 1
et 15, marquées par un I dans la Figure 3.8) possèdent un jeton à l’initialisation du réseau. Les
places “finales” (places 21 et 23, marquées par un F dans la Figure3.8) permettent de décrire
l’ensemble des marquages finaux du réseau. Un marquage du réseau est dit final si au moins
toutes les places indiquées comme finales possèdent un jeton. Un réseau dont le marquage est
final est considéré dans un état final.
La structure du réseau de Petri permet d’exprimer la séquentialité, le parallélisme et la
concurrence [Murata,1989] (c.f. AnnexeA). La structure du réseau est chargée à l’initialisation
du moteur. La Figure 3.7présente des exemples de structures de base qui peuvent être utilisées
pour exprimer des ensembles de scénarios complexes. Les réseaux 1, 2, 3 et 4 sont à la base
d’un réseau #SEVEN. La transition du réseau 1 ne possède ni senseur ni effecteur. Elle est
Algorithm 3 Exemple de spécification de scénarios #SEVEN en XML. La séquence est de la
classe des Réseaux de Petri Saufs.
<?xml version ="1.0" encoding ="UTF -8" standalone =" yes"?>
<scenario xmlns ="http :// www.insa - rennes .fr/# SEVEN ">
<contextInit classname =" ContextMapInit ,␣ SEVEN .Extra ">
<param name=" testValue " value ="12"/>
</ contextInit >
<event id=" Event_2 ">
<sensorCheck classname =" NumberSensor ,␣ SEVEN .Extra ">
<param name=" Operator1 " value ="$( ExternalContext . element .j)"/>
<param name=" Operator " value =" LESS_THAN "/>
<param name=" Operand2 " value ="4"/>
</ sensorCheck >
</ event >
<event id=" Event_1 ">
<sensorCheck classname =" NumberSensor ,␣ SEVEN .Extra ">
<param name=" Operand1 " value ="$( ExternalContext . element .i)"/>
<param name=" Operator " value =" EQUALS "/>
<param name=" Operand2 " value ="$( ScenarioContext . testValue )"/>
</ sensorCheck >
<sensorLabel >i= testValue </ sensorLabel >
<effectorUpdate classname =" NumberEffector ,␣ SEVEN . Extra ">
<param name=" Operand1 " value ="$( ExternalContext . element .T)"/>
<param name=" Operator " value =" INCREASE "/>
<param name=" result " value="$( ScenarioContext .T)"/>
</ effectorUpdate >
</ event >
<sequence xmlns :xsi="http :// www.w3.org /2001/ XMLSchema - instance "
xsi:type=" SafePetriNet " id=" -1">
<place xsi:type=" Place " id=" Place_3 " label =" Place_3 "/>
<place xsi:type=" Place " id=" Place_1 " label =" Place_1 "/>
<place xsi:type=" Place " id=" Place_2 " label =" Place_2 "/>
<transition id=" Transition_4 " label =" Transition_4 ">
<event idref =" Event_1 "/>
<upstreamPlace idref =" Place_1 "/>
<downstreamPlace idref =" Place_2 "/>
</ transition >
<transition id=" Transition_5 " label =" Transition_5 ">
<event idref =" Event_2 "/>
<upstreamPlace idref =" Place_2 "/>
<downstreamPlace idref =" Place_3 "/>
</ transition >
<initialPlace idref =" Place_1 "/>
<finalPlace idref =" Place_3 "/>
</ sequence >
peut être déclenchée dès que la place à laquelle elle est liée possède un jeton et ceci n’a pas
de conséquence autre que de changer l’état du réseau. Une telle transition peut être utilisée
comme élément structurel interne du réseau (par exemple comme proposé dans le réseau 8). Le
réseau 2 présente une transition qui possède une condition A définie par un senseur, mais qui
ne déclenche pas d’actions. À l’inverse, le réseau 3 ne possède pas de condition (tout comme
le réseau 1), mais son déclenchement va également déclencher l’actionX. Le réseau 4 présente
un lien de causalité entre une condition et une action. Ici, il exprime “Si A, alors faire X” ou
A est une condition et X une action. Le réseau Le réseau 5 présente une boucle. Le senseur
associé à la transition est réinitialisé dès que la transition est activée, car sa place amont reçoit
un jeton directement. Le réseau 6 représente un “ou exclusif”. Les conditions B etC sont en
concurrence. Le principe peut être étendu à un grand nombre de conditions. Un cas particulier
existe si C vaut B, alors le réseau 2 signifie “Si B, alors ... Sinon ...”. Le réseau 7 décrit un
parallélisme. D et E peuvent être réalisés, ou pas, et dans n’importe quel ordre. Encore une
fois, ce principe peut être étendu à plus de deux conditions. Le réseau 8 décrit une conjonction.
Pour pouvoir déclencher la transitionH, les conditionsF etGdoivent toutes deux être réalisées,
quel que soit l’ordre. Ce principe peut également être étendu à plus de deux conditions.
La Figure 3.8 donne un exemple de réseau #SEVEN utilisant différents agencements
possibles. La Transition 2 sort sur deux branches parallèles qui se rejoignent à la transition
22. Les Transitions 12 et 13 sont en concurrences sur la place 11 (ou exclusif). Le réseau de
droite (Transitions 16, 17 et 18) est en parallèle du réseau de gauche, car ils sont initialisés au
même moment (places initiales 1 et 15). Ils sont donc équivalents à un unique réseau ou les
places 1 et 15 seraient en aval d’une même transition.
La mise à jourdes réseaux de Petri peut être réalisée par plusieurs algorithmes. Ils diffèrent
dans leurs choix de la prochaine transition à activer. Celui de base propose de déclencher
aléatoirement une transition. Afin de garantir le contrôle sur le comportement du moteur, nous
conseillons d’utiliser un algorithme déterministe dans le choix des transitions. Par exemple,
dans notre implémentation, nous parcourons les transitions dans leur ordre de création jusqu’à
stabilisation de l’état du réseau. Cet algorithme est complété par un système détection des
boucles (par exemple par marquage) pour ne pas rester indéfiniment dans un pas de mise à
jour du réseau. Ainsi, nous assurons la reproductibilité des exécutions lorsque les actions dans
l’environnement ont lieu dans le même ordre. Ceci n’est qu’une possibilité. Il est facile de
remplacer cet algorithme par un autre si nécessaire. Enfin, lors de la spécification des scénarios,
le développeur ne doit pas tenir compte de cet algorithme pour éviter qu’une spécification ne
soit spécialisée à une implémentation du modèle et donc difficilement réutilisable.
Puisque le moteur de scénarios est en attente de la réalisation de conditions, des situations
d’interblocage peuvent avoir lieu. Par exemple, une entité E de l’environnement attend que la
représentation des scénarios arrive à un état A. De son côté le moteur de scénarios attend que
la conditionC ait lieu dans l’environnement pour atteindreA. SiE est la seule entité à pouvoir
réaliser C alors E et le moteur de scénarios sont en interblocage. Le calcul d’accessibilité (p.
ex. [Mayr,1984], voir AnnexeA) permets de savoir s’il existe une séquence de marquages d’un
réseau permettant d’atteindre un marquage cible à partir du marquage courant. En supposant
Figure 3.7 –Exemples de structures de base pour réaliser des ensembles de scénarios complexes
que les conditions des senseurs puissent être validées, il est donc possible de savoir si, pour le
marquage courant, le réseau peut atteindre au moins un des marquages finaux du réseau et
donc de prévoir les blocages au niveau du moteur #SEVEN. Le calcul d’accessibilité permet
aux entités autonomes dans l’environnement de raisonner sur les marquages à emprunter pour
prévenir les interblocages par exemple en utilisant des méthodes d’action planning.
Dans le document
Séquencement d'actions en environnement virtuel collaboratif
(Page 72-76)