Implémentation d'un système de répulsion basé sur les champs de forces.

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Dans le cadre d’un projet universitaire, j’essaie de développer un système de « répulsion » dans le cadre d’un système multiagents. Le but est qu’un agent « me » qui veut aller à un point « target » ne rentre pas en collision avec un obstacle « bobs » (ou plusieurs obstacles). J’essaie donc appliqué la loi de Coulomb, mais celle-ci ne fonctionne qu’en static, il ne prend pas en compte le vecteur dans lequel je me dirige.

Je souhaiterais donc savoir si vous avez des pistes pour éviter les obstacles en en utilisant un principe de « champ de forces ».

Voici une petite image (faite sur geogebra):

Salut,

Une solution de type « dynamique moléculaire » ne marche pas ici ?

La cible attire (exerce une force) en $K_c/r^2$ suivant le vecteur moi - cible. Chaque répulseur émet une force en $K_r/r^2$ ($K_r << K_c$, probablement) suivant le vecteur moi - répulseur. Tant que le nombre de répulseur reste faible, tu pourra calculer rapidement la résultante des forces. Ensuite, tu appliques la seconde loi de Newton et le tour est joué. Il suffit de diriger ta force selon le vecteur attracteur <-> objet attiré.

Tu risques d’avoir des soucis avec le pas de temps, qui doit être faible, avec la bonne détermination des $K$, avec le fait que mal positionné, tu risques de partir à l’infini ou de t’arrêter en cours de route (cas d’un alignement parfait, celui que tu présente comme exemple !)… Mais en théorie, ça devrait marcher.

+1 -0

Salut,

Une solution de type « dynamique moléculaire » ne marche pas ici ?

La cible attire (exerce une force) en $K_c/r^2$ suivant le vecteur moi - cible. Chaque répulseur émet une force en $K_r/r^2$ ($K_r << K_c$, probablement) suivant le vecteur moi - répulseur. Tant que le nombre de répulseur reste faible, tu pourra calculer rapidement la résultante des forces. Ensuite, tu appliques la seconde loi de Newton et le tour est joué. Il suffit de diriger ta force selon le vecteur attracteur <-> objet attiré.

Tu risques d’avoir des soucis avec le pas de temps, qui doit être faible, avec la bonne détermination des $K$, avec le fait que mal positionné, tu risques de partir à l’infini ou de t’arrêter en cours de route (cas d’un alignement parfait, celui que tu présente comme exemple !)… Mais en théorie, ça devrait marcher.

Gabbro

J’ai un système comportant une 10ène d’agents. Je ne suis pas non plus un calé en physique. Peut-tu préciser les $K$, $K_c$ et $K_r$ s’il te plaît ?

Peut-être que dans mon système, si je prends en compte le target comme attracteur ça devrait fonctionner ? (Actuellement je ne le prend pas en compte).

+0 -0

Normalement, c’est $\frac{q_1 q_2}{4\pi \epsilon_0}$ avec $q$ les charges et $\epsilon_0$ la permittivité du vide, de valeur $9e^{-12}$ Farad par mètres. Sauf qu’on s’en fiche un peu : si tu multiplies toutes les forces par 10, tu vas multiplier la vitesse par 10. Donc, si tu multiplies toutes les forces par 10 et que tu divises le pas de temps par 10, tes particules ne verront pas leur position changer.

Tu peux tout à fait prendre $K_c$ = 1, et ensuite, trouver un pas de temps suffisamment petit pour que ça marche. Les $K_r$ devront être plus petits que $K_c$ (un dixième, un centième ?) de façon à ce que la particule soit attirée par l’attracteur, mais suffisamment grand pour qu’elle passe à côté des répulseurs. Là encore, on peut avoir une idée de l’ordre de grandeur (je propose un centième), mais ça se trouve pas mal en tâtonnant…

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte