Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Proyecto 1:
Agente que resuelve problemas con base en bsquedas. PUZZLE 8
Sistemas Inteligentes
Catedrtico: Dr. Pablo H. Ibargengoytia G.
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
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.
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:
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].
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.
- Profundidad iterativa - Limitado por profundidad - Mejor primero - A* (Russell) - A* Optimo - A* con Diagonales - A* Pacmaniano
Algoritmo A*
A* es un algoritmo informado que basa su comportamiento en la evaluacin de una funcin expresada del siguiente modo:
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.
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!
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.
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
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
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