Vous êtes sur la page 1sur 68

Simulation des systèmes à événement

discrets par réseaux de Petri

Chapitre 4: Plate forme CPN tools


RDP Coloré
n Les RdPC permettent une condensation de
l’information,

n Une couleur est une information attachée a un jeton.

n Dans les RdPC, les arcs ne sont pas seulement


étiquetés par le nombre de jetons mais par leurs
couleurs.

n Le franchissement d'une transition est conditionné


par la présence dans les places en entrée du
nombre de jetons nécessaires, qui en plus
satisfont les couleurs qui étiquettent les arcs.

2
RDP Coloré
n Pour tout RdPC,, il convient de définir les différentes
couleurs des jetons.

n Pour toute représentation par RdPC, il convient de


définir les fonctions attachées aux arcs, en
précisant quelles transformations impliquent chaque
fonction vis-à-vis de chaque couleur.

n Lors de l’élaboration du RdPC, il faut également


spécifier pour quelle couleur chaque transition est
franchissable. Cette spécification peut être
conventionnellement portée sur le graphe, en regard
de chaque transition concernée.

3
RDP Coloré
Définition formelle
n Un réseau de Petri coloré est un tuple CPN = (S, P,
T, A,N, C, G, E, I), ou :
Ø S est un ensemble fini de types non-vides, appelé des
ensembles de couleur,
Ø P est un ensemble fini de places,
Ø T est un ensemble fini de transitions,
Ø A est un ensemble fini d'arcs
Ø N est une fonction de couleur entre les nœud
Ø C est une fonction de couleur des places
Ø G est une fonction de garde
Ø E est une fonction d'expression d'arc
Ø I est une fonction d'initialisation,

4
RDP Coloré -CPN TOOLS-
Outils de developpement des reseaux de Petri
CPN TOOLS
ü Developpé Par CPN Group, Universite d'Aarhus, Denmark.

ü Il est l'un des logiciels les plus utilises dans son domaine, dédié
a la simulation de réseaux .
ü Basé sur le langage fonctionnel CPN ML.

ü CPN Tools combine la capacité des réseaux de Petri colorés et


la capacité d'un langage généraliste fonctionnel.

CPN
PNC SML
Tools

 
5
RDP Coloré -CPN TOOLS-
Outils de développement des réseaux de Petri
CPN TOOLS

Déclaration du
langage SML

Environnement Types
SML prédéfinis

Fonctions
CPN TOOLS
prédéfinies

Déclarations
Environnement
spécifiques aux
CPN tools
CPN

6
RDP Coloré -CPN TOOLS-

7
Colour Sets & Multi-Set
n A place is a location (drawn as ellipse) :
Ø It is used to hold data items(tokens).
Ø Places are specified with the following inscriptions:
Inscription

1.Name (for identification).


Place

2.Type (Colour set which used to specify the type of tokens


(int, string, bool and real)).
3.Initial marking (multi-set of token colours)

8
Colour Sets
COLORSET
n Les jetons figurant dans les places sont colorés.
n À toute place est associé un ensemble de
couleurs.
n Un colorset décrit les jetons que la place va
contenir.
n Le type des colorset est determiné par le langage
SML.
Colset COLORNAME= type SML

9
Simple colour sets

A set of basic types for defining simple colour sets:


• Integers - int: {…, ~2 , ~1 , 0 , 1 , 2 ,…}
• Strings - string: {"a" , "abc" ,…}
• Booleans - bool: {true,false}
• Unit - unit: {()}
§ Standard colour set definitions:

colset INT = int;


colset STRING = string;
colset BOOL = bool;
colset UNIT = unit;
§ Two other kinds of simple colour sets:
§ enumeration colour sets.
§ indexed colour sets.

10
Simple colour sets

Unit
colset name = unit [with new_unit];
Only one possible value: () can hold no information
ex:
colset U = unit; >>> 1`()
Optional “with” clause
colset E = unit with e; >>> 1`e

unit is used to represent black (i.e., uncolored)


tokens

11
Simple colour sets

Boolean
colset name = bool with (new_false, new_true);
ex:
colset B = bool; >>> 1`true
colset B2 = bool with (no, yes); >>> 1`yes

