Mein Wissen darüber, wie Axelrod es gemacht hat, erschöpft sich mit dem, was ich am Anfang des Threads geschrieben habe.
Ich habe es so gemacht:
http://212.227.42.12/extern/Tit_for_Tat.zipDas Spiel läuft in Runden.
Es spielen soundsoviele Agents miteinander. In einer Runde tritt jeder Agent gegen alle anderen an, und zwar in soundsoviel Einzelspielen, den Iterations.
Diese Agents haben einen bestimmte Gedächtnisgröße, den Memory Span. Soviele Runden lang merken sie sich die Züge des Gegners. Alle möglichen Züge werden im "Genom" des Agenten gespeichert. Es gibt sozusagen ein Gen, das beschreibt wie der Agent reagiert, wenn sein Gegner dreimal hintereinander beschissen hat, ein anderes Gen beschreibt die Reaktion, wenn der Gegner drei mal hintereinander kooperiert hat.
Ist eine Runde zu Ende, werden die Agenten nach ihrem Ergebnis sortiert. Eine bestimmte Anzahl (OffspringCount) darf sich fortpflanzen. Heißt es wird ein Partner gewählt, und deren Gene werden gemischt. Der Nachkomme ersetzt dann einen Agenten am Ende der Liste. Dabei begatten die obersten Spread A Agenten bis hinunter nach Spread B. (Das ist so noch keine wirklich gute Lösung.
)
Neben der Rekombination der Gene kann man auch eine Mutationsrate einstellen.
Mutate Memory Span ist noch experimentell. Damit gibt es eine Chance, daß sich bei einer Mutation die Länge des Gedächtnisses verändert.
Interessiert man sich für einen bestimmten Agenten, kann man ihn in der Liste anwählen, wenn das Programm auf Pause steht. Man sieht seine Statistik und sein "Genom".
Matchresults geht nur, wenn LogMoves eingeschaltet ist, was die Sache aber sehr verlangsamt, besonders bei vielen Agenten mit vielen Iterationen.
Den Graph kann man umschalten, einmal die erreichten Punkte pro Generation, dann der Versuch, das Verhalten zu analysieren.
- Code: Alles auswählen
Nicety - Agent beginnt im ersten Zug mit Kooperation
Coop - Agent kooperiert nach vorausgehender Kooperation des Gegners
Forgiveness - Agent kooperiert nach vorausgehender Verweigerung des Gegners
Retaliate - Agent verweigert nach vorausgehender Verweigerung des Gegners
Defect - Agent verweigert nach vorausgehender Kooperation des Gegners
Der Excel-Export funktioniert natürlich nur, wenn Excel installiert ist.
Der Pause- und der Resetknopf haben noch einen Bug. Dann wird gelegentlich die Festplatte gelöscht.