Une application de commerce électronique en utilisant CLAIM



Documents pareils
TP1 : Initiation à Java et Eclipse

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

TP1 : Initiation à Java et Eclipse

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

Programmer en JAVA. par Tama

Approche Contract First

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Projet de Veille Technologique

Java 7 Les fondamentaux du langage Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

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

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Patrons de Conception (Design Patterns)

Chapitre 2. Classes et objets

UserLock Guide de Démarrage rapide. Version 8.5

Mise en œuvre des serveurs d application

TP, première séquence d exercices.

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

Utilisation d objets : String et ArrayList

Initiation à JAVA et à la programmation objet.

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

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

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

Bases Java - Eclipse / Netbeans

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Sélection du contrôleur

Maintenance Maintenance. Version Outils d accompagnement à la migration des bases relationnelles. Sage 3

INITIATION AU LANGAGE JAVA

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

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

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

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

TP1. Outils Java Eléments de correction

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

TRAAM STI Acquisition et exploitations pédagogiques des données sur un système pédagogique

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

ApiCrypt - Réception des résultats de biologie

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Le langage C. Séance n 4

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Introduction aux concepts d ez Publish

ECLIPSE ET PDT (Php development tools)

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

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

Vérifier la qualité de vos applications logicielle de manière continue

Introduction à Eclipse

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

Eclipse atelier Java

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

WebSpy Analyzer Giga 2.1 Guide de démarrage

MODE OPERATOIRE CIEL GESTION COMMERCIALE VERSION EVOLUTION BTS PME PMI

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)

Solutions de gestion de la sécurité Livre blanc

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

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

Remote Method Invocation (RMI)

MYXTRACTION La Business Intelligence en temps réel

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

RAPPORT DE CONCEPTION UML :

RMI le langage Java XII-1 JMF

Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Conception des systèmes répartis

as Architecture des Systèmes d Information

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

MEGA ITSM Accelerator. Guide de Démarrage

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

«Les documents référencés ci-dessus étant protégés par les droits d auteur et soumis à la déclaration au Centre Français d exploitation du droit de

GUIDE DE PRISE EN MAIN

Manuel utilisateur. Version 1.6b

BC9000-BK9000. Paramétrage et configuration de l adresse IP

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Modélisation multi-agents - Agents réactifs

Logiciel de gestion pour restaurants et Bars

Vos outils CNED COPIES EN LIGNE GUIDE DE PRISE EN MAIN DU CORRECTEUR. 8 CODA GA WB 01 13

REALISER UN SITE INTERNET AVEC IZISPOT SOMMAIRE

Un ordonnanceur stupide

Implantation des protocoles de communication FIPA dans la plate-forme GAMA

Progiciel pour la configuration et la visualisation de régulateurs

BIRT (Business Intelligence and Reporting Tools)

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

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

Traduction des Langages : Le Compilateur Micro Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Java DataBaseConnectivity

Competence Management System (Système de Gestion de Compétences)

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

Projet Active Object

Chapitre I Notions de base et outils de travail

Auto-évaluation Programmation en Java

Transcription:

Rapport du projet A4MA Une application de commerce électronique en utilisant CLAIM Étudiants : DINH Quang Ninh (dinhquangninh@gmail.com) PHAM Trong-Tôn (trongtonfr@yahoo.fr) Wiki : http://dev.deptrai.org/wiki/doku.php?id=projet_a4ma:start Janvier 2005

