• Aucun résultat trouvé

utilisent des fonctions lorsque les arguments de ces fonctions ne sont pas limités à l’espace d’états local d’un sous-système. La solution pour l’utilisation de fonctions sans hypothèse sur les arguments est mise en évidence dans les procédures :

Locals(ALG. 5.8, page 92) : lignes 9 - 14 ; – Saturate(ALG. 5.9, page 94) : lignes 14 - 23 ; – Fire(ALG. 5.10, page 96) : lignes 10 - 19.

Ces modifications dans les algorithmes sont possibles grâce à :

1. Le descripteur d’atteignabilité. Il est représenté par unformat tensoriel qui utilise les matrices d’atteignabilité partielles du modèle. Les termes tensoriels du descripteur sont fabriqués de façon à ce que les fonctions d’une même matrice aient le même ensemble d’états où elles peuvent deve-nir identiquement nulles. Ceci permet d’avoir une fonction “next-state” structurée selon l’espace produit ;

2. Des MDD associés à des taux et des probabilités fonctionnels. La représentation par un MDD de l’ensemble d’états pour lesquels l’évaluation d’une fonctionest différente de zéro (ALG. 5.1, page 74) ;

3. Des MDD associés à des fonctions d’un terme tensoriel. La représentation par un MDD de l’en-semble d’états pour lesquels l’évaluation de toutes les fonctions des éléments fonctionnels qui apparaissent dans les matrices d’atteignabilité d’un terme tensoriel est différente de zéro (ALG. 5.3, page 78).

5.6 Implantation

Dans cette section, on va introduire les types et les structures de données utilisées pour la manipula-tion des noeuds d’un MDD.

Au contraire de [82] où les MDD sont représentés par des BDD, il est démontré dans [94] que l’utilisation directe des MDD peut fournir des gains de performance pour la génération de l’espace d’états atteignables de modèles. La manipulation d’un état local dans un MDD est faite seulement dans un noeud au lieu de plusieurs noeuds du BDD qui représenteraient le noeud du MDD.

Pour l’implantation, les types de donnés sont simplement des integers dans un intervalle adéquat. Comme pour les algorithmes de génération symbolique traditionnels de l’espace d’états, on utilise un

tableau unique pour la détection des noeuds doubles (Définition 5.1.2, page 71) et descaches (cache d’unionetcache de tirage) pour éviter le recalcul d’opérations déjà effectuées pour les noeuds du MDD.

Les noeuds sont divisés enN groupes, un pour chaque niveau (automate). A fin d’éviter les noeuds

doubles, chaque groupe de noeuds est géré par une table de hachage (tableau unique) de dimension variable qui supporte les insertions et suppressions de noeuds pendant l’exécution, et un accès entemps constantpour chaque élément.

Soit

U T letableau unique(table de hachage) pour les noeuds d’un MDD, oùU T[l]est letableau unique pour les noeuds du niveauldu MDD (pourN ≥ l ≥ 1). Les valeurs des arcs d’un noeud sont utilisées commeclépour ce tableau unique,i.e., soit un noeudpau niveaul, on utilise les valeurs des arcsp[0], . . . , p[nl−1]pour trouver le noeudpdansU T[l];

Dans FIG. 5.7, on présente l’implantation des noeuds au niveaul quelconque d’un MDD utilisant des vecteurs extensibles de noeuds et d’arcs.

Le vecteur de noeuds (node) est organisé selon les indices des noeuds du MDD, i.e., la partie constante des données du noeudpau niveaulest stockée dansnode[l][p]. L’indice du noeudpestunique

dans le niveaul. Un noeud quelconque doit être référencé par une paire(l, p).

5 4 5 2 5 2 η ι γ ϕ κ 1 α β χ δ 0 2 σ τ υ ω ξ 3 ǫ φ 0 0 0 4 λ µ ν o π 5 θ ρ 0 0 0 6 α β χ δ ǫ φ γ η ι ϕ κ λ µ ν o π θ ρ σ τ υ ω ξ vecteurarc[l] 9 8 1 0 2 3 4 5 6 7 10 11 12 13 14 15 16 17 18 19 20 21 22 vecteurnode[l]

