Optimisation. Algorithme de RETE C.Forgy, 1982, Carnegie Mellon

Documents pareils
Introduction au langage C

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Chapitre 2. Classes et objets

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation système I Les entrées/sorties

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

Programmation Objet Java Correction

Corrigés des premiers exercices sur les classes

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Architecture des ordinateurs

Le prototype de la fonction main()

UML (Diagramme de classes) Unified Modeling Language

Cours d initiation à la programmation en C++ Johann Cuenin


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

Java Licence Professionnelle CISII,

Arguments d un programme

Cours 1: Java et les objets

GOL502 Industries de services

Premiers Pas en Programmation Objet : les Classes et les Objets

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation système de commandes en C

Une introduction à Java

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

Programmer en JAVA. par Tama

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation C. Apprendre à développer des programmes simples dans le langage C

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Bases de programmation. Cours 5. Structurer les données

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples


Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

et Programmation Objet

Diagramme de classes

Chapitre VI- La validation de la composition.

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Cours 1 : Qu est-ce que la programmation?

as Architecture des Systèmes d Information

Gestion mémoire et Représentation intermédiaire

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

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

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

Module.NET 3 Les Assemblys.NET

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Utilisation d objets : String et ArrayList

OS Réseaux et Programmation Système - C5

Compression de Données - Algorithme de Huffman Document de Conception

UE C avancé cours 1: introduction et révisions

Rappels Entrées -Sorties

Bases de Données relationnelles et leurs systèmes de Gestion

Structurer ses données : les tableaux. Introduction à la programmation

Auto-évaluation Programmation en Java

INFO-F-105 Language de programmation I Séance VI

Les BRMS Business Rules Management System. Groupe GENITECH

TP1. Outils Java Eléments de correction

Présentation du langage et premières fonctions

PHP 5. La base de données MySql. A. Belaïd 1

ALGORITHMIQUE ET PROGRAMMATION En C

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Les structures. Chapitre 3

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

Algorithmique I. Algorithmique I p.1/??

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation système en C/C++

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

Meta Object Facility. Plan

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Java c est quoi? Java pourquoi?

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

Chap III : Les tableaux

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

OpenPaaS Le réseau social d'entreprise

Programmation Classique en langage C

Traduction des Langages : Le Compilateur Micro Java

Programmation Web. Madalina Croitoru IUT Montpellier

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

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

alg - Classes, instances, objets [oo] Exercices résolus

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Java DataBaseConnectivity

Vérification formelle de la plate-forme Java Card

Initiation à l algorithmique

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Cours d Algorithmique et de Langage C v 3.0

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Quelques éléments de compilation en C et makefiles

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

Conventions d écriture et outils de mise au point

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation en Java IUT GEII (MC-II1) 1

Transcription:

Optimisation Algorithme de RETE C.Forgy, 1982, Carnegie Mellon

Cycle de base d un moteur d inférence Base de F a i t s 1 Moteur d inférence DETECTION CHOIX DEDUCTION 3 3 2 Base de C on n ai s s a n ce s

Exemple Règle (règle 1 (A a1 = 12 a2 =?x) (B b1 =?x) -> (action) ) Faits (A a1 = 12 a2 = 13) (B b1 = 13 b2 = 14) (A a1 = 12 a2 = 14) (B b1 = 14 b2 = 16) (A a1 = 16 a2 = 13)

Exercice Règle (regle_1 (A a1 = 12 a2 =?x) (B b1 =?x b2 =?y) (C c2 =?y) -> (action) ) Fait (A1 a1 = 12 a2 = 13) (B1 b1 = 13 b2 = 14) (C1 c1 = 15 c2 = 3) (A2 a1 = 12 a2 = 14) (B2 b1 = 14 b2 = 16) (C2 c1 = 12 c2 = 16) (A3 a1 = 16 a2 = 13) (C3 c1 = 13 c2 = 15)

Exemple : ajout fait Contenu initial de la base de fait (A1 a1 = 12 a2 = 13) (B1 b1 = 13 b2 = 14) (A2 a1 = 12 a2 = 14) (B2 b1 = 14 b2 = 16) (A3 a1 = 16 a2 = 13) Conséquence sur l arbre de l ajout du fait (B3 b1= 13 b2 = 5) Class = A a1 = 12 A1 A2 Class = B B1 B2 a2 = b1 A1 A2 B1 B2

Optimisation Respecter l ordre des conditions communes à différentes règles. Conditions les plus discriminantes en premier Dans l ordre des prémisses Dans l ordre des tests pour une prémisse

Exercice Soit la règle R1 : (R1 (A a1 = 3 a2 =?x) (B b1 = 2 b2 =?y b3 =?x) (C c1 =?y) ) Soit la base de faits contenant : 5 objets A dont a1 = 3 et a2 = 10 1 objet B dont b1 = 2 et b2 = 7 et b3 = 10 1 objet B dont b1 = 2 et b2 = 4 et b3 = 10 28 objets B dont b1 = 2 et b2 = 8 et b3 = 10 1 objet C dont c1 = 4 Calculer le nombre de tests nécessaires dans le cas ou un objet de type C (c1 = 7) est ajouté Proposer une réécriture de la règle pour améliorer ses performances.

