Heim >Backend-Entwicklung >Python-Tutorial >Punktesimulation mit genetischem Algorithmus – Teil 2

Punktesimulation mit genetischem Algorithmus – Teil 2

Barbara Streisand
Barbara StreisandOriginal
2025-01-16 18:58:11392Durchsuche

Dieses Tutorial verbessert eine genetische Algorithmussimulation durch das Hinzufügen von Funktionen wie Elite-Hervorhebung, erhöhter Hinderniskomplexität, einem „Erreicht“-Zähler und Crossover-Züchtung. Lassen Sie uns die Verbesserungen aufschlüsseln.

Teil 1: Visuelle Verbesserungen und Hinderniskomplexität

Die Simulation wurde verbessert, um Elite-Punkte (die in der vorherigen Generation am besten abschneiden) durch blaue Einfärbung visuell zu unterscheiden. Dies wird erreicht, indem der is_elite-Methode der Dot-Klasse ein boolescher Parameter draw hinzugefügt und die blaue Farbe bedingt angewendet wird. Die Population-Methode der draw-Klasse wird so geändert, dass sie diesen booleschen Wert basierend darauf übergibt, ob sich ein Punkt in der elites-Liste befindet.

Die Hindernisgenerierung wurde für mehr Flexibilität überarbeitet. Obstacle- und Goal-Klassen werden in eine separate obstacles.py-Datei verschoben, was eine sauberere Codeorganisation fördert. Eine constants.py-Datei wird eingeführt, um globale Variablen wie Bildschirmabmessungen und Bevölkerungsgröße zu speichern und so Redundanz zwischen Dateien zu verhindern. In OBSTACLES0 sind mehrere Hinderniskonfigurationen (OBSTACLES1, OBSTACLES2, OBSTACLES3, OBSTACLES4, OBSTACLES5, obstacles.py) definiert, die einen einfachen Wechsel zwischen verschiedenen Herausforderungsstufen ermöglichen. Das Hauptskript importiert diese Konfigurationen und wählt die gewünschte aus. Es wird eine Prüfung hinzugefügt, um sicherzustellen, dass das Ziel immer vorhanden ist, auch wenn Hindernislisten verwendet werden, die über Listenverständnisse generiert wurden (wie OBSTACLES4).

Ein „Erreicht“-Zähler wird hinzugefügt, um die Anzahl der Punkte anzuzeigen, die das Ziel in der vorherigen Generation erfolgreich erreicht haben. Dies wird durch Ändern der generate_next_generation-Methode in der Population-Klasse implementiert, um diesen Wert zu zählen und zurückzugeben. Die Hauptschleife zeigt diesen Zählerstand dann auf dem Bildschirm an.

Dots Simulation using Genetic Algorithm - Part 2

Simulation mit hervorgehobenen Eliten und Hindernissen

Dots Simulation using Genetic Algorithm - Part 2

Simulation des Laufens von OBSTACLES0 Hindernissen

Teil 2: Implementierung von Single-Point Crossover

Die Simulation geht von der Replikation zum Single-Point-Crossover für die Nachkommenerzeugung über. Eine crossover-Klassenmethode wird zur Dot-Klasse hinzugefügt. Diese Methode verwendet zwei Elternpunkte als Eingabe, wählt einen zufälligen Kreuzungspunkt aus und erstellt zwei Nachkommen, indem Teile der Bewegungssequenz jedes Elternteils kombiniert werden (dargestellt als Liste von Richtungsvektoren). Die generate_next_generation-Methode wurde aktualisiert, um diese Crossover-Methode zu nutzen und Paare von Nachkommen anstelle einzelner Klone zu erzeugen. Die Mutation wird weiterhin auf die Nachkommen angewendet.

Dots Simulation using Genetic Algorithm - Part 2

Single-Point-Crossover

Die verbesserte Simulation bietet eine verbesserte Visualisierung, einen anpassbaren Schwierigkeitsgrad und einen ausgefeilteren Zuchtmechanismus, was sie zu einem robusteren und aufschlussreicheren Beispiel eines genetischen Algorithmus macht. Zu den erwähnten zukünftigen Verbesserungen gehören die Speicher-/Ladefunktion und die Geschwindigkeitsoptimierung. Der Autor empfiehlt außerdem, seiner Discord-Community für eine weitere Zusammenarbeit beizutreten.

Das obige ist der detaillierte Inhalt vonPunktesimulation mit genetischem Algorithmus – Teil 2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn