J'ai développé un programme d'échecs qui utilise un algorithme d'élagage alpha-bêta et une fonction d'évaluation qui évalue les positions en utilisant les caractéristiques suivantes à savoir le matériel, la sécurité du roi, la mobilité, la structure du pion et les pièces piégées, etc. ... Ma fonction d'évaluation est dérivé de la
où est le poids attribué à chaque fonction. À ce stade, je veux régler les poids de ma fonction d'évaluation en utilisant la différence temporelle, où l'agent joue contre lui-même et, dans le processus, collecte des données de formation de son environnement (qui est une forme d'apprentissage par renforcement). J'ai lu quelques livres et articles afin d'avoir un aperçu sur la façon de mettre en œuvre cela en Java, mais ils semblent être théoriques plutôt que pratiques. J'ai besoin d'une explication détaillée et de pseudo-codes sur la façon de régler automatiquement les poids de ma fonction d'évaluation en fonction des jeux précédents.
la source
Une première remarque, vous devriez regarder «Wargames» pour savoir dans quoi vous vous embarquez.
Ce que vous voulez, c'est f (p) de telle sorte que f (p) soit aussi proche que possible de la force de position.
Une solution très simple utilisant l'algorithme génétique serait de configurer 10000 joueurs avec des poids différents et de voir lequel gagne. Gardez ensuite le poids des 1000 premiers gagnants, copiez-les 10 fois, modifiez-les légèrement pour explorer l'espace de poids, puis relancez la simulation. C'est GA standard, étant donné une forme fonctionnelle, quels sont les meilleurs coefficients pour cela.
Une autre solution consiste à extraire les positions, vous avez donc une table '' (matériel, sécurité royale, mobilité, structure de pion, pièces piégées) -> qualité de la position '' où la qualité de la position est un facteur objectif (résultat gagnant / perdant calculé à l'aide des simulations ci-dessus ou correspondances connues, profondeur de l'arbre disponible, nombre de mouvements sous l'arbre où l'un des 5 facteurs s'améliore. Vous pouvez ensuite essayer différentes formes fonctionnelles pour votre f (p), régression, svm.
la source