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