Une forme de négociation pour les systèmes multi-agents.

Transcription

Une forme de négociation pour les systèmes multi-agents.
Une forme de négociation pour les
systèmes multi-agents.
Philippe Mathieu, Alain Taquet
Laboratoire d’Informatique Fondamentale de Lille
Upresa 8022 C.N.R.S., Université de Lille I
59655 Villeneuve d’Ascq Cedex.
Email : [email protected]
Tél : 03.20.43.45.04 Fax : 03.20.43.65.66
RÉSUMÉ. Nous présentons dans cet article une plate-forme générique permettant de prendre
en compte une forme de négociation. Cette plate-forme, réalisée sous forme d’une API Java,
permet de créer des agents intelligents capables de négocier entre eux à travers le réseau par
l’intermédiaire d’actes de langage. Nous définissons dans un premier temps le type de
négociation que nous prenons en compte, puis nous montrons comment représenter
l’ordonnancement des actes de langage par un graphe à base de règles de séquencement et
de backtracking. Ce graphe est ensuite parcouru et interprété à plusieurs niveaux
d’abstraction par des objets autonomes appelés micro-agents. Ces micro-agents s’associent
entre eux pour former des organisations indépendantes ayant chacune pour objectif de
résoudre une partie du problème. Le comportement global de l’agent au niveau
macroscopique provient de l’interaction entre ces organisations.
ABSTRACT. We present here a generic SMA framework whic is able to take into account a kind
of negociation. This framework, implemented as a JAVA API allows the user to create
intelligent agents able to negociate themself across the Internet by the way of speech acts. We
first define the kind of negociation we will use, then we show how to build an internal
representation of th speech acts order with a graph and sequencement rules and
backtracking. The graph is then used a several abstract levels by autonomous agents that we
call micro-agents. These micro-agents work in the same way to build independant
organizations which have their own objectives. Le global behaviour of the agent at the
macroscopic level provides from these organizations interactions.
: SMA, Agents, Négociation, renegociation, coordination, conflits, deadlocks,
actes de langage, règles de séquencement, contrat, ontologie, secrétaire virtuelle, ANTS .
MOTS-CLÉS
KEY WORDS:
SMA, Agents, Negotiation, renegotiation, coordination, conflicts, deadlocks,
speech acts, sequencement rules, contract, ontology, virtual secretary, ANTS.
Une forme de négociation pour les S.M.A.
1
1. Introduction
Depuis quelques années, les systèmes multi-agents (SMA) ont été étudiés selon
différentes approches. Que ce soit pour l’intelligence Artificielle Distribuée
[COH 90] [MEY 88] pour l’algorithmique distribuée [YOK 92] ou même pour la
robotique [BRO 86], les points d'études principaux ont été la communication et la
coopération entre les agents.
Si de nombreux environnements multi-agents ont pour objectif de faire coopérer
les agents en vue de la réalisation d'un but commun [MAT 95] Visiter Hoster
[SYC 89], d'autres systèmes en revanche utilisent des agents qui ont des intérêts
différents [KLE 91] [MEY 88] [ROS 96] comme dans les systèmes Baazar [SYC89]
et Kasbah de P Maes, ce qui nécessite une négociation entre eux. A l'instar d'une
négociation entre clients et fournisseurs qui utilisent des règles de négociation pour
converger vers une position médiane, les agents informatiques concurrentiels doivent
négocier avec leur environnement pour arriver à une position acceptée par tous.
La réalisation d'une société d'agents travaillant vers cet objectif pose de
nombreux problèmes. Ceux-ci interviennent lorsque l’agent doit choisir entre
plusieurs négociations concurrentes et/ou lorsque ces négociations conduisent à des
renégociations en cascade. Ces problèmes sont rendus plus difficiles encore par le
fait que les agents ont une connaissance incomplète de l’environnement et que cet
environnement évolue constamment. Par ailleurs l’utilité d’utiliser un agent au cours
des négociations est parfaitement justifié par l’explosion du nombre de messages
échangés entre les agents du fait de ce processus en cascade. Dans certains cas le
nombre de messages peut être en O(mn) si n est la profondeur du processus de
cascade et m le nombre d’agents impliqués dans une négociation..
Des environnements comme COOL, JAFMAS, AgentBuilder ont été proposés.
Toutefois, ceux-ci n’ont qu’une vue éloignée de la négociation et ne proposent pas
de système de renégociation automatique ni de mécanisme de gestion de conflit entre
négociations simultanées et ne prennent pas non plus en compte les deadlocks
pouvant survenir.
Pour prendre en compte ces différents points, nous proposons l’API ANTS qui
offre la possibilité de construire des agents négociant entre-eux des ressources
communes. Chaque agent est constitué de micro-agents créés dynamiquement en
fonction des besoins et qui se regroupent entre-eux pour résoudre une partie du
travail de l’agent global. Le processus de négociation entre les agents est modélisé
par un graphe à base de règles de séquencement et de backtracking. Le parcours de
ce graphe est ensuite interprété en fonction du rôle de l’agent dans la négociation
pour gérer les interactions entre négociations et éviter les deadlocks.
2. La négociation
Du point de vue de ANTS, le but d’une négociation est d’instancier un contrat,
formé d’un ensemble d’attributs, en fonction des préférences et choix de chacun des
agents impliqués. Nous distinguerons l’initiateur qui est l’agent qui propose le
contrat des autres agents appelés participants. L’initiateur dirige la négociation en
demandant des informations aux participants et en leur proposant des instanciations
partielles du contrat jusqu’à ce qu’il soit totalement instancié. Si cela est impossible
2
la négociation est annulée. Lorsque le contrat est pris, nous considérons qu’il est
possible de le modifier pour satisfaire d’autres contrats ce qui aboutit à des
renégociations en cascade et à un arbre de dépendance entre toutes ces négociations.
Définition : une négociation est un octuple (G,R,P,L,S,G,H,Ct) où :
1. G est l’ensemble des individus impliqués dans la négociation.
2. R est l’ensemble des ressources disponibles.
3. P est un ensemble de relations de préférences locales à chaque agent.
4. L est l’ensemble des actes de langage autorisés pour la négociation.
5. S est un ensemble de règles de séquencement.
6. G est un graphe dont les nœuds sont des règles de séquencement
7. H est l’histoire de la négociation
8. Ct est un contrat qui est l’objet de la négociation.
En outre, la mise en œuvre de la négociation entre agents doit respecter les
caractéristiques suivantes :
– Les intervenants doivent pouvoir être indifféremment humains ou logiques.
– Ils doivent tous utiliser le même langage pour communiquer.
– La communication doit être asynchrone et banalisée.
– Un agent ne doit pas avoir accès à la totalité de la connaissance des autres
agents.
– Si une proposition de contrat n'est pas acceptée, l'agent doit être capable de
modifier d'autres contrats et de négocier la modification de contrats des
autres interlocuteurs.
– Plusieurs négociations simultanées doivent être possibles.
– Certains contrats doivent être plus prioritaires que d'autres.
– Certains participants doivent être plus prioritaires que d'autres.
– L'humain peut commencer la négociation, laisser son agent continuer un
certain temps puis reprendre la négociation sans que les autres intervenants
ne se rendent compte du changement.
– Le système ne doit pas se bloquer.
La négociation doit donc être envisagée sous deux angles. Le premier aspect
consiste à définir les actes de langage communs à toute négociation et à proposer un
mécanisme qui permette de gérer leur séquencement cohérent. Ce premier niveau
d’interactions est appelé niveau macroscopique. Le deuxième aspect doit prendre en
compte les relations entre des négociations en cascade ou en conflit, ce sera le
niveau microscopique. Nous détaillons ces points de vue dans les paragraphes
suivants.
3. Le niveau macroscopique
La conception d’une conversation doit conduire à une coordination des actes de
langage échangés par les agents. Winograd et Flores ont représenté une conversation
sous forme d’automate, un acte de langage étant lié à une transition. Une
conversation est considérée comme un tout selon ce modèle et ceci amène quelques
remarques. Certains cycles de l’automate ont la même forme bien que les actes de
Une forme de négociation pour les S.M.A.
3
langages soient différents, par exemple le vote des agents. Peut-on représenter ces
cycles de manière générique en proposant des objets structurés ? Comment
représenter les relations entre négociations en particulier les liens de dépendances en
cas de renégociations en cascade ?
La notion d’automate suppose qu’une conversation soit dirigée par les actes de
langage, les transitions de l’automate sont donc naturellement associés aux actes de
langage. Cela revient à mettre en second plan les intentions des agents. Nous
proposons de mettre en avant ces intentions, les actes de langage devenant alors des
moyens de réalisation de ces intentions. L’accent est mis sur la logique de la
conversation et non sur les données échangées. Dans cette optique, Sycara [SYC 89]
introduit la notion de fragments de plans utilisables par les agents, Ferber [FER 95]
définit le formalisme Brick qui permet d’associer des réseaux de Petri pour
concevoir une conversation. Il y a donc naturellement besoin de composants
élémentaires et génériques représentant chacune des intentions des agents : une
demande d’information, le signalement d’un échec ou d’un succès se font toujours
de la même façon, de même un processus de vote est générique et n’a pas à être
redéfini à chaque nouvelle conversation ni même plusieurs fois dans la même
conversation. Nous appelons un tel composant une règle de séquencement. Une
négociation sera représentée par un graphe orienté ayant pour nœuds les règles de
séquencement.
Soit c un contrat formé d’un ensemble d’attributs ci de domaine Di. Notons < i | c
> l’attribut ci du contrat c et | ci > un contrat partiellement instancié tel que ∀j ≤ i < j
| ci > ∈ Dj et ∀j > i < j | ci > = ? ( ? représente un attribut non instancié).
L’application d’une règle de séquencement ri à | ci - 1 > a pour but de déterminer
l’ensemble des valeurs possibles de ci. L’initiateur effectue alors un choix Ci parmi
ces valeurs s’il y en a, sinon il backtrack pour revenir au dernier choix. Lorsque le
choix est fait, il y a activation de la règle ri + 1 au nouveau contrat | ci >. Nous
pouvons maintenant donner une définition de la négociation :
Définition : La négociation d’un contrat est une suite d’application de règles de
séquencement (r1 , … , rn ) et de choix (C1 , … , Cn ) tel que : ∀ i < i | Cn en … C1
e1 | c0 > ∈ Di
La figure 1 représente un graphe de séquencement correspondant à une
négociation. Les rectangles représentent des règles de séquencement prédéfinies
dans ANTS tandis que les ovales représentent des règles particulières à une
application, par exemple deux phases successives de vote correspondant à
l’instanciation de deux attributs d’un contrat. L'ordre d'évaluation est représenté sur
les arcs.
La conversation commence ici par l’activation de la règle start qui active la règle
accept (a1) avec un contrat initial. En cas de succès cette dernière active la règle
confirm, en cas d’échec il y a backtracking et activation de la règle X (a2) puis
activation de Y pour les instanciations de l’attribut négocié par X. La négociation
peut être annulée en cas de backtracking de la règle X, ce qui conduit à l’activation
de la règle annul (a3).
Dans les règles particulièresà une application, la règle X instancie une information i à
une valeur i1 parmi l'ensemble des choix possibles. La règle Y complète le contrat.
4
Start
a3
a2
X
a1
Y
annul
b2
b1
Restart
Accept
Confirm
Figure 1. Un graphe de séquencement
ANTS encapsule une règle de séquencement dans une méta-règle activée par un
méta-contrôleur et selon l’attitude de l’agent dans le processus de négociation, une
règle de séquencement doit définir une des deux interfaces suivantes :
public interface InterfaceInitiator{
public int activate();
public int receiveAnswer(KQMLMessage mess);
public Vector nextContracts();
}
public interface InterfaceParticipant{
public int receiveMessage(KQMLMessage mess);
public boolean canFilter(KQMLMessage mess);
public int validateNextMessage(KQMLMessage mess);
}
Les valeurs retournées indiquent l’état de la règle de séquencement active :
WAITING si l’initiateur attend des réponses, SUCCESS si un attribut a été instancié
ou FAILED si l’attribut ne peut pas être instancié. Dans le cas des règles prédéfinies
des valeurs particulières peuvent être également retournées : ACCEPT si un contrat
est accepté ou deux valeurs qui indiquent que l’on a atteint une règle terminale :
TERMINATESUCCESS et TERMINATEFAILED. La règle de confirmation d’un
contrat s’écrit donc de cette manière :
public class ConfirmRule extends SequencementRule
implements InterfaceInitiator, InterfaceParticipant{
public int activate() {
broadcastContract("confirm");
return TERMINATESUCCESS;
}
...
}
Une forme de négociation pour les S.M.A.
5
Le cas des règles de séquencement de type vote est rendu générique en utilisant
la notion de modèle. Les règles représentés en ovale sur la figure 1 représentent ce
modèle. Cela rend ces règles génériques et facilement réutilisables puisqu'il suffit
d'implémenter le modèle. L’initiateur doit implémenter un VoteModel et
l’initiateur comme les participants doivent implémenter un NegotiationModel
spécifiques à l’application.
La manière d’effectuer une négociation est définie par une ontologie qui
s’instancie en fonction d’un contrat:
public abstract class Ontologie{
public Ontologie(AgentNegotiator ag, Contract c) {
contract = c;
agentNegotiator = ag;
graph = getGraph();
name = getName();
}
public abstract Graph getGraph();
public abstract String getName();
. . .
}
L’agent peut alors négocier un contrat avec une ontologie particulière :
public void negotiate (String ont, Contract c) {
…
MicroAgent ma;
ma = new MicroAgent(id,this,ontologie(ont, c));
ma.setAttitude(new But(ma));
ma.negotiate(c);
}
Montrons maintenant comment à partir de l’interprétation de certains actes de
langage il est possible de gérer les interactions entre négociations.
4. Le niveau microscopique
Deux types d’interactions entre négociations sont à distinguer. Le premier type
appelé interactions horizontales est du au fait que la négociation principale peut
entraîner des renégociations en cascade. Le second type appelé interactions
verticales vient du fait que certaines négociations peuvent entrer en conflit. Nous
décrivons dans les paragraphes suivants les techniques mises en œuvre pour gérer ces
deux types d’interactions.
4.1. Les interactions horizontales
6
Remarquons tout d’abord que le déroulement d’une négociation ne dépend pas
de la raison pour laquelle elle a été engagée. Un agent A peut initier une négociation
N1. Cette négociation peut être bloquée par un contrat déjà pris sur les ressources
demandées par N1. Une autre négociation N2 est alors créée pour modifier le contrat
déjà pris. Dans les deux cas les négociations se feront suivant le même schéma, par
contre les effets seront différents. Le succès de la négociation induite ne doit pas
s’accompagner de la modification du contrat mais tous les agents impliqués dans ce
contrat doivent avertir A que la modification est possible. Inversement le succès de
A entraîne la validation de la modification induite. Nous devons donc distinguer la
manière de négocier et les effets de la négociation c’est à dire séparer le pourquoi du
comment. Cette distinction est prise en compte en définissant un deuxième niveau
d’abstraction constitué d’une trilogie MAC : modèle-attitude-contrôleur.
– Le méta-modèle est formé par l’ensemble des méta-règles, des négociations
induites et de la négociation qui l’a induite s’il s’agit d’une renégociation..
– Le méta-contrôleur active les différentes règles du contrôleur du métamodèle. Celles ci renvoient une valeur indiquant l’état de la négociation :
WAITING si la négociation n’est pas terminée, SUCCES ou FAILED
lorsque la négociation (d’un et un seul contrat) est terminée.
– La méta-attitude est un ensemble de méthodes qui définissent les actions à
effectuer en cas de succès ou d’échec d’une négociation ou d’une
renégociation ainsi que les actions à réaliser au démarrage de la négociation.
Définition : Un système MAC possède donc les caractéristiques suivantes :
– Il a un but : ce pourquoi la négociation a été engagée.
– Il est capable de raisonnement.
– Il a une attitude qui dépend du contexte de création.
– Il a une vue partielle de son environnement.
– Il est en relation avec d’autres systèmes MAC
Ces caractéristiques sont justement celles que doit posséder un agent. Nous
pouvons maintenant donner une définition d’un micro-agent : Dans le système
ANTS, un micro-agent est un système MAC.
Nous pouvons distinguer 6 attitudes :
But : l’agent veut négocier un contrat
Engagement : l’agent répond à une demande de contrat.
ButModification : l’agent veut modifier un contrat dont il est responsable.
ButDelegation : l’agent veut modifier un contrat pour le compte de quelqu’un
d’autre
5. EngagementModification : l’agent répond à une demande de modification de
contrat
6. EngagementDelegation : l’agent veut modifier un contrat dont il n’est pas
responsable.
1.
2.
3.
4.
Par la suite nous parlerons de l’attitude comme du micro-agent : nous dirons
qu’un But est un micro-agent ayant une attitude de type But.
Sur la figure 2 les droites horizontales représentent l'ensemble des ressources
existantes. Sous la droite on trouve le contrat déjà pris (1 seul par segment) et au
Une forme de négociation pour les S.M.A.
7
dessus se trouvent les contrats en cours de négociation (éventuellement plusieurs
superposés sans l'ordre de leur traitement futur, le plus bas étant celui traité en
premier). Chaque droite avec ses micro-agents représente la vue subjective du
monde par l'agent.
Lorsqu’un agent « négociateur » veut négocier un contrat, il crée un But et les
participants créent des Engagements. Des liens de dépendances existent donc entre le
But et les Engagements. Les Engagements doivent accepter pour que le But puisse
confirmer le contrat. Ces liens de dépendances sont des liens virtuels puisque les
micro-agents sont localisés chez des agents différents. Graphiquement (figure 2) ces
liens de dépendances seront représentés par des flèches en pointillés qui partent du
But vers les Engagements. Ces micro-agents peuvent à leur tour créer, chez l’agent
où ils se trouvent, des ButModification ou des EngagementDelegation pour modifier
des contrats déjà négociés. Les micro-agents créateurs dépendent alors des microagents qu’ils ont créés. Ce lien de dépendance est représenté explicitement (par des
flèches pleines) puisque les micro-agents créés et créateurs sont localisés chez le
même agent. Un ButModification va alors induire des Engagement-Modification
chez d’autres agents d’où des liens virtuels de type But / Engagement. Un
EngagementDelegation va induire chez le responsable un ButDelegation dont il
dépend, c’est un lien virtuel. Ce ButDelegation induit alors des
EngagementModification et ainsi de suite.
Un graphe virtuel, réparti sur tous les agents, constitué de liens réels ou virtuels
entre micro-agents est donc construit en réaction à la demande initiale de contrat.
Cette demande initiale est un But et il n’y a donc qu’un seul But dans un graphe de
dépendance. L’évolution de ce graphe se fait en trois temps : une phase d’extension
pour déterminer le plan global aux agents, une phase d’acceptation où chaque microagent avertit le micro-agent dont il dépend qu’il accepte la modification et une phase
de confirmation où chaque micro-agent confirme la modification au suivant.
Agent A
B1
Agent B
C2
Agent C
GD
6
GM
3
CM
4
GM
7
CM
8
CD
5
figure 2. La négociation d’un contrat avec renégociations induites
Par exemple, la figure 2 représente un graphe de dépendances (lignes
pointillées) entre trois agents A, B et C et les micro-agents correspondants .
8
L’agent A veut négocier un contrat avec B. A crée un But (B1) et B crée un
engagement (C2). Le But (B1) attend la réponse de l’engagement (C2).
B doit modifier un contrat déjà pris pour prendre (C2). B est responsable de ce
contrat pris avec C. Il crée donc un ButModification (GM). L'engagement (C2)
dépend alors de la réponse de (GM), ce qui est représenté par une flèche qui part de
(C2) et dirigée vers (GM). C crée un EngagementModification (CM). Le
ButModification (GM) ne dépend que de (CM).
C doit alors modifier un autre contrat pris avec A. C n’est pas responsable. Il crée
donc un EngagementDelegation (CD). Une flèche part de (CM) vers (CD) pour
indiquer que (CM) dépend de (CD). A crée un ButDelegation (GD).
L'EngagementDelegation (CD) dépend alors de (GD). A doit modifier un contrat
dont il est le responsable et crée un ButModification (GM). Comme pour (CM) et
(CD) une flèche relie (GD) et (GM). B crée un EngagementModification (CM). Le
ButModification (GM) dépend de (CM).
Les conflits sont inévitables lorsque plusieurs négociations sont engagées et si
nous nous sommes limités dans ce paragraphe aux conflits entre contrats déjà
négociés et les micro-agents, des conflits peuvent survenir entre micro-agents, ce
type d’interaction est appelé interaction verticale.
4.2. Les interactions verticales
Lorsque deux négociations différentes entrent en conflit, une seule des deux doit
continuer en fonction des préférences de l’utilisateur. Ce qui ne veut pas dire que
l’autre est en échec, elle ne le sera que si la première est validée. Nous dirons que le
micro-agent concerné par la négociation préférée capture l’autre, il est dit libre et
continue sa négociation. Un micro-agent peut être capturé par plusieurs micro-agents
et inversement, plusieurs micro-agents peuvent être capturés par un seul micro-agent.
Ce processus de capture est récursif et conduit à une structure de graphe à ne pas
confondre avec le graphe d’interactions. Ce graphe est modélisé par une surface et
un ensemble ordonné de fibres (figure 3). Lorsqu’un micro-agent active la règle
accept, il demande à un agent appelé environnement de l’insérer sur la surface qui
contient tous les micro-agents libres. Les micro-agents capturés sont placés sur la
fibre du dessous et ceci de manière récursive.
Nous avons introduit les notions de micro-agent, négociateur et environnement
afin de résoudre de manière séparée les interactions horizontales et verticales.
Puisque le graphe de dépendance d’une négociation est réparti chez plusieurs agents
ayant chacun attribué des priorités différentes, des interactions croisées peuvent se
produire.
Par manque de place, nous ne détaillerons pas ce type d’interaction. Notons
toutefois qu’il doit être évité car il conduit au blocage des négociations ou montre un
comportement irrationnel des agents. Le système Ants affecte une marque appelée
justification à chaque négociation pour éviter les interactions croisées.
Une forme de négociation pour les S.M.A.
9
Définition : une négociation est entièrement définie par
– Un contrat
– Un graphe de séquencement formé de règles de séquencement
– Un environnement constitué d’un monde (les contrats déjà négociés) et d’une
méthode calculant la priorité d’une négociation.
Micro-agent
communicateur
Interactions
horizontales
(coordination)
négociateur
Interactions
verticales (conflit)
environnement
Surface
fibres
Figure 3. Architecture de Ants
L’interprétation à de multiples niveaux du graphe de séquencement permet de
contrôler la négociation et de gérer de façon transparente au concepteur
d’application les conflits et les négociations en cascade. De plus une bibliothèque de
règles de séquencement permet de définir rapidement le graphe de séquencement.
Afin de valider notre système, montrons maintenant comment implémenter une
secrétaire virtuelle au dessus de la couche ANTS.
5. Une application : la secrétaire virtuelle
La secrétaire virtuelle a déjà été étudiée dans d’autres travaux [SEN 95] [JEN 95]
[KOZ 93] mais pas sous l’aspect négociation. Contrairement à Sen, nous ne nous
intéressons pas ici à montrer qu’une stratégie est meilleure qu’une autre mais au fait
que ANTS est suffisamment générique pour implémenter ces différentes stratégies.
Par ailleurs ANTS gère automatiquement les renégociations et les priorités entre
rendez-vous sans que le concepteur n’ait à l’écrire.
Le monde est ici l’agenda de la secrétaire. Les priorités pour les personnes, les
jours et les heures sont placées dans un fichier et sont modifiables par l’utilisateur au
moyen d’une interface. La priorité d’un rendez-vous est la plus grande des priorités
des participants. Les agents proposent une date de rendez-vous en choisissant le jour
puis l’heure qu’ils préfèrent. L’agent initiateur choisit alors la date préférée par
l’ensemble des agents. D’autres stratégies sont bien sûr possibles : par exemple les
agent peuvent vouloir proposer des dates sans avoir à voter le jour. Dans ce cas il n’y
10
aura qu’à définir un autre graphe de négociation. C’est aussi le cas si le concepteur
souhaite un modèle de type ContractNet.
Deux règles de séquencement spécifiques PJ (propose jour) et PH (propose
heure) sont définies comme sous classe de la classe VoteRule :
public class PJ extends VoteRule {
public void init() {
if(initiator()) voteModel = ontologie().voteModel();
negotiationModel = ontologie().negotiationModel(); }
public Contract nextContract(Object o) {
GregorianCalendar d;
d = (GregorianCalendar)((GregorianCalendar)o).clone();
Rdv rdv = (Rdv) contract.clone(); rdv.setDate(d); return rdv;
}
public String performative() {return "propose-jour";} …}
Les modèles negotiationModel et voteModel implémentent les méthodes
getChoice et makeChoice pour pouvoir proposer un jour ou une heure. N’étant pas
essentiels à la compréhension nous ne les détaillons pas. L’ontologie défini les
modèles et le graphe de la négociation qui est celui de la figure 2 où X est remplacé
par PJ et Y par PH.:
public class OntologieList extends Ontologie
implements InterfaceOntologieVote
{
public OntologieList(Secretary ag,Contract c) {
super(ag, c); negotiationModel = getNegotiationModel();
voteModel = getVoteModel(); }
public Graph getGraph() {
String start = "ants.lib.rules.StartRule"; . . .
Graph graph = new Graph(); graph.addRule(start);
graph.addRule(accept);
graph.addSuivant(start, accept); . . . return graph;} …}
Il reste à implémenter l’agent Secrétaire en relation avec un agent
Communicateur. Cet agent peut communiquer par Mail, par sockets ou être un agent
basé sur d’autres plates-formes comme MADKIT[FER 95] ou MAGIQUE [MAT 95]
public class Secretary extends AgentNegotiator {
SecretaryFrame frame;
public Secretary(String name, AgentCommunicator comm) {
super(name, comm); frame = new SecretaryFrame(this); }
public WorldModel setWorldModel () { return new Agenda(name()); }
public Ontologie ontologie(String ont, Contract c){
if (ont.equals("OntologieOne")) return new OntologieOne(this, c);
else return new OntologieList(this, c); }
public int priority(Contrat c) {. . .}
}
A titre indicatif
MADKIT [FER 95]:
nous montrons comment cette secrétaire fonctionne avec
Une forme de négociation pour les S.M.A.
11
public class MadkitCommunicator extends AgentCommunicator {
…
protected void activate() {
if (isGroup("Secretaries")) joinGroup("Secretaries");
else foundGroup("Secretaries");
requestRole("Secretaries",name); }
public void sendMessage(String nname, KQMLMessage m) {
sendMessage(getAgentsWithRole("Secretaries",nname)[0],m) ; }
}
Figure 4. Interface de la secrétaire virtuelle
Une interface permet de prendre des rendez-vous et de consulter son agenda
(figure 4). Le passage des messages s’effectue par mail, Le Communicateur lit toutes
les deux secondes le courrier pour déterminer si un mail a pour champ subject
« private_for_agenda ». Si oui le message est retiré et traité par la secrétaire.
Toutes les simulations réalisées en environnement hétérogène formé de stations
Unix, PC et MAC ont permis de vérifier la validité de notre modèle en vraie
grandeur. Un prototype du système peut être téléchargé à l’adresse
http://www.lifl.fr/SMAC rubrique ANTS.
6. Conclusion
Après avoir défini le type de négociation auquel nous faisons référence, nous
avons présenté dans cet article un modèle d’agents adaptés à cette forme de
12
négociation. Dans ce système nommé ANTS, les agents peuvent être humains ou
cognitifs ce qui est permis par l’utilisation d’actes de langage spécifiques.
La modélisation d’une négociation par un graphe de séquencement puis
l’interprétation de ce graphe à des niveaux d’abstraction successifs nous a permis de
modéliser le système Ants sous la forme de micro-agents en interactions entre eux et
avec un agent environnement. Le concepteur d’agents doit ici simplement définir un
graphe de séquencement et les règles spécifiques à une négociation particulière. Ants
gère de manière transparente le mécanisme de renégociation de contrats, les conflits
et les deadlocks pouvant survenir, contrairement à d’autres environnements comme
COOL, Jafmas et AgentBuilder. Par ailleurs la conception est facilitée par
l’utilisation d’une bibliothèque de règles génériques. Pour évaluer notre architecture,
nous l’avons appliquée à la secrétaire virtuelle en définissant plusieurs ontologies
possibles.
L’utilisation d’agents pour ce type de négociation est justifié par le nombre de
messages échangés : supposons que la négociation d’un contrat s’effectue toujours
avec m participants et que pour négocier un contrat C chaque participant soit amené
à renégocier un autre contrat, ceci à une profondeur n. Le nombre de nœuds de l’arbre
de dépendance sera alors égal à mn. D’autres aspects sont en cours d’intégration dans
le système Ants : les contraintes sont pour l’instant locales à chaque micro-agent
mais il est possible que des contrats soient liés et que la modification de l’un entraîne
la modification d’un autre (par exemple des rendez-vous le même jour). D’autre part,
la négociation d’un contrat c1 peut entraîner la renégociation d’autres contrats c2 et
c3. Ces derniers ainsi que leurs conséquences ne doivent pas entrer en conflit.
L’introduction de micro-agents superviseurs permet de prendre en compte ces
contraintes globales.
7. Bibliographie
[BRO 86] R.A. BROOKS. A robust layered control system for a mobile robot. IEEE Journal
of Robotics and Automation 2(1) : 14-23,1986
[COH 90] P.R. COHEN AND H.J. LEVESQUE. Intention is choice with commitment. Artificial
Intelligence, 42 : 213-261, 1990
[FER 95] J. FERBER. Les systemes multi-agents. Vers une intelligence collective. ISBN
272960572X. InterEditions.
[JEN 95] N. JENNINGS AND A. JACKSON. Agent-based Meeting Scheduling : A design and
Implementation, Electronic Letters, The Institute of Electronic Engineering, 31(5) : 350352, March 1995
[KLE 91] M. KLEIN. Supporting conflict resolution in cooperative design systems. IEEE
Transactions on System, Man, Cybernetics, 21(5) : 1379-1390, 1991.
[KOZ 93] R. KOZIEROK AND P. MAES. A learning Interface for Scheduling Meetings,
International Workshop on Intelligent User Interface, ACM, Orlando, Florida, January
1993
Une forme de négociation pour les S.M.A.
13
[LAN 92] LANDER S.E. AND LESSER. Negotiated Search ; Cooperative search among
heterogeneous expert agents. In AAAI-92 Workshop. Cooperation among heterogeneous
Intelligent Systems, 74-83.
[MAT 95] P.MATHIEU. Travail cooperatif et communication avancée. Actes des journées de
travail sur la notion de Multi-agents, 1995. Groupe Ganymède de la Région Nord-Pas de
Calais. Université des sciences et technologies de Lille. Publication n° 163
[MEY 88] MEYER R. A. CONRY, S.E. AND V.R. LESSER. Multistage negotiation in distributed
planning. In A. Bond and L.Gasser, editors, Reading In Distributed Artificial Intelligence,
pages 367-386. Morgan Kaufmann Publishers, Los Altos, CA, 1988
[ROS 96] J.S. ROSENSCHEIN AND G. ZLOTKIN. Mechanism for automated Negotiation in state
Oriented Domains. Journal of Artificial Intelligence Research. 5 : 163-238, 1996
[SEN 95] S. SEN. An automated distributed meeting scheduler, IEEE Expert, 1995
[SYC 89] K.R.SYCARA. Multiagent compromise via negotiation. In L. Gasser and M.N.
Huhns, editors, Distributed Artificial Intelligence, vol 2, pages 119-137. Morgan
Kaufmann Publishers, Los Altos, CA, 1989.
[YOK 92] YOKOO, DURFEE, ISHIDA, KUWABARA. Distributed constarint satisfaction for
formaliziong distributed problem solving. In Proocedings of the twelfth International
Conference on Distributed Computing Systems, Yokohama, Japan, June 1992