Robocode – Genetische Algorithmen erzeugen Roboter

Robocode ist eine populäre Software-Plattform, die den Kampf zwischen virtuellen Robotern in einer ebenso künstlichen Arena simuliert. Das gestellte Problem lautet, einen Roboter so zu programmieren, dass er gegen möglichst viele unbekannte Gegner möglichst effektiv gewinnt.

Klingt schwierig, ist es auch. Denn es gibt unendlich viele Strategien, um das Verhalten eines Roboters im Kampf zu definieren. Ebenso, wie es unendlich viele mögliche Gegner gibt.

Robocode 2.0 mit einer Java-Bibliothek

RobocodeJGAP verfolgt einen weitergehenden Ansatz, der über die manuelle Programmierung von Robotoerlogik hinausgeht. Statt sich ein komplettes Programm auszudenken, füttert man einem Genetischen Algorithmus eine ganze Reihe von atomaren Programmanweisungen sowie wahrscheinlich nützlichen Unterroutinen.

Der Algorithmus fängt dann zu arbeiten, ganz so, wie es die Evolution uns vormacht. Also alles durchmischen, kleinhäxeln, wieder zusammensetzen und schauen, was passiert. Die so künstlich erzeugten Programme, die die besten Ergebnisse produzieren, werden in die nächste Generation übernommen. Diese wird zudem ergänzt um einige zufällig ausgewählte, weniger gute Programme sowie einige komplett neu zufällig generierte.

Und so geht das so lange, bis genügend Zeit ins Land gestrichen oder oder im Idealfall ein ausreichend guter Kampfroboter entstanden ist. Vorteil dieser Methoden: man muss sich über die Details von Robocode keine tiefergehenden Gedanken machen.

Gegnerauswahl zur Erprobung von generierten Robocode Robotern

Was allerdings wichtig ist, ist, dass man für die Evolutuionsprozesse genügend halbwegs fähige Gegner bereit hält. So kann im Laufe der Zeit jedes erzeugte Code-Werk gemessen werden am vorgegebenen Standard. Genau so macht es Mutter Natur auch.

Das Problem reduziert sich durch diesen sogenannten evolutionären Ansatz deutlich. Wie viel Arbeit macht es sonst, sich alle möglichen Gedanken zu Kampfalgorithmen zu machen? Wer hält das schon lange durch! Dann doch lieber nur Schnipsel (Snippets) vorgeben, umrühren, den Rechenknecht die Arbeit machen lassen, dabei einen Kaffee trinken und feiern gehn. Und wenn alles gut läuft, ist das Ergebnis beeindruckend. Beispielsweise wurde mit einem GA von der NASA eine Antenne für den Weltraum entwickelt, die bestmöglich Singale aus allen möglichen Richtungen empfangen kann!