Construire des modèles dynamiques avec le langage FIGARO

Transcription

Construire des modèles dynamiques avec le langage FIGARO
Ecriture de bases de connaissances
en langage FIGARO :
introduction
Marc Bouissou
Plan
Rappels : FIGARO 1 et FIGARO 0
n Un petit exemple complet
n Définition exhaustive de FIGARO 0
n
–
–
La syntaxe
Définition formelle de la sémantique
Rappel : Principes de KB3 et FIGSEQ
Base de connaissances
• Classes de composants
génériques en langage
FIGARO d'ordre 1
Modèle FIGARO
du système
Générateur d’arbres
KB3
EB1
EB2
Code de quantification
• coupes minimales
• probabilité Evt Indés.
• facteurs d’importance
FIGARO d'ordre 0
FIGSEQ
Séquences avec
leurs
probabilités
FIGARO 1 = moyen de
générer des modèles
en FIGARO 0
Le langage FIGARO
n
n
Développé en 1990
Validé par des centaines d’études de systèmes complexes
Caractéristiques
Orienté-objet (héritage multiple, objets =
instances de classes génériques)
– Comportement dynamique décrit par des règles -> facile à
comprendre
–
n
De nombreuses bases de connaissances sont disponibles
Bases abstraites : Diagfia, Markov, Petri, Digraph, BDMP...
– Bases «métier» : Hydrau, Iftac, Elec, Opale, Res_tel...
– La plus complexe : Topase = 27000 lignes de FIGARO d’ordre 1
–
Objectifs du langage FIGARO
n
n
n
n
n
donner un formalisme approprié pour développer des
bases de connaissance (avec des descriptions
génériques de composants)
être plus général que tous les modèles classiques de
fiabilité
faire le meilleur compromis entre puissance de
modélisation (ou généralité) et possibilités de traitement
des modèles
être aussi lisible que possible
être facilement associé à des représentations graphiques
Contenu d'une base de connaissances
Modèles génériques de comportement des
composants de la bdc en langage FIGARO
n Informations de paramétrage de l'interface
graphique pour :
n
–
–
Saisie des modèles (contraintes, instructions de
remplissage des interfaces)
Exploitation en simulation interactive (couleurs,
changements de textes et icônes)
Contenu d'un modèle FIGARO 0
Purement textuel
n Déduit uniquement de la description des types
et de la liste des objets avec leurs interfaces
renseignées par l'IHM graphique
n Base de tous les traitements
n
Le langage FIGARO 0 a été conçu de façon à être un "invariant"
de l'atelier, défini une fois pour toutes, simple, facile à comprendre et à
traiter par les algorithmes de KB3, Figseq, etc…
BDC pour réseaux télécoms maillés
(complète)
TYPE
composant ;
PANNE
indisponibilite ;
PARAMETRE_LOI
gamma_indispo PAR_DEFAUT 0.00005 ;
EFFET
relie LIBELLE "%OBJET connecté à une source" ;
ATTRIBUT indispo_testee DOMAINE BOOLEEN PAR_DEFAUT FAUX ;
OCCURRENCE
SI NON indispo_testee
IL_PEUT_SE_PRODUIRE
DEFAILLANCE indisponibilite
LOI INS ( gamma_indispo )
PROVOQUE indispo_testee <-- VRAI
OU_BIEN TRANSITION non_indisponibilite
PROVOQUE indispo_testee <-- VRAI ;
(*--------------------------------------------------------*)
TYPE noeud SORTE_DE composant ;
CONSTANTE
fonction DOMAINE 'source' 'but' 'intermediaire'
PAR_DEFAUT 'intermediaire' ;
INTERACTION
SI MARCHE ET fonction ='source' ALORS relie ;
TYPE arete_uni_dir SORTE_DE composant ;
INTERFACE
depart GENRE noeud CARDINAL 1 ;
arrivee GENRE noeud CARDINAL 1 ;
INTERACTION
SI MARCHE ET relie DE depart ALORS relie DE arrivee;
(*--------------------------------------------------------*)
TYPE arete_bi_dir SORTE_DE composant ;
INTERFACE
extremite GENRE noeud CARDINAL 2 ;
INTERACTION
SI MARCHE
ET ( IL_EXISTE x UNE extremite TELLE_QUE relie DE x )
ET ( QQSOIT x UNE extremite ON_A MARCHE DE x )
ALORS POUR_TOUT y UNE extremite FAIRE relie DE y ;
Variante pour les règles
d’occurrence
TYPE
composant ;
PANNE
def_fonc ;
PARAMETRE_LOI
lambda PAR_DEFAUT 0.00005 ;
mu
PAR_DEFAUT 0.1 ;
EFFET
relie LIBELLE "%OBJET connecté à une source" ;
OCCURRENCE
IL_PEUT_SE_PRODUIRE
DEFAILLANCE def_fonc
LOI EXP ( lambda ) ;
IL_PEUT_SE_PRODUIRE
REPARATION rep
REPARE def_fonc
LOI EXP ( mu ) ;
lambda
def_fonc =
FAUX
mu
def_fonc =
VRAI
Grâce à l’utilisation du mot-clé MARCHE, il n’y a rien d’autre à
changer pour obtenir une nouvelle bdc (malgré le changement du
nom de la panne)
Un exemple de réseau
OBJET n1 EST_UN noeud ;
OBJET n2 EST_UN noeud ;
OBJET source EST_UN noeud ;
CONSTANTE fonction = 'source';
OBJET a1 EST_UN arete_uni_dir ;
INTERFACE
depart = source ;
arrivee = n1 ;
OBJET a2 EST_UN arete_uni_dir ;
INTERFACE
depart = source ;
arrivee = n2 ;
OBJET a3 EST_UN arete_bi_dir ;
INTERFACE extremite = n1 n2 ;
Représentation graphique
servant à la saisie
Description FIGARO produite
par l’IHM
(fichier systeme.fi)
Instanciation à l’ordre 0 de l’objet a3
OBJET a3 EST_UN arete_bi_dir ;
INTERFACE extremite = n1 n2 ;
ATTRIBUT indispo_testee DOMAINE BOOLEEN = FAUX ;
(* PANNE *) indisponibilite DOMAINE BOOLEEN = FAUX ;
EFFET
relie LIBELLE "%OBJET connecté à une source" ;
PARAMETRE_LOI
gamma_indispo = 5e-005 ;
OCCURRENCE
xx1
SI ( indispo_testee DE a3 = FAUX ) ET ( indisponibilite DE a3 = FAUX )
IL_PEUT_SE_PRODUIRE
DEFAILLANCE indisponibilite
LOI INS ( gamma_indispo DE a3 )
PROVOQUE indisponibilite DE a3<--VRAI, indispo_testee DE a3<-- VRAI
OU_BIEN
TRANSITION non_indisponibilite
PROVOQUE indispo_testee DE a3 <-- VRAI ;
INTERACTION
xx4
ETAPE etape_par_defaut
SI ( ( ( ( indisponibilite DE a3 = FAUX ) ) ) ET
( ( relie DE n1 = VRAI ) OU ( relie DE n2 = VRAI ) ) ) ET
( ( ( ( indisponibilite DE n1 = FAUX ) ) ) ET ( ( ( indisponibilite DE n2 = FAUX ) ) ) )
ALORS relie DE n1 <-- VRAI , relie DE n2 <-- VRAI ;
Eléments d’un modèle FIGARO d’ordre 0
ORDRE_DES_ETAPES E1 ; E2 ; .....En ;
TYPE t1 ; (* simple déclaration des types, pour traçabilité / ordre 1 *)
TYPE tp ;
GLOBAL (* même type de contenu que pour un objet standard *)
OBJET o1 EST_UN t1 t2; (* facultatif : rappelé pour traçabilité / ordre 1 *)
PARAMETRE_LOI
p1 = 5e-005 ;
p2 = {expression numérique constante} ;
CONSTANTE
c1 = ‘v1’ ;
c2 = {expression constante} ;
INTERFACE Inter1 = obj1 obj2 ; (* facultatif : rappelé pour traçabilité *)
ATTRIBUT
EFFET
Att1
Att2
Att3
Att4
DOMAINE BOOLEEN = FAUX ;
DOMAINE ENTIER = 1 ;
DOMAINE REEL = 0.67E-4 ;
DOMAINE ‘v1’ ‘v2’ ‘v3’ = ‘v2’ ;
Eff1;
OCCURRENCE {règles d’occurrence}
INTERACTION {règles d’interaction}
NB : on peut avoir
plusieurs paragraphes
d’un type donné (p.e.)
OCCURRENCE dans
la description d’un objet
(pratique pour utilisation
de macros à l’ordre 1)
mais chaque objet doit être
déclaré une seule fois
Pour les attributs, la facette = qui définit l’état
initial de l’attribut par une expression constante
peut être remplacée par une facette
REINITIALISATION suivie d’une expression
constante
Les expressions
expression := atome |
expression op expression |
( expression )
NON expression
op := ET | OU |
+|- |*|/|
= | < | > |<>| < = | >= |
atome := symbole |
chaine de caractères |
nombre |
VRAI | FAUX
Une
expression
constante a
tous ses
atomes
constants
etat DE objet1
‘ouvert’
1.2E6
Compatibilité entre types d’expression
Les règles de compatibilité sont intuitives
n A noter :
n
–
–
Une chaîne de caractères ne peut aucunement être
transformée en valeur numérique
Une expression booléenne peut être implicitement
considérée comme un réel ce qui permet d'écrire par
exemple :
taux_def ß 0.01 * (temperature = 'OK' ) +
0.1 * (temperature = 'elevee' )
Syntaxe des règles d’occurrence (2 types)
nom_règle (* type 1 : transitions temporisées *)
SI expression booléenne
IL_PEUT_SE_PRODUIRE
TRANSITION nom_tr1
LOI EXP ( expression numérique )
PROVOQUE liste d’affectations ;
nom_règle (* type 2 : transitions instantanées *)
SI expression booléenne
IL_PEUT_SE_PRODUIRE
TRANSITION nom_tr1
LOI INS ( expression numérique )
PROVOQUE liste d’affectations
OU_BIEN
TRANSITION non_indisponibilite
PROVOQUE nom_tr2
LOI INS ( expression numérique )
PROVOQUE liste d’affectations
...
OU_BIEN
TRANSITION nom_trn
PROVOQUE liste d’affectations ;
Le mot-clé TRANSITION
peut éventuellement être
remplacé par DEFAILLANCE,
ou REPARATION (aucune
différence de fond)
liste d’affectations : série
d’instructions du type
variable <-- expression
séparées par des virgules
Syntaxe des règles d’interaction
nom_règle
ETAPE nom_étape
SI expression booléenne
ALORS liste d’affectations
SINON liste d’affectations
La facette SINON est facultative
On peut avoir une règle ne contenant qu’une facette
ALORS : c’est une liste d’affectations systématique, faite sans
condition.
Définition formelle de FIGARO 0
n
n
n
Sémantique d’un modèle FIGARO 0 =
automate non déterministe
Définissable à l’aide de notions mathématiques
élémentaires : ensembles, fonctions, vecteur d’état…
(Cf. communications au lm13)
La définition formelle permet :
–
–
de vérifier le respect de cette sémantique par un outil
(FIGSEQ…)
de voir où les problèmes d’incohérence peuvent surgir
Sémantique du langage FIGARO 0
Flux1 = nul
Etat1 = ferme
Flux1 = OK
Etat1 = ferme
Flux2 = nul
Etat2 = OK
Y0
RI
Y0
Flux2 = OK
Etat2 = OK
Y1
Etat2 <- CC
RI
Flux1 = CC
Etat1= Demande_ouverture
Y3
Flux2 = CC
Etat2 = CC
V3 RO
V2
RI: règles d’interaction
(automate déterministe)
RO: règles d’occurrence
(automate non déterministe)
RO
RO
V0
V1
Etat1 <- OI
Y0
RI
Y5
Flux1 = nul
Etat1 = OI
V4
V5
Flux2 = nul
Etat2 = OK
Un modèle FIGARO
est un automate non
déterministe
L’initialisation de l’automate est faite uniquement par la valeur des attributs non
réinitialisables (ici, les variables Etat1 et Etat2 – les flux sont réinitialisés à "nul")
Les étapes dans les R.I.
R.I. : déduction de tous effets déterministes et
instantanés après une transition
n Il est très utile de pouvoir organiser ces
déductions en étapes. Ex :
n
–
–
n
propagation d’un flux PUIS
décisions d’ouverture/fermeture de vannes
L’état du modèle en sortie d’une étape sert
d’entrée à l’étape suivante
Les groupes de règles
n
n
n
n
n
Objectif : permettre plusieurs utilisations d’un modèle,
saisi une seule fois
Chaque règle peut être associée à un ou plusieurs
groupes (repérés par des noms)
Au niveau de l’exploitation d’un modèle en FIGARO
0, on peut sélectionner les groupes à prendre en compte
Les groupes TOUT et SANS_NOM sont ajoutés
systématiquement à la liste déclarée explicitement
Pas supportés par la V2 de KB3
Possibilités du langage FIGARO
n
Le langage est très flexible
–
–
Avantage : plus général que la grande majorité des
formalismes qui pourraient être utilisés pour le
même type d'applications (y compris AltaRica)
Inconvénient : nécessité de travailler suivant une
méthodologie précise en n'employant que telle ou
telle partie des possibilités en fonction des objectifs
à atteindre
Suite de la formation…
Syntaxe complète de FIGARO d'ordre 1
n Paramétrage de l'interface graphique associé à
une BDC (Ces deux premiers points seront vus
pour des bdc destinées uniquement à produire
des arbres de défaillances)
n Retour sur l'ensemble des possibilités pour les
systèmes dynamiques. Contrôle de la cohérence
n Travail en commun sur une bdc de votre choix
n