2. Architectures des agents et langages
|
POO |
POA |
|
Unité de base |
objet |
agent |
Paramètres définissant l'état de l'unité de base |
pas de contraintes |
croyances, décisions, obligations, habiletés |
Processus de calcul |
envoi de messages et méthodes pour la réponse |
envoi de messages et méthodes pour la réponse |
Types de messages |
pas de contraintes |
informer, demander, offrir, promettre, accepter, rejeter, … |
Contraintes sur les méthodes |
pas de contraintes |
consistance, vérité, … |
Avec l'évolution des théories concernant les agents et des langages de programmation associés, on peut également souligner d'autres différences entre POO et POA :
Le débat sur la différence entre agents et objets est encore ouvert, et on peut ajouter d'autres arguments à ceux mentionnés ci-dessus. En parcourant ce cours, vous pourrez décider par vous-mêmes quelles sont les différences les plus importantes, ou même s'il y a des différences.
Le langage AGENT0 part d'un modèle de logique modale qui définit la sémantique des constructions du langage. Shoham propose les opérateurs modaux B, CMT, DEC et CAN pour représenter les notions mentales des agents et donne les axiomes qui caractérisent ses opérateurs.
Pour en savoir plus sur la logique modale et les diverses modalités vous pouvez parcourir notre premier cours en ligne
Les agents AGENTS agissent dans un environnement où le temps est discret et linéaire et ils sont caractérisés par les notions mentales suivantes :
Le modèle suppose que les croyances et les obligations sont consistantes, notamment que l'agent n'a ni croyances contradictoires, ni obligations contradictoires, et qu'il applique une stratégie d'obligation aveugle. Les actions d'un agent sont de deux types : des actions privées que l'agent peut exécuter par lui-même, sans l'aide des autres agents, et des actions communicatives qui représentent des messages envoyés à d'autres agents.
Les composantes principales du langage AGENT0 sont :
La condition mentale a la forme présentée plus haut ; la condition du message a pour rôle d'identifier le type de message reçu et l'action spécifiée dans le message, l'agent fait référence à l'agent envers lequel on prend l'obligation.
Une règle d'obligation dit qu'un agent s'oblige à faire une certaine action si :
Un exemple de règle d'engagement est :
(COMMIT (?b REQUEST ?action)
(B (now (mon_ami
?b)))
(?b ?action))
où par ?b on indique un agent quelconque (le préfixe ? indique les variables du langage) ; cette règle signifie que si l'agent reçoit un message de demande (REQUEST) pour effectuer une certaine action (?action), et s'il croit qu'à l'instant présent (now) l'agent ?b est son ami alors notre agent s'oblige envers ?b à exécuter l'action ?action. Pour un message particulier, disons (Pierre REQUEST achete_livre) notre agent va s'obliger envers Pierre (?b), si Pierre est son ami, d'exécuter pour lui l'action achete_livre (?action).
Pour écrire un programme en AGENT0, on définit d'abord les croyances initiales et les habiletés des agents du programme. On écrit ensuite les règles d'obligation qui définissent le comportement de chaque agent. Ensuite, l'interprète du langage AGENT0 va exécuter la boucle de contrôle suivante pour chaque agent :
1. lire les messages reçus
2. actualiser les croyances en fonction de ces messages
3. déterminer les obligations en appliquant les règles d'obligation
dont les conditions sont validées
4. exécuter les obligations courantes
- si obligation = action privée alors
exécuter action
- si obligation = instruction conditionnelle alors
- vérifier condition mentale
- si la condition mentale est vérifiée
dans l'état de l'agent
- alors exécuter action associée
- si obligation=action communicative alors envoyer
message associé
fin
Dans le langage, chaque agent est exécuté par un chemin d'exécution indépendant, et il y a un mécanisme qui assure la transmission des messages entre agents.
Le langage AGENT0, bien que permettant le développement d'applications déjà assez élaborées avec des agents, n'est qu'un prototype. Il est important en tant qu'exemple illustrant le paradigme de programmation orientée agents, parce qu'il a inspiré d'autres langages de programmation orientés agents et parce qu'il a montré comment on peut réaliser une correspondance étroite entre les concepts de la théorie des agents et leur programmation.
Question: Dans la boucle de contrôle d'un agent AGENT0, si l'obligation courante à exécuter est (REFRAIN action) est-ce que l'agent doit envoyer un message ?
Cliquer ici pour voir la réponse
Il faut noter que, par rapport aux architectures d'agents cognitifs présentées dans la section antérieure, le langage AGENT0 comprend aussi bien des notions cognitives que la dimension sociale des agents, notamment la communication entre agents. En fait, l'idée clé du langage est cette dimension sociale. Quand on a discuté les architectures d'agents, à l'exception de l'architecture du système InteRRaP, on s'est concentré uniquement sur la structure d'un seul agent. Dans les chapitres qui vont suivre, on va bâtir sur ces architectures la dimension sociale des agents. L'exemple de AGENT0 sera un bon guide pour cela.
<< Section précédente | Table de matières | Section suivante >> |
Politechnica University of Bucharest - 2002 |