Implémentation de la théorie algorithmique des jeux en Python avec Nashpy

La théorie des jeux est une méthode pour étudier des situations stratégiques où les résultats dépendent non seulement de vos actions, mais aussi de ce que les autres feront.

Qu'est-ce qu'une situation stratégique? Rappelons les types de structures de marché: il y a une concurrence parfaite lorsque toutes les entreprises établissent des prix, c'est-à-dire qu'elles n'ont pas à se soucier d'une stratégie de prix, et il y a un monopole lorsqu'une seule entreprise sur le marché fixe ses prix. Donc: tout entre une concurrence parfaite et un monopole est une situation stratégique.

La théorie des jeux algorithmiques est à la jonction de la théorie des jeux et de l'informatique et vise à étudier et créer des algorithmes pour les stratégies.



Sous le chat, une courte histoire sur la façon dont vous pouvez utiliser la théorie des jeux en Python en utilisant la bibliothèque Nashpy.


De l'éditeur: Pourquoi nous sommes-nous soudain souvenus de la théorie des jeux? Tout est simple - en améliorant continuellement notre plateforme avec 900 000 participants, nous sommes constamment confrontés à des situations où différentes stratégies doivent être développées. Par exemple, sur le portail des experts NTI: si vous voulez confirmer tout le monde d'affilée ou, inversement, ne confirmer personne, mais demander uniquement une confirmation. Autre exemple: dans les points d'ébullition, une lutte pour les ressources est régulièrement observée et il y a des dilemmes - demandons-nous tout l'équipement en même temps, écrivons-nous des nombres réels au nombre de participants, ou surévaluons-nous? En outre, la solution de ces problèmes doit être effectuée avec le maximum d'avantages pour tous.

Nashpy


Comme son nom l'indique, la bibliothèque fournit des capacités algorithmiques pour atteindre l'équilibre de Nash - un ensemble de stratégies pour deux joueurs, lorsque chacun choisit la version la plus optimale de son comportement en fonction d'un paramètre similaire pour le deuxième joueur. À distance, il ressemble au principe gagnant-gagnant, mais avec une orientation vers des pertes minimales dans n'importe quelle situation.

Pour comprendre ce concept, tournons-nous vers le modèle populaire « Dilemme du prisonnier ».

Se rendre ou ne pas se rendre


Il y a deux joueurs (prisonniers) qui doivent décider de coopérer sans donner un autre nom lors de l'interrogatoire par la police. L'utilité de ce comportement sera estimée à trois points pour chaque joueur, si les deux choisissent ce chemin. Le point de départ ici est la punition: si les joueurs se donnent mutuellement, ils peuvent être accusés de «complot», c'est-à-dire de «banditisme», et la punition pour eux dans ce cas sera plus sévère que s'ils agissaient séparément.

Si un joueur passe l'autre (à condition qu'il ne passe pas), l'utilité pour lui sera de quatre points, pour l'autre joueur - zéro point. Si les prisonniers se rendent, l'utilité sera d'un point par frère.

Pour faciliter la présentation de cet ensemble d'options, placez-les sur une plaque, où dans les cellules, indiquez le nombre de points pour chaque prisonnier, selon le choix effectué:


P1 - joueur 1, P2 - joueur 2, C - coopération, NC - un joueur a passé un autre

En fin de compte, la meilleure option pour les deux est de se livrer.

Pourquoi les prisonniers ne collaborent-ils pas? Considérez la stratégie du joueur 1 (P1):
  • si le joueur 2 (P2) décide de coopérer avec P1, la meilleure stratégie pour P1 est de rendre le joueur P2, puisque 4> 3
  • si P2 décide de rendre P1, alors P1 est plus rentable de se tourner pour jouer P2, car 1> 0


Ainsi, la stratégie gagnante pour P1 est (NC; NC), ce qui est également vrai pour P2. Ainsi, l'équilibre de Nash sera la stratégie (NC; NC) lorsque les joueurs P1 et P2 se rendront mutuellement à la police.

Nous transférons la théorie à Python


Vous devez d'abord installer le module. Cela peut être fait par l'équipe pip install nashpyvia la console Jupyter. À la fin de l'installation, vous pouvez commencer à définir les conditions du jeu. Pour deux joueurs avec un résultat différent de zéro (qui est la valeur par défaut dans Nashpy), vous devez créer deux matrices qui reflètent les situations de jeu pour chaque joueur. Par exemple, pour le joueur 1, la matrice ressemblera à ceci:

C
NC
C
3
0
NC
4
1


Pour le joueur 2, comme ceci:

C
NC
C
3
4
NC
0
1


Reproduisons cela en Python:

import nashpy as nash
import numpy as ns
P1=np.array([[3,0],[4,1]])
P2=np.array([[3,4],[0,1]])
prisoner_dilemma=nash.Game(P1,P2)

prisoner_dilemma




En regardant ces plaques, nous pouvons obtenir une estimation de l'utilité de l'interaction des joueurs. Autrement dit, si P1 ne donne pas P2 et P2 donne P1, alors les valeurs d'utilité seront (0, 4). Nous pouvons obtenir la même chose avec les calculs matriciels dans Nashphy. Nous prenons un vecteur d'actions comme un sigma (nous en avons deux: collaborer ou remettre un autre prisonnier), où la valeur 0 est assignée à toutes les cellules sauf celle où l'action a lieu. Ensuite, pour le joueur 1, l'utilité de l'action sera calculée comme suit:



Pour le joueur 2:



application de la formule au scénario, lorsque le joueur 1 a choisi une stratégie de coopération avec un autre joueur et que le joueur 2 a décidé de remettre le joueur 1, nous obtenons:



Vérifiez avec Nashpy:





découvrez s'il trouve un algorithme L'équilibre de Nash, qui, comme nous l'avons déjà découvert, est (NC; NC):





Comme vous pouvez le voir, l'équilibre de Nash se compose de deux vecteurs, chacun reflétant les actions d'un joueur: pour le joueur 1, c'est [0; 1], où 1 dans le deuxième champ signifie que le joueur 1 a décidé de rendre le joueur 2. Nous voyons une image similaire pour le deuxième joueur.

PS ce qui peut être lu


  1. Game Theory (Avinash Dixit et Barry Neilbuff) est une publication assez récente de la maison d'édition MYTH. Dans le livre, avec des exemples tirés du cinéma, des sports, de la politique et de l'histoire, les auteurs montrent comment presque toutes les entreprises et les personnes sont impliquées dans des interactions décrites par la théorie des jeux.
  2. Stratégie de conflit (Thomas Schelling). Le livre est consacré à l'étude de la logique générale du comportement des participants en situation de conflit - théorie des jeux. Sorti en 1960, il est devenu une contribution fondamentale à cette science, posant les bases de la théorie du comportement stratégique.
  3. Rock, Paper, Scissors: Game Theory in Everyday Life (Len Fisher) est un autre livre sur la science de la collaboration. Fisher montre comment la théorie des jeux a aidé les biologistes à comprendre l'évolution de la collaboration dans la nature et comment nous pourrions l'appliquer dans notre société.

Source: https://habr.com/ru/post/undefined/


All Articles