Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Jacques Ferber
LIRMM Universit de Montpellier II
ferber@lirmm.fr
v1.2 Avril 2009
I. Prsentation gnrale 3
II. Prise en main 4
Les agents principaux 6
III. Crer son premier projet 9
Crer un nouveau projet 10
Ajouter de nouveaux agents 14
Agent Java 14
Agents Scripts 15
Utiliser Eclipse pour compiler un plugin de MadKit 15
Pour mettre jour votre projet MadKit sous Eclipse 19
IV. AGR: la gestion des organisations sous MadKit 19
Introduction AGR 20
Cration de groupes 21
Entrer dans un groupe 22
Communications sous MadKit 22
V. Ecrire ses agents sous MadKit 22
Communications point point et broadcast 23
Agents passifs et agents actifs 23
MadKit nimpose aucune architecture particulire aux agents. Il est ainsi possible de dvelop
per aussi bien des applications avec des agents ractifs comme le fait TurtleKit que des agents
cognitifs et communicationnels, et mme de faire interagir aisment tous ces types dagents.
Cela permet ainsi aux dveloppeurs dimplmenter larchitecture de leur choix.
MadKit est crit en Java et fonctionne en mode distribu de manire transparente partir
d'une architecture "peer to peer" sans ncessiter de serveur ddi. Il est ainsi possible de faire
communiquer des agents distance sans avoir se proccuper des problmes de communica
tion qui sont grs par la plateforme.
Une application MadKit peut sexcuter en mode distribu sans quil y ait besoin de modifier
une seule ligne de code. Le mcanisme de distribution est indpendant de MadKit et il est pos
sible den crer de nouveaux si les besoins sen font sentir ou mme dutiliser des plateformes
distribues existantes, telles que JXTA.
De ce fait, MadKit peut tre utilis aussi bien comme outil de dveloppement dapplications
que comme un noyau dexcution de systme multiagent qui peut tre embarqu dans des ap
plications quelconques.
MadKit est un logiciel libre de type Open Source avec une licence mixte GPL/LGPL. LGPL
pour le micronoyau et les outils de communication, et GPL pour les outils de dveloppement.
On peut ainsi facilement dvelopper laide de MadKit et ensuite utiliser les agents ainsi cons
truits dans des applications commerciales.
Htrognit des applications et des types dagents utilisables: on peut faire tourner sur
MadKit aussi bien des applications utilisant des agents ractifs simples de type fourmis plus
de 50000 agents ayant un comportement simple ont tourn en MadKit, que des applications
disposant dagents cognitifs sophistiqus.
Installation
Tlcharger MadKit sur www.madkit.net utilisez la version stable de prfrence. Dzippez
larchive et placez MadKit o bon vous semble. MadKit est alors prt lemploi.
Sous Linux la plupart des distributions, tapez dans le fichier ~/.bashrc les lignes suivantes:
JAVA_HOME=/chemin_ou_se_trouve_le jdk
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
Sous MacOS: tout est normalement dj install, et la variable JAVA_HOME nest pas utili
se.
Sous Windows: dterminez le dossier dinstallation du jdk pas le JRE qui ne contient pas le
compilateur, mais le JDK. Attention, il est facile davoir plusieurs jdk sous Windows, et cest le
dernier qui est utilis par Windows.
Attention: si lorsque vous tapez javac version une erreur apparat cest que vous devez aussi
ajouter le chemin <chemin du jdk>/bin dans la variable denvironnement PATH...
Et finalement, si cela ne marche pas, vous pouvez copier le fichier tools.jar qui se trouve dans le
JDK et placer la copie dans le dossier <madkit>/lib et le tour est jou. Mais cest moins propre.
Dmarrage
MadKit peut fonctionner de diverses manires, mais la solution la plus simple consiste d
marrer le desktop de MadKit qui permet de visualiser facilement les agents et qui comprend de
nombreux outils de dveloppement et de surveillance dagents.
Vous verrez apparatre alors la fentre suivante qui correspond ce quon appelle le Desktop:
Le Desktop est lenvironnement de travail standard sous MadKit. On peut en modifier son ap
parence grce des skins dirents, on peut ajouter et supprimer des icnes loisir pour
ladapter ses besoins.
Cest partir du Desktop que lon peut crer, lancer et arrter des agents, ainsi que surveiller
leur fonctionnement.
4. DocBrowser: cest l que se trouve toute la doc de MadKit. Indispensable pour connatre
les primitives de base. Pour programmer de nouveaux agents, il est utile daller soit dans la
doc du dveloppeur Developpers guide et dans les API, notamment madkitkernel>Abs
tractAgent et madkitkernel>Agent qui contiennent la plupart des primitives im
portantes pour le dveloppement dapplications gnriques sous MadKit. Pour d
velopper dans des applications cibles TurtleKit, Warbot, etc.. il est prfrable de
sadresser la documentation lie ces applications.
5. JSynEdit: cest un diteur gnrique avec colorisation syntaxique, qui est tir de Jext et de
lancienne version de JEdit, des diteurs en OpenSource. Ces diteurs ont t adapts
MadKit pour servir doutil ddition rapide.
6. Communicator: cest loutil qui permet de faire communiquer les agents entre eux. Cet ou
til est simple et fiable, trs adapt des applications intranet il ne passe pas les
firewall ni les proxys allant de 2 une petite vingtaine de noyaux interconnects.
Au del, les algorithmes de synchronisation des informations entre noyaux MadKit
ne sont plus adaptes.
7. Editor: pratique pour regarder rapidement un bout de code, ou pour lancer des messages
de type chanes de caractres StringMessage des agents.
8. Les valuateurs de langages de commande: permet de taper des commandes dans un lan
gage de script Python, BeanShell, Scheme, etc.. et de lancer des agents de manire inter
active directe. Trs pratique pour scripter des sessions.
9. La fentre Output qui ache tous les messages de sortie de MadKit. Cette fentre vous
indique en particulier lorsquil y a des problmes lors de la compilation ou de lexcution
dagents.
Cela lance un agent qui montre tous les plugins qui peuvent tre modifis et mis jour les plu
gins systme qui font partie du noyau ne sont pas visualiss et il nest donc pas possible de les
modifier partir du Designer.
Le Plugin explorer qui comprend une arborescence de lensemble des plugins disponibles
ainsi que les composants de chacun de ces plugins.
Le panneau de commande, situ en dessous, qui comprend deux boutons: Validate, qui va
lide les modifications apportes dans les paramtres du plugin et Build qui sert rgnrer
un projet compilation, cration de jar, chargement des nouvelles classes, etc...
La barre doutils, situe au dessus de larborescence des plugins, et qui comprend les opra
tions de cration de base: cration dun nouveau plugin et cration dagents.
Pour slectionner un plugin, il sut de double cliquer sur son icne dans larborescence des
plugins. Cela montre la fois ses composants mais aussi cela ache ses proprits dans le pan
neau de documentation.
Pour crer un nouveau plugin, il sut de cliquer sur licne qui se situe dans la barre doutil.
Le premier champ correspond au nom du projet ou plugin. Le second champ est une liste d
roulante qui indique les types de plugins qui peuvent tre raliss laide du designer.
Les projets possibles actuellement sont de lordre de trois: default projets standards, Tur
tleKit projets qui fonctionnent sous TurtleKit et Warbot projet permettant de raliser des
agents sous Warbot. Dautres seront disponibles avec le temps.
Nous supposerons ici que vous crez un projet de type Default qui correspond des agents
standards sous MadKit.
Par exemple, si lon cre le projet MyProject on voit apparatre larborescence suivante:
Note: vous verrez apparatre dans la fentre Output le message Build successful qui signifie
que dune part le plugin a bien t cr, mais aussi que les agents de dmonstration ont bien
t crs et compils.
Les dossiers src et build qui contiennent respectivement les sources .java files and les
.class du plugin.
Le fichier build.xml qui est un fichier 'ant' qui est utilis pour compiler le projet, gnrer
le .jar, etc.. Ant est une sorte de makefile crit en Java pour des programmes Java. Il est trs
utilis dans les outils de dveloppement Java IDE tels quEclipse, pour crer et mettre jour
les projets. Voir le site de ant ant.apache.org pour avoir plus dinformation ce sujet.
le fichier MyProject.html qui est une page gnre et qui contient une applet lie au plugin
pour plus dinformation, lire la documentation dans le users guide et le developpers
guide ce sujet.
Si vous cliquez sur licne de lagent MyProjectHello, vous lancerez un agent MadKit de
base, qui permet de dmarrer dans votre projet.
Lors de son fonctionnement, lagent indique quil est entr dans la communaut MyProject la
communaut associe au plugin, mais aussi dans le groupe myGroup avec le rle myRole.
Cela ouvre lagent qui permet dobserver la participation des agents aux groupes et aux
rles, comme le montre la figure cidessous:
Toutes les actions des agents se trouve dans le source de lagent. Dans le designer allez dans le
dossier src de votre projet et ouvrez les dossier jusqu voir apparatre le fichier
MyProjectHello.java.
Cliquez sur ce fichier avec un click droit de souris et slectionnez edit with JSynEdit. Cela
ouvre lditeur JSynEdit qui comprend un systme de colorisation syntaxique et qui permet
dditer facilement du code dans lun des langages de MadKit et notamment Java.
Vous pouvez alors modifier le code de votre agent, Par exemple, si vous voulez quil ache le
code Bonjour tous en lieu et place du message Hello World, allez dans le code de
lagent et modifiez le code ainsi:
Il sut ensuite de sauvegarder le fichier puis de mettre jour le projet en cliquant sur le bou
ton Build, ce qui compile les fichiers, cre le jar et recharge les nouvelles classes.
En cliquant sur licne de MyProjectHello cest le nouveau comportement qui sera excut.
Note: les anciens agents continueront excuter les classes anciennes, cestdire que seuls les
agents crs aprs le Build bnficieront des modifications de code.
Agent Java
Ce bouton permet de crer un nouvel agent Java qui sera compil lors dun Build.
Il existe plusieurs templates dagents Java. Pour linstant deux templates sont disponibles, mais
dautres seront fournis dans le futur. Les templates existant sont:
Il est bien entendu possible et mme souhaitable de modifier cet agent et son interface pour
ladapter vos besoins.
Agents Scripts
Ces boutons servent crer dagents scripts cestdire des agents dont le code est interprt
par lun des langages de script disponible sous MadKit, savoir: Scheme, BeanShell, Jess et Py
thon. Ces agents sont crs dans le dossier script du projet et nont pas besoin dtre compils.
Note: Sous Designer, il peut tre ncessaire de faire un Refresh du projet pour voir ces fichiers
apparatre dans le dossier scripts. Il sut de faire un clic droit de la souris sur le noeud du
plugin dans larborescence et de choisir, dans le popup menu qui apparat, litem Refresh.
Voici comment, pas pas, il est possible de crer un projet Eclipse qui pointe vers un plugin de
MAdKit. Supposons que nous ayons cr le projet MyProject comme on la vu cidessus. En
crant new Java project depuis Eclipse, on obtient le dialogue suivant:
Si lon regarde dans le package explorer de Eclipse, on peut constater que le projet comprend
des erreurs, comme le montre la figure suivante:
Vous pouvez rajouter des jars, mais ceux ci doivent tre aussi prsents dans le build.xml de
votre plugin MadKit, comme cela est indiqu dans la documentation du PluginDesigner dou
ble cliquez sur DocBrowser et slectionnez plugins>designer.
Introduction AGR
La particularit dAGR cest de ne rien supposer quant larchitecture ou au mode de fonc
tionnement dun agent. Voici les principales dfinitions dAGR
Un agent est une entit informatique qui envoie et reoit des messages, qui peut entrer et
sortir de groupes et qui joue des rles dans ces groupes. Cette entit est autonome et com
municante.
Un groupe est constitu de rle et regroupe des agents qui ont soit un aspect en commun
par ex. des agents qui possdent le mme langage de communication, soit un ensemble
dagents qui travaillent ensemble, qui collaborent une mme activit par ex. des agents qui
essayent de rsoudre un problme.
Un rle correspond soit un statut dun agent, soit une fonction particulire quun agent
joue dans un groupe. Les rles sont locaux aux groupes et nont de sens qu lintrieur dun
groupe. Un rle ne peut pas tre cheval sur deux groupes.
Trois concepts importants ont t la base de tous les dveloppements sous MadKit et doivent
tre considrs comme des guides de penses guidelines dans tout dveloppement concernant
AGR.
2. Autonomie des agents. Toutes les actions et comportements dun agent viennent de
lagent luimme. Il nest pas possible de modifier ltat dun agent ou de manipuler un
agent depuis lextrieur dun agent. Si lon veut que cet agent fasse quelque chose, il faut lui
demander. Cela est particulirement vrai pour tout laspect organisationnel de MadKit: un
agent doit demander expressment et personnellement dentrer dans un groupe ou de jouer
un rle, cela ne peut pas tre fait la place de lagent ou depuis lextrieur de lagent. Dau
tre part, il est formellement interdit de pouvoir entrer dans un agent, de connatre direc
tement ses tats mentaux depuis lextrieur de lagent sauf videmment pour des raisons
de mise au point ou de visualisation dinformation, mais cest le seul cas autoris.
4. Les aspects multiples dun agent. Un agent peut jouer plusieurs rle et tre membres
de plusieurs groupes. Il peut ainsi jouer plusieurs rles au sein dun mme groupe ou jouer
plusieurs rles dans des groupes dirents. Tout cela est possible et il nexiste aucune con
trainte ce sujet. En suivant les principes dautonomie de lagent, cest lagent de vrifier
que les rles quil jouent sont bien cohrents.
5. Lopacit cognitive des agents. Dans AGR comme nous lavons not plus haut, rien
nest impos quant la manire pour un agent de penser ou de prendre des dcisions. Ce
la signifie quun agent ractif de type fourmi peut trs bien communiquer avec un agent
trs complexe et trs cognitif.
Cration de groupes
Pour crer un groupe, il sut, pour un agent, de le demander en utilisant la primitive create
Group :
int createGroup(
boolean dist, // indique si le groupe est distribuable
String communaut, // nom de la communaut
String groupe, // nom du groupe ainsi cr
String description, // description du groupe (ventuellement)
Object vrificateur) // object vrificateur des entres
dist indique si le groupe peut tre rparti ou non sur le rseau. Si le boolean est true, et si
le Communicator est en fonctionnement ou lun des autres outils de distribution sous
MadKit, alors le groupe sera automatiquement disponible sur toutes les plateformes MadKit
connectes.
Lobjet vrificateur permet de restreindre les entres des agents aux seuls agents disposant
dune caractristique, le test de cette caractristique tant place dans le vrificateur. Nous
verrons lutilisation de cette fonctionnalit plus loin dans le texte check.
1 : operation success; -1 : access denied; 2 : the role is already handled by this agent; -3 : the
group does not exist; -4 : the community does not exist.
La memberCar est un objet qui peut tre prsent pour entrer dans un groupe, si le groupe a
t cr avec un objet vrificateur.
7. Agents actifs vs agents passifs: comment crer des agents qui ont une activit indpendante
de la rception des messages.