Datenstruktur für Zustandsautomaten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Hallo zusammen,

ich habe mit einem lernenden Zusandsautomaten (Reinforcement Learning) einen Computergegner für Tic Tac Toe geschrieben / angelernt. Dafür habe ich mich von der Struktur her erstmal stark an einen Udemy Kurs gehalten und die Zustände in ein Dictionary geschrieben. Die Keys sind das Spielfeld als String und die Values sind die Gewichtungen für jedes der 9 Teilspielfelder als Liste.
Nun will ich zum schnelleren Lernen die Anzahl der Zustände reduzieren, indem ich Drehsymmetrien nutze. Wenn also der aktuelle Zustand des Spielfeldes durch Drehen in einen bereits gespeicherten Zustand überführt werden kann, soll er nicht extra gespeichert werden.

So viel zur Vorgeschichte.
Für die Berechnung des Drehens würde ich gerne numpy arrays verwenden, die aber leider nicht im Dictionary gespeichert werden können. Wenn ich alles als Tuple und Liste speicher, muss es immer zwischen den Formaten hin und her berechnet werden.
Kennt dafür jemand eine gute Lösung oder mache ich mir da gerade unnötig Gedanken wegen der Umrechnung?

Schon einmal vielen Dank.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Da keine Antworten oder Rückfragen kommen, gehe ich mal davon aus, dass mein Text verständlich war, aber niemandem etwas besseres einfällt :)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich wuerde die Drehung in Python implementieren. Das ist ja fuer diesen Fall trivial. Ausserdem gibt es natuerlich noch mehr Symetrien - Spiegeln um zwei oder sogar 4 Achsen.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Danke für deine Antwort. Vielleicht ist numpy hier wirklich ein bisschen wie mit Kanonen auf Spatzen zu schießen.
Spiegelungen kommen danach, aber danke für den Hinweis!
Antworten