Inteligencia Artificial en el Juego de la Brisca

Inteligencia Artificial en el Juego de la Brisca Gerardo Pinar Loriente Ingeniería de Telecomunicación 5º curso Universidad Carlos III de Madrid Av. D
Author:  Mario Rivero Peña

5 downloads 71 Views 457KB Size

Recommend Stories


Aprendizaje en Inteligencia Artificial
Aprendizaje en Inteligencia Artificial Alberto Pesquera Martín 1. Introducción Máquina que Aprende: Sistema Organizado que transforma un mensaje de En

Inteligencia Artificial
Inteligencia Artificial I.T. en Informática de Sistemas, 3º Curso académico: 2008/2009 Profesores : Sascha Ossowski, David Pearce, y Rubén Ortiz –1–

Story Transcript

Inteligencia Artificial en el Juego de la Brisca Gerardo Pinar Loriente Ingeniería de Telecomunicación 5º curso Universidad Carlos III de Madrid Av. De la Universidad, 30 28911 Leganés (Madrid)

[email protected] RESUMEN Este documento recoge la implementación algorítmica en tres pasos de un jugador inteligente para el juego de cartas conocido como “la brisca”. Estos tres pasos corresponden a tres niveles de inteligencia: nivel básico, nivel intermedio y nivel avanzado. Para el nivel básico se emplean algoritmos muy simples para que el jugador no sea demasiado “tonto”, en el segundo nivel se introduce una heurística que mejora el comportamiento y en el tercer nivel se combina la heurística del nivel anterior junto con el algoritmo minimax para la fase final.

Términos Generales

En total, en la baraja, hay 120 puntos; por tanto, entre 2 jugadores, o entre 2 equipos, el objetivo del juego es alcanzar más de 60 puntos.

2.1 Objetivo El objetivo del juego consiste en sumar más puntos que el adversario, ya se ha explicado el valor de cada carta, por tanto ahora vamos a abordar las fases del juego.

2.2 Fases del juego -

Se barajan las cartas.

-

Se reparten las cartas.

Keywords

-

Se echa el pinte.

Árbol minimax, entrenamiento, heurística

-

Juego: 1ª ronda.

-

Robo: 2ª ronda.

-

Juego 2ª ronda.

Algoritmos, diseño, medidas, experimentación, factores humanos.

1. INTRODUCCIÓN En primer lugar vamos a describir el mecanismo del juego y su reglamento, más adelante veremos cómo podemos diseñar un jugador artificial que sea capaz de jugar a la brisca de manera inteligente.

2. EL JUEGO DE LA BRISCA En el juego de la brisca se utiliza una baraja española, 40 cartas y 4 palos: oros, copas, espadas y bastos. Tradicionalmente se juega entre 2, pero pueden jugar 2, 3*, 4, 5,…1 incluso se suele jugar por parejas, habiendo señas reglamentadas para la comunicación entre compañeros. Los valores de las cartas son los que siguen: As: 11 puntos. Tres: 10 puntos. Rey: 4 puntos. Caballo: 3 puntos.

… En la fase inicial, después de barajar, se reparten 3 cartas a cada jugador y se echa la carta del pinte. El pinte señala el palo que tiene prioridad respecto a los demás. El jugador a la derecha del que repartió se denomina “mano” y es el que juega en primer lugar. Tras la ronda inicial, en el resto de rondas, el jugador que ganó en la ronda anterior robará una carta, tras él lo harán el resto de jugadores empezando por el de su derecha. Se seguirá ese mismo orden para jugar en esa ronda. Se suceden las rondas hasta que ya no quedan cartas para robar, en ese punto la mecánica del juego se mantiene idéntica, con la salvedad de que se suprime la fase de robo y se juegan las cartas que se tienen en la mano, esto nos da 3 rondas más para la fase final, una por cada carta.

Sota: 2 puntos Resto: 0 puntos

2.3 Reglas que determinan la carta ganadora Las reglas que deciden qué carta gana en cada ronda son sencillas:

1

La baraja cuadra para un número de jugadores n tal que la división (40-(n*3))/n es exacta. Por ejemplo, para 2 jugadores: (40-(2*3))/2 = 34/2 = 17 con resto cero, hay 17 rondas hasta que se repartan todas las cartas. Si la división no es exacta, hay que retirar tantas cartas como indique el juego, se suelen quitar los dos que son los que menos valen.

Antes hemos mencionado los valores de las cartas, sus prioridades siguen el mismo patrón, de mayor a menor: as, tres, rey, caballo, sota, siete, seis, cinco, cuatro, dos. Ya podemos definir la primera regla: -

Gana la carta de mayor prioridad.

Tan sólo falta por aclarar un par de matices:

-

Una carta del pinte tendrá mayor prioridad que cualquier otra que no lo sea.

3.1.2 Si el jugador inteligente juega en segundo lugar