car la valeur0est reservée au noeud spécialzl)

flags count size start no eu d 2 no eu d 3 no eu d 4 no eu d 5 no eu d 6 no eu d 1

(les compteurs -count- sont initialisés à1

oùγ,η,ι, ... sont les valeurs (integer) des arcs des noeuds Les noeuds d’un MDD au niveaul:

Le codage de cette configuration en utilisant les vecteursnode[l] etarc[l] :

FIG. 5.7 – L’implantation des noeuds d’un MDD utilisant des vecteurs extensibles [30]

On réserve un noeud spécialzlau niveauld’un MDD pour indiquer l’ensemble qui va vers le noeud terminal0:B(zl) =∅. Tous les arcs du noeudzlpointent vers le noeudzl1, etz0 représente le noeud terminal0.

Le vecteur d’arcs est indexé par le champstartetsizedu vecteur de noeuds,i.e., sinode[l][p].start=

aetnode[l][p].size = b, alorsp[i]est stocké dansarcs[l][a+i]pour0 ≤ i < b. Les arcs sont stockés dans unformat plein tronqué,i.e.,b < nlindique quep[b] = · · ·=p[nl−1] =zl1, oùnlest la taille du noeud au niveaul.

5.6. IMPLANTATION 99 Chaque noeud ayant des caractéristiques différentes par rapport à l’utilisation de la mémoire, des

flags sont utilisées pour les différencier. Il est intéressant de remarquer que l’indice0(zéro) du vecteur de noeuds (node) de chaque niveau est réservé au noeud spécialzl.

Soit les vecteursnode[l] etarc[l] dans FIG. 5.7, on exécute :

r←NewNode(l)

pour créer un nouveau noeudrau niveaul. Dans ce cas, on ajoute un élément au vecteurnode[l] (i.e., il passe à 7 éléments) et le noeudrest initialisé :

0 1 2 3 4

noeudr 0 0 0 0 0 7

Soit le noeudrcréé précédemment au niveauldans FIG. 5.7 et un noeudpau niveaul−1, l’exécu-tion :

r[0]←p

change les vecteursnode[l] etarc[l] de la façon suivante :

node[l][7].start= 23 où 23 est la position initiale dans le vecteurarc[l] pour le noeudr(i.e., le noeud7)

node[l][7].size= 1

arc[l][23] =δ oùδest la clé du noeudppour le tableau uniqueU Tau niveaul−1

et le noeudrest modifié :

0 1 2 3 4

noeudr δ 0 0 0 0 7Soit

U C lecache d’unionpour les noeuds d’un MDD, oùU C[l]est lecachede l’opération union entre les noeuds du niveauldu MDD (pourN > l≥1). Soit deux noeuds

pet qau niveau l, on utilise l’ensemble non-ordonné {p, q}commeclé pour ce cache afin de récupérer un noeudsqui est le résultat de l’opération union entre les noeudspetq,i.e.,B(s) =B(p)∪ B(q).

Lecache d’union(U C) est utilisé pour éviter de recalculer l’opération d’union entre deux noeuds d’un MDD. Ce cache sert dans la procédureUnionutilisée dans les algorithmes de ce chapitre (e.g., ligne 29 dans ALG. 5.9, page 94). On a deux procédures pour gérer le cacheU C:

Insert(U C[l],{p, q},r) : le noeudrest le noeud résultant de l’opération union entre les noeudsp

etq. La procédureInsertstocke dans le cache d’union au niveaul(U C[l]) le noeudren utilisant l’ensemble non-ordonné{p, q}comme clé ;

Find(U C[l],{p, q},r) : en utilisant l’ensemble non-ordonné{p, q}, la procédureFindrend dansr

le résultat de l’opération d’union entre les noeudspetqdu niveaul.

Soit

F C lecache de tirage pour les noeuds d’un MDD, où F C[l]est lecache de tirage d’événements pour les noeuds du niveaul du MDD (pourN > l ≥ 1). Soit un noeudpau niveaulet un terme tensorielte ∈ Tassocié à un événement e∈ E. On utilise l’ensemble{p, te}commeclépour ce cache afin de trouver un noeuds

tel queB(s) =N

≤l(Nte(B(p))), oùTop(te)> l≥Bot(te).

Le cache de tirage(F C) est utilisé pour éviter de réexaminer les transitions représentées dans les matrices d’un termetpour un même noeud p. Le cacheF C est utilisé dans les procéduresFire(ALG. 5.6, page 83 et ALG. 5.10, page 96). On a aussi deux procédures pour gérer le cacheF C :

Insert(F C[l],{p, t},r) : le noeudr est le noeud résultant de l’exécutionFire(t, p). La procédure

Insertstocke dans le cache de tirage au niveaul (F C[l]) le noeudren utilisant l’ensemble non-ordonné{p, t}comme clé pour ce cache ;

Find(F C[l],{p, t},r) : en utilisant l’ensemble non-ordonné{p, t}, la procédureFindrendre dans

rle résultat de l’exécution Fire(t, p) stocké dans ce cache.

Il est intéressant de remarquer queF C[l]ne possède pas d’éléments pour t ∈ T(l), vu que l’algo-rithme sature un noeud en modifiant directement les valeurs des arcs de ce noeud ; pour la même raison, on n’utilise pas les caches enU CetF C au niveauN.

Définition 5.6.1. Soit un noeud non-terminal p au niveau l d’un MDD, p est un noeudredondant si

p[i] =p[0]pour tout0≤i < nl.

Dans cette thèse, on utilise des MDDquasi-réduits. Un MDD quasi-réduit est un MDD qui permet l’utilisation des noeudsredondants. En effet, il y a des gains importants grâce à l’implantation des MDD (quasi-réduits) où les arcs des noeuds pointent d’un niveaulvers un niveaul−1(i.e., la différence entre les niveaux d’un noeudpqui pointe vers un noeudqest égale à 1) :

• les opérations (e.g., l’union entre deux MDD) utilisées dans l’algorithme de Saturation (Section 5.5.4, page 90) sont exécutées sur les noeuds d’un même niveau. D’une façon analogue aux BDD, chaque opération des MDD utilise uncachepour réduire la complexité de calcul. Vu que lescaches

sont organisés par niveaux, on n’a pas besoin stocker des informations de niveau des noeuds ;

• les opérations des MDD sont effectuées directement sur les noeuds aux niveaux qui concernent le tirage d’un événement au lieu d’appliquer les opérations sur les états codés par ces noeuds ;

• le champ count du vecteur node[l][p] représente le nombre d’arcs qui pointent vers le noeud

p. Lorsqu’un arc qui pointe vers p est redirigé vers un autre noeud, on diminue la valeur de

node[l][p].count(i.e.,node[l][p].count=node[l][p].count−1) et s’il est égal à0, alors le noeudp

5.7. CONCLUSION 101

5.7 Conclusion

L’algorithme de Saturation présenté dans ce chapitre est une méthode symbolique basée sur des dia-grammes de décision qui peut être utilisée de façon performante pour la génération de l’espace d’états atteignables de modèles SAN. L’idée de base pour obtenir cette performance est d’explorer systémati-quement l’effet local des tirages d’événements.

L’algorithme de Saturation utilise desDiagrammes de Décision Multi-valués(MDD) qui représentent naturellement la structure des vecteurs d’états définis pour des modèles structurés (modulaires). De plus, il permet l’utilisation d’expressions de Kronecker pour la représentation des fonctions “next-state”, sto-ckant ces expression via un ensemble de matrices. Ainsi, l’algorithme utilise des opérations de poids faibledans la manipulation des MDD, en améliorant l’efficacité par rapport au temps de génération des méthodes traditionnelles (qui ont une seule itération et une fonction “next-state” depoids fort).

La génération basée sur la saturation est une nouvelle démarche pour la génération symbolique de l’espace d’états atteignables de modèles SAN. L’algorithme de Saturation présenté dans ce chapitre, outre qu’il permet l’utilisation des fonctions sans hypothèse sur les arguments, permet aussi la repré-sentation d’un très grand espace d’états atteignables d’un modèle SAN par un MDD (par exemple, des modèles avec des milliard d’états), alors que la représentationvectorielle courante de cet espace d’états atteignables est inefficace, ou même infaisable. Toutefois, la génération des MDDF uncM ddde fonc-tions sans hypothèse sur les arguments (ALG. 5.1, page 74) peut avoir un coût de calcul très élevé. Le coût de calcul pour générer un MDDF uncM ddidd’une fonctionfidest :

X

˜

x(ωid)∈Sˆ(ωid)

E(˜x(ωid)) + X

˜

x(ωid)∈Sˆ(ωid)/fid(˜x(ωid))6=0

M(˜x(ωid)) +U(˜x(ωid))

où E(˜x(ωid)) est le coût de calcul de l’évaluation de la fonction pour l’état x˜(ωid), et pour tout état

˜

x(ωid) pour lequel l’évaluation de la fonction est différente de zéro,M(˜x(ωid))est le coût de calcul de la génération du MDD qui représente l’étatx˜(ωid)etU(˜x(ωid))est le coût de calcul de l’opération union entre le MDDF uncM ddidet le MDD qui représente l’étatx˜(ωid).

La décomposition proposée dans le chapitre 4, des matrices d’atteignabilité selon les classes d’équi-valence, et la représentation de l’ensemble d’états pour lesquels l’évaluation d’une fonction est différente de zéro par un MDD ont permis le développement d’algorithmes de génération du RSS de modèles qui utilisent fonctions (notamment, pour les modèles SAN). L’utilisation de ces algorithmes n’est pas limi-tée au formalisme SAN, ces algorithmes peuvent être utilisés pour d’autres formalismes structurés de haut-niveau qui possèdent une représentation généralisée de Kronecker.

En bref, la génération basée sur la saturation amène les noeuds d’un MDD vers le format final (sa-turé) le plus tôt possible, considérant les niveaux des noeuds de bas en haut. Le tirage d’événements profite de la structure modulaire du modèle SAN, ainsi que la représentation de Kronecker des fonctions “next-state” locales. La modification des valeurs des arcs des noeuds de façon directe favorise le plus fréquemment possible la réutilisation des noeuds du MDD, au lieu de la génération de plusieurs noeuds qui seront normalementdéconnectésdu MDD (de la même façon que les méthodes classiques basées sur des BDD [90]). En utilisant ces caractéristiques, on peut calculer l’espace d’états atteignables de modèles d’une façon très performante, alors que le pic de mémoire reste relativement bas.

Les résultats expérimentaux pour la génération basée sur la saturation du RSS de modèles SAN est en moyenne de plusieurs ordres de grandeur plus performant en temps et utilisation de mémoire que la génération symbolique traditionnelle.

Dans le chapitre 6, on va présenter les résultats obtenus pour la génération (symbolique traditionnelle et basée sur la saturation) de l’espace d’états atteignables des modèles SAN présentés dans le chapitre 3.

Chapitre 6

Etudes d’exemples à temps continu

Dans ce chapitre, on présente quelques mesures de performance obtenues avec les méthodes et algo-rithmes que nous avons présentés dans le chapitre 5 pour la génération de l’espace d’états atteignables des modèles qui utilisent des fonctions (notamment, pour les modèles SAN). Ces algorithmes ont été développés dans un module du logiciel PEPS (Performance Evaluation of Parallel Systems) [17]. Les mesures de performance de ce chapitre ont été obtenues utilisant le module du logiciel PEPS sur un ordinateur AMD Opteron (avec 8 processeurs double coeur) à 2.2 GHz, sous un système Linux Debian 2.6.23-1-amd64, et avec 32 Giga octets de mémoire vive. Les mesures présentées dans ce chapitre ont été obtenues en utilisant seulement 1 processeur.

Les modèles SAN utilisés dans ce chapitre sont les mêmes que ceux décrits dans le chapitre 3 : – Dîner des Philosophes (Section 6.1) ;

– Patron de Service Alterné (Section 6.2) ; – Atelier avec kanbans (Section 6.3) ; – Partage de Ressources (Section 6.4).

Pour chacun de ces exemples (avec taux constants et fonctionnels), utilisant les algorithmes BFS et de Saturation, on présente les mesures de performance dans un tableau avec les colonnes suivantes :

• (Noeuds MDD)Final: le nombre final de noeuds du MDD qui représente l’espace d’états attei-gnables (RSS -Reachable State Space) ;

• (Noeuds MDD)Pic: le pic du nombre de noeuds utilisés pendant la génération du RSS ;

• (Mémoire) Final: la quantité finale de mémoire utilisée pour stocker le MDD qui représente le RSS ;

• (Mémoire)Pic: le pic de mémoire utilisé pendant la génération de l’espace d’états atteignables ;

• (Espace d’états)RSS: le nombre d’états atteignables ;

• (Temps)Fonctions1: le temps nécessaire à la génération de tous MDDF uncM dd;

• (Temps)RSS: le temps nécessaire à la génération de l’espace d’états atteignables.

6.1 Dîner des Philosophes

Dans cette section, on présente les mesures de performance obtenues utilisant les deux algorithmes BFS et de Saturation pour la génération du RSS des modèles SANtaux constants (FIG. 3.2) et taux fonctionnels (FIG. 3.3).N est le nombre de philosophes de l’exemple décrit dans la section 3.1 (page 40).

On présente dans TAB. 6.1 les mesures obtenues pour les modèles SAN (taux constants) utilisant l’algorithme BFS, et dans TAB. 6.2 les mesures obtenues pour les modèles SAN (taux fonctionnels) utilisant aussi l’algorithme BFS.

N

Noeuds MDD Mémoire (bytes) Espace d’états Temps (sec)

Final Pic Final Pic RSS PSS RSS

10 35 841 7,312 257,119 5.74×103 5.90×104 1.19×102

50 195 29,761 36,752 7,940,999 1.17×1019 7.18×1023 2.35×100

100 395 124,411 73,552 32,683,849 1.62×1038 5.15×1047 6.50×100

500 1,995 3,221,611 367,952 836,146,905 2.08×10191 3.64×10238 1.60×102

1,000 3,995 12,943,111 735,952 3,354,275,629 5.09×10382 1.32×10477 9.10×102

TAB. 6.1 – Dîner des Philosophes (taux constants) - Algorithme BFS

N

Noeuds MDD Mémoire (bytes) Espace d’états Temps (sec)

Final Pic Final Pic RSS PSS Fonctions RSS

10 35 713 7,312 218,684 5.74×103 5.90×104 1.60×10−4 9.07×10−3

50 195 23,273 36,752 6,365,324 1.17×1019 7.18×1023 7.87×10−4 2.27×100

100 395 96,473 73,552 26,018,264 1.62×1038 5.15×1047 1.76×10−3 5.44×100

500 1,995 2,482,073 367,952 662,045,088 2.08×10191 3.64×10238 1.55×10−2 1.26×102

1,000 3,995 9,964,073 735,952 2,654,078,472 5.09×10382 1.32×10477 4.95×102 8.19×102

TAB. 6.2 – Dîner des Philosophes (taux fonctionnels) - Algorithme BFS

En observant les deux tableaux (TAB. 6.1 et TAB. 6.2), on remarque que le temps pour la génération du RSS pour les modèles SAN (taux fonctionnels) est un peu plus petit que celui des modèles SAN (taux constants). La durée de la génération des MDDF uncM ddest très petit, sachant que les fonctions utilisées dans ce modèle sont évaluées sur un espace d’états très petit. Une fonctionfquelconque dans ce modèle possède les états de deux automates seulement comme arguments (i.e.,|ωf|=2). Vu que l’espace d’états de tous les automates est égal à 3 (trois), la génération d’un MDDF uncM ddquelconque est faite évaluant seulement états du domaine de la fonction,i.e.,3×3 = 9états.

Dans les tableaux suivants (TAB. 6.3 et TAB. 6.4), on présente les mesures de performance obte-nues utilisant l’algorithme de Saturation pour les modèles SAN (taux constants) et modèles SAN (taux fonctionnels) respectivement.

6.2. PATRON DE SERVICE ALTERNÉ 105

N

Noeuds MDD Mémoire (bytes) Espace d’états Temps (sec) Final Pic Final Pic RSS PSS RSS 10 35 56 7,312 34,448 5.74×103 5.90×104 1.54×103

50 195 296 36,752 417,251 1.17×1019 7.18×1023 8.96×103

100 395 596 73,552 1,445,101 1.62×1038 5.15×1047 1.84×10−2

500 1,995 2,996 367,952 31,627,901 2.08×10191 3.64×10238 1.08×101

1,000 3,995 5,996 735,952 124,256,401 5.09×10382 1.32×10477 2.44×101

TAB. 6.3 – Dîner des Philosophes (taux constants) - Algorithme de Saturation

N

Noeuds MDD Mémoire (bytes) Espace d’états Temps (sec) Final Pic Final Pic RSS PSS Fonctions RSS 10 35 83 7,312 34,171 5.74×103 5.90×104 1.70×10−4 1.25×10−3

50 195 443 36,752 361,048 1.17×1019 7.18×1023 8.12×10−4 7.31×10−3

100 395 893 73,552 1,183,248 1.62×1038 5.15×1047 1.86×10−3 1.51×10−2

500 1,995 4,493 367,952 24,320,848 2.08×10191 3.64×10238 1.60×10−2 8.98×10−2

1,000 3,995 8,993 735,952 94,642,848 5.09×10382 1.32×10477 5.08×10−2 1.81×10−1

TAB. 6.4 – Dîner des Philosophes (taux fonctionnels) - Algorithme de Saturation

Comme on peut l’observer dans TAB. 6.3 et TAB. 6.4, la génération du RSS pour les modèles SAN (taux fonctionnels) est encore un peu plus rapide que celle des modèles SAN (taux constants). On re-marque aussi que la mémoire utilisée pour les modèles SAN (taux fonctionnels) est inférieure à la mé-moire utilisée pour les modèles SAN (taux constants).

En regardant les quatre tableaux de mesures (TAB. 6.1, TAB. 6.2, TAB. 6.3 et TAB. 6.4), on constate que les mesures obtenues pour les modèles SAN (taux fonctionnels) utilisant l’algorithme de Saturation sont très performants, vu qu’on génère un très grand espace d’états (e.g., pourN = 1,000, le RSS est d’ordre de10382états) en moins d’une seconde.

6.2 Patron de Service Alterné

On présente dans cette section les mesures obtenues utilisant les algorithmes BFS et de Saturation pour la génération du RSS des modèles SANtaux constants(FIG. 3.5) ettaux fonctionnels(FIG. 3.6).P

est le nombre des différents patrons de service etK1,K2,K3 etK4 sont les capacités (finies) des files d’attenteQ1,Q2,Q3etQ4respectivement de l’exemple décrit dans la section 3.2 (page 43).

Les mesures obtenues pour les modèles SAN (taux constants) utilisant l’algorithme BFS pour cet exemple sont présentés dans TAB. 6.5, ainsi que les mesures pour les modèles SAN (taux fonctionnels) utilisant aussi l’algorithme BFS sont présentés dans TAB. 6.6.

On remarque que tout l’espace d’états des modèles SAN de cet exemple est atteignable (i.e., RSS = PSS). L’espace d’états atteignables du modèle est représenté par un nombre très petit de noeuds (dans ce cas,5noeuds). En comparant les mesures de performance de TAB. 6.5 et TAB. 6.6, on constate que les temps de la génération du RSS pour les modèles avec taux fonctionnels sont plus rapides que ceux des

modèles avec taux constants. Dans ce cas, le modèle SAN (taux fonctionnels) utilise seulement1 événe-ment synchronisant (e34) au lieu deP événements synchronisants (e34(1),e34(2), ...,e34(P)) du modèle SAN (taux constants). Par conséquence, le nombre de termes tensoriels du descripteur d’atteignabilité du modèle SAN (taux fonctionnels) est très inférieur au nombre de termes tensoriels du descripteur d’atteignabilité du modèle SAN (taux constants), ce qui diminue significativement la quantité de calcul.

P

Noeuds MDD Mémoire (bytes) Espace d’états Temps (sec)

Final Pic Final Pic RSS PSS RSS

K1=300 K2 =300 K3=600 K4 =600 2 5 21,050 9,352 25,082,174 6.55×1010 6.55×1010 6.12×100 3 5 21,653 9,356 25,406,745 9.82×1010 9.82×1010 6.66×100 4 5 22,256 9,360 25,643,920 1.31×1011 1.31×1011 7.39×100 5 5 22,859 9,364 25,914,851 1.64×1011 1.64×1011 8.24×100 15 5 28,889 9,404 28,444,965 4.91×1011 4.91×1011 1.39×101 25 5 34,919 9,444 31,263,383 8.18×1011 8.18×1011 2.10×101

TAB. 6.5 – Patron de Service Alterné (taux constants) - Algorithme BFS

P

Noeuds MDD Mémoire (bytes) Espace d’états Temps (sec) Final Pic Final Pic RSS PSS Fonctions RSS

K1=300 K2=300 K3=600 K4=600 2 5 19,852 9,352 19,272,713 6.55×1010 6.55×1010 1.21×105 3.86×100 3 5 19,852 9,356 19,296,793 9.82×1010 9.82×1010 1.21×105 3.87×100 4 5 19,852 9,360 19,320,881 1.31×1011 1.31×1011 1.21×105 3.90×100 5 5 19,852 9,364 19,344,977 1.64×1011 1.64×1011 1.29×105 3.99×100 15 5 19,852 9,404 19,586,377 4.91×1011 4.91×1011 1.91×105 4.18×100 25 5 19,852 9,444 19,828,577 8.18×1011 8.18×1011 2.41×10−5 4.34×100

TAB. 6.6 – Patron de Service Alterné (taux fonctionnels) - Algorithme BFS

Comme on peut l’observer dans TAB. 6.6, le temps pour générer le MDDF uncM ddf34 de la fonc-tionf34utilisée dans le modèle SAN (taux fonctionnels) est très petit (i.e., d’ordre de10−5). Le domaine de la fonctionf34 tient seulement compte de l’espace d’états de l’automateA(5) qui est dépendant du nombre de patrons de services (P) du modèle. Dans ce contexte, l’évaluation def34est faite pour lesP

états de l’automateA(5).

Dans les tableaux suivants (TAB. 6.7 et TAB. 6.8), on présente les mesures de performance obtenues en utilisant l’algorithme de Saturation pour les modèles SAN (taux constants) et modèles SAN (taux fonctionnels) respectivement.

Les temps pour la génération du RSS des modèles SAN (taux constants et fonctionnels) utilisant l’algorithme de Saturation sont très proches. Les modèles avec taux fonctionnels sont légèrement plus rapide que les modèles avec taux constants.

En regardant les mesures présentées dans cette section, on peut observer que les mesures obtenues pour les modèles SAN (taux fonctionnels) utilisant l’algorithme de Saturation sont les plus performants : on génère un grand espace d’états atteignables (e.g.,1011états) d’un modèle classique de réseaux de files d’attente très rapidement (proche de1seconde).