Sei sulla pagina 1di 11

Informe Sistema Experto Horscopo.

En este informe presenta el desarrollo de un sistema experto que permite al usuario


conocer su signo zodiacal basndose en su fecha de nacimiento, este sistema utiliza
bases de conocimiento creadas usando lenguaje Prolog y un sistema de gestin de
reglas Drools.
Prolog basa su ejecucin en la unificacin y el backtracking (Vuelta atrs), es decir
utiliza la inferencia de encadenamiento hacia atrs, en cuanto a Drools utiliza un
motor de reglas basado en inferencia de encadenamiento hacia adelante y
encadenamiento hacia atrs ya que implementa de forma avanzada el algoritmo
llamado Rete.
A continuacin, se documentan las partes que juntas logran cumplir con el objetivo
del sistema y el proceso usado para determinar el signo zodiacal del usuario.

Encadenamiento hacia atrs.


Se presenta implementado la base de conocimiento Horoscopo.pl creada usando el
lenguaje Prolog en una aplicacin Java SE.
Desarrollo de la base de conocimientos Horoscopo.pl.

Lo primero es definir los Hechos para cada signo zodiacal, los cuales se asocian
con la etiqueta horoscopo el cual se estructura de la siguiente manera:
horoscopo (Nombre signo, Da inicio, Mes inicio, Da fin, Mes fin).
Donde Nombre signo, son todos los signos zodiacales; Da inicio y Mes inicio: son
el da y mes de inicio del calendario que representa un signo; Da fin y Mes fin: son
el da y mes de fin del calendario que representa un signo.

1
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Luego de crear los hechos se define la regla que determina el signo zodiacal del
usuario, es nuestro motor de inferencia.

Partimos de la hiptesis que el signo de un da y mes sea verdadero si se cumple


algn hecho definido de horscopo y que el mes ingresado en la hiptesis sea igual
al mes inicial del hecho y el da ingresado mayor o igual al da inicial del hecho; o
sino, que el mes ingresado sea igual al mes final del hecho y que el da ingresado
sea menor o igual da final del hecho.
Para entender mejor este proceso mostramos el siguiente ejemplo acompaado del
rbol de decisin que se crea a partir de la hiptesis.

Nuestra hiptesis es: signo (14, 06, Signo). (14 de Julio)


Para que esto sea verdad se debe cumplir regla, Prolog verifica la regla en base a
los datos ingresados, buscando un signo que cumpla la condicin de ser del mes 6
y el dia 14.

Para que esa hiptesis sea verdad se deben cumplir las dos ramas del rbol.
Se consulta en la base de conocimiento por el hecho horscopo (Signo, D1, M1,
D2, M2), empezando desde el primer hecho declarado.

Encuentra el primer hecho que es: Signo: Aries, D1=21, M1=3, D2=20, M2=4.
Se tiene la primera parte de la hiptesis, ahora se debe cumplir la segunda
((Mes=M1,Dia>=D1);(Mes=M2,Dia=<D2)).
2
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Ahora, la primera rama del rbol es verdadera, pero la segunda no, entonces se da
un fallo en la bsqueda.
Cuando se produce un fallo se replantea la decisin (backtracking) hasta que se
encuentre una solucin exitosa o hasta que se llega al final, en este caso se contina
al siguiente hecho en el orden definido hasta finalizar con todos.
Notamos que al llegar al Hecho: Horosocopo (geminis,22,05,21,06).
Signo: geminis, D1=22, M1=5, D2=21, M2=6.

En este caso se encuentra un xito en la segunda rama, entonces, siendo la primera


y segunda rama verdadera, se tiene un signo el cual satisface la hiptesis: Gminis.
Aqu se realiza un (backtracking) hasta finalizar con los hechos para comprobar si
no existe otro caso de xito.
Como vimos, en Prolog se utiliza la inferencia de encadenamiento hacia atrs, este
parte desde una hiptesis creando ramas con las distintas reglas que se tengan
hasta llegar a los hechos que cumplan con la hiptesis y comprobar que no existen
ms hechos que cumplan la hiptesis.

3
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Para la implementacin en la aplicacin java se usaron las libreras:

Se dise la siguiente interfaz, la cual est conformada por un campo para introducir
la fecha de forma fcil un botn que ejecuta la funcin Ver() y un campo donde se
muestran los resultados de la consulta.

