Ecriture de bases de connaissances en langage FIGARO :
introduction
Marc Bouissou
Plan
� Rappels : FIGARO 1 et FIGARO 0� Un petit exemple complet� Définition exhaustive de FIGARO 0
– 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 FIGAROdu système
FIGSEQGénérateur d’arbres FIGARO d'ordre 0
KB3
EB1 EB2
Séquences avec leurs
probabilités
FIGARO 1 = moyen de générer des modèles en FIGARO 0
Code de quantification
• coupes minimales• probabilité Evt Indés.• facteurs d’importance
Le langage FIGARO
� 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� 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
� 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
� Informations de paramétrage de l'interface graphique pour : – 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� Déduit uniquement de la description des types
et de la liste des objets avec leurs interfaces renseignées par l'IHM graphique
� Base de tous les traitementsLe 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' ;INTERACTIONSI 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’occurrenceTYPE 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
mudef_fonc =FAUX
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 ;
Description FIGARO produitepar l’IHM
(fichier systeme.fi)
Représentation graphiqueservant à la saisie
Instanciation à l’ordre 0 de l’objet a3OBJET 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_LOIgamma_indispo = 5e-005 ;
OCCURRENCExx1 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 ;INTERACTIONxx4 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 0ORDRE_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} ;
CONSTANTEc1 = ‘v1’ ;c2 = {expression constante} ;
INTERFACE Inter1 = obj1 obj2 ; (* facultatif : rappelé pour traçabilité *)
ATTRIBUT Att1 DOMAINE BOOLEEN = FAUX ; Att2 DOMAINE ENTIER = 1 ;Att3 DOMAINE REEL = 0.67E-4 ;Att4 DOMAINE ‘v1’ ‘v2’ ‘v3’ = ‘v2’ ;
EFFET Eff1;
OCCURRENCE {règles d’occurrence} INTERACTION {règles d’interaction}
NB : on peut avoirplusieurs paragraphesd’un type donné (p.e.)OCCURRENCE dansla description d’un objet(pratique pour utilisationde macros à l’ordre 1)mais chaque objet doit êtredé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 expressionsexpression := atome |
expression op expression |( expression )NON expression
op := ET | OU | + | - | * | / | = | < | > |<>| < = | >= |
atome := symbole | etat DE objet1chaine de caractères | ‘ouvert’nombre | 1.2E6VRAI | FAUX
Une expression constante a tous ses atomes constants
Compatibilité entre types d’expression
� Les règles de compatibilité sont intuitives� A noter :
– 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éenneIL_PEUT_SE_PRODUIRETRANSITION nom_tr1
LOI EXP ( expression numérique )PROVOQUE liste d’affectations ;
nom_règle (* type 2 : transitions instantanées *)SI expression booléenneIL_PEUT_SE_PRODUIRETRANSITION nom_tr1
LOI INS ( expression numérique )PROVOQUE liste d’affectations
OU_BIEN TRANSITION non_indisponibilite
PROVOQUE nom_tr2LOI INS ( expression numérique )PROVOQUE liste d’affectations
...OU_BIEN TRANSITION nom_trn
PROVOQUE liste d’affectations ;
Le mot-clé TRANSITIONpeut éventuellement être remplacé par DEFAILLANCE, ou REPARATION (aucune différence de fond)
liste d’affectations : série d’instructions du typevariable <-- expressionséparées par des virgules
Syntaxe des règles d’interaction
nom_règleETAPE nom_étapeSI expression booléenneALORS liste d’affectationsSINON 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 sanscondition.
Définition formelle de FIGARO 0
� 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 ����)
� 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
Y0
V0
L’initialisation de l’automate est faite uniquement par la valeur des attributs nonréinitialisables (ici, les variables Etat1 et Etat2 – les flux sont réinitialisés à "nul")
Y1
V1
RI
RI: règles d’interaction (automate déterministe)RO: règles d’occurrence (automate non déterministe)
Y0
V2
Y3
V3
RI
Y0
V4
Y5
V5
RI
Flux1 = nulEtat1 = ferme
Flux1 = CCEtat1= Demande_ouvertureFlux1 = OK
Etat1 = ferme
Flux2 = CCEtat2 = CCFlux2 = OK
Etat2 = OKFlux2 = nulEtat2 = OK
RORO
ROEtat2 <- CC
Un modèle FIGARO est un automate non
déterministe
Etat1 <- OI
Flux1 = nulEtat1 = OI
Flux2 = nulEtat2 = OK
Les étapes dans les R.I.
� R.I. : déduction de tous effets déterministes et instantanés après une transition
� Il est très utile de pouvoir organiser ces déductions en étapes. Ex :– 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
� 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
� 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� 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)
� Retour sur l'ensemble des possibilités pour les systèmes dynamiques. Contrôle de la cohérence
� Travail en commun sur une bdc de votre choix