Anda di halaman 1dari 11

Posgrado en Ciencias Computacionales

Proyecto 1:
Agente que resuelve problemas con base en bsquedas. PUZZLE 8
Sistemas Inteligentes
Catedrtico: Dr. Pablo H. Ibargengoytia G.

Integrantes del Equipo:


Gustavo Sotelo Jurez
Matrcula A00375662

Francisco Ral Uribe Cornejo


Matrcula A00375673

Haziyade Cruz Angel


Matrcula A01125316

Ulises Cern Salas


Matrcula A01128360

Xochitepec, Morelos, a 9 de Septiembre de 2009.

INDICE
Pgina

Introduccin. Objetivo. Descripcin del problema. Descripcin del Modelo Computacional. Descripcin de los algoritmos utilizados. Interfaz de Usuario. Tabla comparativa del desempeo de los algoritmos.
Conclusiones.

3 3 3 4 5 8 9
10

Cdigo fuente del proyecto. Bibliografa.

11 11

Introduccin.
El 8 Puzzle es un juego que consta de una matriz con una longitud de tres elementos por lado (9 casillas), en la cual son acomodadas 8 fichas, quedando un espacio en blanco. El problema consiste en que dada una configuracin inicial de las fichas (desacomodadas), desplazando las fichas de manera horizontal y vertical en el espacio en blanco, se pueda lograr llegar a una configuracin final determinada. Para poder dar solucin a este problema se han utilizado diferentes algoritmos, los cuales se encargan de realizar una bsqueda a travs del espacio de posibles estados, lo que pretenden estos mtodos es mantener y ampliar un conjunto de secuencias de soluciones parciales para poder llegar al ptimo [1].

Objetivo.
Disear un agente inteligente que resuelva el problema del rompecabezas (8 puzzle) en base a bsquedas. El diseo incluye un programa estructurado en lenguaje Java que permite la experimentacin de diferentes mtodos de bsqueda y diferentes y nuevas mtricas de desempeo a travs de una interfaz grfica para el usuario (GUI), tomando como gua las siguientes: Etapas del Proyecto. a) Definicin de las estructuras de datos u objetos para la representacin del problema, de los estados del juego y de la expansin del rbol de bsquedas. b) Diseo de los algoritmos del agente. c) Diseo de la salida de resultados. d) Definicin de la GUI (interfaz grfica de usuario). e) Experimentacin con diferentes algoritmos y diferentes mtricas.

Descripcin del problema.


Como ya se ha mencionado en la introduccin, se tiene como entrada para el algoritmo una configuracin inicial (figura 1), y los nicos movimientos permitidos dependiendo de la posicin en que se encuentre el espacio en blanco sern los siguientes:

Desplazar el espacio en blanco hacia arriba Desplazar el espacio en blanco hacia abajo Desplazar el espacio en blanco hacia la derecha Desplazar el espacio en blanco hacia ala izquierda.

Lo que se pretende es que el algoritmo devuelva como salida la configuracin final (figura 2) con el menor nmero de movimientos posibles como se muestra a continuacin:

Figura 1: Configuracin inicial.

Figura 2: Configuracin final.

Los movimientos que se siguieron para llegar a la configuracin final con el menor nmero de movimientos posibles para este ejemplo fueron los siguientes (recordamos que los movimientos hacen referencia al espacio en blanco): 1) arriba, 2) arriba, 3) izquierda, 4) abajo, 5) derecha [2].

Descripcin del Modelo Computacional.


Para representar los estados del juego se utilizaron dos esquemas. Como el juego presenta una naturaleza matricial, es decir son nmeros ordenados en filas y en columnas, se decidi utilizar una matriz para representarlo. Es por esto que se utiliz un arreglo bidimensional de enteros para que funcionara como matriz. Pero adems se considero una representacin de forma vectorial con el fin de economizar memoria. Para esto se utiliza un nmero entero que en base decimal representa las filas del arreglo en un solo rengln. La siguiente figura 3 ilustra un ejemplo de cmo se emplean dichas estructuras.

Figura 3: Estructuras de datos para la representacin de los estados.

El rbol de bsquedas que se utiliza se hizo a partir de la clase Nodo, que es una clase interna del agente. Cada nodo guarda informacin sobre su estado, el costo (operador aplicado), el nodo padre y los hijos. Para los hijos de cada nodo se consider utilizar un arreglo de nodos que representan a los cuatro movimientos posibles en el caso de que la casilla vaca se encuentre en el centro.

