Professional Documents
Culture Documents
1/100
Introduction
Mthode classique de reprsentation de connaissances (1943, rgles de production). Souvent utilis en IA et dans les systmes experts (semblable aux raisonnements humains ?) Forme des rgles : SI ANTECEDENTS ALORS CONSEQUENTS ANTECEDENTS reprsente les prmisses, souvent une conjonction de conditions, parfois des ngations ou des disjonctions. CONSEQUENTS reprsentent des actions envisager. Souvent lajout de nouveaux faits. Toujours sous forme de conjonction. La prsence de rgles de production nimplique pas un raisonnement dductif.
2/100
3/100
volution
Restriction - sous-ensemble des rgles - sous-ensemble des faits Filtrage dtermination de lensemble de conits Rsolution des conits choix de la (ou des rgles)
Excution
Excutions des actions des rgles
4/100
5/100
6/100
Dtermination des rgles dclencher compatibles avec les faits slectionns. Lensemble de conit est lensemble des instantiations (correspondance entre les prmisses de rgles et les faits associs). Trs coteux en temps de calcul (90 % du temps de calcul).
7/100
8/100
Excution
2 modes possibles : 1. Rgime de contrle irrvocable ; 2. Rgime de contrle par tentative : retour arrire possible remplacement de rgles par dautres.
9/100
Chanage avant
DEBUT phase de selection phase de ltrage TANTQUE ensemble des rgles applicables non vide ET problme non rsolu FAIRE rsolution de conits modication des faits et rgles applicables FINTANTQUE FIN
10/100
Chanage avant
Inconvnients : 1. dclenche toutes les rgles ; 2. demande beaucoup de faits initiaux (manque dinteractivit) ; 3. explosion combinatoire possible (en largeur).
11/100
Exemple
Fait initiaux : {B,C}, but : H. Rgles : Si B et D et E alors F. Si G et D alors A. Si C et F alors A. Si B alors X. Si D alors E. Si X et A alors H. Si C alors D. Si X et C alors A. Si X et B alors D.
12/100
Chanage arrire
DEBUT Phase de selection ; phase de ltrage SI ensemble de rgles applicable vide ALORS questionner utilisateur SINON TANTQUE but non rsolu ET il reste des rgles slectionnes FAIRE Rsolution de conits Ajouter les sous-buts Rsoudre les sous-buts si possible FINTANTQUE FIN
13/100
Chanage arrire
Algorithme plus compliqu (construction dun arbre ET/OU). Systme interactif la demande (distinguer faits demandables et non demandables). Arbre de recherche plus petit. Risque de bouclage.
14/100
15/100
16/100
Bases de Drools
1. Des chiers java : dnition des classes ; analyse et compilation des chiers drools ; cration, initialisation de la base de faits ; lancement des rgles. 2. Un chier Drools (.drl) (un format XML existe aussi) : description des rgles.
17/100
Drools : faits
Objets (beans) ajouts dans la base de faits . public static class Etudiant { private string name; public Etudiant () { } public string getName () { return this.name; } public void setName (string name) { this.name = name; } } ... session.insert (new Etudiant ()); ...
Ingnierie des connaissances (Master 2 ISC)
18/100
Ajouter un fait : dans du code Java : interface WorkingMemoryEntryPoint : insert(Object) (retourne un FactHandle). dans du code Drools (partie droite des rgles) : rule "Ajouter un etudiant" when then insert (new Etudiant ()); // macro vers linterface KnowledgeHelpe end Note : on ne peut pas insrer deux fois un mme objet (mais selon la conguration gnrale, on peut insrer ou non deux objets gaux ).
19/100
Retirer un fait
Retirer un fait : dans du code Java : retract(FactHandle). dans du code Drools : rule "Retirer un etudiant" when $e : Etudiant ( ) // prfixer les dclarations par $ est optionnel then retract ($e); // encore un fois, macro
20/100
Modier un fait
dans du code Java : aprs modication de lobjet, update(FactHandle,Object) (interface WorkingMemoryEntryPoint dans du code Drools : rule "Modifier le nom" when $e : Etudiant ( ) then $e.setName ("Raoul"); update ( e ); // macro end Lappel update est ncessaire pour assurer la modication des rgles activables.
21/100
Rgles
Syntaxe : rule <nom> <attributs>* when <premisses>* (LHS) then <actions>* (RHS) end Exemple : rule "Jai vu un etudiant" when e : Etudiant ( ) then System.out.println ("Jai vu " + e.getName() + " aujourdhui."); end
Ingnierie des connaissances (Master 2 ISC)
22/100
LHS : contraintes
Contraintes : when $e : Etudiant ( name == "machin" ) then ... end Lutilisation de name est subordonne lexistence du getter getName. On peut utiliser aussi des accesseurs (mthodes sans paramtres), sans mettre les parenthses (eg calculeAge ()). Plusieurs contraintes : when $e : Etudiant ( name == "machin" then ...
Ingnierie des connaissances (Master 2 ISC)
|| calculeAge > 25 )
23/100
24/100
25/100
not Etudiant( ) // ngation dune contrainte Personne () or Etudiant () // disjonction, produit deux sous-rgles
exists Etudiant () // rgle active _une_ fois si on a un ou plusieurs tudi On trouve aussi forall (teste si une condition implique les autres), from (pour chercher au-del de la base de fait), collect (crer/utiliser des collections de faits), accumulate (itration sur une collection de faits). Cf la doc en ligne de Drools.
26/100
RHS
Liste dactions excuter (en Java). Inadapt pour mettre des structures de contrle (hors squence) : les actions doivent rester lmentaires. Quelques macros supplmentaires grer la base de faits : insert, retract, update, insertLogical (voir plus loin).
27/100
Algorithme de Rete
Principe : calcul de lensemble de conit plus vite, en prenant plus de mmoire. Deux ides principales : 1. Les prmisses de nombreuses rgles sont communs, on peut donc mettre des tests communs (ressemblance structurelle). 2. La base de travail ne change pas beaucoup entre deux cycles du moteur (redondance temporelle).
28/100
29/100
Exemple
Avec la syntaxe de drools : rule "regle1" when Animal (type == Type.CAT, $c : color, size == Siz.SMA, $h : hair) Animal (type == Type.DOG, color == $c, $q : size, hair == Hair.MED) Animal (type == Type.DOG, color != $c, size == $q , hair == $h) then ... end rule "regle2" when Animal (type == Type.CAT, $c : color, size == Siz.SMA, $h : hair) Animal (type == Type.CAT, color == $c, size == Siz.LAR, hair != $h) then ... end
Ingnierie des connaissances (Master 2 ISC)
30/100
Rseau
dbut
size = LAR
size = SMA
hair = MED
C1 Join (color = color) Join (color != color, size = size, hair = hair) Regle 1
31/100
32/100
Rseau
dbut
{a3,a5}
C1 Join (color = color) { (a3,a7) (a3,a9) (a5,a4) (a5,a8) } Join (color != color, size = size, hair = hair) { (a5,a4,a7) (a5,a8,a9) }
{ (a1,a5) }
Regle 1
33/100
Salience (bis)
La salience est un moyen de hirarchiser les rgles prioritaires. Ne pas abuser, par exemple 4 niveaux : 1. rgles de rduction des hypothses ; 2. connaissance du domaine (infrences) ; 3. interrogation de lutilisateur ; 4. transitions de phase (dtapes du programme). Dautres mthodes (partition de lagenda, ot de rgles) sont possibles.
35/100
Stratgies de Drools
Pour des rgles de mme salience : Stratgies en profondeur (rgles actives le plus rcemment, stratgie par dfaut en Drools), en largeur (rgles actives le plus anciennement). Stratgies de simplicit ou complexit. Stratgie alatoire. et dautres...
36/100