Q-ki Free
Blog creado para la materia de Sistemas Inteligentes, impartida por la Dra. María de los Ángeles Junco Rey
viernes, 27 de abril de 2012
Reporte del Sistema Experto: Adivina Quién!
Lenguaje del mini-proyecto: El lenguaje en el que desarrolló el sistema experto fue en Ruby con el
framework Ruby on Rails.
Dominio del conocimiento: características físicas del personaje (pelo, ojos, labios, etc.) y su ropa.
Reglas: una de las reglas que se usaron para el juego fue describir si una persona tiene ojos
grandes, ojos chicos, ojos cafés, ojos verdes, frente grande, frente chica, cabello lacio, cabello
chino, si tiene gorro, si tiene lentes, barba, bigote, canas, fleco entre otras, que nos ayuden a
reconocer un personaje.
Hechos: serían contestando cierto o falso dependiendo de las características físicas del personaje.
Por ejemplo si alguien tiene barba se le pondría como verdadero este atributo, pero si una
persona es morena, el atributo de tener piel blanca se le pondría como falso.
Limitantes: La limitante más evidente para este juego es la subjetividad que implican las
características físicas de una persona ya que para un jugador, un personaje puede tener ojos
grandes y para otro no. Tal vez esto no hubiera sido gran problema si las características se
hubieran podido resaltar un poco más o hacer las preguntas más específicas o agregar más reglas
que nos permitieran no tener tanta ambigüedad en el sistema. O también se pudieron haber
agregado incertidumbre, pero hubiera sido más complicado manejar de esta forma el sistema.
jueves, 26 de abril de 2012
Video de muestra del Sistema Experto: Adivina Quién!
Desarrollado por:
Melissa Moya Pérez
Melissa Moya Pérez
Jorge de Jesús Tinoco Huesca
Arturo Ayala Tello
Música:
Neils' Skin - Focus
martes, 14 de febrero de 2012
Reporte de Mini-Proyecto 1: Eight Puzzle!
Plataforma
El proyecto fue desarrollado en Java 5 y se utilizó Swing y AWT, las librerías gráficas de Java.
Descripción formal del problema
Espacio de estados: Este problema tiene 9 celdas en las que se podrán acomodar los números en un rango del 1 al 8, un número por casillas. El tener este rango implica que halla una celda vacía que permitirá que las celdas de las cifras se muevan para cambiar de posición.
Estado inicial: cualquier entrada que contenga las cifras del 1 al 8 en cualquier posición y dejando un celda vacía.
Estado final: puede ser cualquier resultado en el que se muestren las cifras del 1 al 8 acomodadas en orden. Ya sea posicionando los números de alrededor del recuadro o posicionándolos por renglón.
Conjunto de reglas:
1. Los números deben moverse sólo adyacentemente, es decir sólo pueden moverse vertical u horizontalmente.
2. Para mover un número es necesario que tenga la celda vacía en una posición adyacente.
Búsqueda ciega implementada
La búsqueda ciega para este problema se realizó en anchura, la cual expande todos los nodos del padre.
En ésta búsqueda, al hacer las pruebas, pudimos percatarnos de que se puede realizar bien el problema para casos sencillos que no requieran demasiados movimientos.
Si el problema requiere de una cantidad considerable de movimientos, que impliquen una anchura elevada, la búsqueda tardará mucho tiempo y memoria en encontrar una solución.
Búsqueda Hill climbing
Heurística 1:
En la heurística uno se obtiene la posición del número y se ve si ya está en su fila o en su columna según el orden del estado final. Se hace una sumatoria dependiendo de la posición de cada número. Si ya está en la posición que debe estar en el estado final suma 0, si no está en su columna o no está en su fila se le suma 1, pero si no está en su fila ni está en su columna se suma 2. Al hacer la sumatoria se escoge la menor de los nodos expandidos.
Nota: para la ésta heurística no se toma en cuenta en la posición del espacio vacío.
Heurística 2:
Nuestra segunda heurística se obtiene a partir del número de movimientos necesarios para llegar a la solución, moviendo los números sin tomar en cuenta las reglas del juego. Esto es, se itera sobre los números del nodo actual y, si se encuentra un número fuera de su posición, se intercambia por aquel número que se encuentre en la posición meta de este número. Una vez que pasa esto, se reinicia la iteración desde el inicio del arreglo, pero ya modificado. El valor de la heurística será, entonces, el número de intercambios necesarios para llegar a la solución.
Nota: para la ésta heurística no se toma en cuenta el espacio vacío.
Comparación entre búsquedas
Búsqueda 1:
4,1,3,0,2,6,7,5,8
Resultados:
- Búsqueda en Anchura
Tiempo: 31 ms
Movimientos(Profundidad): 6
Máximo número de nodos almacenados: 64
Total de nodos visitados: 129
-Búsqueda Hill Climbing, con Heurística 1
Tiempo: 1 ms
Movimientos(Profundidad): 5
Máximo número de nodos almacenados: 1
Total de nodos visitados: 15
-Búsqueda Hill Climbing, con Heurística 2
Tiempo: 2 ms
Movimientos(Profundidad): 5
Máximo número de nodos almacenados: 1
Total de nodos visitados: 15
Búsqueda 2:
2,4,3,1,0,6,7,5,8
Resultados:
- Búsqueda en Anchura
Tiempo: 100 ms
Movimientos(Profundidad): 7
Máximo número de nodos almacenados: 256
Total de nodos visitados: 514
-Búsqueda Hill Climbing, con Heurística 1 (sin encontrar solución)
Tiempo: 1 ms
Movimientos(Profundidad): 3
Máximo número de nodos almacenados: 2
Total de nodos visitados: 9
-Búsqueda Hill Climbing, con Heurística 1 (con solución)
Tiempo: 1 ms
Movimientos(Profundidad): 6
Máximo número de nodos almacenados: 2
Total de nodos visitados: 19
-Búsqueda Hill Climbing, con Heurística 2
NOTA: Con esta heurística, el algoritmo no encontró la solución
Tiempo: 2 ms
Movimientos(Profundidad): 3
Máximo número de nodos almacenados: 1
Total de nodos visitados: 9
domingo, 12 de febrero de 2012
¡Bienvenidos!
Bienvenidos sean todos a este blog, en el cual colocaremos nuestros reportes sobre los mini-proyectos realizados en la materia de Sistemas Inteligentes :)
Suscribirse a:
Entradas (Atom)