Sistema Experto en Turismo

Sistema Experto en Turismo Docente - Asesor: Arturo Díaz Pulido Jhon Alexander Leon Ortecho Estudiante de Ing. Informáti

Views 156 Downloads 3 File size 548KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Sistema Experto en Turismo Docente - Asesor: Arturo Díaz Pulido Jhon Alexander Leon Ortecho Estudiante de Ing. Informática Universidad Nacional de Trujillo [email protected]

RESUMEN Vamos a implementar un sistema experto en Prolog conjuntamente con Base de Datos (MySQL) y Java. Cuyo propósito es facilitar la información al usuario y poder tener buenas opciones para realizar un viaje de fin de semana agradable. Para cual primero haremos una breve descripción de los sistemas expertos y de su importancia y luego pasaremos al desarrollo del problema con las tecnologías ya mencionadas.

Palabras clave: -

Base de Datos, Sistema Experto, turismo, viaje, tecnología, ingeniería, Java, Prolog, MySQL, Moto de Inferencia, Base de Conocimiento

1. INTRODUCCIÓN A partir de la aparición de las computadoras hasta nuestros días, la gente ha invertido grandes esfuerzos por tratar de dar cierta capacidad de decisión a estas máquinas, 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; más bien, es un sistema basado en conocimiento que, mediante el buen diseño de su base de información y un adecuado motor de inferencias para manipular dichos datos proporciona una manera de determinar resoluciones finales dados

Juan Antonio Cabeza Ramírez Estudiante de Ing. Informática Universidad Nacional de Trujillo [email protected] ciertos criterios. Los sistemas expertos son una herramienta poderosa en el apoyo o guía 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 más rápida 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 erróneas.  Cuando es muy elevado el volumen de datos que ha de considerarse para obtener una conclusión.

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 razón la arquitectura y funcionalidad es diferente, incluso la fabricación de estos es mucho más complicada y laboriosa que los sistemas algorítmicos 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 también llamado “Motor de Inferencia”.

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 resolución de un problema. Contiene conocimiento sobre el caso concreto en que se trabaja. También 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 lógicamente el manejo y utilización del conocimiento almacenado en la base de datos. El paradigma del motor de inferencia es la estrategia de búsqueda para producir el conocimiento demandado. El Motor de Inferencia realiza dos tareas principales: - Examina los hechos y las reglas, y si es posible, añade nuevos hechos

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 específico para el que se diseña el sistema. Este conocimiento se codifica según una notación específica que incluye reglas, redes semánticas y objetos. b) Las bases de conocimiento pertenecen a una etapa muy posterior. Surgieron a partir de la investigación en IA como respuesta a las necesidades que las aplicaciones de esta disciplina planteaba. Las bases de conocimiento son la evolución lógica 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.

- 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 más se emplean en sistemas expertos están basadas en la aplicación de las reglas lógicas denominadas “modus ponens” y modus tollens”. 1.2.4. Interfaz de Usuario La interacción entre un sistema experto y un usuario se realiza en lenguaje natural. También es altamente interactiva y sigue el patrón de la conversación entre seres humanos. Para conducir este proceso de manera aceptable para el usuario es especialmente

importante el diseño del interfaz de usuario. Un requerimiento básico del interfaz es la habilidad de hacer preguntas. Para obtener información fiable del usuario hay que poner especial cuidado en el diseño de las cuestiones. Esto puede requerir diseñar el interfaz usando menús o gráficos.

-

Comprobación automática de sintaxis. Posibilidad constante de acceso al lenguaje de programación.

1.3. Ventajas e Inconvenientes de un Sistema Experto 1.3.1. Ventajas

1.2.5. Módulo de Explicación Una característica de los sistemas expertos es su habilidad para explicar su razonamiento. Usando el módulo del subsistema de explicación, un sistema experto puede proporcionar una explicación al usuario de por qué está haciendo una pregunta y cómo ha llegado a una conclusión. Este módulo proporciona beneficios tanto al diseñador del sistema como al usuario. El diseñador puede usarlo para detectar errores y el usuario se beneficia de la transparencia del sistema. 1.2.6. Módulo de Adquisición Es un subsistema que ayuda a la estructuración e implementación del conocimiento en la Base de Conocimiento. Este módulo permite que se puedan añadir, 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 cognimática; las personas que realizan este proceso son llamados cognimáticos o ingenieros de conocimiento. Algunas consideraciones: - El conocimiento se debe introducir de la forma más sencilla posible. - Posibilidades de representación clara de todas las informaciones contenidas en una base de conocimientos.

a) Los conocimientos de un sistema experto pueden ser copiados y almacenados fácilmente, siendo muy difícil la pérdida 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 después de que un experto computarizado exista, usted puede crear un nuevo experto simplemente copiando el programa de una máquina a otra. Un humano necesita mucho tiempo para convertirse en un especialista en ciertos campos, lo que hace difícil 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 simbólica.

implementación de Prolog, pero que soporta una arquitectura multiprocesador.  Actor Prolog  ALF

c) Degradación: los sistemas expertos no son bueno para reconocer cuando no existen respuestas o cuando los problemas están fuera de su área. 1.4. Prolog 1.4.1. Introducción a Prolog El Prolog (o PROLOG), proveniente del francés PROgrammation en LOGique, es un lenguaje para programar artefactos electrónicos mediante el paradigma lógico con técnicas de producción final interpretada. Es bastante conocido en el área de la Ingeniería Informática para investigación en Inteligencia Artificial. 1.4.2. Características de Prolog -

Basado en Lógica y programación declarativa. Produce estilo de programación orientado a metas. No se especifica como debe hacerse, sino qué debe lograrse (alto nivel). El programador se concentra más 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

 CLP (FD): Otra extensión 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: “generación de variables” (donde también se especifica su domino), “definición de restricciones” (sobre las variables) y “labeling”, donde se instancian las variables por enumeración.  cu-Prolog: Otro lenguaje lógico para CSPs  Eclipse: Programación restricciones

lógica

con

 Elf: Programación lógica con restricciones basado en Logical Framework (metalenguaje)  Flang: Programación lógica-funcional.  Fish  Gödel  KLIC: Programación lógica concurrente. Derivado del lenguaje KL1, que a su vez, es derivado de GHC (Guarded Horn Clauses).

 Lambda Prolog: Extensión de Prolog, incluyendo tipos polimórficos, módulos y tipos de datos abstractos.  LIFE (Logic, Inheritance, Functions, and Equations): Trata de ser la unificación de los lenguajes lógicos, funcionales y orientados a objetos.  Logtalk: Extensión a Prolog orientada a objetos.  MONA: Lenguaje lógico y además “traduce” los programas (fórmulas) a autómatas de estados finitos.  Muse: Versión Or-parallel del lenguaje SICTStus Prolog.  Progol  RELFUN: Extiende la lógica de Horn con sintaxis de orden superior.  SAMPLE  SICStus Prolog: Igual que Prolog, pero conforme al estándar ISO/IEC. 1.5. JAVA 1.5.1. Introducción a JAVA El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía 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 programación de propósito general, concurrente, orientado a objetos y basado en clases que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo. 1.5.2. Características -

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

1.6. MySQL 1.6.1. Introducción a MySQL MySQL es un sistema de administración de bases de datos. Una base de datos es una colección estructurada de datos. La información 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 línea, un sistema de noticias, un portal, o la información generada en una red corporativa. Para agregar, accesar, y procesar los datos almacenados en una base de datos, se necesita un sistema de administración de bases de datos, tal como MySQL.

1.6.2. Características -

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 fácilmente multiple CPUs si están disponibles.

-

Proporciona sistemas de almacenamiento transaccional y no transaccional.

-

Un sistema de reserva de memoria muy rápido basado en threads.

