• Aucun résultat trouvé

Chapitre 3 : Recherche de scénarios dans les systèmes hybrides

3.2. Méthode d’extraction des scénarios dans un système hybride

3.2.3. Algorithme de recherche de scénarios dans un système hybride

3.2.3.2 Procédures

Tirer Transition : dans cette procédure, la liste courante est mise à jour suite au tir de la transition en question en enlevant les jetons consommés et en ajoutant les jetons produits. Les événements sont mémorisés dans E et tous les arcs correspondant à une relation de précédence entre deux événements dans A. Chaque jeton étant associé à l’événement l’ayant produit, la

73

relation de précédence correspondante est directement obtenue lorsqu’il est consommé. La procédure est identique à l’étiquetage de l’arbre de preuve.

Tirer Transition (tk) Ajouter Tk dans E,

Pour chaque jeton (ti, P) nécessaire pour franchir tk enlever (ti, p) de la liste Lc et ajouter (ti, tk) dans A,

Pour chaque place de sortie Ps de tk, ajouter un jeton de la forme (tk, Ps) dans Lc

Si Ps est une place normale, ajouter Ps à LjnInit

Enrichir Marquage : l'enrichissement du marquage consiste à ajouter des jetons dans la liste des jetons courante de façon à rendre franchissables des transitions qui ne sont que potentiellement franchissables (certaines de leurs places d'entrée contiennent des jetons, mais d'autres sont vides). Cela correspond à la prise en compte de l'état de nouveaux composants du système étudié car leur interaction avec les composants déjà pris en compte peut provoquer des changements d'état. Il faut toutefois vérifier que l'ajout de ces jetons n'est pas incohérent vis-à-vis du modèle du système étudié.

La procédure "Enrichir Marquage" permet donc de vérifier la cohérence de l’enrichissement de marquage. Elle ne l’autorise que lorsque cela est cohérent par rapport aux invariants de places. On distingue deux types de procédure pour l’enrichissement. La première, appelée Enrichir Marquage1 permet l’enrichissement du marquage vis-à-vis des transitions potentiellement franchissables en conflit avec une transition appartenant à l’ensemble Tfcpf. La deuxième appelée Enrichir Marquage2 permet l’enrichissement des autres transitions potentiellement franchissables.

Enrichir Marquage1 (tk)

L, variable interne de la procédure, est une liste de jetons initialement vide.

Pour chaque transition tj, potentiellement franchissable en conflit avec tk, et pour chaque place pl en amont de tj, ajouter un jeton (ek, pl) dans la liste L,

Vérifier la cohérence du marquage

Enrichir Marquage2 (tk)

L, variable interne de la procédure, est une liste de jetons initialement vide.

Pour chaque place pl en amont de tk, ajouter un jeton (ek, pl) dans la liste L,

Vérifier la cohérence du marquage

Cohérence Marquage : cette méthode vérifie la cohérence du marquage. Elle fait appel à une liste interne L qui contient des éléments de type (ti, P) qui sont les jetons d’enrichissement; la liste des invariants et la liste de la composante conservative de chaque invariant qui sont des données d’entrée.

74 Cohérence Marquage (L, tk)

Pour chaque jeton pl de L,

Vérifier pour chaque invariant s’il contient pl

Vérifier si le nombre de jetons dans les places constituant cet invariant est supérieur à la composante conservative de cet invariant alors on supprime pl de L.

Si le nombre d’éléments dans L est supérieur à 0 alors l’enrichissement est cohérent, on rajoute les atomes de L dans les listes Lc et Le.

Sinon on rajoute tk à la liste des transitions qui ne peuvent pas être enrichies Lint3 pour éviter les boucles.

Conflit enrichissement : Dans l’enrichissement de marquage, on est confronté des fois au cas ou on ne peut mettre les jetons dans toutes les places à cause de l’incohérence de marquage. On met les jetons graduellement dans les places qui nécessitent un enrichissement et on vérifie à chaque fois que l’enrichissement est cohérent. En cas d’incohérence à cause d’un jeton d’enrichissement dans la phase courante, on mémorise le contexte et on continue l’enrichissement. Ce procédé nous permet de ne pas oublier des contextes du système étudié.

Conflit enrichissement (pk)

Mettre un jeton d’enrichissement dans la place pk, Vérifier la cohérence de marquage

Mettre graduellement des jetons dans les autres places qui nécessite un enrichissement

En cas d’incohérence à cause de pk, mémoriser_contexte enrichissement pk.

Mémoriser contexte Conflit enrichissement (pk)

Ajouter le jeton de la place pk à la liste des jetons interdits LeInt,

Ajouter un nouvel élément Ci (Lc, Lint1, Lint2, Lint3, E, A, B, Le, LeInt

LjnInit) au contexte C. Lint2 et Lin3 étant initialement vides dans ce nouveau contexte.

Pour eviter la mémorisation d’un même contexte d’enrichissement, à chaque mémorisation le jeton est rajouté à la liste des jetons IntEnrich qui est une variable globale.

Mémoriser Contexte conflit transitions : comme on l’a mentionné avant, à chaque fois qu’un conflit est rencontré pendant la construction d’un ordre partiel, ce dernier est scindé en autant d’ordres partiels différents que de transitions impliquées dans le conflit. Cette procédure permet de mémoriser toute l’information nécessaire pour construire un autre ordre partiel correspondant au tir d’une autre transition en conflit avec cette dernière.

Mémoriser Contexte (tk)

75

Ajouter un nouvel élément Ci (Lc, Lint1, Lint2, Lint3, E, A, B, Le, LeInt

LjnInit) au contexte C. Lint2 et Lin3 étant initialement vides dans ce nouveau contexte.

Conflit transitions tk et tj : cette méthode vérifie si tk est en conflit avec tj. S’il y a au moins une place qui est amont aux deux transitions alors les deux transitions sont en conflit

D’autres procédures sont utilisées comme, trier la liste des transitions selon le seuil croissant, la construction des liste des transition interdite Lint2, vérifier si deux transitions en conflit ont des seuil de franchissement disjoint pour choisir la transition prioritaire,etc.