Ich habe ein Schachprogramm entwickelt, das einen Alpha-Beta-Bereinigungsalgorithmus und eine Bewertungsfunktion verwendet, die Positionen unter Verwendung der folgenden Merkmale bewertet, nämlich Material, Königssicherheit, Mobilität, Bauernstruktur und gefangene Figuren usw. ..... Meine Bewertungsfunktion ist abgeleitet von der
Dabei ist das Gewicht, das jedem Merkmal zugewiesen ist. An dieser Stelle möchte ich die Gewichte meiner Bewertungsfunktion anhand der zeitlichen Differenz einstellen, wobei der Agent gegen sich selbst spielt und dabei Trainingsdaten aus seiner Umgebung sammelt (was eine Form des verstärkenden Lernens ist). Ich habe einige Bücher und Artikel gelesen, um einen Einblick in die Implementierung in Java zu erhalten, aber sie scheinen eher theoretisch als praktisch zu sein. Ich benötige eine detaillierte Erklärung und Pseudocodes, wie ich die Gewichte meiner Bewertungsfunktion basierend auf früheren Spielen automatisch einstellen kann.
quelle
Eine erste Bemerkung: Sie sollten sich 'Wargames' ansehen, um zu wissen, worauf Sie sich einlassen.
Was Sie wollen, ist f (p), so dass f (p) der Positionsstärke so nahe wie möglich kommt.
Eine sehr einfache Lösung mit genetischem Algo wäre, 10000 Spieler mit unterschiedlichen Gewichten einzurichten und zu sehen, welche gewinnt. Behalten Sie dann das Gewicht der 1000 besten Gewinner bei, kopieren Sie sie 10 Mal, ändern Sie sie leicht, um den Gewichtsraum zu erkunden, und führen Sie die Simulation erneut aus. Das ist Standard-GA, wenn man eine funktionale Form betrachtet, was sind die besten Koeffizienten dafür.
Eine andere Lösung besteht darin, die Positionen zu extrahieren, sodass Sie eine Tabelle "(Material, Königssicherheit, Mobilität, Bauernstruktur, gefangene Teile) -> Positionsgüte" haben, in der die Positionsgüte ein objektiver Faktor ist (Ergebnisgewinn / -verlust, berechnet anhand der obigen Simulationen) oder bekannte Übereinstimmungen, Tiefe des verfügbaren Baums, Anzahl der Bewegungen unter dem Baum, bei denen einer der 5 Faktoren besser wird. Sie können dann verschiedene Funktionsformen für f (p), Regression, svm ausprobieren.
quelle