Déterminer un mouvement pour une colonie de robots
Bonjour, étant nouveau à l'algorithmique , (bien qu'ayant lu des cours) , j'expose ici mon problème. Toute piste , même petite serait d'une grande aide.
On a une colonie de robots composée de 2 sortes de robots : les boules et les batons. Les batons peuvent tourner autour des boules et s'en détacher (pas se répulser par contre). De plus, les boules sont "garnies" d'électroaimants à l'intérieur sur les 3 axes, et peuvent donc attirer les batons, qui ont des électroaimants sur leurs extremitées . Les batons ainsi que les boules peuvent prendre 3 polaritées : -, Neutre, +.
J'aimerais chercher un algorithme , possiblement récursif , pour partir d'une position A et arriver a une position B (les polaritées des électroaimants à la position B ne sont pas primordiales). Pour l'instant , mes simulations utilisent un arbre de recherche.... pour 6 robots , ça va, mais le nombre "max" est 2^64 , et bon ^^......
Déterminer un mouvement pour une colonie de robots
Bonjour, :D
Les précisions successives que tu donnes au sujet de ton système appellent les remarques suivantes:
1°) Le nombre de robots en interaction (N = 264 ~ 1.8E19): dans le cas très favorable où il n'interviendrait pour chacun d'eux que deux états possibles ("0" ou "1"), individuellement représentables par un bit (1), cela fait pour mémoriser l'ensemble (N/8) octets, soit environ 2.3 millions de téraoctets: cela dépasse largement les capacités de tous les ordinateurs existants.
Les simulations des ensembles à (N) entités, réalisées sur les meilleures machines, ne font intervenir "que" quelques centaines (au mieux quelques milliers) de particules (molécules ou ions), selon la complexité des interactions; et ton PC ramera sérieusement à partir d'une centaine (en supposant le programme mis au point, et le code pas trop lourd).
Peut-être as-tu été impressionné par les scènes de bataille de Star Wars, ou du Seigneur des Anneaux ?
Il te faut donc revoir sérieusement ton effectif à la baisse, et tu pourras t'estimer heureux si ça marche pour N = 10 ou 20 . Après, tu pourras monter avec prudence à 40 ou 60 ...
Citation:
... 2^64 est le nombre max théorique de robots (espèce A et B confondues). Basiquement , comme il risque d'y en avoir beaucoup , autant tester avec le "pire" nombre pour le temps ...
Non justement, puisque tu ne saurais tester un programme dont l'exécution bloque indéfiniment la machine ! Il faut au contraire partir d'un faible effectif, et voir ensuite l'évolution du temps de calcul.
2°) En quoi consiste l'évolution du système ? Tu évoques tantôt un mouvement d'ensemble, tantôt un réarrangement,
Citation:
... J'aimerais chercher un algorithme , possiblement récursif , pour partir d'une position A et arriver a une position B ...
... Je veux partir d'une situation A, d'où je connais les pôles "sortants" des aimants, et je veux arriver à une configuration B ...
... Je veux générer une solution qui à partir d'une configuration X de départ et Y d'arrivée , fait X1 , X 2 etc... pour arriver à Y ...
ce qui a déconcerté les intervenants précédents.
a) En l'absence de forces extérieures, il n'y a pas de mouvement d'ensemble, et le barycentre du système reste fixe. On observera donc une réorganisation interne du système, avec modification des distances et orientations mutuelles des robots - ce qui laisse entrevoir un algorithme suffisamment costaud pour décrire leurs déplacements et leurs basculements ... on y reviendra.
b) Tu souhaites ne faire intervenir que des attractions mutuelles entre aimants:
Citation:
... Les aimants sur les 2 ne sont pas fait pour repousser , mais peuvent attirer à une distance x ...
alors que les forces produites sont attractives ou répulsives, selon les signes des "masses magnétiques" en interaction (dont tu parais oublier qu'elles sont toujours appariées).
Tu supprimerais de plus , avec la répulsion, le basculement caractéristique des aimants, conséquence de l'action d'un couple de forces de sens opposés.
Il y a cependant plus grave: en l'absence totale de forces répulsives, le système finirait par se contracter en un point, à l'exception des robots non aimantés qui, indifférents au voisinage, resteraient immobiles.
Par conséquent, il intervient au moins de fortes répulsions à courte distance, révélant l'existence d'un volume fini et incompressible pour chacun des objets en interaction.
c) Les 'bâtons' apparaîtront les plus mobiles, parce qu'ils se réduisent à des dipôles uniques alors que les boules en comportent 6 (ce n'est pas une question d'inertie mécanique); tu observeras le plus souvent une évolution monotone et banale, les dipôles venant se blottir les uns contre les autres, en position antiparallèle, ou formant de petits cycles.
3°) La modélisation des robots risque de faire apparaître de légères difficultés, dont tu ne te doutais peut-être pas ...
Le comportement de tels objets est beaucoup plus complexe que celui d'un atome d'hélium, ou d'une balle de ping-pong.
a) Comme cela se passe à priori dans l'espace
Citation:
... Le principe est d'aller le plus vite d'une "architecture" A à une autre, par exemple un cube de ces robots qui font un triangle après ...
... En gros l'espèce A est un bâton qui peut s'accrocher par les extrêmités à l'espèce B une boule, les bâtons peuvent aller partout autour de la boule ( en 3d comme tu dis ) ils peuvent s'attirer entre eux ( A et A, A et B , B et A, B et B )
il faudra représenter la position de chaque centre par un vecteur de (R3): r = OM = (x, y, z);
b) les bâtons sont des dipôles, dont l'orientation spatiale est caractérisée par un vecteur moment magnétique: P = (Px, Py, Pz);
c) les boules constituent un système beaucoup plus complexe, éventuellement réductible à un octaèdre comportant une masse magnétique (+m) en chacun de ses 6 sommets, et une autre (-6*m) en son centre; son orientation sera caractérisée par deux vecteurs unitaires orthogonaux (u, v).
Dans ce dernier cas, il s'agit d'un entité magnétique multipolaire, dont les lignes de champ présentent de nombreuses boucles dans l'espace environnant, et qui imposera aux bâtons une disposition beaucoup plus compliquée que celle que tu sembles espérer.
Je crois que tu as implicitement pensé à un monopôle magnétique, qui malheureusement n'existe pas, ou à une bille constituée d'un métal ferromagnétique, qui attire les aimants.
Quant à l'expression des interactions, il n'est même pas question d'y songer.
(1) Remarquons simplement qu'en attribuant à chaque entité 2 (ou 3) vecteurs, soit 6 (ou 9) réels qui en précision étendue seront codés sur (6 ou 9)*10 = 60 (ou 90) octets, soit 480 (ou 540) bits, on déborde de trois ordres de grandeur l'évaluation initiale ... Cela renforce bien sûr le premier argument.
Le modèle physique d'un ensemble de sphères chargées pourrait constituer, par analogie, un bien meilleur point de départ; on pourrait y trouver:
a) (2*N1) petites boules, de charges (±q1), groupées par paires de charges opposées, et toujours en contact avec leur voisine;
b) quelques grosses boules de charges (±q2), aléatoirement réparties dans l'espace.
La représentation d'une particule se réduit alors à deux données, sa charge (qi = ±1 ou ±q) et la position de son centre ri = (xi, yi, zi), soit un ShortInt et 3 trois Extended qui occuperont (1 + 3*10) = 31 octets: c'est quand même moins encombrant !
Si tu arrivais à coder l'évolution de ce système, ce serait déjà pas mal ...