Rapport du projet CLAIM cours A4MA Master2 IAD 1. Introduction Ce projet vise à démontrer l application du système multi-agents (SMA) dans une application réelle: simulation de l activité de commerce électronique sur Internet. Trois acteurs principaux dans ce contexte sont : le marché (classe Market), l acheteur (classe Buyer) et le client (classe Client). Ces trois derniers sont interagir dans un environnement virtuel afin d atteindre son but dans une transaction de commerce électronique. Dans cette application, on concentre à l interaction, la communication, la mise a jour la connaissance et la mobilité des agents autonomes. Ce projet est réalisé dans le cadre du cours «Apprentissage automatique, agents autonomes et multi-agents» de Master 2 Recherche IAD. Dans ce cadre, nous allons implémenter le système E- Commerce sur le plateformes d agent mobiles SyMPA en utilisant le langage de programmation orienté d agent CLAIM développés par Alexandru Suna du Laboratoire d Informatique de Paris 6 (LIP6). 1. Etat de l'art : CLAIM et SyMPA 1.1.Langage CLAIM CLAIM est un langage de programmation orientée d agents mobiles. Il permet de développer des agents intelligents, communicants et mobiles. C'est-à-dire il peut avoir de compétences de gestion les processus concurrents et de migration de manière autonome vers d autres agents. Un agent contient aussi les éléments cognitifs comme les connaissances, les buts et ses capacités qui permet de raisonnement réactif ou de raisonnement proactif. Un agent peut-être inclus dans un autre agent et peut aussi contenir d autres agents. Figure 1 représente l architecture d un agent dans CLAIM. parent Knowledge Effects Goal Output Messages Capabilities Input Messages sub-agents Figure 1 : Architecture du CLAIM Un système multi-agents (SMA) est un ensemble de hiérarchies distribuées sur plusieurs ordinateurs connectés en réseau. Chaque agent joue un rôle comme un nœud dans cette structure hiérarchique. 2

Rapport du projet CLAIM cours A4MA Master2 IAD Le langage CLAIM permet ainsi de provoquer une fonction JAVA dans sa définition de classe. Cette possibilité étend la capacité de langage CLAIM dans les applications plus compliquées sans trop d effort de programmation. On peut compiler les fonctions statique en JAVA et puis les provoquer avec le syntaxe Java(VotreClasse.votreFonction(param)). 1.1.Plateforme SyMPA SyMPA est un système multi plateforme d agents implémenté en langage JAVA. L architecture du SyMPA est compatible avec les spécifications de MASIF (une norme proposée pour Object Management Group). La main d avantages du SyMPA est de supporter d implémenter des agents en langage de programmation d orientée d agent dont CLAIM a été développé pour ce but. Le plateforme SyMPA offre les outils les fonctions suivantes : Un éditeur pour la conception des définitions d agents CLAIM Compilateur pour langage CLAIM Gestion et exécution d un système multi-agents distribué Un environnement sécurisé : authentification, permissions, cryptage, audit et tolérance aux pannes. La plate-forme SyMPA n est pas évidence à utiliser au début. Pourtant, il supporte bien la gestion des agents mobiles. Après avoir édité les définitions des classes de l application, il faut ouvrir ce fichier.adf en utilisant la fonction Open du menu d un système d agents. Ensuite il faut compiler les définitions en utilisant la fonction Run du menu Execution. Lorsque les classes d agents sont crées, on peut instancier des agents à partir des classes définies, en utilisant le menu : Execution Add Agent. Les interfaces graphiques des agents permettent de visualiser leur exécution View Agent (état interne, communication et mobilité). 2. Développement du système multi-agents ECommerce 2.1.Conception générale Prendre la connaissance de la demande du sujet, nous avons modélisé le problème par le diagramme dans Figure 5. Figure 5 : Modélisation du système E-commerce 3

