Rodrguez Sandoval Lourdes Estudiantes de Ing. Informtica Universidad Nacional de Trujillo mefck_91@hotmail.com lourdes.rs94@gmail.com
RESUMEN Se implementar un sistema experto en programacin lgica utilizando el programa Prolog con una conexin con el entorno de desarrollo NetBeans cuyo propsito ser solucionar el problema de las personas que deseen hacer turismo en el interior del pas pero no tengan idea del lugar a elegir. Para ello primero haremos una breve descripcin de los sistemas expertos y de su importancia y despus pasaremos a desarrollar el problema, un sistema experto ampliamente utilizado.
1. Introduccin Son llamados as porque emulan el razonamiento de un experto en un dominio concreto, y en ocasiones son usados por stos. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas, dando as lugar a una mejora de la productividad del propio experto al usar este tipo de sistemas informticos.
Docente Asesor: Arturo Daz Pulido.
1.1 . Usos de un Sistema Experto
a) Los Sistemas Expertos pueden obtener conclusiones y resolver problemas de forma ms rpida que los expertos humanos.
b) Los Sistemas Expertos razonan pero en base a un conocimiento adquirido y no tienen sitio para la subjetividad.
c) Se ha comprobado que los Sistemas Expertos tienen al menos, la misma competencia que un especialista humano.
d) Con la ayuda de un Sistema Experto, personas con poca experiencia pueden resolver problemas que requieren un "conocimiento formal especializado".
1.2 . Arquitectura y funcionamiento de un sistema experto
Est basada en una entrada de datos realizada por el usuario a fin de efectuar la oportuna consulta. Las entradas no solamente estn compuestas de estas consultas.
1.2.1 Base de conocimientos (BC): Contiene conocimiento modelado extrado del dialogo con el experto. 1.2.2 Base de hechos(Memoria de trabajo): Contiene los hechos sobre un problema que se ha descubierto durante el anlisis. 1.2.3 Motor de inferencia: Modela el proceso de razonamiento humano. 1.2.4 Mdulos de justificacin: Explica el razonamiento utilizado por el sistema para llegar a una determinada conclusin. 1.2.5 Interfaz de usuario: Es la interaccin entre el SE y el usuario, y se realiza mediante el lenguaje natural. 1.2.6 Mdulo de comunicaciones: Es la interaccin con otros sistemas o con el experto, para poder recoger informacin o consultar bases de datos. 1.2.7 Mdulo de adquisicin: Permite al experto, la construccin de la base de conocimiento de una forma sencilla.
1.3 . Ventajas y Desventajas de un Sistema Experto
1.3.1 Ventajas: Permanencia: A diferencia de un experto humano un SE no envejece, y por tanto no sufre perdida de facultades con el paso de tiempo. Duplicacin: Una vez programado un SE lo podemos duplicar infinidad de veces. Rapidez: Un SE puede obtener informacin de una base de datos y realizar clculos numricos mucho ms rpido que cualquier ser humano. Bajo costo: A pesar de que el costo inicial pueda ser elevado, gracias a la capacidad de duplicacin el coste finalmente es bajo. Entornos peligrosos: Un SE puede trabajar en entornos peligrosos o dainos para el ser humano. Fiabilidad: Los SE no se ven afectados por condiciones externas.
1.3.2 Desventajas:
El conocimiento es difcil de extraer de los expertos humanos.
Tienen una nocin muy limitada acerca del contexto del problema.
Pueden existir decisiones que slo son de competencia para un ser humano y no una mquina.
No saben cmo subsanar sus limitaciones, no son capaces de trabajar en equipo o investigar algo nuevo.
Son muy costosos de desarrollar y mantener.
1.4. Lenguaje de Programacin Utilizado: Prolog 1.4.1. Introduccin a Prolog: Es un lenguaje de programacin ideado a principios de los aos 70 en la Universidad de Aix-Marseille I (Marsella, Francia) por los estudiantes modlicos Alain Colmerauer y Philippe Roussel. Naci de un proyecto que no tena como objetivo la traduccin de un lenguaje de programacin, sino la clasificacin algortmica de lenguajes naturales. Prolog es un lenguaje de programacin creado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Ms exactamente, el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones. Un conjunto de reglas que describa estas propiedades y estas relaciones es un programa PROLOG. Una definicin ms accesible para el usuario comn sera: Prolog es un lenguaje de programacin que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos. Su definicin basada en la lgica formal, permite ejecutar estatutos que no son otra cosa que oraciones de un lenguaje lgico elemental particular de clusulas. Prolog por su naturaleza muestra una habilidad para describir gramticas, en particular gramticas libres de contexto. Prolog se enmarca en el paradigma de los lenguajes lgicos y declarativos, lo que lo diferencia enormemente de otros lenguajes ms populares tales como Fortran, Pascal, C o Java. 1.4.2. Caractersticas: Basado en Lgica y programacin declarativa. Produce estilo de programacin orientado a metas. No se especifica cmo debe hacerse, sino qu debe lograrse El programador se concentra ms en el conocimiento que en los algoritmos: Qu es conocido? (hechos relaciones ) Qu preguntar?(cmo resolverlo) 1.4.3. Derivado:
Micro-PROLOG es el nombre de una variante o dialecto del lenguaje PROLOG, inicialmente creada para microordenadores de 8 bits, popularizada a principios de la dcada de 1980. Fue usado en la enseanza pblica, normalmente como introduccin a la programacin lgica y a la Inteligencia Artificial.
2. Gua de Turismo: 2.1 Planteamiento del Problema: Sistema de recomendacin de una ciudad del Per, aconsejando qu sitios visitar segn sus preferencias, sus posibilidades, su experiencia (por ejemplo, si conoce la ciudad o no), etc. Este enunciado quedaba bastante abierto a diferentes maneras de implementar el programa, por lo que pensamos en alguna solucin que resultara til para todas aquellas personas que disponen de das libres para poder viajar por el Per. De este modo, decidimos que nuestro programa recomendara un viaje (partiendo de Trujillo) a cualquier ciudad del Per (de entre 23 posibles), calculando los costos del trayecto, la estada y teniendo siempre en cuenta las preferencias de los viajeros. Todos estos viajes son factibles tanto en tiempo como en dinero para un fin de semana (los datos introducidos son reales), por lo que es una buena referencia para al menos orientarse. 3. Resolucin del Problema: Para llegar a la solucin final, pasamos por diferentes fases, las cuales detallamos a continuacin:
3.1. Bsqueda de la Informacin: Debido a que nuestra intencin era elaborar un programa lo ms realista posible, buscamos informacin real en Internet de los precios de algunas agencias de transporte a cada una de las ciudades que se van a implementar. Adems, averiguamos en la pgina web de Y tu qu planes? para informarnos acerca de los precios de las estadas en las distintas ciudades.
3.2. Eleccin de las caractersticas y descripcin de las ciudades
Esta fase era crtica para el funcionamiento de nuestro programa. Tuvimos que escoger las caractersticas adecuadas para cada ciudad, y para ello nos basamos en la informacin que buscamos en internet sobre los mejores lugares para visitar en cada ciudad.
3.3. Creacin de reglas e instrucciones
Durante esta fase nos dedicamos a declarar los predicados y las reglas derivadas. Implementamos distintas funciones para la resolucin del programa completo. Esta fase se explica ms en profundidad en el siguiente apartado.
3.4. Implementacin de la Solucin: Implementamos distintas funciones para la resolucin del programa completo. En primer lugar, realizamos la base de conocimientos, en la que incluimos la informacin de las diferentes ciudades y sus atributos.
Tambin incluimos las distintas caractersticas de las ciudades, para poder escoger de acuerdo a las preferencias de cada viajante.
Por lo que, dependiendo de las preferencias que escoja el viajero, el programa seleccionar todas las ciudades que encajen con esas caractersticas: opcion_elegida(playa,_,Ciu dad):-playa(Ciudad). opcion_elegida(cultura,_,C iudad):-cultura(Ciudad). opcion_elegida(parque,_,Ci udad):-parque(Ciudad). opcion_elegida(montaa,_,C iudad):-montaa(Ciudad). opcion_elegida(norte,_,Ciu dad):-norte(Ciudad). opcion_elegida(sur,_,Ciuda d):-sur(Ciudad). opcion_elegida(fiestas,Mes ,Ciudad):- fiestas(Ciudad,Mes).
A continuacin, el programa calcular el coste que le conlleva al viajero llegar hasta esas ciudades: transporte(Ciudad,bus,Cost e):- en_bus(Ciudad,Coste).
Y se calcula el precio total del viaje en cada ciudad seleccionada.
viaje(Ciudad,Transporte,Pr ecio):- transporte(Ciudad,Transpor te,Coste_t), finde_hotel(Ciudad,Coste_h ), Precio is Coste_t+Coste_h.
Una vez que se ha calculado el precio del viaje, se comprueba si est dentro de nuestro presupuesto permitido, con la siguiente funcin:
comprueba_precio(Ciudad, Transporte,Presupuesto,P recio):- viaje(Ciudad,Transporte, Precio), Z is Presupuesto-Precio,Z>0.
Debido a la utilizacin del valor de Presupuesto en el programa, es necesario que el cliente introduzca un Presupuesto para su viaje, aun cuando no tenga lmite de presupuesto (en ese caso, bastar con introducir una elevada cantidad). Finalmente, se imprimen por pantalla los resultados (Ciudad(es), Precios y Transporte(s)) y se muestra informacin turstica de cada una de las ciudades. La funcin descripcin contiene informacin escrita de la ciudad en concreto, mientras que la funcin separa consiste en una lnea para resaltar esta informacin.
Esta funcin se encarga de recoger todos los parmetros de entrada e ir llamando a las funciones anteriormente explicadas para devolver la solucin del problema. En el ltimo parmetro se pueden incluir una o ms opciones acerca de lo que pretende el usuario durante su viaje. El programa consta adems de una funcin ayuda en la que se explica la funcionalidad del programa y se informa al usuario cmo se deben introducir los parmetros.
4. Pruebas: A continuacin, realizaremos una serie de pruebas, para mostrar los resultados obtenidos.
4.1. Funcin Ayuda: Le brindar instrucciones al usuario para que pueda utilizar el sistema experto. (Ver imagen 1). 4.2. Funcin principal del programa: En esta primera prueba, el programa no nos devuelve ninguna ciudad acorde con los requisitos especificados por el usuario porque el presupuesto introducido es insuficiente para desplazarse a cualquier ciudad situada al norte y con playa. Posteriormente, vemos cmo aumentando el presupuesto, obtenemos ms ciudades y diferentes medios de transporte. (Ver imagen 2).
5. Conclusiones: Gracias al lenguaje de programacin Prolog, hemos conseguido resolver el problema del desarrollo de un sistema experto en turismo de una manera relativamente sencilla.
Por medio de la declaracin de una base de conocimientos y unas sencillas reglas somos capaces de, a partir de ciertas premisas, llegar a la recomendacin de la ciudad ms adecuada para el viajero que utiliza nuestro programa.
Durante la implementacin de este programa hemos profundizado ms en el conocimiento del lenguaje Prolog, aprendiendo un poco ms su programacin, aumentando nuestro inters en una introduccin en el campo de la inteligencia artificial, y la creacin de sistemas expertos.
Por otro lado, consideramos que aplicaciones de este tipo son tiles para el ser humano, y pensamos darle uso ms de una vez para escoger una ciudad a la cual viajar.