IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

programmation orientée agent et weakreference


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Par défaut programmation orientée agent et weakreference
    J'ai un objet Word, composé d'objets Agent.
    De temps en temps, les agents disparaissent (meurent) : dès ce moment l'objet World n'entretient plus aucune référence sur l'agent disparu.

    Mais comme les agents entretiennent des relations entre eux, certains agents peuvent avoir des références sur l'agent disparu. Ainsi, un agent peut 'mourir' pour le monde réel, mais survivre dans la mémoire d'autres agents.

    Pour le détruire vraiment, il faut faire le tour de chacun des agents pour l'éliminer chez chacun. D'une part on peut oublier une référence (avec une structure plus complexe que celle donnée en exemple) d'autre part ce n'est pas cohérent dans un framework où l'on cherche à modéliser des agents autonomes : la disparition d''un agent ne doit pas dépendre des autres agents, elle doit s'imposer à eux, comme une évidence externe, au moment où ils chercheront à entrer à nouveau en relation.

    Ce qu'il faut donc c'est que seul le monde entretienne une strong reference sur chaque agent, et que les agents entre eux n'entretiennent des relations que par des références indirectes.

    J'ai pensé aux weakreference que je n'ai jamais utilisé. Est-ce la solution à mon pb ?
    Existe-t-il d'autres outils ?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 885
    Par défaut
    Salut,

    pas forcément, tu pourrais voir les choses ainsi :

    lorsqu'un agent meurt (via une méthode de celui-ci je suppose ? Si non, mieux vaut en rajouter une), il averti ses collègues de son décès imminent, déclenchant (de leur côté) le nettoyage des référence vers notre regretté agent.
    Du coup, l'agent que tu veux dézinguer ne sera plus référencé par personne, et pourra être fauché par the grand holly ramasse miette.
    Snif.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Par défaut
    Oui c'est comme ça que je procède actuellement.
    Ca marche d'un point de vue POO, mais ce n'est pas satisfaisant d'un point de vue POAgent, pour les raisons que j'ai exposées plus haut.
    Donc je maintiens ma question : est-ce que les weakreferences sont adaptées à mon pb, ou existe-t-il des outils plus spécifiques ?

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    j'ai pas tout compris (mais j'ai la g*** de bois ce matin).
    est-il possible d'avoir un système d'identification des agents et un service qui fait le lien identification/agent.
    au travers d'une référence faible tu peux:
    - récupérer l'agent qui n'a pas disparu
    - sinon demander au service d'annuaire de le resusciter ...

    ça c'est une utilisation classique des références faibles (par exemple imageen méoire)

    enusite on peut faire plus difficile: avec une queue de référence tu peux lancer des notifications à toutes les entités enregistrées et intéressées par la mort de l'agent. Il y a des tas de possibilités (et des codes pas évidents en particulier avec les "PhantomReference" ) ... un petit scenario?

    merci

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Les WeakReference peuvent être une solution.
    Mais tu devrais plutôt réfléchir en terme d'agent. Tu as de multiples techniques pour faire communiquer des agents. Tu devrais revoir la conception de la communication : tableau noir (l'agent va lire de temps en temps si une information l'intéresse), messages à poster (il donne une lettre au facteur, avec une adresse, et le facteur se débrouille pour trouver le bon agent).
    Il est dommage, d'un point de vue agent, d'avoir des "références fortes" entre les agents.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Par défaut
    Les métaphores tableau noir et facteur sont satisfaisantes tant que les interactions que l'on cherche à modéliser sont des échanges d'information.

    Mais parce que certaines des interactions à modéliser sont des interactions physiques directes (par exemple quand un agent Employee fait appel à la méthode work() de l'agent Employer, ça ne passe pas par la poste) je craindrais en utilisant de telles métaphores d'obscurcir le modèle.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/12/2012, 10h24
  2. Programmation orienté agent sous MATLAB
    Par welbiz dans le forum MATLAB
    Réponses: 1
    Dernier message: 14/05/2010, 07h45
  3. Programmation Orientée Aspect - votre avis
    Par Alec6 dans le forum Débats sur le développement - Le Best Of
    Réponses: 70
    Dernier message: 09/07/2009, 11h19
  4. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo