Vous êtes sur la page 1sur 9

Sistema Experto en Turismo

Docente - Asesor:
Arturo Daz Pulido





RESUMEN

Vamos a implementar un sistema experto
en Prolog conjuntamente con Base de Datos
(MySQL) y Java. Cuyo propsito es facilitar la
informacin al usuario y poder tener buenas
opciones para realizar un viaje de fin de semana
agradable.
Para cual primero haremos una breve
descripcin de los sistemas expertos y de su
importancia y luego pasaremos al desarrollo del
problema con las tecnologas ya mencionadas.

Palabras clave:

- Base de Datos, Sistema Experto,
turismo, viaje, tecnologa, ingeniera,
Java, Prolog, MySQL, Moto de
Inferencia, Base de Conocimiento

1. INTRODUCCIN

A partir de la aparicin de las
computadoras hasta nuestros das, la gente ha
invertido grandes esfuerzos por tratar de dar cierta
capacidad de decisin a estas mquinas, incluso un
cierto grado de inteligencia. Estos esfuerzos se han
visto reflejados en los sistemas expertos, los cuales
en s no tienen verdadera inteligencia Artificial;
ms bien, es un sistema basado en conocimiento
que, mediante el buen diseo de su base de
informacin y un adecuado motor de inferencias
para manipular dichos datos proporciona una
manera de determinar resoluciones finales dados
ciertos criterios. Los sistemas expertos son una
herramienta poderosa en el apoyo o gua de los
usuarios en los procesos que tiene una secuencia
definida, pero puede ser configurable.


1.1. Usos de un sistema experto

a) Un Sistema Experto es usado por personas
con poca experiencia para que pueden
resolver problemas que requieren un
"conocimiento formal especializado".
b) Los Sistemas Expertos pueden obtener
conclusiones y resolver problemas de forma
ms rpida que los expertos humanos.
c) Los Sistemas Expertos razonan pero en base a
un conocimiento adquirido y no tienen sitio
para la subjetividad.
d) Se ha comprobado que los Sistemas Expertos
tienen al menos, la misma competencia que un
especialista humano.
e) El uso de Sistemas Expertos es especialmente
recomendado en las siguientes situaciones:
Cuando los expertos humanos en una
determinada materia son escasos.
En situaciones complejas, donde la
subjetividad humana puede llevar a
conclusiones errneas.
Cuando es muy elevado el volumen de
datos que ha de considerarse para obtener
una conclusin.


Jhon Alexander Leon Ortecho
Estudiante de Ing. Informtica
Universidad Nacional de Trujillo
jhonalexander.10.07.93@gmail.com

Juan Antonio Cabeza Ramrez
Estudiante de Ing. Informtica
Universidad Nacional de Trujillo
jacr2312@gmail.com

1.2. Arquitectura y Funcionamiento de un
Sistema Experto

Los sistemas Expertos, son sistemas
diferentes a los tradicionales, ya que son basados
en conocimiento y por tal razn la arquitectura y
funcionalidad es diferente, incluso la fabricacin
de estos es mucho ms complicada y laboriosa que
los sistemas algortmicos tradicionales.

La arquitectura de un sistema Experto est
constituida por dos componentes principales de
cualquier Sistema Experto son una Base del
conocimiento y un Programa de inferencia, o
tambin llamado Motor de Inferencia.

Fig. 1 Estructura de un Sistema Experto

1.2.1. Base del conocimiento

a) La base de conocimiento del Sistema Experto
con respecto a un tema especfico para el que
se disea el sistema. Este conocimiento se
codifica segn una notacin especfica que
incluye reglas, redes semnticas y objetos.
b) Las bases de conocimiento pertenecen a una
etapa muy posterior. Surgieron a partir de la
investigacin en IA como respuesta a las
necesidades que las aplicaciones de esta
disciplina planteaba. Las bases de
conocimiento son la evolucin lgica de los
sistemas de bases de datos tradicionales, en
un intento de plasmar no ya cantidades
ingentes de datos, sino elementos de
conocimiento (normalmente en forma de
hechos y reglas) as como la manera en que
estos elementos han de ser utilizados.
1.2.2. Base de Datos

La base de datos o base de hechos, es una
parte de la memoria del ordenador que utiliza para
almacenar los datos recibidos inicialmente para la
resolucin de un problema. Contiene conocimiento
sobre el caso concreto en que se trabaja. Tambin
se registran en ella las conclusiones intermedias y
los datos generados en el proceso de inferencia.

1.2.3. Motor de Inferencia

Es el componente de un Sistema Experto,
encargado de gerenciar y controlar
lgicamente el manejo y utilizacin del
conocimiento almacenado en la base de datos.
El paradigma del motor de inferencia es la
estrategia de bsqueda para producir el
conocimiento demandado.

El Motor de Inferencia realiza dos tareas
principales:
- Examina los hechos y las reglas, y si es
posible, aade nuevos hechos

- Decide el orden en que se hacen las
inferencias.

Para realizar estas tareas utiliza estrategias de
inferencia y estrategias de control.
Las estrategias de inferencia que ms se
emplean en sistemas expertos estn basadas en
la aplicacin de las reglas lgicas denominadas
modus ponens y modus tollens.

1.2.4. Interfaz de Usuario

La interaccin entre un sistema experto y
un usuario se realiza en lenguaje natural.
Tambin es altamente interactiva y sigue el
patrn de la conversacin entre seres humanos.
Para conducir este proceso de manera
aceptable para el usuario es especialmente
importante el diseo del interfaz de usuario.
Un requerimiento bsico del interfaz es la
habilidad de hacer preguntas. Para obtener
informacin fiable del usuario hay que poner
especial cuidado en el diseo de las cuestiones.
Esto puede requerir disear el interfaz usando
mens o grficos.

1.2.5. Mdulo de Explicacin

Una caracterstica de los sistemas
expertos es su habilidad para explicar su
razonamiento. Usando el mdulo del
subsistema de explicacin, un sistema experto
puede proporcionar una explicacin al usuario
de por qu est haciendo una pregunta y cmo
ha llegado a una conclusin. Este mdulo
proporciona beneficios tanto al diseador del
sistema como al usuario. El diseador puede
usarlo para detectar errores y el usuario se
beneficia de la transparencia del sistema.

1.2.6. Mdulo de Adquisicin

Es un subsistema que ayuda a la
estructuracin e implementacin del
conocimiento en la Base de Conocimiento.
Este mdulo permite que se puedan aadir,
eliminar o modificar elementos de
conocimiento en el sistema experto.
El proceso de construir la Base de
Conocimiento (transferir conocimiento del
experto al SE) es conocido como cognimtica;
las personas que realizan este proceso son
llamados cognimticos o ingenieros de
conocimiento.
Algunas consideraciones:
- El conocimiento se debe introducir de la
forma ms sencilla posible.
- Posibilidades de representacin clara de
todas las informaciones contenidas en
una base de conocimientos.
- Comprobacin automtica de sintaxis.
- Posibilidad constante de acceso al
lenguaje de programacin.

1.3. Ventajas e Inconvenientes de un
Sistema Experto

1.3.1. Ventajas

a) Los conocimientos de un sistema experto
pueden ser copiados y almacenados
fcilmente, siendo muy difcil la prdida
de stos.

b) Otra ventaja de los sistemas expertos
sobre los humanos es que el experto
computarizado siempre est a pleno
rendimiento. Cuando un humano se
cansa, la exactitud de sus consejos puede
decaer. Sin embargo, el experto
computarizado siempre proporcionar
las mejores opiniones posibles dentro de
las limitaciones de sus conocimientos.

c) Una ltima ventaja de un sistema
experto est en que despus de que un
experto computarizado exista, usted
puede crear un nuevo experto
simplemente copiando el programa de
una mquina a otra. Un humano necesita
mucho tiempo para convertirse en un
especialista en ciertos campos, lo que
hace difcil que puedan aparecer nuevos
especialistas humanos.


1.3.2. Inconvenientes

a) Creatividad: los humanos pueden
responder creativamente a situaciones
inusuales, los sistemas expertos no
pueden.

b) Experiencia Sensorial: los humanos
tienen un amplio rango de disponibilidad
de experiencia sensorial. Y los sistemas
expertos actualmente dependen de una
entrada simblica.

c) Degradacin: los sistemas expertos no
son bueno para reconocer cuando no
existen respuestas o cuando los
problemas estn fuera de su rea.

1.4. Prolog

1.4.1. Introduccin a Prolog

El Prolog (o PROLOG), proveniente del
francs PROgrammation en LOGique, es un
lenguaje para programar artefactos
electrnicos mediante el paradigma lgico con
tcnicas de produccin final interpretada. Es
bastante conocido en el rea de la Ingeniera
Informtica para investigacin en Inteligencia
Artificial.

1.4.2. Caractersticas de Prolog

- Basado en Lgica y programacin
declarativa.
- Produce estilo de programacin
orientado a metas.
- No se especifica como debe hacerse,
sino qu debe lograrse (alto nivel).
- El programador se concentra ms en el
conocimiento que en los algoritmos.
o Qu es conocido?
o Qu preguntar?

1.4.3. Derivados de Prolog

ACE, PALS: And/Or-Parallel
Implementation of Prolog: Es una
implementacin de Prolog, pero que
soporta una arquitectura
multiprocesador.

Actor Prolog

ALF

CLP (FD): Otra extensin de Prolog,
especializado en los problemas CSPs
(Constraint Satisfaction Problem).
De forma general, podemos decir que un
programa en CLP (FD) consta de tres
partes: generacin de variables (donde
tambin se especifica su domino),
definicin de restricciones (sobre las
variables) y labeling, donde se
instancian las variables por enumeracin.

cu-Prolog: Otro lenguaje lgico para
CSPs

Eclipse: Programacin lgica con
restricciones

Elf: Programacin lgica con
restricciones basado en Logical
Framework (metalenguaje)

Flang: Programacin lgica-funcional.

Fish

Gdel

KLIC: Programacin lgica concurrente.
Derivado del lenguaje KL1, que a su
vez, es derivado de GHC (Guarded Horn
Clauses).

Lambda Prolog: Extensin de Prolog,
incluyendo tipos polimrficos, mdulos
y tipos de datos abstractos.

LIFE (Logic, Inheritance, Functions, and
Equations): Trata de ser la unificacin de
los lenguajes lgicos, funcionales y
orientados a objetos.

Logtalk: Extensin a Prolog orientada a
objetos.

MONA: Lenguaje lgico y adems
traduce los programas (frmulas) a
autmatas de estados finitos.

Muse: Versin Or-parallel del lenguaje
SICTStus Prolog.

Progol

RELFUN: Extiende la lgica de Horn
con sintaxis de orden superior.

SAMPLE

SICStus Prolog: Igual que Prolog, pero
conforme al estndar ISO/IEC.

1.5. JAVA

1.5.1. Introduccin a JAVA

El lenguaje de programacin Java fue
originalmente desarrollado por James Gosling
de Sun Microsystems (la cual fue adquirida
por la compaa Oracle) y publicado en 1995
como un componente fundamental de la
plataforma Java de Sun Microsystems. Su
sintaxis deriva en gran medida de C y C++,
pero tiene menos utilidades de bajo nivel que
cualquiera de ellos.
Es un lenguaje de programacin de propsito
general, concurrente, orientado a objetos y
basado en clases que fue diseado
especficamente para tener tan pocas
dependencias de implementacin como fuera
posible. Su intencin es permitir que los
desarrolladores de aplicaciones escriban el
programa una vez y lo ejecuten en cualquier
dispositivo.

1.5.2. Caractersticas

- Lenguaje Simple
- Orientado a Objetos
- Distribuido
- Robusto
- Seguro
- Indiferente a la Arquitectura
- Portable
- Interpretado y Compilado a la vez
- Multihebras o Multihilos
- Dinmico
- Produce Applets
- Arto Rendimiento

