Modéliser une activité et ses ressources

Chapitre 3 sur 10. Passer d’un énoncé métier à un réseau cohérent et représenter correctement l’occupation d’un agent.

1. Fixer les hypothèses métier

Avant de dessiner, écrire ce que l’on cherche à vérifier. Ici : « Deux traitements ne doivent pas utiliser simultanément le même agent. » On suppose un agent unique, une demande initiale, aucun abandon et aucune panne. Une durée de traitement n’est pas fournie : on étudie les ordres possibles, pas le nombre de minutes écoulées.

Chaque place doit avoir une signification précise et une unité. Attente compte des demandes ; Libre compte des agents disponibles. Additionner ces deux nombres n’a pas nécessairement de sens métier. Les invariants du chapitre 8 conserveront séparément les demandes et les ressources.

2. Séparer démarrage et achèvement

Commencer prend une demande et un agent. Le jeton En cours signifie qu’un traitement est engagé et qu’il occupe cet agent. Terminer consomme cette occupation et rend la ressource. La place En cours permet donc d’observer une opération entre son début et sa fin.

Trois états de la même ressource : disponible, occupée, puis disponible. Les rectangles sont des états illustratifs, pas des places de réseau de Pétri.
Trois états de la même ressource : disponible, occupée, puis disponible. Les rectangles sont des états illustratifs, pas des places de réseau de Pétri. Cliquer pour agrandir.

Si l’agent était rendu immédiatement par Commencer, une autre demande pourrait commencer alors que la première serait encore En cours. Le dessin paraîtrait plausible, mais ne décrirait plus une ressource occupée pendant le traitement. Le choix des entrées et sorties détermine la propriété obtenue.

3. Passer à deux demandes

Conservons exactement les mêmes arcs et remplaçons M₀ par (2,1,0,0). Après Commencer, on obtient (1,0,1,0). Une demande reste en attente, mais Commencer est bloquée par Libre = 0. Après Terminer : (1,1,0,1). La seconde demande peut alors démarrer.

La séquence complète Commencer, Terminer, Commencer, Terminer atteint (0,1,0,2). À chaque instant, Libre + En cours = 1. Cette relation exprime que l’agent est soit disponible, soit occupé, mais ne disparaît pas et ne se duplique pas.

4. Valider le modèle avec un scénario interdit

Une relecture utile tente de produire une situation interdite, par exemple En cours = 2 avec un seul agent. Le réseau correct ne peut pas l’atteindre. En retirant l’arc Libre → Commencer, on supprime précisément la condition qui empêchait cette erreur.

Ensuite, vérifier la fin normale : toutes les demandes sont terminées et l’agent est rendu. Une simulation heureuse ne suffit pas à prouver l’absence d’erreur ; elle vérifie seulement un chemin. L’exploration exhaustive du chapitre 6 considérera tous les chemins du petit modèle.

Une place représente un état observable ou un stock ; une transition représente un changement. Pour une activité avec occupation, modéliser son début, son état en cours et sa fin.

Trois exercices corrigés

Exercice 1 : Deux demandes, une ressource

Depuis (2,1,0,0), peut-on franchir Commencer deux fois de suite ?

Voir la correction de l’exercice 1

Non. Le premier franchissement donne (1,0,1,0). La composante Libre vaut alors zéro, ce qui bloque le second départ, même si une demande attend encore.

Exercice 2 : Une ressource oubliée

Terminer produit seulement un jeton Terminé et ne rend pas Libre. Que se passe-t-il avec deux demandes ?

Voir la correction de l’exercice 2

Après Commencer puis Terminer, le marquage devient (1,0,0,1). La demande restante ne peut pas démarrer : l’agent a disparu du modèle. Ce blocage est une erreur de modélisation, pas une fin normale.

Exercice 3 : Ajouter un second agent

Avec deux demandes et deux agents, donnez le marquage après deux Commencer dans le modèle d’origine.

Voir la correction de l’exercice 3

Le marquage initial est (2,2,0,0). Deux départs successifs donnent (1,1,1,0), puis (0,0,2,0). L’invariant de ressource vaut maintenant Libre + En cours = 2 : la limite dépend aussi du marquage initial.

Références pour approfondir

Introduction universitaire PetriSim, Javier Esparza : notes universitaires sur les réseaux de Pétri. Cours, cas et figures rédigés pour PandaCodeur ; aucune figure universitaire reproduite. Les exemples NKILItech sont fictifs.