1.6.3. Derivados de MySQL 

MariaDB: Es un sistema de gestión 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 Diseño El enunciado de nuestro problema es el siguiente: “Sistema Experto de Turismo” Sistema de recomendación de ciudades, aconsejando qué sitios visitar tomando como referencia la ciudad de Trujillo, la ubicación a donde quisiera viajar, posibilidades (dinero) y si desea ir a la playa. Además 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 solución que resultara útil para todas aquellas personas que disponen de fines de semana libres para poder viajar con las distintas ciudades de nuestro país. De este modo, decidimos que nuestro programa recomendaría un viaje (partiendo desde la ciudad de Trujillo) a distintas ciudades Peruanas, calculando la distancia atractivos turísticos disponibles de cada ciudad, teniendo en cuenta el dinero y ubicación 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 solución final, pasamos por diferentes fases, las cuales detallamos a continuación: - Fase I: “Búsqueda de información” Debido a que nuestra intención era elaborar un programa lo más realista posible, buscamos información 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. Además los precios de hoteles son considerados los de 3 estrellas y con comodidades adecuadas pero no excesivas. - Fase II: “Elección de características y descripción de las ciudades” Esta fase era crítica para el funcionamiento de nuestro programa. Debíamos escoger las características adecuadas para cada ciudad, y para ello nos basamos en fuentes de internet sobre lugares más visitados. - Fase III: “Modelado y Almacenamiento de la Base de Datos” Es la fase donde nos centraremos en almacenas la información que elegimos para poder estableces una conexión entre las reglas y los datos para su uso. - Fase IV: “Creación de reglas e instrucciones”

Durante esta fase nos dedicaremos a declaras las instrucciones. Implementaremos distintas reglas para la resolución del programa completo. - Fase V: “Creación de Interfaces y conectividad con Java” Durante esta fase conectaremos el Lenguaje de Programación Java (swing) para realizar la apariencia de nuestro sistema y dar una apariencia más agradable al usuario.

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 aplicación comprenderán de 3 partes importantes una para registro de clientes, acceso y el sistema en si como se ven en las siguientes imágenes:

2.2. Implementación Implementaremos distintas reglas para la resolución del problema completo. En primer lugar, realizaremos la Base de Datos que constara con la información 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 obtención de las ciudades en nuestra Base de Datos: ciudad(X):-odbc_query('swiprolog', 'SELECT nombreCiudad FROM ciudades where modoMovilidad = "bus"', row(X)).

Fig. 2 – Interfaz principal de Acceso

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 más detalladas que se detallaran en el código fuente de la aplicación, nuestra función más importante para conectar java, prolog y mysql está en el archivo sistemTurismo.pl es:

Fig. 3 – Interfaz de Registro del Usuario

3. Ejecución Para la ejecución de nuestro sistema Experto tenemos que tener en cuenta que debemos rellenar los siguientes campos en nuestra interfaz:  Dirección: Norte, Sur, Este  Dinero: En soles. (Este es dinero para pasajes solamente se considera como lo mínimo).  Movilidad: bus o auto.  Playa: Si o No Nota:

Fig. 4 – Interfaz de Acceso al Sistema

En la pestaña Ayuda encontrara lo referente a lo que debe colocar en los campos y en la Pestaña Información encontrara las ciudades que están 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. Ejecución con los siguientes parámetros:  Norte.  32  Bus  si

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. Fig. 6 – Consulta al Sistema Experto

Fig. 7 – Resultado después de la Consulta Como describe la Fig. 7 vemos el resultado después de que colocamos los parámetros, 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 Bibliográficas [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/sistemasexpertos.shtml#ARQUIT [4] http://es.slideshare.net/ruttbar/sistemasexpertos-4637427 [5]https://docs.google.com/presentation/d/1pA drZtjzkEV3x5BVcrgbeRV4a3Pt_wJqCbZZJ1 c_U0U/present#slide=id.i204