Evolutionärer Algorithmus

Beschreibung
Ich wollte eine möglichst einfache Simulation erstellen, die aus vielen Teilen besteht, welche sich selbstständig weiterentwickeln können. Dafür habe ich einen evolutionären Algorithmus geschrieben, welcher kleine Punkte steuern kann. Das Programm funktioniert nach einigen einfachen Regeln.Regeln des Programms
- Jeder Punkt hat sein eigenes Steuerprogramm, welches am Anfang nur aus einer Richtungsvorgabe und einer Geschwindigkeitsvorgabe besteht.
- Jeder Punkt hat eine vorgegebene Lebensdauer, welche von der Geschwindigkeit des Punktes abhängig ist.
- Läuft die Lebensdauer eines Punktes ab, wird sein Programm gelöscht (Selektion). Der Punkt wird grün und bleibt stehen.
- Trifft ein roter Punkt auf einen grünen, oder ein blauer Punkt auf einen roten, wird das Programm des Ersteren mit dem des Zweiten überschrieben ( Evaluation & Selektion ). Dabei kann ein Teil des Programms durch den Zufallseffekt mit einem von mehreren vordefinierten Funktionen erweitert oder modifiziert werden. Es kann auch ein Teil des Programms gelöscht werden (Mutation). Dabei erhalten beide Punkte wieder die volle Lebensdauer.
Algemeines
Den Punkten stehen Funktionen zur Verfügung um den nächstgelegenen Punkt einer Farbe zu sehen und Informationen untereinander auszutauschen. Eine solche Aktion ist mit einer Linie gekennzeichnet. Mein Algorithmus genügt jedoch nicht der Turing-Vollständigkeit, weswegen die Entwicklungsmöglichkeiten der Punkte begrenzt sind. Mein evolutionärer Algorithmus ist ausserdem unvollständig, weil keine Rekombination stattfindet. Dennoch können die Resultate des Programms erstaunlich sein.Steuerung
F-Taste: Neuer blauer Punkt1/2: Linien ausblenden
Download