Systèmes à base de règles



Documents pareils
Les BRMS Business Rules Management System. Groupe GENITECH

Intelligence Artificielle Planification

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Intelligence artificielle appliquée à l automatique

Évaluation et implémentation des langages

Les structures de données. Rajae El Ouazzani

Tp 1 correction. Structures de données (IF2)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Cours 1: Java et les objets

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Chapitre VI- La validation de la composition.

Programmer en JAVA. par Tama

2. Comprendre les définitions de classes

Générer du code à partir d une description de haut niveau


3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Architecture des Systèmes d Information Architecture des Systèmes d Information

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Big Data et Graphes : Quelques pistes de recherche

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Cours de Master Recherche

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Manuel Viadeis CRM Connecteur intégration L100 étendue.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Théorie des Langages

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Bases Java - Eclipse / Netbeans

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Introduction à MATLAB R

Plan du cours. Historique du langage Nouveautés de Java 7

OASIS Date de publication

Pourquoi l apprentissage?

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Auto-évaluation Programmation en Java

Création d objet imbriqué sous PowerShell.

Algorithmique et Programmation, IMA

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

4. Groupement d objets

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Excel 2007 Niveau 3 Page 1

TP1 : Initiation à Java et Eclipse

Algorithmique et programmation : les bases (VBA) Corrigé

Arbres binaires de recherche

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

UE Programmation Impérative Licence 2ème Année

Cours d Algorithmique et de Langage C v 3.0

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Évaluation et optimisation de requêtes

Cours 1 : La compilation

Héritage presque multiple en Java (1/2)

Big Data et Graphes : Quelques pistes de recherche

OCL - Object Constraint Language

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

SQL Parser XML Xquery : Approche de détection des injections SQL

Raisonnement probabiliste

TP, première séquence d exercices.

Algorithmes récursifs

Java Licence Professionnelle CISII,

Formula Negator, Outil de négation de formule.

Cours de Génie Logiciel

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Préparation à l examen EFA en Macro

Système de contrôle du trafic d une ligne de métro Dossier de tests

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Algorithmique et structures de données I

OpenPaaS Le réseau social d'entreprise

Vérification et Validation

Mardi 9 septembre

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Génie Logiciel avec Ada. 4 février 2013

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

REALISATION d'un. ORDONNANCEUR à ECHEANCES

TP 1. Prise en main du langage Python

INITIATION AU LANGAGE JAVA

Cours en ligne Développement Java pour le web

as Architecture des Systèmes d Information

Systèmes d information et bases de données (niveau 1)

Grammaires d unification

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

MIS 102 Initiation à l Informatique

Utilisation d objets : String et ArrayList

Classe Interne, Anonyme & Enumération

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Gestion mémoire et Représentation intermédiaire

Programmation en Java IUT GEII (MC-II1) 1

La base de données XML exist. A. Belaïd

Programmation Par Contraintes

ALGORITHMIQUE ET PROGRAMMATION En C

Chapitre I Notions de base et outils de travail

Initiation. àl algorithmique et à la programmation. en C

Transcription:

Systèmes à base de règles 1/100

Introduction Méthode classique de représentation de connaissances (1943, règles de production). Souvent utilisé en IA et dans les systèmes experts (semblable aux raisonnements humains?) Forme des règles : SI ANTECEDENTS ALORS CONSEQUENTS ANTECEDENTS représente les prémisses, souvent une conjonction de conditions, parfois des négations ou des disjonctions. CONSEQUENTS représentent des actions à envisager. Souvent l ajout de nouveaux faits. Toujours sous forme de conjonction. La présence de règles de production n implique pas un raisonnement déductif. 2/100

Type de systèmes de règle 1. système d ordre 0 : valeurs vrais ou faux (logique propositionnelle). SI il y a douleur ET patient a plus de 40 ans ET... 2. système d ordre 0+ : valeurs discrètes et continues. SI symptôme = douleur ET age >= 40 ET... 3. système d ordre 1 : instantiation de variables (logique du premier ordre). SI x a une douleur ET x a l âge n ET n > 40 ET... On peut augmenter l expressivité des règles avec négations, quantificateurs, etc. en prenant en compte le fait que cela a un coût. 3/100

Cycle du moteur d inférence Évolution Exécution Restriction - sous-ensemble des règles - sous-ensemble des faits Filtrage détermination de l ensemble de conflits Résolution des conflits choix de la (ou des règles) Exécutions des actions des règles Base de faits et base de règles modifiées Actions vers l environnement 4/100

Grammaire classique pour des faits Trois ensembles : 1. ensemble N d objets (objet physique ou propriété ou but) ; 2. emsemble P de noms de propriétés sur ces objets ; 3. ensemble V de valeurs possibles sur ces propriétés (valeurs numériques, symboles, objets). Un propriété est un triplet (o, π, v). Souvent, on combine les propriétés sur un même objet : (o, π 1, v 1, π 2, v 2,...). Cette approche se rattache très bien aux langages orientés objets. 5/100