Operations
not, andalso, orelse

12
Simple colour sets

Integer
colset name = int with int-exp1..int-exp2;
ex:
colset I = int ; >>> 1`36
colset I2 = int with 0..9; >>> 1`7

Operations
~(neg), +, -, *, div, mod, abs,
Int.min(i1,i2), Int.max(i1,i2)

13
Simple colour sets

Strings
colset name = string [with string-exp1..string-exp2
[and int-exp1..int-exp2] ];
ex: (longueur)

colset lowerstring = string with “a” .. “z” and 1..3;


“abc”, “xy” >>> OK “AbC”, “abcd” NOT OK

Operations
s1^s2, String.size s, substring(s, i, len),
explode s, implode l

14
Simple colour sets

Enumerated
colset name = with id0 | id1 | … | idn;
ex:
colset dwarfs = with Dopey | Doc | Sleepy | Bashful |
Happy | Grumpy | Sneezy;

15
Simple colour sets

Index
colset name = index id with int1..int2;
ex:
colset STUDENT = index student with 1..11;
>>> 1`student(1) .. 1`student(11)

16
Simple Colour Sets -Résumé-
COLORSET
Type Simple
Les couleurs simples sont définies à partir des types de base du
langage SML ou à partir de la clause with :

colset name = unit [with newUnit];



colset name = bool [with (newFalse, newTrue)];

colset name = int [with intExp1..intExp2];

colset name = string [with string Exp1..stringExp2 [and
intExp1..intExp2]];

colset name = with id0 | id1 | … | idn; (* énumération *)

colset name = index id with intExp1..intExp2

17
Compound Colour Sets
COMPOUND COLOUR SETS
Type Composé
n Les produits cartésiens, les enregistrements, les listes, les
unions et les sous-ensembles sont construits à partir
d’ensembles de couleurs déjà définis .
§ Structured colours sets are defined using colour set
constructors:
§ Products
§ Records
§ Unions
§ Lists
§ Subsets
colset NOxDATA = product NO * DATA;
colset DATAPACK = record seq:NO * data:DATA;
colset PACKET = union Data:DATAPACK + Ack:ACKPACK;
18
colset PACKETS = list PACKET;
Compound Colour Sets

Product
colset name = product name1 * name2 * ... * namen;
ex:
colset COUPLES = product MEN * WOMEN;
>>> 1`(Bob, Mary)

Operations
#i Extract element i of tuple
_ Omit element - ex. (Bob,_) - Not allowed in CPN

19
Compound Colour Sets

Record (enregistrement)
colset name = record id1:name1 * id2:name2 * ... *
idn:namen;
ex:
colset ID = record n:NAME*s:SURNAME*a:AGE;
>>> 1`{n=“Bob”, s=“Smith”, a=29}

Operations
#idi rec Extract element idi of record rec (ex: #s rec)
… Omit element (not allowed in CPN)

20
Compound Colour Sets

List
colset name = list name0 with int1..int2;
ex:
colset MyList = list INT with 1..3;
>>> 1`[3, 8, 54]

21
Compound Colour Sets

Union
colset name = union id1[:name1] + id2[:name2] + ... +
idn[:namen];
ex:
colset Digit = int with 0..9;
colset MyUnion = union NUM:Digit +

22
Colour Sets

Subset
colset name = subset name0 by subset-function;
colset name = subset name0 with subset-list;
ex:
fun even i = ((i mod 2) = 0);
colset evenInt = subset INT by even;

colset int2to4 = subset INT with [2,3,4];

23
Colour Sets

Alias
colset name = name0;
ex:
colset Naturals = POSINT;

24
Multi-Sets
n Multi-Sets
ü Pour pouvoir initialiser une place constituée de
plusieurs jetons nous avons besoin de multi-set
appelé aussi “ BAGS”.
ü Dans CPN multi-sets sont notés en utilisant la
notation suivante: x1`v1 ++ x2`v2 ++ ... ++ xn`vn
Ø v1 est une valeur ,
Ø x1 le nombre de fois ou cette valeur apparait
dans le multi-set, etc.
Exp: 4`"Red" ++ 2`"Green" ++ 1`"Blue" is a multi-set
containing 7 elements

25
Multi-Sets
q Définition d’un multi-set
ü Un multi-set, défini sur un ensemble S non vide, est une
fonction qui sera représentée
symboliquement par la somme

ü On note SMS l’ensemble de tous les multi-set définis sur S


n Exemple de multi-set

ü Le multi-set m représenté par la


somme 3` rouge+1`vert correspond
à la fonction ci-contre

26
Multi-Sets

27
Multi-Sets
n Créer une place avec le marquage suivant::
• 2 string différents minuscules et 2 string Majuscule,

• 1 liste vide et 3 listes avec les valeurs1, 6 et 8,

• 2 enregistrement différents : src=2, dst=5, d=”request” et src=5, dst=2, d=”answer”

28
Multi-Sets
n Créer une place avec le marquage suivant:
• 1000`rice ++ 2000`wheat ++ 3000`oat

