Intuitives Genitor Beispiel in 2D

­

Verwendung der Simulation

Mit 🏙️ wird auf dem Canvas eine zufällige fraktale Landschaft erzeugt - die Höhe (von dunkelblau über grün bis weiss) steht dabei für die Fitness. Mit 📍📍📍 wird eine Population von Individuen (die orangen Punkte) zufällig darauf verteilt; das Zahlenfeld daneben bestimmt deren Anzahl. ⏭️ führt einen einzelnen Rekombinations- und Verdrängungsschritt aus und animiert ihn. Nach dem Start mit ▶️ steuert der danebenliegende Schieberegler, wie die Simulation weiterläuft: Die linken Einstellungen ("50 Steps", "10 Steps", "1 Step") überspringen die Animation und zeichnen nur jede n-te Generation neu, für mehr Tempo, während die Millisekunden-Einstellungen jeden Schritt vollständig animiert abspielen, mit der angegebenen Wartezeit dazwischen - er kann auch während des Laufs verschoben werden. ⏹️ stoppt eine laufende Simulation jederzeit. Das Canvas selbst lässt sich durch Ziehen an seiner rechten unteren Ecke unabhängig vom Browserfenster in der Grösse verändern; eine bereits aufgebaute Landschaft oder Population bleibt dabei nicht erhalten und wird bei Bedarf automatisch neu erstellt.

Der GENITOR-Algorithmus

Genetische Algorithmen sind eine Familie von Optimierungsverfahren, die sich an der natürlichen Evolution orientieren: Lösungskandidaten ("Individuen") werden durch eine Menge von Eigenschaften (ihr "Genom") beschrieben, mit einer Fitnessfunktion bewertet und über viele Iterationen verbessert, indem fittere Individuen kombiniert und ausgewählt, weniger fitte dagegen aussortiert werden - so nähert man sich guten Lösungen für Probleme an, die zu gross sind, um sie vollständig zu durchsuchen.

GENITOR ist eine steady-state-Variante dieser Idee: Anstatt wie ein klassischer generationeller GA jeweils die ganze Population auf einmal zu ersetzen, hält er eine einzige Population konstanter Grösse am Leben und entwickelt sie Individuum für Individuum weiter. Jeder Schritt wählt zwei Eltern aus - fittere Individuen werden dabei bevorzugt - und rekombiniert sie zu einem neuen Nachkommen; anschliessend wird ein bestehendes Individuum verdrängt, wobei weniger fitte Individuen mit höherer Wahrscheinlichkeit verdrängt werden. Durch vielfache Wiederholung konvergiert die gesamte Population so in Richtung der fittesten Bereiche des Suchraums (hier: die Gipfel der Landschaft), ohne dass es je eine feste "Generationengrenze" braucht.

Um den Mechanismus sichtbar zu halten, besitzt in dieser Simulation jedes Individuum nur zwei Eigenschaften - seine x- und y-Position auf der Landschaft. Genetische Algorithmen aus der Praxis kodieren meist deutlich mehr Eigenschaften gleichzeitig, oft als lange Ketten aus Nullen und Einsen (Bits), je eine pro Parameter der zu optimierenden Aufgabe.


How to use this simulation

Click 🏙️ to grow a random fractal landscape on the canvas - height (from dark blue, up through green, to white) stands in for fitness. Click 📍📍📍 to scatter a population of individuals (the orange dots) onto it at random; the number field next to it sets how many. ⏭️ performs a single recombination and eviction step and animates it. Once started with ▶️, the slider next to it controls how the simulation keeps running: the leftmost settings ("50 Steps", "10 Steps", "1 Step") skip the animation and only redraw every Nth generation for speed, while the millisecond settings play a fully animated step every that many milliseconds - it can be dragged even while running. ⏹️ stops a running simulation at any time. The canvas itself can be resized by dragging its bottom-right corner, independently of the browser window; a landscape or population already built doesn't carry over to a new size and gets rebuilt automatically the next time it's needed.

The GENITOR algorithm

Genetic algorithms are a family of optimization methods inspired by natural evolution: candidate solutions ("individuals") are described by a set of properties (their "genome"), scored by a fitness function, and improved over many iterations by combining and selecting among the fitter individuals while discarding the less fit ones - approximating good solutions to problems too large to search exhaustively.

GENITOR is a steady-state variant of this idea: instead of replacing a whole population at once like a classic generational GA, it keeps a single population of constant size alive and evolves it one individual at a time. Each step picks two parents - fitter individuals are more likely to be chosen - and recombines them into one new offspring, then evicts one existing individual, with less-fit individuals more likely to be evicted. Repeating this many times drives the whole population to converge toward the fittest regions of the search space (here, the landscape's peaks), without ever needing a discrete "generation" boundary.

To keep the mechanism visible, this simulation gives every individual just two properties - its x and y position on the landscape. Real-world genetic algorithms usually encode many more properties at once, often as long strings of 0s and 1s (bits), one for each parameter of whatever is being optimized.