Evaluation : phase de restriction Sélection d un sous-ensemble de la base de faits et de la base de règles : basé sur la méta-connaissances ; choix d un domaine (sur certains faits) ; mise en valeur de certaines règles : ancienneté, complexité, valeur,... structuration des faits et règles, méta-règles. 6/100

Evaluation : phase de filtrage Pattern-matching. Détermination des règles à déclencher compatibles avec les faits sélectionnés. L ensemble de conflit est l ensemble des instantiations (correspondance entre les prémisses de règles et les faits associés). Très coûteux en temps de calcul (90 % du temps de calcul). 7/100

Evaluation : résolution de conflits Sélection parmi les règles compatibles (si il y en a) des règles qui doivent être déclenchées. Stratégies principales : élimination des règles utilisées sur une même donnée (voire de toutes les règles qui ont été déclenchées récemment) éviter les boucles ; utilisation des données ajoutées le plus récemment (exploration «en profondeur») ; utilisation des règles les plus spécifiques : celles qui possèdent le plus de conditions sont préférées aux règles générales ; règles avec les plus de conclusions ; détermination de l intérêt des conclusions. Stratégies utilisant des méta-règles, ou un algorithme du moteur d inférence. 8/100

Exécution 2 modes possibles : 1. Régime de contrôle irrévocable ; 2. Régime de contrôle par tentative : retour arrière possible remplacement de règles par d autres. 9/100

Chaînage avant DEBUT FIN phase de selection phase de filtrage TANTQUE ensemble des règles applicables non vide ET problème non résolu FAIRE résolution de conflits modification des faits et règles applicables FINTANTQUE 10/100

Chaînage avant Inconvénients : 1. déclenche toutes les règles ; 2. demande beaucoup de faits initiaux (manque d interactivité) ; 3. explosion combinatoire possible (en largeur). 11/100

Exemple Fait initiaux : {B,C}, but : H. Règles : 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

Chaînage arrière DEBUT FIN Phase de selection ; phase de filtrage SI ensemble de règles applicable vide ALORS questionner utilisateur SINON TANTQUE but non résolu ET il reste des règles sélectionnées FAIRE Résolution de conflits Ajouter les sous-buts Résoudre les sous-buts si possible FINTANTQUE 13/100

Chaînage arrière Algorithme plus compliqué (construction d un arbre ET/OU). Système interactif à la demande (distinguer faits demandables et non demandables). Arbre de recherche plus petit. Risque de bouclage. 14/100

Langages avec systèmes de règles Langages à chaînage arrière : dérivés Prolog... Langages à chaînage avant : par exemple CLIPS, Jess, drools... Selon les cas, on parle d expert system shells ou de business rules management systems (BRMS), ou de production rule systems... 15/100

Drools Drools ou JBoss Rules. en Java ; gratuit, code source ouvert ; intégrable dans Eclipse. Fondé sur la spécification JSR-94 qui décrit l API entre Java et les systèmes de règles. 16/100

Bases de Drools 1. Des fichiers java : définition des classes ; analyse et compilation des fichiers drools ; création, initialisation de la base de faits ; lancement des règles. 2. Un fichier Drools (.drl) (un format XML existe aussi) : description des règles. 17/100

Drools : faits Objets (beans) ajoutés 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 ()); 18/100

Ajouter des faits Ajouter un fait : dans du code Java : interface WorkingMemoryEntryPoint : insert(object) (retourne un FactHandle). dans du code Drools (partie droite des règles) : rule "Ajouter un etudiant" when then insert (new Etudiant ()); // macro vers l interface KnowledgeHelpe end Note : on ne peut pas insérer deux fois un même objet (mais selon la configuration générale, on peut insérer 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 ( ) // préfixer les déclarations par $ est optionnel then retract ($e); // encore un fois, macro 20/100

