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

Méthodes prédictives Discussion :

[SMA] répartition homogène d'agents dans un espace toroïdal


Sujet :

Méthodes prédictives

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut [SMA] répartition homogène d'agents dans un espace toroïdal
    Bonsoir !

    Je suis actuellement en train, à des vues pédagogiques de travailler sur un projet en Netlogo, l'objectif étant de trouver des idées soi-même de comportements à donner à des agents, dans notre cas, des moto-crottes (le prof à de l'humour).
    Je vous passe les détails, mais voilà, pour le moment, les agents se baladent de manière aléatoire sur la carte qui est par défaut, c'est à dire toroïdale (les bords gauche/droit et haut/bas se rejoignent deux à deux.
    Je voudrais que mes agent se répartissent le terrain de manière homogène.
    Ma première idée a été de leur dire de se diriger à l'opposé de la moyenne des positions de tous les autres. le comportement qui en a émergé et un équilibre relativement stable (donc pas vraiment adéquat) où les agents se sont regroupés par lots.
    EDIT : en y reregardant, je pense que j'ai mal implémenté cette idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Direction à choisir :
      Si la moyenne des coordonnées "y" des autres >0
        alors aller vers : (moyenne des "x" des autres - (largeur du terrain / 2), moyenne des "y" des autres - (hauteur du terrain / 2) )
        sinon aller vers : (moyenne des "x" des autres + (largeur du terrain / 2), moyenne des "y" des autres + (hauteur du terrain / 2) )
    Informations :
    Espace de travail : une grille, rappelant un schéma d'urbanisation à la "Manhattan" : des rues horizontales et verticales a peu près espacés de la même manière.
    Vision des agents : seulement ce qu'il y a sous leurs pieds(roues) : déjections, route, intersection ou plot de rechargement.

    Des idées de comment programmer mes agents pour que ma "flotte" se répartisse le terrain de manière homogène ? (et efficace si possible, mais si la répartition est homogène, l'efficacité sera améliorée)

    merci d'avance !

  2. #2
    Membre expérimenté Avatar de Acrim
    Profil pro
    En recherche d'emploi
    Inscrit en
    Septembre 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Septembre 2010
    Messages : 134
    Par défaut
    Que penses tu d'une stratégie qui consisterait pour chaque agent à s'éloigner de son (ses) plus proches voisins ? Éventuellement en pondérant l'influence de chacun de ses voisins par la distance les séparant ?

    J'imagine que les agents devraient tendre vers une disposition homogène. Et cela à l'avantage de prendre en compte le fait que ton terrain est torique.

    Si tu tests, fais nous part de tes résultats

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Je l'ai tenté comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let oxcor [xcor] of min-one-of other turtles [distance myself]
    let oycor [ycor] of min-one-of other turtles [distance myself]
    if not (xcor = oxcor) AND not (ycor = oycor)
      [ go-to oxcor + 2 * (xcor - oxcor) oycor + 2 * (ycor - oycor) ]
    sachant que ma procédure go-to [x y] fait qu'en arrivant à une intersection, la moto choisit la direction la plus appropriée pour se rendre au point de coordonnées (x,y)

    Et bien elles finissent par se regrouper sur une seule ligne et une seule colonne... et c'est normal parce que la plus proche d'eux est bien souvent très proche et donc sur la même "rue"
    Après plusieurs essais, les agents se regroupent sur des lignes et/ou colonnes, où ils trouvent une base de rechargement.

    J'ajoute un screenshot du "rendu" :

    Légende :
    blanc = rue propre
    Marron = rue "polluée"
    termite rouge = motocrotte
    Bleu = base de rechargement/vidage
    noir = "paté de maisons", zone non explorable

    Au passage, je remarque qu'un déplacement "aléatoire" (à une intersection, je choisit sans préférence une des 3 directions) est très efficace pour ce qui est de l'objectif : avoir un minimum de déjections dans la "ville"

  4. #4
    Membre expérimenté Avatar de Acrim
    Profil pro
    En recherche d'emploi
    Inscrit en
    Septembre 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Septembre 2010
    Messages : 134
    Par défaut
    Citation Envoyé par Kwaio Voir le message
    Je l'ai tenté comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let oxcor [xcor] of min-one-of other turtles [distance myself]
    let oycor [ycor] of min-one-of other turtles [distance myself]
    if not (xcor = oxcor) AND not (ycor = oycor)
      [ go-to oxcor + 2 * (xcor - oxcor) oycor + 2 * (ycor - oycor) ]
    sachant que ma procédure go-to [x y] fait qu'en arrivant à une intersection, la moto choisit la direction la plus appropriée pour se rendre au point de coordonnées (x,y)

    Et bien elles finissent par se regrouper sur une seule ligne et une seule colonne... et c'est normal parce que la plus proche d'eux est bien souvent très proche et donc sur la même "rue"
    Après plusieurs essais, les agents se regroupent sur des lignes et/ou colonnes, où ils trouvent une base de rechargement.
    Je pense que ce comportement est du à ce qui me semble être un erreur dans ton code. Je ne connais pas NetLogo mais j'imagine qu'avec if not (xcor = oxcor) AND not (ycor = oycor) tu voulais exclure le cas où les agents sont au même endroit. Or avec ce code tu dis que si les agents sont sur la même ligne OU sur la même colonne il ne faut rien faire.

    Tente en écrivant : if not (xcor = oxcor) OR not (ycor = oycor)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    En effet, j'ai simplement changé les parenthèses en :
    if not ((xcor = oxcor) AND (ycor = oycor))
    Et là, la répartition est bien meilleure.
    Je vais lancer une comparaison avec un déplacement aléatoire voire lequel est le plus efficace, mais déjà l'objectif d'une répartition homogène est atteint, même s'il semble un poil moins efficace.

    Merci à toi.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    J'espère que le double-post n'est pas un crime, ici ? sinon j'éditerai l'ancien message.

    Après avoir testé, la répartition aléatoire est deux fois plus efficace que la répartition "je m'éloigne du plus proche". Cette dernière doit donc entrainer plus de retours sur son chemin.

    Dommage, j'aurai espéré qu'un comportement "intelligent" soit mieux qu'un comportement "aléatoire"...

  7. #7
    Membre expérimenté Avatar de Acrim
    Profil pro
    En recherche d'emploi
    Inscrit en
    Septembre 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Septembre 2010
    Messages : 134
    Par défaut
    Citation Envoyé par Kwaio Voir le message
    J'espère que le double-post n'est pas un crime, ici ? sinon j'éditerai l'ancien message.

    Après avoir testé, la répartition aléatoire est deux fois plus efficace que la répartition "je m'éloigne du plus proche". Cette dernière doit donc entrainer plus de retours sur son chemin.

    Dommage, j'aurai espéré qu'un comportement "intelligent" soit mieux qu'un comportement "aléatoire"...
    A toi d'analyser les raisons de cet "échec" .

    Je n'ai pas d’expérience dans les SMA mais j'imagine que tu peux aussi t'amuser à mélanger les deux comportements et observer les variations en fonction de la valeur SEUIL choisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Si (valeur_aleatoire > SEUIL) alors
     comportement aléatoire
    sinon
     comportement intelligent
    Cela permet de rajouter un peu de "diversité" dans une stratégie qui est peut être un peu trop "statique". Bonne continuation.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    J'ai trouvé une solution qui est meilleure en terme d'efficacité, mais qui serai peu transposable (en tout cas pas simplement) à un cas réel.
    j'associe à chaque bout de route un timer que les motos réinitialisent en passant dessus. Arrivées à une intersection, elles choisissent le chemin commençant par la valeur de timer la plus élevée...

    L'idée : homogénéiser la fréquence de passage sur chaque segment de route, mais le système en grille que j'ai choisit isole parfois des segments, c'est normal.

    Différence avec la solution aléatoire : plus performant, mais beaucoup moins constant.

Discussions similaires

  1. répartition homogène dans un mélange
    Par manu070990 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/01/2014, 21h11
  2. Répartition homogène de N objets dans n boites
    Par nebuchad34 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 09/12/2008, 15h29
  3. Réponses: 2
    Dernier message: 16/08/2007, 09h48
  4. rotations dans l'espace -validation d'un modèle mathématique
    Par khayyam90 dans le forum Mathématiques
    Réponses: 20
    Dernier message: 16/08/2005, 13h26
  5. Découpage dun string dans l'espace
    Par Clad3 dans le forum OpenGL
    Réponses: 4
    Dernier message: 24/03/2005, 17h25

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