Morgan Beau Nicolas Courazier



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

Visual Paradigm Contraintes inter-associations

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

Business Intelligence

Traduction des Langages : Le Compilateur Micro Java

Optimiser les s marketing Les points essentiels

CREG : versailles.fr/spip.php?article803

HTML. Notions générales

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

Devenez un véritable développeur web en 3 mois!

79140 CERIZAY. Collège G. CLEMENCEAU. Page 1 sur 18

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Optimiser pour les appareils mobiles

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

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

Livre Blanc WebSphere Transcoding Publisher

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Génie logiciel pour le commerce électronique Hiver 2003 Prof.: Julie Vachon

Projet Active Object

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Patrons de Conception (Design Patterns)

Exercice sur la planification de l élaboration d un programme TPMDidacticiel de MS Project pour la planification de projets

Utiliser le site learningapps.org pour créer des activités interactives

ProSimPlus HNO3 Résumé des nouvelles fonctionnalités, décembre 2008

1 Modélisation d être mauvais payeur

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Avantic Software Présentation de solutions GED pour mobiles (Gestion Electronique de Documents)

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

Le logiciel pour le courtier d assurances

TP2 : Client d une BDD SqlServer

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

BIRT (Business Intelligence and Reporting Tools)

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)

TP1 : Initiation à Java et Eclipse

Programmation des Applications Réparties. Parsers XML DOM et SAX

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

Leica Application Suite

< Atelier 1 /> Démarrer une application web

AMELIORATIONS DES FONCTIONNALITES DISPONIBLES

Les BRMS Business Rules Management System. Groupe GENITECH

XML pour la mise en valeur des informations

Inspiration 7.5. Brève description d Inspiration. Avantages d Inspiration. Inconvénients d Inspiration

Manuel Utilisateur Version 1.6 Décembre 2001

Quick Start Guide. Nokia 6288

Intégration de l interface graphique de Ptidej dans Eclipse

Nom de l application

CAHIER DES CHARGES DE REALISATION DE SITE INTERNET

iil est désormais courant de trouver sur Internet un document

Simplifier l intégration des systèmes RH et garantir une version unique des données de l employé. D

Approche Contract First

Documentation Technique du programme HYDRONDE_LN

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Compte-rendu de projet de Système de gestion de base de données

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

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

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

INTERCONNEXION ENT / BCDI / E - SIDOC

Introduction à la B.I. Avec SQL Server 2008

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Photoshop Séquence 4 - Créer une image de taille personnalisée taille

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Présentation des nouveaux services de l ENT Second degré Rentrée scolaire 2015 et fin du 1 er trimestre de l année scolaire

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

Créer une présentation avec

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

Cafés, hôtels et restaurants Confort & gestion de l énergie

TP1. Outils Java Eléments de correction

Rapport de Post- Campagne 1

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Outils pour les réseaux de neurones et contenu du CD-Rom

BES WEBDEVELOPER ACTIVITÉ RÔLE

Logiciel PICAXE Programming Editor

1) Information sur le logiciel et la notice 2) Le tableau de bord 3) Les devis 4) Les factures 5) Les factures d acompte 6) Les avoirs sur facture

WinBooks Logistics 5.0

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. DOCUMENTATION

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Documentation RBS Change E-Commerce Core

Système de Virtualisation pour une application de gestion commerciale d entreprise

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

UE 8 Systèmes d information de gestion Le programme

Les structures de données. Rajae El Ouazzani

ASTER et ses modules


DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

4.Fichiers photos: acquisition et classement

Installation de CPA STUDIO :

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Algorithmique avec Algobox

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

L alternative, c est malin 1. Comment faire plein de choses pour pas cher sur MacIntosh

Transcription:

EPSI - 2010 Rapport projet IA Conception et mise en œuvre d un générateur de systèmes experts Morgan Beau

Sommaire Cahier des charges 3 Présentation générale 4 Analyse et modélisation 6 Le moteur d inférence 7 Sérialisation et formats de sauvegardes 9 Visualisation des résultats 12 Conclusion 14 2

