WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Modélisation par un système multi-agents d'un hypermédia éducatif adaptatif dynamique

( Télécharger le fichier original )
par Mounir Beggas
Centre Universitaire d'Eloued - Magister en Informatique 2005
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Implémentation de la communication entre les agents de HEDAYA

Pour implémenter la communication entre agents, plusieurs moyens existent : au niveau le plus bas, il existe les sockets qui permettent aux différents agents codés en Java de communiquer entre eux ; il existe aussi d'autres technologies (en Java notamment). On peut citer l'invocation de méthodes distantes (RMI Remote Method Invocation) et la technologie CORBA (Common Request Broker Architecture).

Une socket est une abstraction de programmation représentant les extrémités d'une connexion entre deux ordinateurs. Pour chaque connexion donnée, il existe une socket sur chaque machine, on peut imaginer un câble virtuel reliant les deux ordinateurs, chaque extrémité étant enfichée dans une socket. En Java, on crée un objet Socket pour établir une connexion vers une autre machine, puis on crée un InputStream et un OutputStream à partir de ce Socket, afin de traiter la connexion en tant qu'objet flux d'entrée/sortie.

Le principe de l'invocation de méthodes distantes et de permettre à un objet présent sur une autre machine de lui envoyer un message et l'on obtient le résultat comme si cet objet était instancié sur la machine locale. L'invocation de méthodes distantes exige de créer une interface distante (remote interface) sur la machine serveur ; ainsi, l'implémentation sous-jacente est masquée aux différents clients.

La norme CORBA fait partie du travail réalisé par l'OMG (Object Management Group) pour définir des standards d'interopérabilité des objets distribués et indépendants du langage. Elle fournit la possibilité de faire des appels à des méthodes distantes dans des objets Java et non Java, d'interfacer des systèmes existants sans se soucier de leur emplacement. CORBA dispose d'un langage de définition d'interface, IDL (Interface Definition Language), qui précise les types de données, les attributs, les opérations, les interfaces, etc.

Nous avons choisi de faire communiquer nos agents par les sockets Java, qui assure une communication en utilisant le protocole TCP/IP. Chaque agent lors de son fonctionnement ouvre son socket serveur et attend les messages des autres agents, si un message arrive il lance un thread pour le traiter, donc il n'y a pas de message en attente de traitement ; c'est-à-dire plusieurs messages peuvent être traités en parallèle (Figure 3.9).

Création de socket serveur

While (true){

Création de thread de traitement de requête

Lancement de thread(traite la requête et établit la réponse)

}

Un agent lorsqu'il a besoin de communiquer avec les autres agents il ouvre une communication avec un socket client, qui communique avec socket serveur de l'agent récepteur, en spécifiant l'adresse de la machine et le port puis il envoie le message (Figure 3.10).

Les messages KQML sont implémentés en définissant la classe Java KQMLmessage illustré dans la Figure 3.11.

La communication consiste à l'instanciation d'un objet de la classe KQMLmessage, la définition des ses attributs, puis l'envoi de cet objet. La classe KQMLmessage implémente l'interface Serializable, ce qui permet l'envoi et la réception des objets de cette classe par les sockets comme stream (flot).

Création de socket client (Nom Haute ou adresse IP, port)

Envoie de massage

...Attente de réponse ...

Réception de réponse

public class KQMLmessage implements Serializable {

private String performative;

private String sender;

private String receiver;

private String in_reply_to;

private String reply_with;

private String language;

private String ontology;

private Content content;

....

....

}

Figure 3.11:Classede message KQML

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"En amour, en art, en politique, il faut nous arranger pour que notre légèreté pèse lourd dans la balance."   Sacha Guitry