Académique Documents
Professionnel Documents
Culture Documents
2
RDP Coloré
n Pour tout RdPC,, il convient de définir les différentes
couleurs des jetons.
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
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
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
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
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)
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 :
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;
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
26
Multi-Sets
27
Multi-Sets
n Créer une place avec le marquage suivant::
• 2 string différents minuscules et 2 string Majuscule,
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:
§ 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).
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.
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
37
Colour Sets -OPERATIONS-
38
Multi-Sets
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
43
Fonctions
Fonction
Cas : expression arc avec fonctions prédéfinis
n CPNTools comprend un ensemble de fonctions
prédéfinis
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
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.
55
Exemple
n Deux binding élèments: (t1,<x=2>) and (t1,<x=3>),
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
t1 t2 t3
x x+y y
p3 p6 p9
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
guard
evaluates to
false for
binding
(t1,<x=1,
y=2>)
58
Example
p4 1 p5 2 p7 1 p8 2
p6 p9
INT INT
59
temporisation
n Un jeton non temporisé est toujours disponible,
60
Exemple
61
Exemple
PN-62
Exercise
p5 2`"Hi"++2`"Ho"
n Determiner les états finaux possible.
y y+1 x@+y
p6 0 p7
INT STR
PN-63
Overview of CPN (with color and time)
timed color
declarations initialization
set delay
expression
transition
function variable name
declaration
PN-64
Example: Thermostat system
PN-65
CPN model of thermostat system
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`()
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
68