Cahier des charges Le générateur de systèmes à base de connaissances que l'on nous demande de réaliser est un générateur de systèmes à base de règles de production écrites dans la logique des propositions. Ce générateur doit intégrer les composantes suivantes : Un moteur d inférences Un éditeur de projets Un éditeur de règles Un éditeur de faits Autres composantes optionnelles (relations entre les règles, pas à pas, trace du raisonnement, etc.) 3

Présentation générale Nous avons nommé notre projet AIR car nous voulions donner une identité à ce projet. Nous avons choisi l écologie, les énergies renouvelables, etc AIR est un générateur de système expert classique. Il propose les interfaces permettant de : Gérer un projet : création, sauvegarde, ouverture d un projet sauvegardé précédemment ; Gérer une base de faits : ajouter de nouveaux faits, sauvegarder la base existante, en charger une ancienne, modifier un fait existant, vider la base ; Gérer une base de règles : ajouter de nouveaux règles, sauvegarder la base existante, en charger une ancienne, modifier une règle, vider la base Exécuter le moteur d inférence et en afficher le résultat ; L utilisateur est guidé via une aide dynamique consultable en permanence sur l interface. Voici quelques photos d écrans de l interface. 4

Fenêtre règles 5 Fenêtre faits

Analyse et modélisation L objectif est de gérer des projets. Chaque projet contient une base de règles ainsi qu une base de fait. Chacune des ces base est représentée par une liste de faits ou de règles dans le projet. Afin d être déclenchée, une règle nécessite de remplir certaines conditions. Ces conditions sont la présence de faits dans la base de faits. Une règle possède donc une liste de faits conditionnels. De plus, lorsqu elle est déclenchée, une règle insère de nouveaux faits dans la base. Elle possède donc une liste de faits résultats. Qu en au fait, il est constitué d une intitulé et d un contenu. L intitulé seul peut servir à identifier un fais mais un contenu de longueur ou d un format quelconque est également accepté. On obtient donc le diagramme de classe simplifié suivant : En fonctions de nos connaissances des langages de programmation, nous avons choisi Java dans sa version 5 pour sa portabilité et ses nombreuses librairies. 6

Le moteur d inférence Nous avons implémenté un algorithme de chaînage avant d ordre 0. Voici son fonctionnement global : Tant que de nouveaux fait son ajoutés Pour toutes les règles applicables Si les nouveaux faits ne sont pas déjà présents dans la base de faits On applique la règle en insérant les faits déduis Fin Si Fin pour Fin tant que Nous avons optimisé l algorithme en écartant les règles déjà déclenchées du fonctionnement du moteur de la manière suivant. Règles à traiter = toutes les règles du projet Tant que de nouveaux fait son ajoutés Pour toutes les règles applicables parmi les règles à traiter Si les nouveaux faits ne sont pas déjà présents dans la base de faits On applique la règle en insérant les faits déduis Fin Si Règles à traiter = règles à traiter règles appliquées Fin pour Fin tant que Afin de respecter les itérations, c'est-à-dire ne pas déclencher une règle dont un des faits conditionnels à son déclenchement a été déduit dans la même itération, nous insérons les nouveaux faits à la fin de chaque itération. Règles à traiter = toutes les règles du projet Tant que de nouveaux fait son ajoutés Pour toutes les règles applicables parmi les règles à traiter Si les nouveaux faits ne sont pas déjà présents dans la base de faits Nouveaux faits = application des règles applicable Fin Si Règles à traiter = règles à traiter règles appliquées Fin pour Base de faits = base de faits + nouveaux faits Fin tant que Afin de générer le graphe de visualisation, nous devons créer dynamiquement la liste des règles déclenchées. 7

