1 Punkte von GN⁺ 2024-04-29 | 1 Kommentare | Auf WhatsApp teilen
  • Simulationsprogramm zur Evolution von Autos mit einem genetischen Algorithmus

    • Ziel ist es, mithilfe eines genetischen Algorithmus zufällige zweirädrige Formen über Generationen hinweg zu Autos zu entwickeln
    • Basiert auf BoxCar2D, wurde jedoch von Grund auf neu geschrieben und verwendet lediglich dieselbe Physik-Engine (box2d)
    • Verwendet die Bibliothek seedrandom.js von David Bau
  • Steuerung und Einstellungen

    • Es gibt die Funktion Save/Restore Population, mit der sich die aktuelle Population lokal speichern und wiederherstellen lässt
    • Über den Schalter Surprise kann das Zeichnen ein- und ausgeschaltet werden, um die Simulationsgeschwindigkeit zu erhöhen
    • New Population startet nur die Autopopulation neu, während die Strecke erhalten bleibt
    • Mit demselben Seed wird immer dieselbe Strecke erzeugt, sodass man mit Freunden konkurrieren kann
    • Mutation rate ist die Wahrscheinlichkeit, dass bei der Geburt einer neuen Generation jedes Gen jedes Individuums auf einen Zufallswert mutiert
    • Mutation size ist der Bereich, in dem jedes Gen mutieren kann; je kleiner der Wert, desto näher bleibt er am ursprünglichen Wert
    • Elite clones bezeichnet die besten n Autos, die in die nächste Generation kopiert werden
    • View top replay pausiert die aktuelle Simulation und zeigt das leistungsstärkste Auto an
  • Grafik

    • Rot: Höchstpunktzahl jeder Generation
    • Grün: Durchschnitt der besten 10 Autos jeder Generation
    • Blau: Durchschnitt aller Generationen
  • Genom-Zusammensetzung

    • Form (1 pro Eckpunkt, insgesamt 8 Gene)
    • Radgröße (1 pro Rad, insgesamt 2 Gene)
    • Radposition (1 pro Rad, insgesamt 2 Gene)
    • Raddichte (1 pro Rad, insgesamt 2 Gene) - je dunkler, desto höher die Dichte
    • Chassisdichte (1 Gen) - je dunkler, desto höher die Dichte
  • Zusätzliche Hinweise

    • Die Simulation ist nicht deterministisch, daher zeigt das beste Auto möglicherweise keine konsistente Leistung
    • Die Komplexität des Terrains nimmt mit der Distanz zu
    • Der Code ist jetzt auf GitHub verfügbar und offen für Beiträge aus der Community

1 Kommentare

 
GN⁺ 2024-04-29
Hacker-News-Kommentare

Zusammengefasst:

  • Dieses Projekt wurde vor 20 Jahren erstellt und läuft dank Ruffle noch immer im Browser
  • Aufgrund der Eigenschaften genetischer Algorithmen neigt ein gutes Design, sobald es einmal auftaucht, dazu, in den folgenden Generationen dominant zu bleiben. Es könnte sich lohnen, die Einstellungen für Mutationsrate und Mutationsgröße anzupassen
  • Nach 280 m gibt es keine Straße mehr; wegen eines kleinen Bugs fallen die Autos in eine endlose Grube
  • Mit dem Button "Surprise" kann man schnell mehrere Generationen durchlaufen. Es ist interessant, die Evolution im Zeitverlauf zu beobachten, während man Mutationsrate und Mutationsgröße anpasst
  • Es wäre interessant, wenn das Fahrzeug ein Gen für "Compliance" hätte, sodass sich eine Federung umsetzen ließe. In den meisten Durchläufen konvergiert es tendenziell zu einer Form wie das Tron-Bike
  • Das Gelände ändert sich auch beim Generationswechsel nicht
  • Wurde bereits in früheren HN-Diskussionen mehrfach vorgestellt (boxcar2d ähnlich, aber ohne Flash umgesetzt)
  • Es weckt Erinnerungen daran, als Kind viele Stunden mit Boxcar 2D verbracht zu haben
  • Ich frage mich, ob so etwas auch in einer 3D-physikbasierten Simulationsumgebung möglich wäre. Es wäre spannend, ob genetische Algorithmen genutzt werden könnten, um in Simulationen neue aerodynamische Formen etwa für Drohnen zu entdecken