Rapport du projet CLAIM cours A4MA Master2 IAD Nous avons décidé d'implémenté un système plus évolué que la demande, dans la quelle la somme d'argent du client ne dépasse jamais, et chaque Client peut avoir plusieurs Buyers exécutants en même temps. Le Market Les agents Markets sont créés auparavant. Leurs connaissances sont initialisés à partir un fichier en utilisant la fonction Ecommerce.getKnowledge. Ce fichier contient le budget du Market, la liste des produits offerts avec sa quantité et son prix. Il est capable de répondre aux acheteurs s'il est suffisamment quantité d'un produit à vendre grâce à sa capacité askname. Quand un acheteur lui demande à vendre un produit, il est capable de le vendre (sell) en diminuant sa stockage, et envoyer à acheteur l'addition indiquant le nom de produit vendu, sa quantité, son prix, et le montant à payer. A l'aide de la capacité receivemoney, il peut recevoir le paiement l'acheteur et mettre à jours son budget. Le Client Le Client lit la liste des produits à partir d un fichier grâce à la fonction Java Ecommerce.getKnowledge. Après avoir créé tous les agents Buyers dans ses connaissances, il les démarre en leur envoyant le message start(). Le Client reçoit la confirmation des produits à rechercher par les Buyers, et les ajoute dans ses buts (goals) grâce à la capacité receivegoal. Tous les buts de Client sont atteints lorsqu'il reçoit tous les produits souhaités à partir des agents Buyer. Le Buyer La tâche principale de l agent Buyer est d intégrer dans tous les agents Market existés (message findmarket()) afin de choisir le meilleur prix pour un produit par le fonction de JAVA ECommerce.findBestMarket(). Dans ce processus le Buyer doit interroger ainsi le Market s il possède suffisamment de produit à vendre en vérifiant la condition booléen ECommerce.haveEnoughProd(). Si toutes les conditions sont vérifiées, le Buyer va migrer (envoyer message prédéfini moveto()) dans ce Market et exécuter la transaction de commerce. Sinon, la capacité nomoney lui permet l'abandonner en recherchant autre Market avec autre produit à y aller. La capacité pay sert à simuler un paiement électronique virtuel entre les deux agents. Apres la transaction, les deux agents sont mise a jour leurs connaissances (nombre de produit et la somme d agent) par le message prédéfini tell() de CLAIM. Enfin, l agent Buyer retourne a son créateur Client les produits achetés en envoyant le message give. 2.2.Développement du système en CLAIM Le Système se compose de 3 classes d'agent principales: Client, Buyer et Market. Nous avons développé une classe additionnelle, la class Simulateur, afin de simplifier la lancement du système. La classe Simulateur Cet agent est créé pour lancer la simulation du système multi agent defineagentclass Simulateur(?f){ capabilities={ initmarket{ message=initmarket(); 4

initclient{ message=initclient(); processes={java(ecommerce.getknowledge(this,?f)).send(this,initmarket()).send(this,initclient()) Rapport du projet CLAIM cours A4MA Master2 IAD Les capacités initmarket et initclient ont pour but de créer tous les agents Markets et Clients définit dans le fichier de connaissance. Le format du contenu de ce fichier est [Market(?name,?file)]* [Client(?name,?file)]* La classe Client L'agent Client soit créé par l'agent Simulateur, soit créé directement par utilisateur. defineagentclass Client(?f){ //?f: le fichier configuration capabilities={ startbuyer{ //Démarrage des Buyers receivegoal{ //Confirmation des goals receiveprod{ //Recevoir des produits achetés checkgoal{ //Examination ses goals processes= { // Initialisation des connaissances La classe Buyer Cette classe est créée par Client, les arguments sont son budget et un fichier contient tous les produits à acheter defineagentclass Buyer(?money,?file){ knowledge= {money(?money); capabilities { askname{ // Demande de nom des Markets ayant suffisant produit ackmarket{ // Prise en compte ses Markets findmarket{ // Recherche les meilleurs Markets preparetogo{ // Chosit d'un Marrket pour y aller gotobuy{ // s'intégrer, et acheter le produit nomoney{ // dans le cas il n'a pas assez d'argent pay{ // Paiement, reception, et transfert le produit à son créateur processes={ //Initialisation 5

Rapport du projet CLAIM cours A4MA Master2 IAD Chaque ligne dans ce fichier représente un produit, donc le premier argument est son nom, et la deuxième est sa quantité [needproduct(?name,?quantity);]+ La classe Market La classe Market représente le marché dans le système. Elle est créée soit par la classe Simulateur ; soit directement par utilisateur. A la création ; il charge ses connaissances à partir d un fichier defineagentclass Market(?file){ //?file: fichier configuration capabilities { answer{ // réponse au acheteur s'il a sufisamment produit à vendre sell{ // vendre un produit. receivemoney{ //Reception d'argent. processes={ Le fichier de configuration contient son budget et tous les produit qu il a money(?money); [haveproduct(?name,?quantity,?priceunit);]+ 2.3.Les fonctions Java du ECommerce.java L implémentation Java est pour but d ajouter les fonctionnalités qu ils ne sont pas possibles de programmer en CLAIM. Nous avons réutilisé le fichier ECommerce.java offert, ajouté des commentaires pour qu il soit plus compréhensible, et écrit des fonctions nécessaires. Les fonctions principales sont: public static void addgoal (Agent a, String gname, String args1, String args2) Ajouter le goal de type gname(arg1,arg2) au agent a public static int getmoney(agent a) Retourner la somme d argent d un agent public static boolean haveenoughmoney (Agent a, int qt, int price) Pour tester si l agent a a suffisant d argent pour acheter un produit avec quantité qt, prix par unité price public static boolean haveenoughprod (Agent a, String pname, int qp) Vrai si l agent a de type Market a suffisant produit pname pour la demande d une quantité qp public static int getproductquant 6

(Agent a, String pname) Retourner la quantité du produit pname de l agent Market a public static int getproductprice (Agent a, String pname) Retourner le prix du produit pname de l agent Market a 3. Teste fonctionnalité Rapport du projet CLAIM cours A4MA Master2 IAD Nous avons créé des fichiers exemplaires pour les testes. Ils sont dans le répertoire Files. Pour lancer des testes; il suffit de les mettre dans le répertoire Sympa et puis créer un agent Simulateur avec sa fichier configuration correspondante. Teste 1: 1 Client 1 Buyer n Markets Pour lancer la teste, créer un agent Simulateur avec le fichier simu1. Le Buyer a suffisamment d'argent pour acheter tous les produits. Il y a trois Markets en concurrents de certains produits. Le Buyer achète le produit du Market ayant suffisant quantité, et ayant le prix le moins chers. Teste 2: 1 Client 1 Buyer n Markets Pour lancer la teste, créer un agent Simulateur avec le fichier simu2. Le Buyer n'a pas assez d'argent pour acheter tous les produits. Les Markets sont les même dans la teste 1. Le Buyer n'achète pas le produit qu'il n'a pas suffisant d'argent. Teste 3: 1 Client n Buyer n Markets Pour lancer la teste, créer un agent Simulateur avec le fichier simu3. C'est la teste mélangé les deux teste précédant, donc un Buyer on assez d'argent pour tous acheter, l'autre n'en a pas. Chaque Buyer achète des produits différents. Il y a 5 Markets en concurrents. 4. Observations et propositions Editeur 4.1.SyMPA Pas de prévention de sauvegarder le fichier de définition édité. 7

Rapport du projet CLAIM cours A4MA Master2 IAD Ajouter la fonction «highlight» et bloque de code facile à percevoir le code réutiliser les éditeur de code open-source en Java sur l Internet (http://www.jcreator.com/, http://www.jext.org/) Supporter multi-document éditer simultanément plusieurs ficher de définition Compileur Pas de message d erreur apparaître le fenêtre d information Temps de compiler un fichier est assez longue optimiser le parseur?? Tracer de l erreur n est pas très intuitive imprimer la ligne du code en train de «parsing» Central System Peu de fonctionnalité sauf visualisation des agents ajouter les fonctions de gestion des clients connectée : Start : démarrer agent Stop : arrêter agent Ilde : arrêter temporel agent 4.2.CLAIM Impossible d ajouter les commentaires dans la définition de classe Définir une norme pour la représentation de la connaissance 5. Conclusions Ce projet nous emporte une vue pratique de la fonctionnalité d un système multi-agent. Ceci nous aide à clarifier le côté de la théorie et la recherche actuelle dans ce domaine. En travaillant avec la plate-forme SyMPA et le langage CLAIM, nous constatons que c est un système riche en fonction, flexible et extensible bien qu ils doivent encore développer et raffiner. Dans l application de commerce électronique, nous avons implémenté un système bien complet en utilisant au maximum les ressources fournies. Ce système est déployé sur la plate-forme de SyMPA en utilisant langage de programmation orientée d agent CLAIM. En plus, nous avons essayé d étendre le système en ajoutant les nouvelles fonctions pour qu il marche plus réellement. Les scénarios de cette application sont encore simples. Mais il réflexe essentiellement la procédure de commerce électronique actuel. On peut toute fois développer un système plus avancé pour servir à l application dans la réalité basé sur cette idée. Bref, en réalisant ce projet nous avons acquis la connaissance sur des différentes architectures du système multi-agents, ainsi que, la compétence de développement d un système multi-agents sur un système concret. 8