Règles à traiter = toutes les règles du projet Tant que de nouveaux fait son ajoutés Pour toutes les règles applicables parmi les règles à traiter Si les nouveaux faits ne sont pas déjà présents dans la base de faits Nouveaux faits = application des règles applicable Règles déclenchées = Règles déclenchées + règle en cours d application Fin Si Règles à traiter = règles à traiter règles appliquées Fin pour Base de faits = base de faits + nouveaux faits Fin tant que C est à partir de cette liste de règles stockée au niveau du projet que le graphe est généré. De la même manière, l agenda est renseigné tout au long de l exécution du moteur. Règles à traiter = toutes les règles du projet Tant que de nouveaux fait son ajoutés Pour toutes les règles applicables parmi les règles à traiter Si les nouveaux faits ne sont pas déjà présents dans la base de faits Nouveaux faits = application des règles applicable Règles déclenchées = Règles déclenchées + règle en cours d application Fin Si Règles à traiter = règles à traiter règles appliquées Fin pour Base de faits = base de faits + nouveaux faits Agenda = agenda + «insertion du fait X par la règle Y» Fin tant que 8

Sérialisation et format de sauvegarde Afin de faciliter l utilisation d AIR, nous avons intégré un système de sauvegarde d un projet, de la base de fait ou de la base de règle. Le format choisi pour son universalité est le format XML. Pour cela, nous avons utilisé l API XStream. Celle-ci est simple d utilisation et d une performance et d une stabilité éprouvée. Voici son fonctionnement. Dans un premier temps il est nécessaire d indiquer à XStream le mapping de la classe à sérialiser. Pour cela, on utilise l annotation @XStreamAlias en lui passant en paramètre le nom de l attribut tel qu il sera stocké dans le fichier XML. Mapping de la classe Projet 9

Ensuite, il faut initialiser XStream. En effet, pour dé-sérialiser un objet, XStream a besoin de connaitre le mapping de sa classe. Pour cela, il est indispensable qu il ait auparavant sérialisé un objet de cette classe. En forçant la sérialisation d un objet Projet, on s assure que XStream aura connaissance de la structure de cette classe mais aussi des classes Fait et Regle car celles-ci sont contenues sous forme de listes dans la classe Projet. Une fois ces étapes réalisées, on peut sérialiser et dé-sérialiser ces objets. Exemple de sérialisation : Exemple de dé-sérialisation : Pour un projet contenant deux règles et un fait, voici le résultat sous forme de fichier XML : 10

11

Visualisations des résultats Lorsque le moteur est exécuté, AIR génère l agenda du projet. C'est-à-dire les différentes actions qu il réalise sous la forme : Le fait X a été ajouté par la règle Y. Il précise également lors de quelle itération cette action a eu lieue. Fenêtre d affichage de l agenda L agenda ne générant pas un affichage agréable à lire, nous avons donc intégré la création de graphes automatique. Chaque fait présent à plusieurs reprise dans le graphe, c'est-à-dire étant à l origine et/ou la conséquence de plusieurs règles, sera coloré d une couleur afin d être facilement identifiable. Nous avons pour cela utilisé la librairie java JGraph. 12

Affichage graphique d un résultat simple 13 Affichage graphique d un résultat complexe

Conclusion Ce projet nous a permis d assimiler beaucoup des problématiques du fonctionnement d un moteur d inférence en chaînage avant. Bien qu il soit d ordre 0, nous avons tenté d y apporter quelques optimisations, comme le retrait des règles déjà traitées. Ce fût un vrai challenge algorithmique. La sérialisation en XML apporte un aspect universel à AIR. Il est envisageable par le suite de charger n importe quelle projet en uniformisant le format de sauvegarde. Nous avons également appris à nous servir de librairies telles que JGrpah qui permet un affichage plus agréable et lisible qu une simple console ou qu un fichier texte. Nous avons aussi pris beaucoup de plaisir à réaliser l interface et la charte graphique grâce à des outils tels que Adobe Photoshop. Dans l avenir, nous envisageons d intégrer un moteur d ordre 0+ voire d ordre 1 et d implémenter le chaînage arrière. 14