Está en la página 1de 11

Tarea 7.

Mancala
Kenia Salazar Cruz

1. Disear dos funciones de evaluacin para el juego. Debern devolver un valor


alto si la configuracin del tablero es favorable para el jugador actual, y un valor
bajo si es favorable para el adversario. Para probar las funciones de evaluacin,
ejecuta el juego 100 veces con el jugador MINIMAX y la funcin correspondiente
contra el jugador RANDOM, grabando cada vez el ganador. Graficar los resultados
cuando el nivel (ply) varia de 2 a 8 y repetir.

En el programa ya viene implementada una heurstica, la cual verifica si el


jugador que tira en ese momento ha ganado o no.

if self.heu==0:
if board.hasWon( self.num ):
return 100
elif board.hasWon( self.opp ):
return 0
else:
return 50

Entonces devuelve un '100' si la computadora (jugador 1) ha ganado, devuelve un


'0' si el oponente (jugador 2) ha ganado, si ninguna de las dos condiciones
anteriores se cumple entonces, regresa un '50'.

La primera heurstica implementada es la de Mancala del jugador 1 menos


Mancala de jugador 2.

def heuri_1(self,board):
return board.getScoreCups(self.num)-board.getScoreCups(self.opp)

La segunda heurstica implementada es la el valor mnimo para ganar (25) menos


lo que hay en la Mancala del jugador 1 y la misma diferencia pero para el jugador
2, entonces deben comparase ambos resultados y si la diferencia de 25 menos
Mancala de jugador 1 es menos a la diferencia de 25 menos Mancala de jugador
2, entonces se toma el valor mnimo; si la diferencia de 25 menos Mancala de
jugador 2 es menos a la diferencia de 25 menos Mancala de jugador 1, entonces
se toma el valor mnimo. En caso de que ninguna de las opciones anteriores se
cumpla, se devolver un '0'.

def heuri_2(self,board):
hace1=25-board.getScoreCups(self.num)
hace2=25-board.getScoreCups(self.opp)
if hace1<hace2:
return hace1
if hace2<hace1:
return hace2
else:
return 0

Estas funciones deben agregarse a la funcin def score, para cuando la


heurstica vale '0' entonces toma la primer heurstica descrita en este archivo; si
la heurstica vale '1', se toma la segunda heurstica y por ltimo si el valor de la
heurstica es '2' se elige la ltima heurstica descrita.

Para probar las funciones se ejecut 100 veces el programa con MINIMAX vs
RANDOM con valores de profundidad de 2 a 8. Los resultados se muestran en las
siguientes grficas.

Para la primera Heurstica se tienen los siguientes resultados:

Grfica ply =2 Heurstica1


2.5

1.5
Ganador

Columna B
1

0.5

0
0 20 40 60 80 100 120
Muestras

Se observa que el jugador 1 slo gan 7 veces, una vez fue empate y 92 veces
gan el jugador 2.
Grfica ply =3 Heurstica1 Grfica ply =4 Heurstica1
2.5 2.5
2 2
1.5 1.5
Ganador

Ganador
1 1
0.5 0.5
0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=3, se observa que el jugador 1 slo gan 5 veces, una vez fue empate y
94 veces gan el jugador 2.

Con ply=4, se observa que el jugador 1 slo gan 4 veces y 96 veces gan el
jugador 2.

Grfica ply =5 Heurstica1 Grfica ply =6 Heurstica1


2.5 2.5
2 2
1.5 1.5
Ganador

Ganador

1 1
0.5 0.5
0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=5, se observa que el jugador 1 slo gan 2 veces, empataron 2 veces y
96 veces gan el jugador 2.

Con ply=6, se observa que el jugador 1 slo gan una vez y 99 veces gan el
jugador 2.
Grfica ply =7 Heurstica1 Grfica ply =8 Heurstica1
2.5 2.5
2 2
1.5 1.5

Ganador
Ganador

1 1
0.5 0.5
0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=7, se observa que el jugador 1 slo gan una vez, empataron una vez y
98 veces gan el jugador 2.

Con ply=8, se observa que empataron una vez y 99 veces gan el jugador 2.

Para la heurstica 2 se tienen los siguientes resultados:

Grfica ply =2 Heurstica 2 Grfica ply =3 Heurstica 2


2.5 2.5

2 2

1.5 1.5
Ganador

Ganador

1 1

0.5 0.5

0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=2 y la heurstica 2, se observa que el jugador 1 gan 68 veces,


empataron 7 veces y el jugador 2 gan 25 veces.

Con ply=3 y la heurstica 2, se observa que el jugador 1 gan 60 veces,


empataron 8 veces y el jugador 2 gan 32 veces.
Grfica ply =4 Heurstica 2 Grfica ply =5 Heurstica 2
2.5 2.5

2 2

1.5 1.5

Ganador
Ganador

1 1

0.5 0.5

0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=4 y la heurstica 2, se observa que el jugador 1 gan 63 veces,


empataron 8 veces y el jugador 2 gan 29 veces.

Con ply=5 y la heurstica 2, se observa que el jugador 1 gan 57 veces,


empataron 12 veces y el jugador 2 gan 31 veces.

Grfica ply =6 Heurstica 2 Grfica ply =7 Heurstica 2