29
Colour Set& Multi Set -Résumé-
§ Standard  colour  set  defini0ons:  

colset INT = int;


colset STRING = string;
colset BOOL = bool;
colset UNIT = unit;

§ Structured  colours  sets  définit  en  u0lisant    les  colour  set  constructors:    
§ Products
§ Records
§ Unions
§ Lists
§ Subsets
colset NOxDATA = product NO * DATA;
colset DATAPACK = record seq:NO * data:DATA;
colset PACKET = union Data:DATAPACK + Ack:ACKPACK;
colset PACKETS = list PACKET;

30
Variables & constantes CPN
n Un arc est utilisé pour relier une place et une transition.
n Il possède deux directions:
1) Output arc d’une transition (input transition) vers une place
(output place).

2) Input arc d’une place (input place) vers une transition (output
transition).

n A chaque arc est associé une inscription, utilisée


pour decrire comment l’état du système modélisé change (input
inscription in an input arc or output inscription in an output arc)

31
Variables & constantes CPN
n Exercice :
Modéliser l’addition de deux nombres 6 et 9.

32
Variables & constantes CPN
Variables & constantes CPN
n L’inscription sur les arcs peut utiliser des variables,
n Les variables sont typés et ont besoin d’être déclarés.

Var id1,id2,id3 : colset_name ;


Ex: var x: int;

q L’inscription sur les arcs peut utiliser des cst,


val id = exp;
ex:
val seven = 7 ;
val nom = « hajar »;


33
Variables & constantes CPN
Variables & constantes CPN
Cas : Colorset de type INT
Ø Expression d’arcs en variables,
Ø Expression d’arcs en cst,

34
Variables & constantes CPN
Variables & constantes CPN
Cas : Colorset de type Product
Ø Expression d’arcs en cst
Ø Expression d’arcs en variables

35
Variables & constantes CPN
Variables & constantes CPN
Cas : Colorset de type différents
Ø Expression d’arcs en variables

36
Colour Sets -OPERATIONS-
Opérations
n Exemple opérations sur les produits.
- #i retourne la ième composante

#1 (bleu, 4) donne bleu


n Exemple opérations sur les listes.

