Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto 1
Proyecto 1
Proyecto 1:
Agente que resuelve problemas con base en
bsquedas.
PUZZLE 8
Sistemas Inteligentes
Catedrtico: Dr. Pablo H. Ibargengoytia G.
INDICE
Pgina
Introduccin.
Objetivo.
Interfaz de Usuario.
Conclusiones.
10
11
Bibliografa.
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.
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.
Ciegos
- Profundidad iterativa
- Limitado por profundidad
Algoritmos
Heursticos
- 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:
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.
Tiempo de
Ejecucin
(milisegundos)
Nmero de
Comparaciones de la
agenda.
Limitado por
Profundidad
16
31
40
Profundidad
Iterativa
16
153
15
Algoritmo
El mejor Primero
A* (Russell)
A* Optimo
A* con Diagonales
A* Pacmaniano
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