Descripcin de los algoritmos utilizados.


Para la realizacin de este proyecto se utilizaron seis diferentes algoritmos. Entre estos hay dos algoritmos ciegos as como cuatro algoritmos heursticos (en dos de los cuales se consideraron nuevas mtricas) como se muestra a continuacin en el cuadro sinptico:

Ciegos Algoritmos Heursticos

- Profundidad iterativa - Limitado por profundidad - Mejor primero - A* (Russell) - A* Optimo - A* con Diagonales - A* Pacmaniano

Bsqueda limitada por profundidad


Se pone un lmite a la bsqueda preferente por profundidad. Si el lmite fuera igual a la profundidad del estado meta ms superficial, se reduce al mnimo la complejidad espacio-temporal.

Bsqueda por profundidad iterativa


Se emplea la bsqueda con lmite de profundidad, pero los lmites van aumentando hasta encontrar una meta. Es completa y ptima; su complejidad temporal es O(bd) y su complejidad espacial es O(bd).

Figura 4: Estructura de nodos de la bsqueda por profundidad iterativa.

Algoritmo Mejor Primero (Best-First)


Este algoritmo, combina las ventajas de los algoritmos primero en profundidad y primero en amplitud. Sigue un camino a la vez, pero puede cambiarse a otro camino que parece ms prometedor que el que est siguiendo. En este sentido, puede considerarse que es un algoritmo que realiza su proceso de bsqueda en un grafo de tipo O, ya que todos sus ramales representan una alternativa de solucin. Para su operacin, el algoritmo necesita dos listas de nodos y una funcin heurstica que estime los mritos de cada nodo que se genere: 1. Abiertos: Es una variable que contiene los nodos que han sido generados. La funcin heurstica ha sido aplicada a ellos, pero todava no han sido examinados, es decir no se han generado sus sucesores. abiertos puede considerarse como una cola de prioridades en la que los elementos con mayor prioridad son los que tienen los valores ms prometedores, dados por la funcin heurstica. 2. Cerrados - Es una variable que contiene los nodos que han sido examinados. Es necesario tener esta informacin, para que la bsqueda sea en un grafo y no en un rbol. 3. Funcin Heurstica - Permite que el algoritmo busque primero por senderos que son o parecen ms prometedores. Para muchas aplicaciones, es conveniente definir esta funcin f', como la suma de dos, que se las llamar g y h'. La funcin g es una medida del costo de llegar desde el nodo inicial al nodo actual. La funcin h' es una estimacin del costo adicional para llegar desde el nodo actual al estado objetivo. Aqu es donde se explota el conocimiento que se dispone sobre el dominio del problema. Es decir, la funcin combinada f' representa una estimacin del costo de llegar desde el estado inicial hasta el estado objetivo, siguiendo el sendero que ha generado el nodo actual. Si el nodo actual ha generado ms de un sendero, el algoritmo deber dejar registrado slo el mejor.

Algoritmo A*
A* es un algoritmo informado que basa su comportamiento en la evaluacin de una funcin expresada del siguiente modo:

f(n) = g(n) + h(n)

La funcin se encuentra compuesta por: g(n): es el costo de las movidas realizadas. h(n): es la funcin heurstica. Representa el costo estimado del mejor camino. Dicha estimacin debe ser realizada por defecto, es decir, siempre menor o igual a la real. En bsqueda de caminos, la funcin heurstica suele ser el camino recto hacia la meta, ya que no importa como sea el mapa, es imposible que exista camino de costo menor. El modo de realizar el clculo de la distancia necesaria para llegar a la meta depende del tipo de movidas permitidas. Si solo podemos movernos vertical y horizontalmente podremos realizar el clculo de la distancia Manhattan, que consiste en sumar la cantidad de bloques en horizontal y vertical que restan para llegar a la meta. Si adems se permiten movidas diagonales, deberemos aplicar Pitgoras y el clculo ser la raz cuadrada de la suma de los cuadrados de los catetos.

Heursticas de los algoritmos no ciegos.


