Maison > développement back-end > Tutoriel Python > Simulation de points à l'aide d'un algorithme génétique - Partie 1

Simulation de points à l'aide d'un algorithme génétique - Partie 1

Barbara Streisand
Libérer: 2025-01-08 08:13:46
original
206 Les gens l'ont consulté

Cet article de blog détaille un projet captivant utilisant un algorithme génétique (GA) pour simuler des points naviguant vers une cible tout en évitant les obstacles. L'AG imite la sélection naturelle, améliorant de manière itérative une population de points en fonction de leur proximité avec la cible.

Dots Simulation using Genetic Algorithm - Part 1

Mise en œuvre d'un algorithme génétique :

L'AG suit ces étapes standards :

  1. Initialisation : Génère aléatoirement une population initiale de points.
  2. Évaluation : Une fonction de remise en forme évalue les performances de chaque point en fonction de sa distance par rapport à la cible.
  3. Sélection : Les points les plus aptes sont choisis comme parents pour la prochaine génération.
  4. Crossover : Les informations génétiques (directions de mouvement) des deux parents sont combinées pour créer une progéniture. (Remarque : ce projet utilise initialement la réplication pour des raisons de simplicité ; le croisement sera ajouté plus tard.)
  5. Mutation : Des changements aléatoires mineurs sont introduits dans les directions de mouvement de la progéniture pour maintenir la diversité.
  6. Remplacement : La génération précédente est remplacée par la progéniture.
  7. Élitisme : Les points les plus performants de la génération précédente sont préservés dans la génération suivante.
  8. Itération : Les étapes 2 à 7 sont répétées pour un nombre spécifié de générations.

Aperçu de la simulation :

La simulation visualise une population de points évoluant pour atteindre une cible carré rouge. Le mouvement de chaque point est déterminé par ses « gènes » (une séquence de directions de mouvement). Grâce à la sélection, à la mutation et à la réplication, la population s'adapte, améliorant sa capacité à atteindre la cible tout en contournant les obstacles rectangulaires noirs.

Composants clés de la simulation :

  1. Points : Agents avec des directions de mouvement (chromosomes) et un score de condition physique basé sur la proximité de la cible.
  2. Fonction Fitness : Calcule la condition physique en fonction de la distance jusqu'à la cible, récompensant les chemins plus courts.
  3. Population : Une collection de points évoluant au fil des générations.
  4. Algorithme génétique : Pilote le processus évolutif, en sélectionnant les individus adaptés et en introduisant des variations.
  5. Obstacles : Des rectangles noirs contestant la navigation des points.
  6. Objectif : Un carré rouge que les points visent à atteindre.

Configuration du projet (Python avec Pygame) :

Le projet utilise Pygame pour la visualisation. Des variables globales clés contrôlent les paramètres de la simulation (taille de la population, taux de mutation, etc.). Une classe Dot représente des points individuels, gérant leur position, leurs mouvements et leur forme physique.

Simulation initiale (point unique) :

Le code initial simule un seul point se déplaçant de manière aléatoire jusqu'à ce qu'il quitte les limites de l'écran. Cela constitue une étape fondamentale avant d’introduire une population et l’AG.

Simulation de la population :

Une Population classe gère le groupe de points. La méthode update déplace les points et vérifie les collisions avec les obstacles. La simulation affiche désormais plusieurs points se déplaçant simultanément.

Ajout d'obstacles et de l'objectif :

Les classes

Obstacle et Goal sont introduites pour représenter respectivement les obstacles et la cible. La détection de collision est implémentée, provoquant la « mort » des points en cas de collision. La simulation comprend désormais un carré cible rouge et un obstacle rectangulaire noir.

Mise en œuvre de l'algorithme génétique (réplication) :

La méthode get_fitness de la classe Dot calcule la forme physique. La classe Population gagne les méthodes generate_next_generation et select_best_dots pour implémenter la sélection, la réplication (initialement au lieu du croisement), la mutation et l'élitisme. La simulation montre désormais la population évoluant au fil des générations.

Améliorations futures :

Les futurs articles de blog couvriront :

  • Distinguer visuellement les points d'élite.
  • Ajout d'obstacles plus complexes.
  • Mise en œuvre d'un crossover pour une génération de progéniture plus sophistiquée.
  • Affichage d'un message « Atteint » lorsqu'un point atteint la cible.

Le code complet (jusqu'à présent) est disponible sur GitHub. Expérimentez avec le code et partagez vos découvertes ! Rejoignez la communauté AICraftsLab Discord pour vous connecter avec d'autres passionnés d'IA.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal