Die Auto-Evolution neulich hat ja einigen von euch ganz gut gefallen. ich habe eben mal ein bisschen nach ähnlichen Dingen gestöbert:

Das einfache Evolution java applet lässt vier Amöben in einem Aquarium herumschwimmen – ab und zu senden sie böse Fühler aus, die andere Amöben umbringen.

i-b104816600ca1a259ed49016b3a50b09-amoebenEvolution.jpg

Im Laufe der Zeit werden die Fühler länger und die Amöben drehen sich viel schneller, um die anderen zu erwischen. Ganz nett zum angucken, aber so richtig mitreißend ist es nicht.

Wer genetische Algorithmen verstehen will, der sollte vielleicht mit dem Java-Genitor anfangen: Dort wird eine Landschaft generiert (man spricht ja immer gern von “Fitness-Landschaft”), in der die “Käfer” (eigentlich nur kleine Punkte) den höchsten Punkt suchen. Man sieht sehr schön, wie Mutation und Selektion wirken, mit entsprechendem Knopf kann man sich das Wirken anzeigen lassen. Als Einführung in genetische Algorithmen sicher ganz praktisch.

Eaters lässt kleine, zweidimensionale Tierchen über eine Landschaft laufen. Die Landschaft ist mit “Pflanzen” bedeckt, die von den “Eaters” gefressen werden.

i-0f77679c1c392d5d03f44a7e80356848-eaters.jpg

Die Eaters haben eine einfache Steuerung: Sie können ihre Richtung ändern und durch die Gegend laufen. Was sie als nächstes tun, hängt davon ab, ob sie gerade eine Pflanze gefressen haben oder nicht und was sie im letzten Schritt gemacht haben. Damit sind sie sehr einfache Turingmaschinen . Allerdings stoßen sie relativ schnell an ihre Grenzen, weil die Programmierung kein “Gedächtnis” vorsieht – sie können sich also nicht merken, ob sie irgendwo schon einmal gewesen sind.

Das Programm hat sehr viele Einstellmöglichkeiten für die Verteilung der Pflanzen, die Geschwindigkeit und vieles andere. (Ich fand es besonders interessant, die Pflanzen in reihen oder nur unten wachsen zu lassen, dann lässt sich die “Strategie” der eaters besser verfolgen.) Besonders praktisch ist, dass es einen Superschnell-Modus gibt, in dem keine Zeit mehr für die grafische Ausgabe verschwendet wird. Da kann man ein paar hundert Generationen rechnen lassen und dann das Ergebnis wieder langsamer laufen lassen. Eigentlich ziemlich nett (und sehr ähnlich zu einer Idee, die ich vorhin hatte und von der ich dachte, vielleicht hat es ja schon jemand anderes programmiert…)

Ein bisschen kompliziert ist “Irreducibly complex”. Hier codiert der genetische Code der Lebewesen eine Spielfläche, auf der diese Wesen dann herumlaufen und nach bestimmten Regeln Punkte sammeln. Das Spiel ist sehr hübsch anzuschauen, weil die Mutations- und Rekombinationsschritte schön animiert werden.

i-43e1a94676d3d65978ce65bfb55d1c20-irrcomp-thumb-550x392.jpg

Sehr nett, weil schön einfach, ist auch “Elegant tiefstapeln” (Oben rechts auf “Packproblem-Applet” klicken, um es zu starten.) Hier muss ein Lastwagen mit Kisten befüllt werden.

i-d5ad7434faff917d2d63e39be7e98377-tiefstapeln.jpg

Am Anfang gibt man vor, welche Kisten untergebracht werden müssen, der Algorithmus versucht dann, die optimale Packung zu finden. Man kann mit Populationsgrößen, Mutationsfrequenzen etc. herumspielen.

Guardlets sieht irgendwie interessant aus, aber ich hab’s nicht wirklich verstanden…

Falls noch jemand interessante Varianten gefunden hat, könnt ihr sie ja in die Links schreiben.

Nils hat sich übrigens neulich auch mit Evolutionsspielchen befasst.

Kommentare (8)

  1. #1 BreitSide
    6. Februar 2011

    :-))))))))))))))

  2. #2 Philipp Bayer
    6. Februar 2011

    Wer sich genetische Algorithmen zum Selberlernen mal anschauen möchte, dem empfehle ich die Python-Bibliothek pygene. Die steckt zwar noch in Kindesschuhen, dafür kommen ca. 8 Beispiel-Programme mit, die von Evolution von einem String zu einem vorgegebenen String bis zum Travelling-Salesman-Problem gehen.

  3. #3 Gluecypher
    6. Februar 2011

    BTW: ich suche schon läger nach einem “Methinks it’s a weasel”-Applet. Hat da jemand einen Link?

  4. #4 MartinB
    6. Februar 2011
  5. #5 Christian
    14. August 2012

    Meine Simulation ist recht ähnlich wie “Eaters”. Jeder “Eprobot” ist da ein kleines Programm, es gibt aber auch ein “Gedächtnis”:

    http://www.thewehr.net/eprobots/applet.html

  6. #6 aguest
    Berlin
    11. Dezember 2013

    Hallo, gibt es eventuell Bibliotheken für java, welche das Verwenden von genetischen Algorithmen ermöglicht? Danke im Voraus.

  7. #7 rolak
    11. Dezember 2013

    moin aguest, spontan fällt mir JGAP ein, doch eine typische Anlaufstelle für derartige Fragen wäre StackOverflow. Und tadaaa, die Frage wurde schon gestellt.

  8. #8 aguest
    Berlin
    21. Januar 2014

    Vielen Dank! Hat mir erstmal sehr weitergeholfen. Nun kann ich anfangen einen genetischen Algorithmus zu entwickeln, welcher sich der Problematik der Reihenfolgeplanung (Job-Shop) annimmt. Das wird knackig aber ich habe erst am 03.02. die Präsentation. Hahaha! Coding all night long ist angesagt. :-/