1.6. MySQL

1.6.1. Introduccin a MySQL

MySQL es un sistema de
administracin de bases de datos. Una base de
datos es una coleccin estructurada de datos.
La informacin que puede almacenar una base
de datos puede ser tan simple como la de una
agenda, un contador, o un libro de visitas, o
tan vasta como la de una tienda en lnea, un
sistema de noticias, un portal, o la informacin
generada en una red corporativa. Para agregar,
accesar, y procesar los datos almacenados en
una base de datos, se necesita un sistema de
administracin de bases de datos, tal como
MySQL.
1.6.2. Caractersticas

- Escrito en C y en C++

- Probado con un amplio rango de
compiladores diferentes

- Funciona en diferentes plataformas
APIs disponibles para C, C++, Eiffel,
Java, Perl, PHP, Python, Ruby, y Tcl.

- Uso completo de multi-threaded
mediante threads del kernel. Pueden
usarse fcilmente multiple CPUs si
estn disponibles.

- Proporciona sistemas de
almacenamiento transaccional y no
transaccional.

- Un sistema de reserva de memoria muy
rpido basado en threads.

1.6.3. Derivados de MySQL

MariaDB: Es un sistema de gestin de
bases de datos derivado de MySQL con
licencia GPL. Es desarrollado por
Michael (Monty) Widenius (fundador
de MySQL) y la comunidad de
desarrolladores de software libre.

2. SISTEMA EXPERTO EN TURISMO
CON PROLOG
2.1. Planteamiento y Diseo
El enunciado de nuestro problema es el siguiente:
Sistema Experto de Turismo
Sistema de recomendacin de ciudades,
aconsejando qu sitios visitar tomando como
referencia la ciudad de Trujillo, la ubicacin a
donde quisiera viajar, posibilidades (dinero) y si
desea ir a la playa. Adems se presenta cuadros
informativos en caso de tener algunas dudas.
Este enunciado quedaba bastante abierto a
diferentes modos de implementar el programa, por
lo que pensamos en alguna solucin que resultara
til para todas aquellas personas que disponen de
fines de semana libres para poder viajar con las
distintas ciudades de nuestro pas.
De este modo, decidimos que nuestro programa
recomendara un viaje (partiendo desde la ciudad
de Trujillo) a distintas ciudades Peruanas,
calculando la distancia atractivos tursticos
disponibles de cada ciudad, teniendo en cuenta el
dinero y ubicacin a donde quiere viajar.
Todo estos viajes son factibles en tiempo como en
dinero para un fin de semana (los datos
introducidos son reales), por lo que nos parece una
buena referencia para al menos orientarse.

Para llegar a la solucin final, pasamos por
diferentes fases, las cuales detallamos a
continuacin:

- Fase I: Bsqueda de informacin
Debido a que nuestra intencin era elaborar un
programa lo ms realista posible, buscamos
informacin real en Internet de los precios de
transporte a cada una de las ciudades a
implementar. El precio de los viajes en auto es
aproximado con respeto al auto que conduzcan.
Adems los precios de hoteles son considerados
los de 3 estrellas y con comodidades adecuadas
pero no excesivas.
- Fase II: Eleccin de caractersticas y
descripcin de las ciudades
Esta fase era crtica para el funcionamiento de
nuestro programa. Debamos escoger las
caractersticas adecuadas para cada ciudad, y
para ello nos basamos en fuentes de internet
sobre lugares ms visitados.
- Fase III: Modelado y Almacenamiento de la
Base de Datos
Es la fase donde nos centraremos en almacenas
la informacin que elegimos para poder
estableces una conexin entre las reglas y los
datos para su uso.
- Fase IV: Creacin de reglas e instrucciones
Durante esta fase nos dedicaremos a declaras
las instrucciones. Implementaremos distintas
reglas para la resolucin del programa
completo.
- Fase V: Creacin de Interfaces y conectividad
con Java
Durante esta fase conectaremos el Lenguaje de
Programacin Java (swing) para realizar la
apariencia de nuestro sistema y dar una
apariencia ms agradable al usuario.