ILOG RULES Générateur de Systèmes Experts

Rules Objectif Exemple Calculer une factorielle en limitant les calculs Méthode Constitution d une base de règles pour : Gérer les demandes de l utilisateur Calculer la valeur d une factorielle demandée Gérer l affichage du résultat Constitution d une base de faits: Demande courante de l utilisateur Valeur des factorielles déjà connues

Introduction Présentation par Ilog : A C++ component for real-time data flow control and decision support systems Générateur de systèmes experts Langage de programmation des règles Moteur d inférence Gestion dynamique des règles Facilite l intégration d un système expert dans une application Manipulation directe des objets de l application Intégration de code dans les règles Compilateur

Introduction Ilog Rules Contexte mémoire de travail Rules et C++ Ilog Rules Programme classe c++ Déclenchement d'une règle Agenda base de règles

Introduction Compilateur Compilateur Ilog Rules fichier source Ilog Rules code c++ c++ header files code c++ c++ header files Compilateur c++ Compilateur c++ fichier objet librairie Ilog Rules fichier objet autre librairie linker executable

Rules Les faits Syntaxe C++ class nom_class : class_père { type_attribut_1 _attribut_1 type_attribut_2 _attribut_2 type_attribut_3 _attribut_3 Syntaxe Rules (defimplementation nom_class (class_père) ( ( attribut_1 type {type_attribut_1} ) ( attribut_2 type {type_attribut_2} ) ) ) public : type_attribut_1 getattribut_1() void setattribut_1(type_attribut_1)... } enum MesValeur {valeur_1 valeur_2} (define_external_constant valeur_1 valeur_2)

Rules Les règles Mot clé : defrule identifiant : nom règle priorité Statique : une constante Prédéfinie : (defrule nom_regle priorite ( liste des premisses) -> (liste des actions) ) minimum(-32767), low (-16384), default (0), high (16384), maximum (32767) Dynamique : une valeur issue de la règle

Expression des Prémisses Variable issue d'une prémisse?objet1:(class_objet attribut1 operateur1 valeur1... attributn operateurn valeurn ) création (bind laclass?lavariable {expression} ) opérateur de comparaison comparateurs mathématiques opérateurs complexes création d'opérateurs

Opérateurs La négation Négation par l'abscence Mot clé : not Pas d appariement possible sur un objet ( not ( class_objet attribut_1 operateur_1 valeur_1 attribut_2 operateur_2 valeur_2 ) )

Opérateurs Opèrateurs complexes Tester l'existence (exists (class_objet attribut1 operateur1 valeur1... attributn operateurn valeurn )) Tester le nombre d'instances (count test (class_objet attribut1 operateur1 valeur1... attributn operateurn valeurn ))

Opérateurs Création d opérateurs Mot clé : defpredicate deux arguments code c++ (defpredicate predicat_rules { code c++}?arg1 type_arg1?arg2 type_arg2 ) (defpredicate streq {strcmp(?arg1,?arg2)==0}?arg1 string?arg2 string) (defpredicate notstreq {strcmp(?arg1,?arg2)!=0}?arg1 string?arg2 string)

Action Modification du contexte Ajouter (assert (class_objet attribut_1 = valeur_1 ) Retirer (retract instance_objet) Modifier attribut_2 = valeur_2) (modify instance _objet attribut_1= valeur_1 attribut_2 = valeur_2 )

Action Intégration de code Syntaxe : { mon code C++ } Utilisation des variables locales {?mavariable->mamethode(?autrevariable);} Respect de la syntaxe C++. Pas de compilation par le compilateur Rules Suppose une mise à jour des variables modifiées. (update?mavariablemodifiee)

Rules Déclaration Structure fichier Ilog Rules : { // description entête } /*liste des fichiers c++ utilisés*/ //== Définition objet Rules == ( liste des déclarations d objets Rules) /*déclaration des objets nécessaires à la base*/ //==Définition règles Rules == (defruleset mabase (liste des règles) /* déclaration des règles*/ ) // fin de mabase ) (defruleset mabase (defpacket premierpacket (defrule regle1 ) (defrule regle2 ) (defrule regle3 ) ) // fin de premierpacket (defpacket deuxiemepacket (defrule regle4 ) (defrule regle5 ) (defrule regle6 ) ) // fin de deuxiemepacket ) // fin de mabase

Rules Déclenchement d un cycle d inférence instance_rules->fireallrules(); Déclenchement d une règle instance_rules->firerule (); Exemple : Void main (int argc, char* argv[]) { mabase *context = new mabase(); context->firerule(); context->fireallrules(); } Appel externe

Rules Traitement des règles par paquet instance_rules->activatepacket(nompacket); instance_rules->deactivatepacket(nompacket); instance_rules->firepacket(nompacket); Exemple : Void main (int argc, char* argv[]) { mabase *context = new mabase(); // première méthode context->activatepacket(premierpacket); context->fireallrules(); context->deactivatepacket(premierpacket); // deuxième méthode context->firepacket(premierpacket); } Appel externe

Appel externe Ajout d objets dans un contexte instance_rules->assert(instance_objet); Retrait d objets d un contexte instance_rules->retract(instance_objet); Modification d objets dans un contexte instance_rules->modify_nomattribut(i_o, nouvelle_valeur_attribut);