4
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

La funcin Ver() procede de la siguiente manera:

En la cual se crea un objeto de Tipo Calendario al cual le permite extraer la fecha


del campo implementado por la librera JCalendar, luego de esto se define una
cadena de texto la cual es usada como parmetro para un objeto creado de la clase
Query presente en la librera Jpl, dicha consulta es ejecutada por la funcin
.hasSolution() la cual nos retorna falso o verdadero si logra abrir la base de
conocimientos horoscopo.pl dado esto se crea otra cadena de texto que hace
referencia a la regla signo pasndole el da y mes ingresados por el usuario y la
palabra Signo se crea un nuevo objeto Query y se le pasa la consulta de la regla
luego se utiliza la funcin .oneSolution().get(Signo) la cual retorna el resultado de
la consulta del Parmetro Signo y se muestra la imagen y el nombre del signo
zodiacal.
Se muestra el ejemplo de ejecucion de la aplicacin con la fecha usada
anteriormente.

5
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Encadenamiento hacia adelante.


Se presenta implementado la base de conocimiento Sample.drl creada usando el
sistema de gestin de reglas Drools en una aplicacin Java SE.
En Drools el motor de inferencias es creado mediante reglas de produccin o
rules, estas reglas son piezas de conocimiento y son de la forma:
"When (Cuando) se producen algunas condiciones, then (entonces) hacer
algunas tareas."

Estas reglas parten de unos hechos y segn esos hechos llegan a unas
conclusiones.
Ahora para nuestro sistema experto que determina el signo zodiacal debemos
definir varias cosas.
Primero creamos una clase persona en la cual se definen el mes y da de
nacimiento:

6
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Ahora que tenemos nuestra clase persona, definimos las reglas de nuestro sistema
experto, nuestras reglas tendrn la siguiente estructura:

Con esa estructura nuestras reglas son las siguientes:

Aqu estamos diciendo que la regla con nombre Aries se activara cuando el da
ingresado sea mayor o igual a 21 y el mes ingresado sea igual a 3; o, cuando el da
ingresado sea menor o igual a 20 y el mes ingresado sea igual a 4.
Si se cumplen alguna de esas condiciones, entonces se muestra un mensaje
diciendo que su signo zodiacal es Aries.
Y por ltimo se coloca la palabra end para indicar el final de la regla

7
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

De esta forma se realizan todas las reglas.

8
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Como vemos, con Drools partimos de unos hechos, estos hechos pueden satisfacer
una serie de reglas que nos lleven a una conclusin que cumpla con los hechos,
realizando un encadenamiento hacia adelante.

Para poder utilizar Drools en java se hace uso de la Knowledge Session (Sesin de
conocimiento), esta sesin es el componente bsico para disparar las reglas. Es la
sesin de conocimiento que contiene todas las reglas y otros recursos, esta se crea
a partir de una base de conocimiento.

Para crear la sesin de conocimiento primero creamos un objeto de servicios de tipo


Kie (Knowledge is everything), con este objeto creamos un contenedor
9
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

(KieContainer) para guardar todos los conocimientos, y al final creamos la sesin


de conocimiento con todas las reglas que hemos creados.

Ya con nuestra sesin creada podemos insertar el objeto con el que se evaluaran
las reglas, en este caso el objeto persona, y al final disparamos todas las reglas
que hemos creado para validar toda la informacin obtenida.

10
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa
Informe Sistema Experto Horscopo.

Anexos
Proyecto Horscopo desarrollado en Prolog implementado en Java Aplicacin.
https://drive.google.com/file/d/0B1b0YM_QXyyCczR2Um1ZZWhwNFE/view?usp=sharing
Proyecto Horscopo desarrollado en Drools implementado en Java Aplicacin.
https://drive.google.com/file/d/0B1b0YM_QXyyCalVwOEV3NGV0TWM/view?usp=sharing
rbol de bsqueda realizado por Prolog para resolver una hiptesis.
https://drive.google.com/file/d/0B1b0YM_QXyyCNU94WTYyMEJOMmc/view?usp=sharing

11
Jess Andrs Acendra Martnez & Ramiro Jos Verbel de la Rosa

Potrebbero piacerti anche