• Aucun résultat trouvé

VI Algorithme pour la recherche de scénarios

VI. C.2 Enrichir Marquage

Cette procédure a pour but de contrôler la cohérence de l’enrichissement de marquage et d’autoriser cet enrichissement uniquement quand cela est cohérent par rapport aux invariants de places. On distingue deux types de procédures pour l’enrichissement : la première procédure, appelée Enrichir Marquage1, opère sur une transition appartenant à l’ensemble Tfcpf et enrichit le marquage de toutes les transitions potentiellement franchissables en conflit avec celle-ci, et ce de la manière suivante :

Enrichir Marquage1 (tk) :

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

- Pour chaque 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 ;

- Si l’enrichissement de marquage est incohérent avec les invariants de places,

alors effacer les jetons rajoutés de la liste L ;

La deuxième procédure, notée Enrichir Marquage2, opère sur les transitions potentiellement franchissables et permet d’enrichir leur marquage :

Enrichir Marquage2 (tk) :

L est une liste de jetons initialement vide.

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

- Si l’enrichissement de marquage est incohérent avec les invariants de places,

alors effacer les jetons rajoutés de la liste L ;

- Ajouter les atomes de L dans les listes Lc et Le. VI.C.3 Mémoriser Contexte

Comme nous l’avons vu dans le chapitre précédent, paragraphe III.G, à 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 (donnés par des arbres de preuve) que de transitions impliquées dans le conflit.

Par rapport à une transition impliquée dans un 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. Ainsi nous avons :

Mémoriser Contexte (tk) :

- Ajouter la transition tk à la liste des transitions interdites Lint ;

- Ajouter un nouveau quintuplet (Lc, Lint, E, A, Le) au contexte C ;

- Effacer le contenu de Lint.

Après avoir présenté la structure des données ainsi que les procédures, nous expliciterons ci-dessous l’algorithme de recherche de scénarios.

VI.D Algorithme

L’algorithme de recherche de scénarios comporte différentes étapes qui s’agencent comme suit :

Pas initial :

//Pour pouvoir construire le premier ordre partiel, ce pas initialise le contexte C avec un quintuplet (Lc, Lint, E, A, Le) tel que : Lc = Li, Lint et Le sont vides, E = {I}, A est vide et

l’entier Inc est égal à 1.//

C←(Lc = Li, Lint = {φ} , E = {I}, A = {φ}, Le = {φ}) Inc = 1

Pas 1 :

Si C = {φ} alors aller à Pas final Sinon :

Mémoriser le premier élément de C dans (Lc, Lint, E, A, Le) ;

Effacer cet élément de C Aller à Pas 2

Pas 2 :

Générer à partir de (Lc, Lint, E, A, Le) toutes les transitions franchissables et

potentiellement franchissables ; Effacer de ces listes :

• les transitions dans Lint et toutes celles qui leur sont parallèles (pour éviter de

construire plus d’une fois un même ordre partiel) Générer les listes suivantes : Tfsc, Tpfsc, Tfcf, Tfcpf et Tpfc Aller à Pas 3

Pas 3 :

//Ce pas concerne le critère d’arrêt de la construction d’un ordre partiel.//

Si Lc contient uniquement des jetons appartenant à Ln et qui ne sont pas des jetons

initiaux ou les listes Tfsc, Tpfsc, Tfcf, Tfcpf et Tpfc sont toutes vides alors aller à Pas 9 Sinon aller à Pas 4 ;

Pas 4 :

//Les transitions franchissables qui ne sont pas en conflit avec une autre transition sont tirées en priorité car aucune décision n’est à prendre//

Si Tfsc = {φ} alors aller à Pas 5 ; Sinon :

• Soit tk la première transition de Tfsc ;

• Tirer Transition (tk) ;

• Aller à Pas 2 ;

Pas 5 :

//Ce pas résout les conflits de transitions en en tirant une et mémorise l’information nécessaire pour la construction des autres ordres partiels relatifs aux tirs des autres transitions impliqués dans le conflit//

Si Tfcf = {φ} alors aller à Pas 6 ; Sinon :

• Soit tk la première transition de Tfcf ;

• Mémoriser Contexte (tk) ;

• Tirer Transition (tk) ;

• Aller à Pas 2 ;

Pas 6 :

//Ce pas concerne l’enrichissement de marquage de toutes les transitions potentiellement franchissables en conflit avec une transition franchissable donnée. Cela a lieu quand toute les décisions ne nécessitant pas un enrichissement ont été prises//

Si Tfcpf = {φ} alors aller à Pas 7 ; Sinon :

• Soit tk la première transition de Tfcpf ;

• Enrichir Marquage1 (tk) ;

• Si tk est maintenant en conflit avec au moins une transition franchissable alors Mémoriser Contexte (tk) ;

• Tirer Transition (tk) ;

• Aller à Pas 2 ;

Pas 7 :

//Dans ce pas, nous enrichissons le marquage d’une transition potentiellement franchissable et en conflit avec d’autres transitions. Ensuite, nous mémorisons le contexte et nous tirons cette transition//

Sinon :

• Soit tk la première transition de Tpfc ;

• Enrichir Marquage2 (tk) ;

• Mémoriser Contexte (tk) ;

• Tirer Transition (tk) ;

• Aller à Pas 2 ;

Pas 8 :

//Dans ce pas, nous enrichissons le marquage d’une transition potentiellement franchissable et en conflit avec aucune autre transition et nous tirons ensuite cette transition//

Si Tpfsc = {φ} alors aller à Pas 9 ; Sinon :

• Soit tk la première transition de Tpfsc ;

• Enrichir Marquage2 (tk) ;

• Tirer Transition (tk) ;

• Aller à Pas 2 ;

Pas 9 :

//Nous mémorisons l’ordre partiel construit et nous revenons au pas 1//

Pour chaque jeton (ti, p) de la liste Lc ajouter (ti, f) dans l’ensemble A ; f étant

l’événement fin.

Mémoriser l’ordre partiel construit numéro Inc tel que : E(Inc) = E, A(Inc) = A et Le(Inc) = Le ;

Incrémenter Inc ; Aller à Pas 1 ;

Pas final :

//C’est la fin de l’algorithme//

Nous donnons en annexe l’organigramme de l’algorithme que nous venons de développer. Nous allons maintenant appliquer la méthode de recherche de scénarios ainsi que cet algorithme sur un cas d’étude élémentaire.