Lorsque l'on modélise un système avec des arbres de défaillances, il est souvent nécessaire de réaliser différentes variantes afin de tenir compte des évolutions de définition du système ou bien pour comparer différentes solutions technologiques.
Arbre-Analyste propose une gestion de scénarios avancée qui permet de modifier de façon automatique la structure des arbres et les paramètres des évenements.
Les scénarios sont décrits par l'intermédiaire d'un langage simplifié et spécifique aux arbres de défaillances.
Voici deux exemples simples:
# Modification de la prise en compte des erreurs humaines E("E002").Probabilite("ERREUR_HUMAINE") E("E002").Description("Erreur lors du contrôle par un opérateur")
Le scénario ci-dessus change le paramètre “Probabilité” de l'événement de base “E002” ainsi que sa description.
# Ne plus prendre en compte les défaillances du contrôle-commande E("P012").Detacher("P009")
Le scénario ci-dessus détache la porte “P012”. De ce fait, toute la branche, à partir de cette porte, ne sera plus prise en compte lors des calculs.
Une instruction d'un scénario est constituée de deux parties:
Pour sélectionner un élément, il est nécessaire d'utiliser la fonction suivante:
Elle s'utilise en lui passant le nom de l'élément à sélectionner en paramètre.
# Exemple de sélection d'une porte dont le nom est CA_01 E("CA_01") # Exemple de sélection de l’événement de base EH001 E("EH001")
Les actions permettent de modifier un élément de l'arbre en passant par un sélecteur. Plusieurs actions peuvent être exécutées simultanément.
Afin d'expliquer et de capitaliser les scénarios, les commentaires sont supportés. Deux types de commentaires existent:
# Commentaire sur une seule ligne """ Voici un commentaire qui est écrit sur plusieurs lignes """
Les scénarios sont réalisés par l'intermédiaire d'une version du langage Python simplifiée et sécurisée. De ce fait, il est possible d'utiliser toute la puissance de la syntaxe du langage Python.
On peut, par exemple, utiliser des boucles:
# Changement de la probabilité des erreurs humaines. # Événements à modifier : EH1, EH2, EH3, EH4, EH5 for e in ("EH1","EH2","EH3","EH4","EH5"): E(e).Probabilite("EH_AVEC_CONTROLE")
On peut aussi utiliser des variables:
# Changement de la probabilité des erreurs humaines. # Événements à modifier : EH1 à EH100 soit 100 évènements de base # Initiation d'une variable compteur = 1 # On boucle afin de traiter les 100 évènements while compteur < 101: # Reconstitution du nom de l'élément à partir du compteur nom = "EH%i" % compteur # On traite chacun des évènements E(nom).Probabilite("EH_AVEC_CONTROLE") # On incrémente la variable afin de traiter l'évènement suivant compteur = compteur + 1
Voici un exemple pour attacher et pour détacher un ensemble de portes:
# On liste dans une variable l'ensemble des portes à attacher # avec le nom de la porte "parente" ("PORTE A ATTACHER", "PORTE PARENTE") listePortes = ( ("P002", "P053"), ("P064", "P063"), ("P072", "P070"), ("P132", "P128"), ("P152", "P134"), ("P210", "P200") ) # Rattacher chacune des portes à sa porte "parente" # On créé une boucle afin de traiter chacune des portes for porte, parent in listePortes: E(porte).Attacher(parent) # Détacher chacune des portes # On créé une boucle afin de traiter chacune des portes for porte, parent in listePortes: E(porte).Detacher(parent)