Implementación de la teoría algorítmica de juegos en Python con Nashpy

La teoría de juegos es un método para estudiar situaciones estratégicas donde los resultados dependen no solo de tus acciones, sino también de lo que otros harán.

¿Qué es una situación estratégica? Recordemos los tipos de estructuras de mercado: existe una competencia perfecta cuando todas las compañías están fijando precios, es decir, no necesitan preocuparse por una estrategia de fijación de precios, y existe un monopolio cuando solo hay una compañía en el mercado que fija sus precios. Entonces: todo entre la competencia perfecta y el monopolio es una situación estratégica.

La teoría de juegos algorítmica se encuentra en la unión de la teoría de juegos y la informática y tiene como objetivo estudiar y crear algoritmos para estrategias.



Debajo del gato, una historia corta sobre cómo puedes usar la teoría de los juegos en Python usando la biblioteca Nashpy.


Del Editor: ¿Por qué de repente nos acordamos de la teoría de juegos? Es simple: al actualizar constantemente nuestra plataforma con 900 mil participantes, nos enfrentamos constantemente a situaciones en las que necesitamos desarrollar diversas estrategias. Por ejemplo, en el portal de expertos de NTI: ya sea para confirmar a todos seguidos o, por el contrario, no para confirmar a nadie, sino solo pedir confirmación. Otro ejemplo: en Boiling Points, se observa regularmente una lucha por los recursos y hay dilemas: ¿preguntamos todo el equipo a la vez, escribimos números reales al número de participantes o exageramos? Además, la solución de estos problemas debe llevarse a cabo con el máximo beneficio para todos.

Nashpy


Como su nombre lo indica, la biblioteca proporciona capacidades algorítmicas para lograr el equilibrio de Nash, un conjunto de estrategias para dos jugadores, cuando cada uno de ellos elige la versión más óptima de su comportamiento en función de una configuración similar para el segundo jugador. Remotamente, se asemeja al principio de ganar-ganar, pero con una orientación a pérdidas mínimas en cualquier situación.

Para entender este concepto, pasemos al modelo popular " Dilema del prisionero ".

Entregarse o no rendirse


Hay dos jugadores (prisioneros) que deben decidir si cooperarán entre sí sin dar otro nombre durante el interrogatorio policial. La utilidad de este comportamiento se estimará en tres puntos para cada jugador, si ambos eligen este camino. El punto de partida aquí es el castigo: si los jugadores se entregan, pueden ser acusados ​​de "acción de conspiración", es decir, "bandidaje", y el castigo para ellos en este caso será más severo que si actuaran por separado.

Si un jugador pasa al otro (siempre que no pase), la utilidad para él será de cuatro puntos, para el otro jugador: cero puntos. Si los prisioneros se entregan, la utilidad será de un punto por hermano.

Para facilitar la presentación de este conjunto de opciones, colóquelas en un plato, donde en las celdas, indique el número de puntos para cada prisionero, según la elección realizada:


P1 - jugador 1, P2 - jugador 2, C - cooperación, NC - un jugador pasó a otro

Al final, la mejor opción para ambos es entregarse el uno al otro.

¿Por qué no colaboran los prisioneros? Considere la estrategia del jugador 1 (P1):
  • Si el jugador 2 (P2) decide cooperar con P1, la mejor estrategia para P1 es entregar al jugador P2, ya que 4> 3
  • si P2 decide entregar P1, entonces P1 es más rentable para jugar P2, ya que 1> 0


Entonces, la estrategia ganadora para P1 es (NC; NC), que también es cierto para P2. Por lo tanto, el equilibrio de Nash será la estrategia (NC; NC) cuando los jugadores P1 y P2 se entreguen a la policía.

Transferimos la teoría a Python


Primero necesitas instalar el módulo. El equipo puede hacer esto a pip install nashpytravés de la consola Jupyter. Al final de la instalación, puedes comenzar a establecer las condiciones del juego. Para dos jugadores con un resultado distinto de cero (que es el valor predeterminado en Nashpy), debe crear dos matrices que reflejen las situaciones de juego para cada jugador. Por ejemplo, para el jugador 1, la matriz se verá así:

C
CAROLINA DEL NORTE
C
3
0 0
CAROLINA DEL NORTE
4 4
1


Para el jugador 2, así:

C
CAROLINA DEL NORTE
C
3
4 4
CAROLINA DEL NORTE
0 0
1


Reproduzcamos esto 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




Mirando estas placas, podemos obtener una estimación de la utilidad de la interacción de los jugadores. Es decir, si P1 no da P2, y P2 da P1, entonces los valores de utilidad serán (0, 4). Podemos obtener lo mismo con los cálculos matriciales en Nashphy. Tomamos un vector de acciones como sigma (tenemos dos de ellas: colaborar o entregar a otro prisionero), donde el valor 0 se asigna a todas las celdas, excepto a la que tiene lugar la acción. Luego, para el jugador 1, la utilidad de la acción se calculará como:



Para el jugador 2:



aplicando la fórmula al escenario, cuando el jugador 1 ha elegido una estrategia de cooperación con otro jugador y el jugador 2 ha decidido entregar al jugador 1, obtenemos:



Verifique con Nashpy:





descubra si encuentra un algoritmo El equilibrio de Nash, que, como ya hemos descubierto, es (NC; NC):





Como puede ver, el equilibrio de Nash consta de dos vectores, cada uno de los cuales refleja las acciones de un jugador: para el jugador 1, esto es [0; 1], donde 1 en el segundo campo significa que el jugador 1 decidió entregar al jugador 2. Vemos una imagen similar para el segundo jugador.

PD en qué se puede leer


  1. Game Theory (Avinash Dixit y Barry Neilbuff) es una publicación bastante reciente de MYTH Publishing House. En el libro, con ejemplos del cine, el deporte, la política y la historia, los autores muestran cómo casi todas las empresas y personas están involucradas en interacciones descritas por la teoría de juegos.
  2. Estrategia de conflicto (Thomas Schelling). El libro está dedicado al estudio de la lógica general del comportamiento de los participantes en situaciones de conflicto: la teoría de juegos. Lanzado en 1960, se convirtió en una contribución fundamental a esta ciencia, sentando las bases de la teoría del comportamiento estratégico.
  3. Piedra, papel, tijera: teoría de juegos en la vida cotidiana (Len Fisher) es otro libro sobre la ciencia de la colaboración. Fisher muestra cómo la teoría de juegos ha ayudado a los biólogos a comprender la evolución de la colaboración en la naturaleza y cómo podríamos aplicarla en nuestra sociedad.

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


All Articles