Para los algoritmos no ciegos se implementaron las siguientes mtricas con dos modificaciones alternativas a la mtrica del algoritmo A*: Mejor Primero: Suma de las distancias Manhattan (Distancia en cuadricula de cada ficha hacia su posicin meta). A* (Russell): La suma de las fichas errneas + Distancia Manhattan. A* Optimo: Con 3 heursticas. La suma de las casillas diferentes + la suma de vecinos errneos de cada ficha colocada en su lugar + 2 * Suma de la distancia Manhattan. A* Diagonal: Suma de las distancias Manhattan permitiendo movimientos de manera diagonal. A* Pacman: Suma de las distancias Manhattan considerando las paredes como una envolvente cilndrica (es posible que una ficha se desplace de un extremo al otro considerando un solo movimiento) (Figura 5).

Figura 5: Heuristica A* Pacman.

Interfaz de Usuario.
La interfaz con el usuario es grfica. El juego se representa con un conjunto de botones interactivos que se usan para jugar 8 puzzle. Cada vez que se presiona un botn este cambia a la posicin de la casilla vaca, el juego permite interactuar con l para que el usuario lo resuelva por s solo. As tambin la interfaz permite definir un estado o configuracin inicial al juego as como un estado final o meta. Lo anterior se hace a travs de una matriz de reas de texto donde se escriben las posiciones y se representa la casilla vaca con 0. Al presionar el botn Establecer Inicio se actualiza al agente con las configuraciones que va a utilizar en la bsqueda. Del ComboBox se puede seleccionar el algoritmo o mtodo de bsqueda que se desea utilizar. El agente comienza a resolver el problema cuando se presiona el botn Resulvelo!

Figura 6: Interfaz de la aplicacin.

Una vez que haya terminado el proceso, una ventana notifica la cantidad de movimientos que tiene la solucin, el tiempo que tard (en milisegundos) y el nmero de comparaciones realizadas. Esta misma ventana pregunta al usuario si quiere ver la animacin de la solucin, esto es, que el tablero comenzar a moverse automticamente hasta llegar a la solucin, de acuerdo al nmero de movimientos.

Figura 7: Ventana de para solucin encontrada.

Tabla comparativa del desempeo de los algoritmos.


Para poder probar la eficiencia de los algoritmos utilizamos, usamos un caso de estudio que puedan resolver los 4 algoritmos. El caso es el siguiente:

Figura 8: Caso prctico implementado en la aplicacin.

Desempeos de los algoritmos La siguiente tabla muestra los resultados obtenidos con el caso de prueba que se muestra en la Figura 8. Algoritmo
Limitado por Profundidad Profundidad Iterativa El mejor Primero A* (Russell) A* Optimo A* con Diagonales A* Pacmaniano

Movimientos
16

Tiempo de Ejecucin (milisegundos)


31

Nmero de Comparaciones de la agenda.


40

6 6 6 6 6 6

16 15 0 0 0 0

153 7 7 7 7 8

Como se puede ver en este caso hay una diferencia significativa con el resultado arrojado en el Algoritmo ciego Profundidad Iterativa, respecto con los Heursticos, entre ellos el considerado como A* Optimo.

Conclusiones.
Aunque el funcionamiento de los algoritmos se basa en el uso de rboles de bsqueda, las diferentes formas de resolver los problemas redundan en diferentes desempeos. Sin embargo a pesar de encontrar buenas heursticas para los algoritmos no ciegos, hay casos en el que la aplicacin necesita de mucha memoria y tiempo de procesador para poder encontrar la solucin ms ptima. Es bueno tener informacin en una bsqueda por que te facilita mucho encontrar la meta ms ptima, si se manejan bien las heursticas puede ayudar a ahorrar muchos pasos aun si el lenguaje de programacin y las estructuras no son las ms eficientes. Los algoritmos ciegos nos ayudan a encontrar la solucin sin informacin, es de gran ayuda pero en este caso vimos que dejan de ser lo ideal ya que consumen mucha memoria por que generan muchos nodos los van aumentado el tiempo y la memoria de manera exponencial. Despus de haber realizado una serie de pruebas, se determin que algunas de las configuraciones iniciales respecto a las finales determinadas, en algoritmos ciegos y de heursticas distintas de la A* Optimo, no encontraba solucin.

10

Cdigo fuente del proyecto.


http://campus.cva.itesm.mx/furibe/SistemasInteligentes/puzzleSolver.zip

Bibliografa.
Russell, Stuart; Norvig, Peter. Artificial Intelligence A Modern Approach. New Jersey: Prentice Hall. [2] 8puzzle.com. (2008). 05-Septiembre-2009, Sitio web: www.8puzzle.com/index.html
[1]

11

Anda mungkin juga menyukai