2.2. Implementacin
Implementaremos distintas reglas para la
resolucin del problema completo.
En primer lugar, realizaremos la Base de Datos
que constara con la informacin de las ciudades y
sus tributos. Nuestra Base de Datos contara con 4
tablas: Usuarios, Ciudad, Tienen,
TipodeMovilidad.

Por parte de Prolog hemos incluido reglas para la
obtencin de las ciudades en nuestra Base de
Datos:

ciudad(X):-odbc_query('swiprolog',
'SELECT nombreCiudad FROM ciudades
where modoMovilidad = "bus"',
row(X)).

La cual nos devuelve una lista de las distintas
ciudades que hemos incluidos en nuestra base de
conocimiento.

Para sacar precios del viaje:

en_bus(Ciudad,D):- odbc_query('swiprolog',
'SELECT nombreCiudad,precio FROM
ciudades where modoMovilidad="bus"',
row(Ciudad,D)).

Entre otras funciones ms detalladas que se
detallaran en el cdigo fuente de la aplicacin,
nuestra funcin ms importante para conectar
java, prolog y mysql est en el archivo
sistemTurismo.pl es:


viajar(Ciudad,Direccion,Dinero,Movilidad,D,Precio,P
recioHotel):-
cadena5(Direccion,Dinero,Movilidad,Cadena),
odbc_query('swiprolog',Cadena,row(Ciudad)),descripc
ion(Ciudad,D),precioTotal(Ciudad,Movilidad,Precio,P
recioHotel).

Las interfaces de nuestra aplicacin
comprendern de 3 partes importantes una para
registro de clientes, acceso y el sistema en si
como se ven en las siguientes imgenes:


Fig. 2 Interfaz principal de Acceso













Fig. 3 Interfaz de Registro del Usuario






Fig. 4 Interfaz de Acceso al Sistema

















Fig. 5 Interfaz Principal del Sistema

El juego de interfaces mostrada nos permitir
acceder a nuestra base del conocimiento y as
poder usar nuestro motor de inferencia para
trabajar las consultas hechas.




3. Ejecucin
Para la ejecucin de nuestro sistema Experto
tenemos que tener en cuenta que debemos rellenar
los siguientes campos en nuestra interfaz:
Direccin: Norte, Sur, Este
Dinero: En soles. (Este es dinero para pasajes
solamente se considera como lo mnimo).
Movilidad: bus o auto.
Playa: Si o No

Nota:
En la pestaa Ayuda encontrara lo
referente a lo que debe colocar en los campos y en
la Pestaa Informacin encontrara las ciudades
que estn disponibles, Precios de viaje y de
Hoteles por alguna consulta general.
Primero Accedemos con nuestra cuenta o nos
registramos, una vez accedido hacemos la
consulta.
Ejecucin con los siguientes parmetros:
Norte.
32
Bus
si

Fig. 6 Consulta al Sistema Experto




Fig. 7 Resultado despus de la Consulta

Como describe la Fig. 7 vemos el resultado
despus de que colocamos los parmetros,
haciendo esta la consulta pertinente a una regla en
Prolog la cual consulta a nuestra Base de Datos y
esta nos devuelve los valores deseados a nuestra
consulta.

4. Referencias Bibliogrficas

[1]http://sistemasexpertosfer.blogspot.com/20
12/03/motor-de-inferencia.html
[2]http://sistexpertosmalkav.blogspot.com/201
2/04/33-motor-de-inferencia.html
[3]http://www.monografias.com/trabajos16/si
stemas-expertos/sistemas-
expertos.shtml#ARQUIT
[4] http://es.slideshare.net/ruttbar/sistemas-
expertos-4637427
[5]https://docs.google.com/presentation/d/1pA
drZtjzkEV3x5BVcrgbeRV4a3Pt_wJqCbZZJ1
c_U0U/present#slide=id.i204

Vous aimerez peut-être aussi