Modifier un fait dans du code Java : après modification de l objet, update(facthandle,object) (interface WorkingMemoryEntryPoint dans du code Drools : rule "Modifier le nom" when $e : Etudiant ( ) then $e.setname ("Raoul"); update ( e ); // macro end L appel à update est nécessaire pour assurer la modification des règles activables. 21/100

Règles Syntaxe : rule <nom> <attributs>* when <premisses>* (LHS) then <actions>* (RHS) end Exemple : rule "J ai vu un etudiant" when e : Etudiant ( ) then System.out.println ("J ai vu " + e.getname() + " aujourd hui."); end 22/100

LHS : contraintes Contraintes : when $e : Etudiant ( name == "machin" ) then... end L utilisation de name est subordonnée à l existence du getter getname. On peut utiliser aussi des «accesseurs» (méthodes sans paramètres), sans mettre les parenthèses (eg calculeage ()). Plusieurs contraintes : when $e : Etudiant ( name == "machin" calculeage > 25 ) then... 23/100

LHS : déclaration de variables dans les faits when $e1 : Etudiant ( $age : calculeage > 20 ) $e2 : Etudiant ( calculeage > $age ) then 24/100

LHS : autres dans les contraintes (non exhaustif) Connecteurs logiques : &&,. Opérateurs : <, <=, >, >=, ==,!=, contains, not contains, memberof, not memberof, matches, not matches, soundslike. Type des valeurs pour les restrictions litérales : numérique, date, chaîne, booléen, enum. On peut mettre des expressions entre parenthèses : Person( girlage : age, sex == "F" ) Person( age == ( girlage + 2) ), sex == "M" ) cf la doc en ligne de Drools : (http://downloads.jboss.com/drools/docs/5.0.1.26597. FINAL/drools-expert/html/index.html). 25/100

LHS : autres éléments conditionnels Quelques exemples : eval( isvalid(p1, p2) ) // evaluation de code Java (peu optimal car variab not Etudiant( ) // négation d une contrainte Personne () or Etudiant () // disjonction, produit deux sous-règles exists Etudiant () // règle activée _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 (créer/utiliser des collections de faits), accumulate (itération sur une collection de faits). Cf la doc en ligne de Drools. 26/100

RHS Liste d actions à exécuter (en Java). Inadapté pour mettre des structures de contrôle (hors séquence) : les actions doivent rester élémentaires. Quelques macros supplémentaires gérer la base de faits : insert, retract, update, insertlogical (voir plus loin). 27/100

Algorithme de Rete Principe : calcul de l ensemble de conflit plus vite, en prenant plus de mémoire. Deux idées principales : 1. Les prémisses de nombreuses règles 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

RETE : vue de haut niveau Création et mise à jour d un «réseau», graphe orienté acyclique avec une racine. chaque nœud est un «pattern» on garde pour chaque nœud les informations pour satisfaire le «pattern» (faits, relations entre variables et valeurs) chaque chemin depuis la racine représente d abord un prémisse de règles, puis la conjonction de ces prémisses pour arriver à une règles. 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 30/100

Réseau début Animal type = CAT type = DOG size = LAR size = SMA hair = MED C1 Join (color = color hair!= hair) Join (color = color) Join (color!= color, size = size, hair = hair) Regle 2 Regle 1 31/100

Exemple avec base de faits s.insert (new Animal (Type.CAT,Col.BRO,Siz.LAR,Hair.SHO)); // a1 s.insert (new Animal (Type.CAT,Col.WHI,Siz.LAR,Hair.SHO)); // a2 s.insert (new Animal (Type.CAT,Col.WHI,Siz.SMA,Hair.SHO)); // a3 s.insert (new Animal (Type.DOG,Col.BRO,Siz.MED,Hair.MED)); // a4 s.insert (new Animal (Type.CAT,Col.BRO,Siz.SMA,Hair.MED)); // a5 s.insert (new Animal (Type.DOG,Col.BRO,Siz.SMA,Hair.SHO)); // a6 s.insert (new Animal (Type.DOG,Col.WHI,Siz.MED,Hair.MED)); // a7 s.insert (new Animal (Type.DOG,Col.BRO,Siz.LAR,Hair.MED)); // a8 s.insert (new Animal (Type.DOG,Col.WHI,Siz.LAR,Hair.MED)); // a9 32/100

Réseau début {a1,...,a9} Animal {a1,a2,a3,a5} type = CAT type = DOG {a4,a6,a7,a8,a9} size = LAR size = SMA hair = MED {a1,a2} {a3,a5} {a4,a7,a8,a9} {a3,a5} C1 { (a1,a5) } Join Join (color = color) (color = color { (a3,a7) hair!= hair) (a3,a9) (a5,a4) Regle 2 (a5,a8) } Regle 1 Join (color!= color, size = size, hair = hair) { (a5,a4,a7) (a5,a8,a9) } 33/100

Salience : priorité des règles Un attribut important pour les règles, la salience : rule "les oiseaux volent" when $o : Oiseau ( ) then System.out.println ($o.getname() + " peut voler."); retract ( $o ); end rule "les manchots ne volent pas" salience 10 when $o : Oiseau ( type = "Manchot" ) then System.out.println ($o.getname() + " ne peut pas voler."); retract ( $o ); end 34/100

Salience (bis) La salience est un moyen de hiérarchiser les règles prioritaires. Ne pas abuser, par exemple 4 niveaux : 1. règles de réduction des hypothèses ; 2. connaissance du domaine (inférences) ; 3. interrogation de l utilisateur ; 4. transitions de phase (d étapes du programme). D autres méthodes (partition de l agenda, flot de règles) sont possibles. 35/100

Stratégies de Drools Pour des règles de même salience : Stratégies en profondeur (règles activées le plus récemment, stratégie par défaut en Drools), en largeur (règles activées le plus anciennement). Stratégies de simplicité ou complexité. Stratégie aléatoire. et d autres... 36/100