Une introduction à Jrules



Documents pareils
Programmer en JAVA. par Tama

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

as Architecture des Systèmes d Information

PROGRAMMATION PAR OBJETS

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

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

Cours 1: Java et les objets

TP1 : Initiation à Java et Eclipse

TP1. Outils Java Eléments de correction

Corrigé des exercices sur les références

Programme Compte bancaire (code)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Une introduction à Java

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

Programmation par les Objets en Java

Java Licence Professionnelle CISII,

Corrigés des premiers exercices sur les classes

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Langage Java. Classe de première SI

Premiers Pas en Programmation Objet : les Classes et les Objets

Auto-évaluation Programmation en Java

Environnements de développement (intégrés)

ACTIVITÉ DE PROGRAMMATION

Généralités sur le Langage Java et éléments syntaxiques.

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

RMI le langage Java XII-1 JMF

Package Java.util Classe générique

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

Utilisation d objets : String et ArrayList

OpenPaaS Le réseau social d'entreprise

Initiation à JAVA et à la programmation objet.

Java Licence Professionnelle CISII,

TD/TP PAC - Programmation n 3

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Licence professionnelle CISII,

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Synchro et Threads Java TM

Projet de programmation (IK3) : TP n 1 Correction

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction au langage Java

INITIATION AU LANGAGE JAVA

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

TD/TP PAC - Programmation n 3

LOG4430 : Architecture logicielle et conception avancée

Programmation Objet Java Correction

Classe Interne, Anonyme & Enumération

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Un ordonnanceur stupide

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

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

Utiliser Java sans BlueJ

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

TD3: tableaux avancées, première classe et chaînes

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Threads. Threads. USTL routier 1

1. Langage de programmation Java

INF 321 : mémento de la syntaxe de Java

Dis papa, c est quoi un bus logiciel réparti?

Introduction : les processus. Introduction : les threads. Plan

Derrière toi Une machine virtuelle!

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Serveur d'archivage 2007 Installation et utilisation de la BD exist

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

OCL - Object Constraint Language

Calcul Parallèle. Cours 5 - JAVA RMI

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

Les BRMS Business Rules Management System. Groupe GENITECH

Remote Method Invocation Les classes implémentant Serializable

TP, première séquence d exercices.

Applet pour visualiser les variables «automate» notifiées

1 Définition d une classe en Java

Programmation Par Objets

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Remote Method Invocation (RMI)

Bases Java - Eclipse / Netbeans

Objets et Programmation. origine des langages orientés-objet

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Programmation Orientée Objet

Langage à objets : JAVA (1)

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Java c est quoi? Java pourquoi?

Java 1.5 : principales nouveautés

4. Groupement d objets

Exercices sur les interfaces

Programmation Orientée Objets Le Langage JAVA

Programmation en Java IUT GEII (MC-II1) 1

Solutions du chapitre 4

Java DataBaseConnectivity

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Transcription:

Une introduction à Jrules Riche documentation à : C:\ILOG\JRules35\docs\pdf H. Lounis 1 Caractéristiques 100% Java librairie ; S intègre à des applications Java : supporte des expressions Java, Utilise et teste n importe quelle classe Java ; Opérateurs logiques ; Regroupement de règles ; Truth Maintenance system ; Raisonnement temporel ; Environnement graphique de manipulation des règles, débogage ; Syntax checker ; Compilation des règles ; Générateur de documentation (javadoc). H. Lounis 2

Introduction Base de connaissances Connaissances factuelles Connaissances déductives Base d objets Base de règles Classes Java Règles JRules.ilr Parsing Interface JRules-Java IlrContext.java.java.java.java javac Ruleset Règles tangibles Moteur d inférence.class.class.class.class Règle 1 Règle 2 Règle n Agenda Règle déclenchée Objet 1 Objet 2 Objet 3 Objet n Mémoire de travail

Patrons Form(color==black; shape==square); Form(shape==triangle); Form(color==gray; shape==circle); ~Form(color==gray; shape==circle); Form color : white, gray, black shape : star, sqaure, triangle, circle, ellipse H. Lounis 5 Mémoire de travail (base de faits) Actions assert Form(gray,circle); H. Lounis 6