-

En caso de que ninguna de las 2 cartas sea del pinte, tendrá mayor prioridad el palo de la carta que se jugó primero.

“Jugará la carta que le proporcione mayor ganancia”.

Dicho en otras palabras: Una carta gana a otra si la primera: -

Es del pinte y la otra no.

-

Tiene mayor prioridad que la otra siendo ambas del pinte.

-

Tiene mayor prioridad que la otra sin ser ninguna del pinte.

3. MODELANDO UN JUGADOR INTELIGENTE El modelo implementado responde a un esquema de 2 jugadores: un jugador humano contra la máquina. Procedemos a describir las 3 aproximaciones para conseguir un jugador artificial inteligente.

3.1.3 Análisis y crítica Parece razonable esta estrategia de maximizar el beneficio; sin embargo, ese beneficio es sólo a largo plazo, y esta estrategia pasar factura a largo plazo, pues se pueden desperdiciar cartas “poderosas” para conseguir un botín que podía conseguirse con una carta más baja. En cuanto a la estrategia de ofensiva (cuando el jugador inteligente juega primero), no es demasiado certera, pues supongamos que tenemos cartas valiosas (briscas) que no son del pinte. Según el comportamiento que hemos diseñado, en este caso esa brisca se echaría pródigamente siendo presa fácil para el otro jugador en caso de que tenga al menos una carta del pinte o incluso una brisca del mismo palo que la nuestra pero de mayor valor (nosotros echamos un tres y el un as), lo cual no es demasiado improbable. Como vemos, tenemos 2 claras pegas en este primer acercamiento, demos ahora un paso más en la búsqueda del jugador inteligente.

3.2 Segunda aproximación 3.2.1 Si el jugador inteligente juega en primer lugar En este caso, utilizamos la misma heurística que en el caso anterior pero restringiendo la decisión de jugar cartas que no sean del pinte al caso de que esa carta no sea más alta que un rey. Así paliamos las consecuencias discutidas en el apartado anterior. “Si tiene cartas que no sean del pinte, tomará –de entre ellas- la de menor valor, y si no es más alta que un rey la jugará. En otro caso, jugará la carta del pinte de menor valor”.

3.2.2 Si el jugador inteligente juega en segundo lugar En este caso se ha ideado un sistema para ponderar las cartas que ha satisfecho bastante bien las expectativas.

3.1 Primera aproximación En un primer enfoque de inteligencia artificial para el juego de la brisca definimos un algoritmo basado en los siguientes puntos:

3.1.1 Si el jugador inteligente juega en primer lugar “Si tiene cartas que no sean del pinte, jugará –de entre ellas- la de menor valor. Si todas sus cartas son del pinte, jugará la de menos valor”. Esta estrategia viene de que la manera más fácil de hacer puntos en la brisca es jugar un papel pasivo, esto es, si dejo que el otro juegue en primer lugar eso me da ventaja, pues conozco su jugada de antemano. Conviene además que me guarde las de mayor valor (briscas) para poder “empelar” las presas que me proporcione el otro jugador.

La idea viene, una vez más, de tratar de compensar las carencias del modelo anterior. Pongamos por ejemplo el caso de que pintan oros, el jugador juega una carta y yo contesto echando el as de oros porque es el que me reporta mayor beneficio. Por un lado yo quiero que mi jugador se lleve los tantos de esa baza pero por otro lado quiero que le “duela” desprenderse del as de oros. Quiero maximizar la ganancia y minimizar esa pérdida, naturalmente lo que buscaré será un compromiso entre las dos. Para controlar ese aspecto, hilvanamos el procedimiento siguiente: Se comparan las cartas en base al “valor efectivo” derivado de jugar cada una de ellas, este valor efectivo tiene la siguiente forma: Valor efectivo (i) = Ganancia de jugar la carta (i) x wganancia – Coste de jugar la carta (i)

x wcoste

La ganancia será el valor de la carta jugada por el otro más el valor de la carta de mi mano que estoy evaluando, el signo será positivo, si con esa jugada resulto ganador y negativo si resulto perdedor.

Ganancia

Coste

Mi carta gana:

Mi carta es del pinte y tiene prioridad 10

G = 11 (as)

El coste representa la pérdida de “poder” derivada de jugar esa carta. Lo hemos modelado como la prioridad, que se multiplica por 10 en caso de que la carta sea del pinte.

+ 2 (sota)

C = 10 x 10 = 100

= +13

Prestemos atención por un momento a la lógica de la ecuación: -

Cuanto mayor sea la ganancia más interés tendré en jugar la carta.  Ganancia sumando.

-

Cuanto mayor sea el coste menos interés tendré en jugar la carta.  Coste restando

-

Decidiré jugar la carta con mayor valor efectivo

Ilustremos esto con un ejemplo:

VE = 13 · wganancia – 100 · wcoste En este punto, hemos obtenido los tres valores efectivos para cada una de las cartas. Para esta situación, yo –como diseñadordetermino a mi criterio cuál sería la decisión inteligente para este caso. Los coeficientes wganancia y wcoste deberán ser tales que se satisfagan las dos inecuaciones subyacentes de la decisión tomada como “buena”. En este punto, si yo tomo un número suficiente de casos puedo “entrenar” el sistema de forma que obtenga unos valores para los coeficientes tales que se satisfagan todas las situaciones entrenadas. Al final de este proceso encontré unos valores razonablemente apropiados para los dos coeficientes: wganancia = 9.5;

wcoste = 2

3.3 Tercera aproximación

Pintan oros, el jugador humano ha jugado la sota de oros, evalúo qué carta jugar: Primero calculo las ganancias: Ganancia

Coste

Mi carta gana:

Mi carta es del pinte y tiene prioridad 9

G = 10 (3 oros) + 2 (sota de bastos)

VE = 12 · wganancia – 90 · wcoste Ganancia

Coste

Mi carta pierde:

Mi carta no es del pinte, prioridad 8

- 2 (sota )

El prodecimiento será el siguiente: -

Si el jugador humano juega primero, se tomará su carta como nodo raíz del árbol

-

Si el turno le corresponde a la máquina, ésta creará 3 árboles, cada uno con una carta diferente como nodo raíz, se elegirá el que reporte mayor balance total.

C = 9 x 10 = 90

= +12

G =- 4 (rey)

Todavía se me ocurrió una tercera mejora para el diseño del jugador, y fue aprovechar la gran ventaja qué puede tener un ordenador frente a una persona: memoria + capacidad y velocidad de cómputo. De modo que en este punto surgió la idea de crear un registro en el que la máquina lleva la cuenta de todas las cartas que van apareciendo en el juego. De forma que al final, cuando ya no hay cartas que robar, la máquina conoce –no sólo las carta en su mano- sino también, y por descarte, las cartas en la mano del contrario. En este punto se aplica el algoritmo minimax para encontrar la combinación de jugadas óptima asumiendo que el jugador oponente no es tonto y querrá también maximizar su ganancia.

C=8

= -6 VE = –6 · wganancia – 8 · wcoste

Los nodos del árbol minimax se crean en el orden que indican los números de la figura

Los nodos marcados en gris corresponden a cartas que cierran jugada, al ser creados establecen los balances parciales en relación con el padre. El padre, en este caso, es de distinto tipo pues corresponde a una carta jugada por el jugador contrario. Cuando se llega a un nodo hoja (el primero es el 5) se calcula el balance total de ese nodo que será el mismo que el parcial, el balance total se pasa al nodo padre. Un nodo no termina de procesarse hasta que no se hayan procesado todos sus hijos. Antes de terminar de procesarse calcula su balance total basándose en el de sus hijos. Lo forma tomándo el óptimo de uno de sus hijos y sumándole su parcial. Si los hijos son de tipo “Jugador Humano”, ello corresponde a una jugada del jugador humano, que, asumimos, tomará una decisión para minimizar el balance total de la máquina; por tanto, en este caso, el balance que tomará el padre será el mínimo de los balances totales de los hijos. Si por el contrario los hijos son de tipo “Jugador Inteligente”, ello corresponde a una jugada de la máquina y por tanto se tomará el máximo de los balances totales de los hijos.

Tras aplicar el algoritmo descrito, se obtienen los caminos óptimos mediante maximizaciones y minimizaciones de los que sólo uno sobrevive hasta la raíz estableciendo el balance total que conseguiremos.

Ilustremos el algoritmo con un ejemplo, sea la siguiente situación:

3.4 Líneas futuras Se han repartido ya todas las cartas, pintan espadas y el turno es para la máquina. Veamos el árbol construído con el 2 de espadas como nodo raíz.

Se ha obtenido una inteligencia aceptable pero todavía se pueden mejoras varios aspectos, una de las posibles mejoras podría ser la siguiente: En la baza en que se acaban las cartas uno de los 2 jugadores se lleva la carta que queda encima del pinte y el otro el pinte, se podría establecer un tercer coeficiente w para valorar lo que le

“interesa” a la máquina dejar que el jugador humano gane a cambio de conseguir el pinte. Se podría estimar este interés puesto que se conoce el valor del pinte, otro parámetro podría ser la “necesidad de pinte” que pudiera tener, estudiada a partir de las cartas del pinte que tengo en la mano. Otra forma de mejorar sería un mejor ajuste de los coeficientes de ganancia y coste. El cálculo de los coeficientes con los que se ha implementado el sistema se hizo a partir de 10 muestras.

4. REFERENCES [1] Villena, J, Transparencias de la asignatura “Inteligencia en Redes de Comunicaciones” (2010)

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.