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

Intelligence artificielle Discussion :

Algo de déplacement de fuite


Sujet :

Intelligence artificielle

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut Algo de déplacement de fuite
    Bonjour,


    Imaginons un troupeau de mouton, qui ont chacun leur destination "normale", et où viendrait perturber un loup. Chaque mouton va s'agiter avec plusieur facteurs :
    - La destination où ils devaient aller
    - Le prédateur qui va les faire déplacer dans la direction opposée
    - La volonté de rester "ensemble"

    Il faut également prendre en compte le terrain (le mouton ne pourra pas aller dans un gouffre ou grimper sur des pentes trop raides).

    C'est sur les contraintes que je sèche, je pense gérer le terrain tout comme les 3 premiers facteurs de déplacement, si une pente est élevée, le mouton aura moins envie d'y aller que s'il y avait un terrain plat. Au plus il est proche de cette contrainte, au plus le facteur de refus d'y aller grandira.

    Donc à partir de mon point modélisé par mon mouton, via les 3 premières contraintes j'établis une direction, et ensuite comment faire ? Je pense faire du ray tracing, récupérer des angles afin de définir la complexité du terrain mais aussi vers quel direction "tourner" par la suite.

    Est-ce que ça vous semble correct ?

    Quelles formules puis-je utiliser ?


    Merci,

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Salut,

    Raytracing & co, ça me semble un peu lourd.
    Tu pourrais prendre comme limite pour les pentes 45°, d'autant plus que si tout le troupeau grimpe et que le tout premier tombe, il envoie tous les autres au pied de la pente également, ce serait assez bête, le loup n'ayant plus qu'à sortir serviette, couteau et fourchette.

    Je vois 2 possibilités : faire une sorte de bricolage, du genre : si je peux aller en ligne droite vers là ou je comptais déjà aller, j'y vais. Sinon, je dévie assez pour éviter le loup. Et tu recalcules la direction en fonction de la nouvelle position du loup toutes les X secondes par exemple.
    L'autre possibilité c'est essayer de trouver une modélisation pertinente et efficace, et d'y appliquer un truc un peu moins "bricolé". Tout dépendra de la modélisation. Notamment, en modélisant un vecteur à N dimensions ou les premières composantes sont la position du loup et les suivantes les différents paramètres à prendre en compte, tu peux peut-être utiliser un réseau de neurones ou une technique de ce genre.

    Bref, quel style de méthode préfèrerais-tu ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Salut,

    Merci pour cette réponse.

    Je préfère la seconde solution. En effet, c'est pas le mouton qui cherche à éviter le loup en passant à côté, mais plutôt une répulsion, comme des aimants opposé.
    Pareil pour une coline, si ça monte au delà de 45°, le mouton ne sera pas attiré par ce chemin. En revanche si à côté c'est du terrain plat, ce chemin prendra du poid et sera privilégié.

    L'idée est que le mouton soit soumis à plusieurs attractions ou répulsion.

    Pouvoir calculer le "score" d'un chemin, ça me semble faisable bien que je ne m'y suis pas encore penché, mais c'est surtout pouvoir envisager d'autres chemins pour calculer leurs "score" selon les attractions/répulsion du mouton.

    A vrai dire "chemin" est un grand mot, j'envisage de calculer à un instant T où il va se placer à un instant T + 1. A la frame suivante, ça va se déplacer à l'instant T + 2 etc... comme si le mouton ne pouvait "voir" pas plus loin que son prochain "pas" (ou plutôt sa prochaine capacité de déplacement en fonction d'un delta en milliseconde).

    L'idée du vecteur à N dimension me plait bien, mais j'suis pas vraiment callé en math,je voyais ça plutôt comme plusieurs vecteurs (ce qui est peut-être pareil).

    Par exemple, si le loup est droit devant, on aura un vecteur qui va vers l'arrière avec une force de n * distance "mouton - loup" (pour similer la plus grande peur quand le loup est proche ou éloigné). Puis un vecteur de force constante qui va du loup vers son point cherché, puis un vecteur de "déviation" qui selon sa direction et la pente du terrain entre lui et son prochain "pas" va préférer le faire dévier à droite ou à gauche selon que le terrain soit plus ou moins penché.

    C'est sur cette dernière contrainte que je me pose pas mal de question. Admettons entre T et T + 1 la pente est de 5°, c'est correct. Si le mouton peut faire des virage à 30°/sec max. Je dois donc trouver l'arc de cercle de capacité à "tourner", me définir une précision (du genre 1 point sur 5), puis calculer la pente sur chacun de ces points et enfin retenir la meilleure direction à prendre, ce qui me fera ma composante terrain.


    Est-ce que ça semble être une bonne solution ?

    Merci
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    J'aurais juste 2 remarques :

    1/ A moins de vouloir faire un mouton totalement abruti et incohérent dans ses mouvements, il vaut mieux prévoir de T à T+5 ou 10 par exemple, afin qu'il ne change pas brusquement de direction de façon étrange.

    2/ Plutôt que des attractions/répulsions, j'attribuerais simplement des poids.

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par Alp Voir le message
    2/ Plutôt que des attractions/répulsions, j'attribuerais simplement des poids.
    +1

    Tu peux définir tes poids sur un cercle entourant ton mouton (tous les 5°, ou 10°, ou autre, à toi de voir). Pour chaque contrainte, tu définis une répartition sur ce cercle, et tu sommes ces répartitions (éventuellement affectées d'un certain poids pour paramétrer la contribution de chacune). Au final tu obtiens une certaine répartition sur le cercle, avec un ou des optima, indiquant les directions à privilégier.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 66
    Points
    66
    Par défaut
    Hello,

    Moi j'ai un truc simple.
    Mouton - Loup, Je vois ça comme 2 boules qui se repoussent sur une table (La force dépend de la distance comme pour des aimants).
    Si la table est inclinée et bien il faut prendre la résultante entre la force qui ferait aller la boule selon la plus forte pente et la force de répulsion mouton-loup.

    Si tu as plus d'une force (cohésion etc) tu fais la somme...
    Bon au moins ça à le mérite d'être simple.

    Sinon c'est pour un projet genre Animat ?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Ouais on a commencé comme ça, avec une notion d'élastique, aux propriétés "statiques" différentes. Ainsi, chaque mouton sera lié avec les autres de sa "région" par des élastiques. Le loup n'est qu'un mouton qui possède des élastiques aux caractéristiques différentes pour gérer la répulsion, et comme ça, si on veut rajouter un chien de berger, on configurera une propriétés d'élastique de répulsion un peu moins forte que pour un loup.

    En fait on sait pas trop où est-ce que l'on va. Celà fait quelque temps que pour m'amuser je construit un moteur graphique, utilisant tant OpenGL et DirectX9, basé sur les idées de LouLou, et je l'enrichit régulièrement (hier, j'ai terminé les skinned mesh sur chargement Collada). Et avec un collègue de travail qui est également attiré par la 3D, on a joué à Workd Of Goo qui nous a pas mal inspiré.

    Mais on part plutôt sur des insectes qui crapahutent sur des objets. La grosse inconnue est de gérer les collisions avec le terrain, qui sont au final des objets (une coccinelle qui évolue sur un arbre par exemple, ou des vers sur un crane), actuellement on pense au ray tracing mais bon, c'est pas une bonne solution je pense. Pour le moment ça donne bien car on a qu'un insecte sur un objet mais à terme... Et comme l'échelle est assez rapprochée, on peut pas modéliser les objets par des boules ou des cubes comme font les moteurs physiques. Par exemple, si l'arbre a un trou dedans, on aimerai pouvoir faire en sorte que la coccinelle puisse rentrer dedans, où les vers dans le crane via l'orbite des yeux ou la bouche.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/04/2012, 13h55
  2. algo de déplacement java
    Par rafikindia dans le forum Général Java
    Réponses: 7
    Dernier message: 02/01/2008, 14h05
  3. cherche algos Delphi pour : Huffman, R.S.A, D.E.S.
    Par X-Delphi dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2002, 18h51
  4. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

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