15.04.2011

Ameisen bei der Arbeit

zurück...

Nicht nur in der freien Natur krabbelt es überall kreuz und quer, scheinbar ohne Plan, sondern das kann auch eine kleine virtuelle Welt sein.

Besonders geeignet dafür ist das Projekt "AntMe", unkompliziert für Einsteiger der schnell den ersten Erfolg oder auch eine Niederlage verbucht und fesselnd für diejenigen die sich über KI schon immer mal Gedanken gemacht haben.

Einsteiger schieben einfach vorgefertigte "Aktionskästchen" zusammen, verbinden diese und können sich den Ablauf anschauen, leicht zu durchschauen wie ein Lego Stecksystem.

Wer hingegen sich mit einer Programmiersprache befassen möchte, der legt mit dem zugehörigen Buch oder der Hilfedatei als PDF aus dem Web los und kann ebenfalls schnell auf Erfolge blicken.

Der Grad der Schwierigkeit bleibt einem selbst überlassen wobei das eigene Ameisenvölkchen nicht allein auf der virtuellen Spielwiese herumlaufen muss um Nahrung wie Äpfel und Zucker zu sammeln und natürlich im Bau abladen, sondern muss sich ebenfalls mit Wanzen befassen die den kleinen Kerlchen ans Leder wollen- und das auch machen.

Hat man diese Probleme programmtechnisch gelöst und kann auf ordentliche Nahrungspunkte zurückblicken, läßt sich eines oder sogar mehrere Völker mit ins Boot holen, erhöhter Wuselfaktor. 

Damit wird der Spielplatz schon enger und es zeigt sich, wie gut die eigene KI funktioniert hat, oder halt auch nicht.

Zerren 3 oder sogar 4 Völker an einem Apfel, dann entwickelt der ein Eigenleben und rollt sicher nicht dahin wo der zukünftige Programmierer sich das vorgestellt hat, sondern verschwindet auch gerne mal im falschen Bau oder wandert endlos über das Spielfeld, fast wenigstens wenn das nicht abgefangen wird, KI halt. Da die ihre Beute auf dem kürzesten Weg zum Bau bringen kann da schon mal ein fremder Bau im Weg sein in den dann halt eingelocht wird; der Gegner freut sich über die Nahrungspunkte.  Das allerdings ist schon wesentlich schwerer abzufangen, eine der allerletzten Optimierungen am eigenen Code.

Ameisen können verhungern sind die zu lange unterwegs, und beissen können die auch, zumindest ein Volk macht das gerne {Wolfgang der böse - Gelbes Volk}. Da ist die eigene KI / Strategie natürlich anzupassen, möchte man in der Nahrungskette weiterhin ziemlich oben stehen.


Natürlich ist es schwer den Code später derart zu optimieren dass man gegen Spezialvölker die sich auf nur ein Nahrungsmittel konzentrieren, bestehen kann. Das wird nicht immer klappen, eine Runde geht sicher an den Gegner, es sollte also im Schnitt von 5 Runden zum eigenen Vorteil reichen.

Wie man im Bild schon erkennen kann, werden verschiedene Strategien gefahren, Gruppen von Ameisen die sich kümmern, oder solche die eher dynamisch auf das Verhalten des gegnerischen Volkes reagieren.

Derartige Verhaltensweisen lassen sich aber nicht mit den "Lego Bausteinen" erzielen, dafür muss dann wirklich programmiert werden; Spaß macht die Sache dann mit wachsendem Erfolg. Betrachtet man die Völker und sein eigenes natürlich während einer Runde, fallen sicher viele Dinge auf die man gerne noch einbauen würde, was aber die Komplexität beträchtlich in die Höhe treibt, die Performance des VB-Codes entsprechend auf schmallbrüstigen Maschinen reichlich runterzieht. Wer mag kann auch in C# seinem Völkchen die Regeln beibringen.

Ins Leben gerufen wurden die Meisen u.a. von MS-Mitarbeitern,, bedauerlicherweise hat das Projekt einen Entwicklungsstau erfahren obwohl es sich ganz sicher für Informatik-Klassen sehr gut eignet.

http://antme.net/ <-- hier ist das Material zu finden, kostenfrei, ein Buch dazu gibt es aber auch mit DVD: ISBN 978-3-86645-523-8

Die hier gezeigte Erweiterung als Spielegegner unter VStudio 2008 geschrieben (sollte auch in VStudio2010 ohne Probleme laufen)  gibt es halt hier - mb_universal - einfach in das Programmverzeichnis wie im Bild kopieren und ein neuer recht multifunktionaler Gegner steht bereit. Der klaut auch mal gerne einen Apfel 10 Schritte vor dem eigenen Bau wo man die Gefahr schon als abgehakt behandelt hat oder zeigt anderes dynamisches überraschendes Verhalten das sich am Gegner orientiert.

© 2011 Michael Bormann