Règles when Form(color==black; shape==circle); Form(color==white; shape==square); then assert Form(white,triangle); assert Form(black,ellipse); when?x: Form(color==gray; shape==rectangle); then retract?x; assert Form(white,rectangle); H. Lounis 7 Ensemble de règles C:\ILOG\JRules35\examples\applets\data\getstart.ilr H. Lounis 8

Initialiser la mémoire de travail rule initialize when?s: Form(shape==star); then retract?s; assert Form(black,triangle); assert Form(white,ellipse); assert Form(black,square); assert Form(black,square); ; H. Lounis 9 Une démo C:/ILOG/JRules35/examples/applets/getstart.html H. Lounis 10

Instance de règles rule rule1 Mémoire de travail when Form( color == white; shape == square ); Form( shape == circle); then... Instances de règles : rule1(a, C) rule1(a, D) rule1(b, C) rule1(b, D) H. Lounis 11 Agenda (instances de règles éligibles)) rule second rule init when foo(); then assert bar(); assert gee(); ; rule last when gee(); then System.out.println("last"); ; rule first priority = high; when foo(); gee(); foo(); then System.out.println("first"); ; priority = high; when foo(); gee(); foo(); then System.out.println("second"); ; rule third priority = high; when foo(); bar(); foo(); then System.out.println("third"); ; Pourquoi cet ordre : init, first, second, third, last (si initialement foo est le seul fait connu)? Refraction Priorité Recency Lexicography H. Lounis 12

Règle dans Jrules Déclenchables en chaînage avant Actions Asserting an Object ; Retracting an Object ; Modifying an Object ; Raisonnement dans Jrules Chaînage avant ; Les règles sont disposées en un réseau RETE (p.62 du document user s manual) ; Agenda : instances de règle éligibles ; Critères d ordonnancement des règles dans l agenda : Réfraction : une règle déjà exécutée ne peut être réinsérée dans l agenda que s il y a une nouveau fait qui se produit ; Priorité Recency : l objet le plus récemment modifié ou inséré ; Ordre lexicographique des noms de règles.

Exemple de règles Exemple de règles H. Lounis 16

Exemple: Diagnostic d une lampe (1) /** * Règle pour gérer le cas d'une seule lampe défectueuse */ rule Lampe when?x: Lampe(etat == false;?p: piece); exists Lampe(etat == true; piece ==?p); then assert Conseil("Changer cette Lampe"); ; La mpe etat : boolean piece : int Exemple: Diagnostic d une lampe (2) /** * Règle pour gérer le cas des lampes défectueuses de la même pièce */ rule Piece when?x: Lampe(etat == false;?p: piece); not Lampe(etat == true; piece ==?p); exists Lampe(etat == true; piece!=?p); then assert Conseil("Vérifier l'interrupteur ou le fusible de la pièce"); ;

Exemple: Diagnostic d une lampe (3) /** * Règle pour gérer le cas de toutes les lampes défectueuses */ rule Appartement when?x: Lampe(etat == false;?p: piece); not Lampe(etat == true; piece ==?p); not Lampe(etat == true; piece!=?p); then assert Conseil("Appeler la compagnie d'électricité"); ; Grammaire BNF de Jrules Chaque groupe de règles est défini dans une unité d entrée RulesetDefinition ::= ( ImportDefinition )* ( SetupDefinition )? ( RuleDefinition )* Une règle en Jrules: RuleDefinition ::= "rule" Identifier "" RuleParameters RuleConditions RuleActions ";"

Exemple: Structure d un programme Classes Java ; Application (Main class Java) ; Règles. import stocks.*; setup assert Stock("SUNW",101.5,90.25); assert Stock("NT",11.5,19.25); assert Stock("SU",271.5,300.25); assert Stock("SNW",121.5,93.25); assert Stock("SW",131.5,120.25); rule PrintPercentStockChange priority =?p; when?s:stock(?c:currentprice;?l:closingprice;?p:(?c-?l)/(.01*?l)); then System.out.println("Stock " +?s.symbol + " % change " +?p); ; package stocks; import java.io.*; import java.util.*; import ilog.rules.engine.*; class Main public static void main(string[] args) String filename = "stocks.ilr"; IlrRuleset ruleset = new IlrRuleset(); boolean parsed = ruleset.parsefilename(filename); if (!parsed) System.out.println("Parsing not OK."); return; IlrContext context = new IlrContext(ruleset); int nrules = context.fireallrules(); Exemple supplémentaire Agent nettoyeur H. Lounis 22