2.5 2.5

2 2

1.5 1.5
Ganador
Ganador

1 1

0.5 0.5

0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=6 y la heurstica 2, se observa que el jugador 1 gan 57 veces,


empataron 9 veces y el jugador 2 gan 34 veces.

Con ply=7 y la heurstica 2, se observa que el jugador 1 gan 61 veces,


empataron 12 veces y el jugador 2 gan 27 veces.
Grfica ply =8 Heurstica 2
2.5

Ganador 1.5

0.5

0
0 20 40 60 80 100 120
Muestras

Con ply=8 y la heurstica 2, se observa que el jugador 1 gan 50 veces,


empataron 11 veces y el jugador 2 gan 39 veces.

Por lo tanto la heurstica 2 no es muy buena.

2. Puedes encontrar en el cdigo el algoritmo recursivo MINIMAX. Escribe un


mtodo similar para realizar bsqueda mediante alfa-beta poda. Compara el
nmero de nodos generados cuando varias el nivel de 2 a 8 en relacin a
MINIMAX. Repetir la grfica de 1. usando el jugador con alfa-beta poda y la mejor
funcin encontrado en 1. contra RANDOM.

Para realizar la funcin de Alfa Beta Poda, se copiaron las funciones de MINIMAX y
slo se le agreg la linea de comparacin entre alfa y beta. Alfa >= beta, es la
condicin que se debe cumplir.

Al realizar las grficas se obtuvieron los siguientes resultados:


Grfica ply =2 Alfa-Beta Poda, Heurstica 1 Grfica ply =3 Alfa-Beta Poda, Heurstica 1
2.5 2.5

2 2

1.5 1.5

Ganador
Ganador

1 1

0.5 0.5

0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=2, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 56


veces, empataron 7 veces y el jugador 2 gan 37 veces.

Con ply=3, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 61


veces, empataron 3 veces y el jugador 2 gan 36 veces.

Grfica ply =4 Alfa-Beta Poda, Heurstica 1 Grfica ply =5 Alfa-Beta Poda, Heurstica 1
2.5 2.5
2 2
1.5 1.5
Ganador

Ganador

1 1
0.5 0.5
0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=4, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 47


veces, empataron 5 veces y el jugador 2 gan 48 veces.

Con ply=5, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 56


veces, empataron 9 veces y el jugador 2 gan 35 veces.
Grfica ply =6 Alfa-Beta Poda, Heurstica 1 Grfica ply =7 Alfa-Beta Poda, Heurstica 1
2.5 2.5
2 2
1.5 1.5
Ganador

Ganador
1 1
0.5 0.5
0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=6, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 50


veces, empataron 5 veces y el jugador 2 gan 45 veces.

Con ply=7, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 51


veces, empataron 5 veces y el jugador 2 gan 44 veces.

Grfica ply =8 Alfa-Beta Poda, Heurstica 1


2.5

2
1.5
Ganador

1
0.5

0
0 20 40 60 80 100 120
Muestras

Con ply=8, alfa-beta-poda y la heurstica 1, se observa que el jugador 1 gan 61


veces, empataron 3 veces y el jugador 2 gan 36 veces.

Para la heurstica 2 se muestran las siguientes grficas:


Grfica ply =2 Alfa-Beta Poda, Heurstica 2 Grfica ply =3 Alfa-Beta Poda, Heurstica 2
2.5 2.5
2 2
1.5 1.5
Ganador

Ganador
1 1
0.5 0.5

0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=2, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 60


veces, empataron 2 veces y el jugador 2 gan 38 veces.

Con ply=3, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 47


veces, empataron 4 veces y el jugador 2 gan 49 veces.

Grfica ply =4 Alfa-Beta Poda, Heurstica 2 Grfica ply =5 Alfa-Beta Poda, Heurstica 2
2.5 2.5

2 2
1.5 1.5
Ganador

Ganador

1 1
0.5 0.5

0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=4, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 53


veces, empataron 5 veces y el jugador 2 gan 42 veces.

Con ply=5, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 53


veces, empataron 4 veces y el jugador 2 gan 43 veces.
Grfica ply =6 Alfa-Beta Poda, Heurstica 2 Grfica ply =7 Alfa-Beta Poda, Heurstica 2
2.5 2.5
2 2
1.5 1.5
Ganador

Ganador
1 1
0.5 0.5
0 0
0 20 40 60 80 100 120 0 20 40 60 80 100 120
Muestras Muestras

Con ply=6, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 51


veces, empataron 5 veces y el jugador 2 gan 44 veces.

Con ply=7, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 58


veces, empataron 2 veces y el jugador 2 gan 40 veces.

Grfica ply =8 Alfa-Beta Poda, Heurstica 2


2.5

2
1.5
Ganador

1
0.5

0
0 20 40 60 80 100 120
Muestras

Con ply=8, alfa-beta-poda y la heurstica 2, se observa que el jugador 1 gan 48


veces, empataron 6 veces y el jugador 2 gan 46 veces.

Por lo tanto con la heurstica 2, utilizando alfa-beta poda, se dice que la heurstica
2 no es eficiente. Adems, ALFA-BETA Poda es mucho ms eficiente, pues se
ejecuta en un tiempo de casi la mitad que si no se implementara.

También podría gustarte