- Nil liste vide (notée également [ ],



- e::l retourne la liste l à laquelle l’élément e est ajouté à
gauche, "a"::["b","c"] evaluates to ["a","b","c"]

- l1^^l2 concatène les deux listes, [1,2,3]^^[4,5] evaluates to
[1,2,3,4,5]

-length l1 longueur de la liste l1.

37
Colour Sets -OPERATIONS-

38
Multi-Sets

Fonctions prédéfinies générant des multisets particuliers


- colorset.all() retourne toutes les valeurs possibles


colset S = with bleu | rouge | vert ;



S.all() retourne : 1`bleu++1`rouge++1`vert

Autres exemples

- colorSet.ran ()

- colorSet.size ()

- productColorSet.mult (ms1,ms2)

39
Multi-Sets

40
Multi-Sets -Opérations-
Opérations
empty constant; empty multiset
== equality
<><> inequality
>> greater than (>>= ..or equal to)
<< lesser than (<<= ..or equal to)
++ addition
-- subtraction
** scalar multiplication

41
Multi-Sets -Opérations-
n Opération sur les multi sets
Exemple : addition, multiplication par un scalaire,
comparaison, cardinalité et soustraction des multi-sets
ü Soient

(addition)

(multiplication par un scalaire)

(comparaison)

(soustraction)

ü La syntaxe concrète retenue dans CPNTools pour l’addition
de deux multi-sets est « ++ »

42
Variables & constantes CPN
Variables & constantes CPN
Cas : Expression d’arcs en multiplet de variables++
Ø Même nom de variable communs aux arcs entrant d’une transition

n Créer trois places différentes de types produits


Par exemple
menu = nom_plat & nom_dessert&numéro de table
boisson = numéroTable & nom _boisson
commande = nom_plat & nom_dessert & nm_boisson
Exprimer les arcs d’entrée en fonction des variables
nécessaire pour franchir la transition « passer commande ».

43
Fonctions
Fonction
Cas : expression arc avec fonctions prédéfinis
n CPNTools comprend un ensemble de fonctions
prédéfinis

NB: De nouvelles fonctions peuvent être définies à partir de


fonctions existantes, d’expressions ou de structures de contrôle

44
Fonctions
Fonctions
Cas : Expression d’arc = if…then…else…
Les structures de contrôle if then else et case servent

• de filtre de jetons sur les arcs entrants

• de générateurs (conditionnels) de jetons sur les arcs
sortants

45
Fonctions
Fonctions
Cas : Expression d’arc par fonction
Déclaration

fun functionName (functionHead) = functionBody;

46
Fonction
Fonctions
Cas : Expression d’arc par fonction
fun funct1 = exp1
funct2 = exp2
...
functn = expn;

ex:

fun isPos(x) = (x>0);

fun diff(x,y) = (x<>y);

fun Divide(x,y) = (x div y)

Divide(_,0) = error;

47
Operateurs basiques

Opérateurs basiques

+ and –for reals and integers
* (multiplication) for realsand integers
/ (division) for reals
div and mod for integers (28 div 10 = 2, 28 mod 10 =
8)
=, >, <, >=, <=, <> for comparing things (note the
notation for >=(greater than), <=(smaller than), and
<>(not equal)).
^ for strings (concatenation "AA"^"BB" = "AABB")

48
Opérateurs logiques

Opérateurs logiques

not (for negation)
Andalso (for logical AND)
Orelse (for logical OR)
if then else (choice based on Boolean argument,
the then and else part should be of the same
type)

49
Exercice

Donnez le type et la valeur de chaque ligne


1) if (4>=4) then ("Hello" ^ " " ^ "World") else "X“
2) if true then 20 div 8 else 20 mod 8
3) not(1=1 orelse 1=2)
4) not(1=1 andalso 1=2)
5) if ("Hello" ^ " " ^ "World" = "X") then 20 else 3
Exemple :
ü not(1=1) results in false
ü (1=1) andalso not(0>1 orelse2>3) results in true
ü if "X"="X" then 3 else 4 results in 3

50
Exercice
Soit deux robot A et B faisant un aller et retour avec
départs simultanés de la gauche.
n Modélisez le comportement de ce système en
utilisant un RdP ordinaire,
n Modélisez le comportement de ce système en
utilisant un RdP généralisé,
n Modélisez le comportement de ce système en
utilisant un RdP coloré :
• Premier cas , combiner les chariots,
• Deuxième cas, combiner chariots et états.

51
Transition
n Une transition est une activité qui représente un
évenement.
n Chaque transition contient les inscriptions suivantes:
• Name: for identification.
• Guard condition: it is a Boolean expression enclosed in
square brackets that appears above the transition rectangle
and decides if transition is enable or not.

52
Transition -Binding-

53
Transition -Binding-

54
Transition -Binding-
n Soit une transition T avec des variables x1,x2……xn sur
les arcs d’entrée et de sortie. Le binding de la transition
T, consiste en l’allocation d’une valeur concrète pour
chacune de ces variables.

n Le binding (liaison) est activé si il existe des jetons dont


les valeurs correspondent aux inscriptions sur les arcs.

n Si le binding est activé, le franchissement de la transition


peut se produire.

n La paire (t1,<x1=v1,x2=v2, ...xn=vn>) est appellée


binding élèment.

55
Exemple
n Deux binding élèments: (t1,<x=2>) and (t1,<x=3>),

n Binding élèment (t1,<x=0>). Après franchissement (t1,<x=1>),


etc.

56
Exemple
No (t2,<x=1,y=2>)

binding
color INT = int;
var x:INT; possible!

var y:INT;

p1 1 p2 2 p4 1 p5 2 p7 1 p8 2

INT INT INT INT INT INT


x x x y x y-x

t1 t2 t3

x x+y y

p3 p6 p9

INT INT INT

No binding
possible!

57
Guard
n La guarde est une expression booléenne , [boolExpr] attachée à une
transition, (encadrée par [])

n La guarde est utilisée pour restreindre le bindings des variables qui
Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est toujours affiché, vous devrez peut-être

apparaissent à l’entrée et à la sortie des arcs.



supprimer l'image avant de la réinsérer.

guard
evaluates to
false for
binding
(t1,<x=1,
y=2>)

n la transition est validée si la valeur de l’expression est true.


58
Example

n Quel sera le marquage final ?

p4 1 p5 2 p7 1 p8 2

INT INT INT INT


x y x y
color INT = int;
var x:INT; t2 [x>y] t3 [z=x+y]
var y:INT;
var z:INT; x+y z

p6 p9

INT INT

59
temporisation
n Un jeton non temporisé est toujours disponible,

n Un jeton temporisé comporte une marque de temps indiquant sa


date de disponibilité,

n Afin de permettre d’introduire le temps dans le franchissement des


transitions, il faut ajouter la clause timed dans la déclaration de
l’ensemble de couleurs.

Colset colorSet = type timed;


n Le délai associé aux arcs sortants est modelisé par v@+d ou


v est la valeur et d représente le délai associé aux jetons produits
(exemple diapo 69).

60
Exemple

61
Exemple

PN-62
Exercise
p5 2`"Hi"++2`"Ho"
n Determiner les états finaux possible.

color STR = string timed; STR


var x:STR; x
color INT = int;
var y:INT; t2

y y+1 x@+y
p6 0 p7

INT STR

PN-63
Overview of CPN (with color and time)

color set place name guard

timed color
declarations initialization
set delay
expression

color INT = int;


color STR = string timed; p1 [x<n] p2 "Token"
1`2 ++ 2`3 y@+2
var x:INT;
x
var y:STR;
val n = 4:INT; incr(x) y
INT t1 STR
fun incr(z:INT) = z+1;

transition
function variable name
declaration

constant place type arc inscription

PN-64
Example: Thermostat system

n At any point the room has a temperature (initially 15 degrees


centigrade).
n There is a heater to warm up the house and there is a door which
opens every hour such that part of the warmth escapes.
n When the door opens the temperature in the room suddenly drops
by three degrees centigrade.
n The heater has a capacity of heating the room 1 degree centigrade
every 15 minutes.
n When the heater would be switched on the whole time the
temperature would continue to rise by 1 degree per hour. Therefore,
there is a control system, i.e., the thermostat, which switches off the
heater. The thermostat uses the following rules.
n If the temperature drops below 18, the heater is switched on.
n If the temperature rises above 22, the heater is switched off.

PN-65
CPN model of thermostat system

color Temp = string;


color B = unit;
color BT = B timed;
var t:Temp;
var a:B;
var b:BT;
on off 1`()

B B
a a a a
[t>22] [t<18]
a a

switch_off switch_on
t t
t t
heater 1`()
b t temp 1`15 t b door 1`()

BT b@+15 t+1 Temp t-3 b@+60


warm_up cool_down BT

PN-66
Exercise
n Describe the room temperature in time starting in the
initial state shown, i.e., play a timed, colored ``token
game''.
n Extend the model such that there is a day program and
a night program. From midnight to 8am, the thermostat
tries to keep the temperature between 14 and 18
degrees centigrade. (If the temperature drops below 14
the heater is switched on. If the temperature rises
above 18 the heater is switched off.) From 8am to
midnight, the temperature is kept between 18 and 22
degrees, like before.

PN-67
n TRES IMPORTANT 2016 Inchaa allah
n Les fonction du standard ML utiliser pour les list

n LIST function from standard ML


• Nil
• e::1
• Hd 1
• Tl 1

68

Vous aimerez peut-être aussi