Ejemplo3Raya

11
Ejemplo Tres en Raya mediante Agente reactivo (Estructura artificialmente complicada para ilustrar conceptos de teoría) Juan Luis Castro

description

ejemplo de como implementar un 3 en raya

Transcript of Ejemplo3Raya

  • Ejemplo Tres en Raya mediante Agente reactivo

    (Estructura artificialmente complicada para ilustrar conceptos de teora)

    Juan Luis Castro

  • Sensores y actuadores

    Sensores: Read Jugador: i j (i=1,2,3, j=1,2,3)

    El contrario marca la posicin ij

    Actuadores: Write Agente: i j (i=1,2,3, j=1,2,3)

    El agente marca la posicin ij

  • Memoria (Modelo Icnico)

    M , matriz de 3x3 de enteros

    M(i,j) = 0 si esta libre

    M(i,j) = 1 si jugado por Agente

    M(i,j) = 2 si jugado por contrario

    Inicialmente M(i,j)=0 para cada i,j

  • Memoria (percepcin)

    Tx : sitios donde hacer 3 en raya T1, Fila 1 T4 Columna 1 T2 Fila 2 T5 Columna 2 T3 Fila 3 T6 Columna 3 T7 Diagonal 1 T8 Diagonal 2 A(x)=fichas de agente en Tx C(x)=fichas del contrario en Tx T(x)=-2,-1,0, 1,2,3 T(x)= 0 Libre(x) T(x)= 1 PuedoGanar(x) T(x)= 2 SiguienteGano(x), T(x)= -1 PuedoPerder(x) T(x)=-2 SiguientePierdo(x), T(x)=3 Nulo(x) N= nmero fichas en tablero

  • Funcin Interseccin y Posicion

    Interseccin(x,y) #posicin de la interseccin entre Tx y Ty, (0,0) si no intersecan

    Si xy>3 interseccion(x,y)=(x,y)

    Si x3 y 7>x>3 interseccin(x,y)=(0,0)

    Si x x>3 interseccin(x,7)=(x-3,x-3)

    Si x x>3 interseccin(x,8)=(7-x,x-3)

    Interseccion(7,8)=(2,2)

    Posicion(x,i): # posicion en tablero de la i-sima componente de Tx

    If x

  • Estructura del Agente

    Modelo de pizarra

    Memoria: M,C,A,T, Turno

    MC1: Procesar entrada y actualizar memoria y percepcin

    MC2: Elegir donde jugar

    MC3: Hacer jugada y actualizar memoria y percepcin

  • MC1:Procesamiento: Actualizar memoria y percepcin

    If Jugador: i j then

    M(i,j)=2

    N++

    i, j+3 en TernasAfectadas

    If i=j then 7 en TernasAfectadas

    If j=4-i then 8 en TernasAfectadas

    For h in TernasAfectadas

    C(h)=C(h)++

    If A(h)>0, then T(h)=3

    If A(h)=0 and C(h)=2, then T(h)=-2 else T(h)=-1

    Turno= 1

  • MC2: Elegir donde Jugar Estrategia por sistema de produccin (subsuncin? Modelo de pizarra?)

    Mdulo 1: Ganar: Si Gano(x), jugarterna(x) (x:1..8) ;

    Mdulo 2: Evitar_Perder: Si Pierdo(x), jugarterna(x) (x:1..8) Mdulo 3: Ganar en 2: Si PuedoGanar(x) y PuedoGanar(y)=1 y M(Interseccin(x,y))=0, jugar(interseccion(x,y)) (x:1..8, y:1..8) Mdulo 4: Evitar Perder en 2: Si PuedoPerder(x) y PuedoPerder(y) y M(Interseccin(x,y))=0, jugar(interseccion(x,y)) (x:1..8, y:1..8) Mdulo 5: Dominar tablero Si N=0, jugar(1,1) : Si empiezo juego en la esquina Si M(2,2)=0, jugar(2,2); Si el centro esta libre juego en el centro T(x)=0 y T(y)=0, jugar(interseccion(x,y)) (x:1..6,y:1..6); Jugar en posicion que ocupe dos ternas libres SI T(x)=0, jugarterna(x) (x:1..8); Jugar en posicion que ocupe una terna libre Mdulo 6: Jugar donde pueda Si M(i,j)=0, jugar(i,j) ; Jugar en un sitio libre

  • MC2bis: Elegir donde Jugar: Estrategia por sistema de produccin + funcin heurstica. Subsuncin

    Mdulo 1: Ganar:

    Si T(x)=2, jugarterna(x) (x:1..8)

    Mdulo 2: Evitar_Perder:

    Si T(x)=-2, jugarterna(x) (x:1..8)

    Mdulo 3: Ganar en 2

    Si T(x)=1 y T(y)=1 y M(Interseccin(x,y))=0, jugar(interseccion(x,y)) (x:1..8, y:1..8)

    Mdulo 4: Evitar Perder en 2

    Si T(x)=-1 y T(y)=-1 y M(Interseccin(x,y))=0, jugar(interseccion(x,y)) (x:1..8, y:1..8)

    Mdulo 5 bis: Jugar segn valor estimado de las jugadas (f. heurstica v(i,j) valor posicion (i,j))

    For i=1..3, For j=1..3:

    If M(i,j)0 then valor(i,j)=-1

    else

    For x=1..8, For h=1..3

    If T(x)=0 and M(posicion(x,h))=0 then valor(posicion(x,h))=valor(posicion(x,h)+2

    If |T(x)|=1 and M(posicion(x,h))=0 then valor(posicion(x,h)+2

    -jugar(i,j) tq valor(i,j) es mximo

    Qu mide v(i,j)? Describir la en trminos de percepcin (Libre; PuedoGanar; PuedoPerder)

  • Funcin jugarterna(x)

    jugarterna(x) Si M(Posicion(x,1))=0,

    jugar(posicion(x,1)) Si M(Posicion(x,3))=0,

    jugar(posicion(x,3)) jugar(posicion(x,2))

  • MC3: Jugar y actualizar la memoria

    Mdulo actuar y actualizar memoria jugar(i,j)

    M(i,j)=1 i, j+3 en TernasAfectadas If i=j then 7 en TernasAfectadas If j=4-i then 8 en TernasAfectadas For h in TernasAfectadas A(h)=A(h)++ If C(h)>0, then T(h)=3 If C(h)=0 and A(h)=2, then T(h)=2 else T(h)=1 Write(Agente: i j) Turno=0 N++