You are on page 1of 8

Configuracin polar:

Tiene varias articulaciones. Cada una de ellas puede realizar un movimiento distinto: rotacional, angular y lineal. Este robot utiliza la interpolacin por articulacin para moverse en sus dos primeras articulaciones y la interpolacin lineal para la extensin y retraccin.

Configuracin angular (o de brazo articulado):

Presenta una articulacin con movimiento rotacional y dos angulares. Aunque el brazo articulado puede realizar el movimiento llamado interpolacin lineal (para lo cual requiere mover simultneamente dos o tres de sus articulaciones), el movimiento natural es el de interpolacin por articulacin, tanto rotacional como angular. Adems de las cuatro configuraciones clsicas mencionadas, existen otras configuraciones llamadas no clsicas. El ejemplo ms comn de una configuracin no clsica lo representa el robot tipo SCARA, cuyas siglas significan: Selective apliance arm robot for assembly. Este brazo puede realizar movimientos horizontales de mayor alcance debido a sus dos articulaciones rotacionales. El robot de configuracin SCARA tambin puede hacer un movimiento lineal (mediante su tercera articulacin).

El juego del ajedrez es un juego adecuado para tratarlo mediante tcnicas de IA debido a que tiene claramente definidos el objetivo que se quiere alcanzar (meta) y los medios para llegar (movimientos permitidos) [1]. En este juego, el programa en todo momento debe conocer la configuracin del tablero para la maquina poder tomar la decisin adecuada (jugada), que le permita ganar. Para ello necesita de gran capacidad de almacenamiento de informacin, utilizando estructuras que le permitan llegar a conclusiones coherentes. El juego se desarrolla sobre un tablero de 8 filas y 8 columnas, sobre las cuales se colocan fichas de 2 colores que simbolizan a los 2 oponentes, estos colores son generalmente: Blanco y Negro. Este juego adems posee un sin numero de fichas, de diferente tipo y movimiento. As pues tenemos: Pen Torre

Alfil Caballo Reina Rey La Tabla 1 ilustra los movimientos permitidos para las diferentes fichas en un juego de ajedrez. - La primera fila indica el tipo de movimiento, ya sea horizontal, vertical, diagonal o en forma de L. - La segunda fila indica la direccin hacia donde puede moverse: Arriba (Arr) o Abajo (Aba). - El resto de filas indican las fichas del ajedrez: Peon (P), Alfil (A), Torre (T), Caballo (C), Dama (D) y Rey (R). -El nmero indicado en las casillas indican la cantidad de casillas que se pueden mover, as: 1 significa que solo puede moverse una sola posicin, mientras que n significa que puede moverse mas de 1 posicin dentro del lmite del tablero del ajedrez.

Cada jugador al inicio de cada jugada posee 16 elementos, mostrados en la figura 3. Sin embargo, la configuracin de cada movimiento que se pueda generar y las posibles acciones que estas puedan sugerir, hacen de este juego algo interesante, motivo por el cual se ha tomado nfasis en estudiar este juego empezando el uso de bsquedas sistemticas para disear programas por ordenador. Las complicaciones que presenta disear una bsqueda adecuada para este juego son bastantes, dentro de las cuales la mas principal es la complejidad espacial en un ordenador, motivo por el cual muchas veces se utiliza una determinada profundidad hasta donde se puede llegar a evaluar.

Pseudo Cdigo para una poda Alfa Beta en Minimax import java.awt.*;

import java.applet.Applet;

public class alfabeta extends Applet // Inicializa variables

int[] TIRADA = new TIRADA[2] // TIRADA[1] es el tablero TIRADA[2] es el valor del tablero int[] POSIBLE = new POSIBLE[2] ; int[] MinTirada = new MinTirada[2] ; int[] MaxTirada = new MaxTirada[2] ; int Jugada, numtir, procrece ; // variables que defiene el numero de tablero y la profundidad deseada

// Procedimiento maximizacion y minimizacion recursivamente

public void init() { numtir = profundidad ; Juego = "en Proceso"; Jugada = 0; tiro= 0; while (Juego <> "en Proceso") { procrece = 1; TIRADA = Maximiza(Jugada, alfa, beta, procrece); Grafica(TIRADA[1]); Jugada = TIRADA[1] ; Juego = EvaluaTerminacion(TIRADA); } ; };

// Procedimiento para la Maximizacion int Maximiza(Jugada,alfa,beta,procrece) { alfa = -infinito;

