[PYTHON] Résolution de la théorie des jeux avec l'optimisation des combinaisons

Qu'est-ce que c'est

Dans Théorie du jeu Dans le cas du jeu à somme nulle, la stratégie de mélange optimale peut être obtenue par optimisation linéaire (LP) [^ 1]. Essayons d'utiliser Python, en utilisant le Janken arrangé comme exemple.

Pour l'optimisation linéaire, reportez-vous à Use Combination Optimization.

[^ 1]: Du séminaire "OU commencer avec le solveur Excel"

Tableau de gain de Janken

Déterminez la table de gain (translocation) comme suit. Si vous gagnez le Goo (G), votre score sera quadruplé.

Adversaire \ moi-même G C P
G 0 -1 1
C 4 0 -1
P -1 1 0

Formulation

Supposons que le ratio de vous-même donnant goo, choki et par est $ x, y, z $. (Stratégie mixte) --A ce moment, $ x + y + z = 1 $.

Fonction objectif $ w $ → Maximiser
Contraintes $ x + y + z = 1 $
-y + z \ge w
$ 4x - z \ge w$
$ -x + y \ge w$
x,y,z \ge 0, ~~~ w: free

Résoudre avec Python

python


from pulp import *
from ortoolpy import addvar, addvars

a = [[0, -1, 1], [4, 0, -1], [-1, 1, 0]]
m = LpProblem(sense=LpMaximize) #Modèle mathématique
xyz = addvars(3) #Variable x,y,z
w = addvar(lowBound=None) #Variable w
m += w #Fonction objective
m += lpSum(xyz) == 1 #Contraintes
for i in range(3):
    m += lpDot(a[i], xyz) >= w #Contraintes
m.solve() #Solution
print(value(w), [value(v) for v in xyz])
>>>
0.16666667 [0.16666667, 0.33333333, 0.5]

Si vous sortez goo, choki et par à un ratio de [1/6, 1/3, 1/2], vous pouvez voir que la valeur attendue peut être réduite à 1/6 quel que soit le type de mouvement de l'adversaire.

Dans les jeux non coopératifs, le résultat intéressant est que la valeur attendue sera plus élevée si le ratio de mains (goo) qui vous est avantageux est réduit.

c'est tout

Recommended Posts

Résolution de la théorie des jeux avec l'optimisation des combinaisons
Résolvez le problème des 4 couleurs grâce à l'optimisation des combinaisons
Résolution des problèmes d'organisation des districts scolaires grâce à l'optimisation des combinaisons
Résolution du problème N Queen avec l'optimisation continue / combinée
Résolution du problème N Queen avec l'optimisation des combinaisons
Jeux de regroupement avec optimisation des combinaisons
Résolution de "cubes en cubes" avec optimisation des combinaisons
Maximisez les ventes des restaurants grâce à l'optimisation combinée
Allez voir les baleines avec l'optimisation des combinaisons
Paver la route avec l'optimisation des combinaisons
Résolution des problèmes de sac à dos avec les outils OR de Google - Pratiquer les bases des problèmes d'optimisation combinée
Empilons les livres à plat avec l'optimisation des combinaisons
Utiliser l'optimisation des combinaisons
Créer un programme académique avec optimisation des combinaisons
Aménagement routier par optimisation
Optimisation du regroupement par combinaison
Introduction à l'optimisation
Résolution d'exercices de modèle d'optimisation mathématique avec les outils OR de Google (3) Problèmes d'optimisation de la production
Essayez l'optimisation des fonctions avec Optuna
Résoudre les mathématiques avec Python (incomplet)
Enquête Star avec optimisation des combinaisons
Jeu éducatif de programmation avec SenseHAT
Restaurez les photos décousues avec l'optimisation!
Résolution de Nampre avec Python (partie 2)
Jeu de frappe simple avec DragonRuby
Ajuster les hyper paramètres avec l'optimisation bayésienne
Résolution du problème d'horaire des infirmières (optimisation des équipes) avec un algorithme génétique