Un facteur important de l’évolution du système proie-prédateur est l’algorithme de déplace- ment utilisé. Cet algorithme détermine en effet non seulement la manière dont chaque agent consi- dérera les données de son voisinage, mais également le nombre de branchements et la régularité du nombre d’opérations à effectuer, pour un bon remplissage des ressources GPU.
5.2.1 Déplacement aléatoire
Une première implémentation du déplacement des proies et prédateurs est la sélection d’une destination aléatoire à chaque itération. Cette approche évite le parcours du voisinage de chaque agent pour la recherche d’une cible, et donc de nombreux accès mémoire, mais est peu intéressante à implémenter en termes de modèle et d’adaptation GPU :
— En termes de modélisation, elle est très peu cohérente avec le comportement de nombreuses espèces animales capables de détecter et poursuivre des proies. Elle minimise également artificiellement la population pouvant être supportée par le modèle, en ne laissant qu’une chance minime, en fonction de la densité des ressources dans l’environnement, à chaque individu de disposer des ressources nécessaires à sa survie.
— En termes d’adaptation sur GPU, ce comportement réduit la démarche de chaque individu au simple tirage aléatoire d’un jeu de coordonnées. Ce tirage rend inutile tout parcours de données sur GPU, et ne requiert plus qu’une gestion des conflits et la génération de nombres aléatoires. Ces deux processus sont difficiles à réaliser sans rendre partiellement séquentiels les deux traitements, ce qui limite l’intérêt des centaines de coeurs offerts par l’architecture.
Cette stratégie de déplacement aléatoire est surtout utilisée pour valider le fonctionnement d’une nouvelle simulation.
5.2.2 Proie la plus proche
Cette seconde stratégie implique un parcours pour chaque individu de l’ensemble des cases du modèle qui sont à sa portée, suivi par un déplacement sur la position de la proie la plus proche. Elle requiert un grand nombre d’accès mémoires pour évaluer toutes les cases destinations possibles, ainsi qu’une notion de priorité entre ces cases : une case proche contenant une proie doit être préférée à une autre case solution plus éloignée.
Une manière d’éviter le calcul de la distance de chaque proie est d’effectuer le parcours des cases voisines sous forme d’une spirale comme illustré par la Figure 5.2. Ce parcours en spirale permet non seulement de garantir que les proies seront automatiquement considérées par ordre d’éloignement, mais offre également l’avantage de pouvoir arrêter l’évaluation à la première proie détectée (court-circuit).
individu cible
rayon
Figure 5.2 – Principe de recherche de la proie la plus proche
Cet algorithme est aisément parallélisable sur GPU en attribuant une tâche à chaque individu, puis en effectuant le parcours des cellules voisines sous forme de boucle à l’intérieur de chacune de ces tâches. Il implique néanmoins, du fait de la condition d’arrêt, une forte variabilité du nombre de cellules à parcourir et donc du temps d’exécution de chaque tâche.
Il n’est pas facile de paralléliser davantage ce parcours en spirale en confiant l’examen de chaque case candidate à un thread distinct. Cet algorithme de déplacement requiert en effet la prise en compte des cases dans un ordre particulier, qui n’est pas garanti par l’ordonnanceur GPU. Une solution à ce problème est d’introduire un calcul de la distance pour chaque destination potentielle, suivie d’une réduction pour ne conserver que la cible détectée la plus proche de l’individu.
Cette stratégie minimise la distance de déplacement de chaque prédateur, mais n’est pas forcé- ment la meilleure en termes de survie à moyenne ou longue échéance, car la proie la plus proche n’est pas forcément la plus dotée en énergie.
5.2.3 Proie la plus énergétique
Une autre stratégie de déplacement possible est de sélectionner cette fois systématiquement la proie à portée disposant de la plus grande quantité d’énergie. Cette stratégie, qui permet de toujours sélectionner la proie la plus intéressante immédiatement accessible, garantit la sélection d’une proie équivalente ou supérieure en énergie par rapport à la sélection de la cible la plus proche. Elle impose cependant le parcours de l’ensemble des cases à portée avant de pouvoir tirer une conclusion, tel qu’illustré par la Figure 5.3. Le nombre d’accès à la mémoire est d’autant plus important, en comparaison avec la recherche de la proie la plus proche, que le modèle est dense.
Ce parcours obligatoire de l’ensemble des cellules à portée rend cette stratégie beaucoup plus coûteuse en nombres d’accès mémoire. L’absence de priorité entre les différentes cases voisines permet cependant des accès plus réguliers sur GPU, ligne par ligne ou colonne par colonne, pour mieux tirer parti du chargement des données par paquet ou du regroupement des accès mémoire réalisés à l’exécution.
5.2.4 Compromis et stratégies avancées
En fonction de l’intelligence du prédateur modélisé, il peut être pertinent de combiner une ou plusieurs des stratégies suggérées ci-dessus. Ainsi, si aucune proie n’est à portée d’un individu, un déplacement aléatoire par défaut offre une chance de se rapprocher de densités de proie plus
individu cible rayon
Figure 5.3 – Principe de recherche de la proie la plus énergétique
importantes. Ce déplacement comporte cependant également le risque d’éloigner l’individu des ressources recherchées, et son intérêt est donc très dépendant des paramètres du modèle et de la répartition géographique des agents. Nous avons fait le choix dans notre modèle de ne pas déplacer l’individu en l’absence de cible, pour éviter ce problème.
Au-delà de ces compromis instantanés entre plusieurs comportements, la recherche de cible ouvre également la voie à de véritables intelligences, avec mémorisation des proies. Il est ainsi possible d’intégrer la possibilité pour le prédateur de suivre sa proie si celle-ci quitte son champ de vision immédiat. Un autre mécanisme pouvant être implémenté est un comportement de per- sistance : si plusieurs cibles offrent des caractéristiques très similaires, mais deviennent tour à tour les plus intéressantes du fait de micro-variations du modèle entre chaque itération, il est alors per- tinent de pousser l’individu à se concentrer sur une seule cible, plutôt que de dépenser son énergie à courir dans diverses directions.