for ( j= 1; j <= Njugadas ; j=j+1 ) { MaxTirada[1] = SiguienteTab(j,Jugada); POSIBLE = Minimiza(MaxTirada[1],alfa,beta,procrece); if ( beta > alfa ) alfa = beta; if alfa >= POSIBLE[2] then TIRADA = POSIBLE }; return TIRADA ; }

// Procedimiento para la Minimizacion int Minimiza(Jugada,alfa,beta,procrece) { procrece = procrece +1; Poda = "enproceso" ; beta = + infinito ; for ( j = 1; j <= Njugadas AND poda = "enproceso" ; j=j+1 ) { MinTirada[1] = SiguienteTab(j, Jugada); if ( procrece = numtir ) POSIBLEMIN[2] = Evalua(MinTirada[1]) else POSIBLEMIN = Maximiza(MinTirada[1], alfa, beta, procrece); } if ( MinTirada[2] <= beta ) { TIRADA = POSIBLEMIN ; beta = MinTirada[2] ; if (beta <= alfa) Poda = "hecha" ; } } Return TIRADA }

// Procedimiento para la Evaluacion int Evalua(Jugada)

// Procedimiento para la Graficacion int Grafica(Jugada)

// Procedimiento para la determinacion de la siguiente jugada int SiguienteTab(j, Jugada)

} // end class Alfabeta

Estructura de Datos Utilizada. La estructura del node que se ha utilizado, tiene la siguiente estrucutra:

Id

IdPadre

Tipo (Max o Min)

Estado (config. Del tablero)

Funcion de utilidad

Mejor accion

Prof.

Id: El primer campo indica el ident del nodo que se esta generando. IdPadre: El siguiente dato, corresponde al padre que lo gener. El tipo hace referencia a que nodo se esta analizando: si es Max o es Min. En caso de ser Max, el algoritmo tratar de obtener la jugada de mayor utilidad,pues genera beneficio para Max; sin embargo cuando es Min, la maquina elegir la menor utilidad posible, perjudicando al oponente. El estado, es la configuracin del tablero, es decir, corresponde al ambiente que ser analizado por la maquina. La funcin de utilidad corresponde a la utilidad calculada por la heurstica explicada posteriormente [2]. La mejor accin es una variable que me va recolectando el camino que se genera con la mejor jugada posible, para esto debe basarse en la utilidad. Y finalmente la profundidad, indica, que tan profundo se va a analizar las jugadas, es decir, si se escoge una profundidad de 4, esto indicara que se va analizar 2 turnos para ambos jugadores y de all se extraer el mejor camino.

Hemos aplicado una heurstica en la que se considera un peso para cada pieza segn el color: Piezas Blancas

- Pen : 1 - Caballo : 3 - Alfil : 3 - Torre : 5 - Reina : 10 - Rey : 50 Piezas Negras - Pen : -1 - Caballo : -3 - Alfil : -3 - Torre : -5 - Reina : -10 - Rey : -50 Las Heurstica para la funcin de Utilidad que logramos analizar son las siguientes: 1 Capturar Posicin del Rey Blanco: xRB, yRB 2 Capturar Posicin del Rey Negro: xRN, yRN 3 Sumar N de piezas Blancas: sumaB

4 Sumar N de piezas Negras: sumaN 5 Calcular que tan protegido esta el rey blanco de las piezas negras: BRP 6 Calcular que tan Protegido esta el rey Negro de las piezas blancas: NRP 7 Calcular que tan cerca estn las piezas negras del rey Blanco: BAR 8 Calcular que tan cerca estn las piezas blancas del rey Negro: NAR Finalmente se obtendr la Utilidad con la siguiente ecuacin:

La primera divisin, mide que tanta es la diferencia de fichas entre los dos oponentes. Si uno de ellos tiene una cantidad de pesos mayor en fichas, probablemente pueda tener ms ventajas sobre el otro, por lo tanto pueda ganar. La segunda divisin, es una probabilidad que hemos considerado y mide que tan protegido esta un rey. Si un rey tiene mas cerca a sus piezas, entonces la probabilidad que sea comido es menor, por lo tanto menos oportunidad de ser atacado directamente. La tercera divisin mide la probabilidad de que un rey sea atacado por el oponente. Si un rey tiene mas fichas enemigas cerca, entonces la probabilidad de ser atacado aumenta, y por lo tanto pueda ejecutarse el mate.

Por lo tanto, la ecuacin presentada, mide que tanta ventaja tiene un oponente sobre el otro.

You might also like