Proyecto de Inteligencia Artificial 2 - Sistema Experto

Universidad Técnica de Manabí Facultad de Ciencias Informáticas 8vo Semestre “A” Inteligencia Artificial 2 Proyecto – Si

Views 31 Downloads 0 File size 512KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad Técnica de Manabí Facultad de Ciencias Informáticas 8vo Semestre “A” Inteligencia Artificial 2 Proyecto – Sistema Experto – Destinos Turísticos Catedrático: Ing. Hernán Vargas Nolivos

Alumno: Moreira Gabriel

Portoviejo – Manabí

UNIVERSIDAD TÉCNICA DE MANABÍ

Visión: Ser Institución Universitaria, líder y referente de la Educación Superior en el Ecuador, promoviendo la creación, desarrollo, transmisión y difusión de la ciencia, la técnica y la cultura, con reconocimiento social y proyección regional y mundial.

Misión: Formar académicos, científicos y profesionales responsables, humanistas, éticos y solidarios, comprometidos con los objetivos del desarrollo nacional, que contribuyan a la solución de los problemas del país como Universidad de Docencia con investigación, capaces de generar y aplicar nuevos conocimientos, fomentando la promoción y difusión de los saberes y las culturas, previstos en la Constitución de la República del Ecuador.

FACULTAD DE CIENCIAS INFORMÁTICAS

Visión: Ser una facultad líder que con integridad, transparencia y equidad forme profesionales capaces de desarrollar soluciones informáticas innovadoras, generadoras de conocimientos e investigación permanente.

Misión: Formar profesionales investigadores en el campo de las ciencias informáticas al servicio de la sociedad que aporten con soluciones innovadoras al desarrollo tecnológico del país.

TEMA: Sistema experto “Destinos Turísticos”

Introducción Desde que naciera la Inteligencia Artificial como tal ciencia, a principios de los 60, hasta la actualidad, se han venido realizando numerosos trabajos, para el desarrollo de los diversos campos que componen la Inteligencia Artificial. De todos esos campos, quizá el que puede tener mayor número de aplicaciones prácticas sea el de los Sistemas Expertos, siendo dichas aplicaciones de utilidad en temas tan variados que pueden ir desde la medicina hasta la enseñanza. Palabras claves: Sistemas Expertos, inteligencia, conocimiento, razonamiento En palabras de un gran matemático, Blaise Pascal: "Como no se puede ser universal y saber todo acerca de todo, es mejor saber un poco de cada tema, que saber todo sobre un solo tema ", así fue como inició la inquietud de los investigadores en los años 40, con la idea de un sistema general de resolución de problemas (General Problem Solver: GPS), que por medio de una serie de algoritmos basados en análisis, más o menos exhaustivos, fuera capaz de resolver toda clase de problemas relativos a juegos de estrategias y demostraciones automáticas. La ambición era grande, así como lo fue la decepción que tuvieron al ver que a pesar de los progresos teóricos y de algunos programas espectaculares, no obtuvieron los resultados que se esperaban. Entonces se da un cambio en la dirección del problema, se enfocarían en un dominio específico, y recurriendo al conocimiento sobre el tema obtenido de las mismas personas, pretenden simular el razonamiento de un experto humano ante alguna situación. Así es como surge una de las ramas de mayor avance dentro de la Inteligencia Artificial, los Sistemas Expertos; con la idea de automatizar la labor del experto, partiendo en ocasiones de información insuficiente o incompleta. Este artículo presentará una introducción al amplio tema de la Inteligencia Artificial, para luego llegar al campo de los Sistemas Expertos, dándonos una descripción general de lo que es, revisando su concepto, estructura, campos de aplicación y ejemplos que fortalezcan la comprensión de los mismos. La Inteligencia Artificial comenzó como el resultado de la investigación en psicología cognitiva y lógica matemática. Se ha enfocado en la explicación del trabajo mental y construcción de algoritmos de solución a problemas de propósito general. La

Inteligencia Artificial es una combinación de la ciencia del computador, fisiología y filosofía, tan general y amplio como eso; reúne varios campos (robótica, sistemas expertos, por ejemplo), todos los cuales tienen en común la creación de máquinas que pueden "pensar". La idea de construir una máquina, que pueda ejecutar tareas que parecen necesitar de la inteligencia humana para llevarse a cabo es un atractivo. Las tareas que han sido estudiadas desde este punto de vista incluyen juegos, traducción de idiomas, comprensión de idiomas, diagnóstico de fallas, robótica, suministro de asesoría experta en diversos temas. Es así como los sistemas de administración de base de datos cada vez más sofisticados, la estructura de datos y el desarrollo de algoritmos de inserción, borrado y locación de datos, así como el intento de crear máquinas capaces de realizar tareas que son pensadas como típicas del ámbito de la inteligencia humana, acuñaron el término Inteligencia Artificial en 1956.

Marco Teórico Inteligencia artificial (IA) Un Sistema Experto es una aplicación informática que simula el comportamiento de un experto humano, en el sentido de que es capaz de decidir cuestiones, aunque sea en un campo restringido. Para esto, se debe tener en cuenta que la principal característica del experto humano viene a ser el conocimiento o habilidades profundas en ese campo concreto, por consiguiente, un Sistema Experto debe ser capaz de representar ese conocimiento profundo con el objetivo de utilizarlo para resolver problemas, justificar su comportamiento e incorporar nuevos conocimientos. Se podría incluir también el hecho de poder comunicarse en lenguaje natural con las personas, aunque esta capacidad no es tan determinante como las anteriores de lo que se puede definir como Sistema Experto [IBAR]. Un experto humano es alguien con un conocimiento profundo, que no solamente soluciona problemas específicos sino que también los pone dentro de un contexto más amplio. Ellos "transfieren" todos sus conocimientos y experiencias a una computadora que posiblemente los sustituya en su labor. Pero los sistemas aún carecen de algo que tal vez jamás vayan a tener: Inteligencia natural. Los sistemas expertos se aplican por norma general en problemas que implican un procedimiento basado en el conocimiento. O sea, un procedimiento que comprende la utilización de normas o estructuras que contengan conocimientos y experiencias de expertos, deducción lógica de conclusiones, capacidad de interpretar datos ambiguos y la manipulación de conocimientos afectados por la probabilidad. La mejor forma de entender el funcionamiento de un Sistema Experto es conociendo los componentes que conforman la estructura del mismo, y las funciones que desempeñan individualmente. Dichos componentes se tratarán seguidamente.

Componentes de un Sistema Experto Aunque los componentes de un Sistema Experto no se manejan de forma estándar, nos encontramos con un modelo tradicional en la estructura de los mismos. El conocimiento del experto se obtiene de alguna forma (Subsistema de adquisición de conocimientos) y se organiza en una base de conocimientos, y en función de los datos disponibles de la aplicación (base de hechos o base de datos) se imita la forma de actuar del experto explorando en la base de conocimientos hasta encontrar la solución (motor de inferencia). Los resultados finales y la forma en que se obtienen se expresan a través de la interface hombre-máquina. Además algunos sistemas expertos manejan un componente de explicación.

A continuación se explican de forma individual cada uno de los componentes, iniciando con el subsistema de adquisición de conocimientos. El módulo de adquisición del conocimiento permite que se puedan añadir, eliminar o modificar elementos de conocimiento (en la mayoría de los casos reglas) en el sistema experto. Si el entorno es dinámico es muy necesario, puesto que, el sistema funcionará correctamente sólo si se mantiene actualizado su conocimiento. El módulo de adquisición permite efectuar ese mantenimiento, anotando en la base de conocimientos los cambios que se producen [CHAP]. Todos los conocimientos que se obtienen deben ser estructurados de una forma correcta, todo este conocimiento se almacena en lo que se conoce como la base de conocimientos.

Subsistema de adquisición de Conocimientos La base de conocimientos contiene el conocimiento especializado extraído del experto en el dominio. Es decir, contiene conocimiento general sobre el dominio en el que se trabaja [SAMP]. El enfoque más común para representar el dominio del conocimiento que se requiere para un Sistema Experto son las reglas de producción. Estas pueden ser referidas como reglas `` situación-acción" o `` if-then". De esta forma, con frecuencia una base de conocimientos esta fraguada principalmente de reglas, las cuales son invocadas por un casamiento de patrones con las particularidades de las tareas circunstanciales que van apareciendo en la base de datos global. Un ejemplo de regla de producción es:

Si (*Persona edad 18) and (*Persona sexo masculino) Entonces (*Persona hacer Servicio_militar) La regla anterior determina que si una persona tiene 18 años y además es de sexo masculino, deberá hacer el servicio militar. Existen reglas de producción que indican bajo que condiciones deben considerarse unas reglas en vez de otras, estas reglas son conocidas como Metareglas. Un ejemplo de Metaregla es: Si(paciente edad_avanzada) entonces(reglas enfermedades_ancianos) La Metaregla anterior determina que si un paciente es de edad avanzada, deberán aplicarse las reglas de enfermedades en ancianos, en lugar de utilizar las de enfermedades en jóvenes por ejemplo. La fuerza de un Sistema Experto yace en el conocimiento específico del dominio del problema. Casi todos los sistemas existentes basados en reglas contienen un centenar de ellas y generalmente se obtienen de entrevistas con expertos durante un tiempo largo. En cualquier Sistema Experto, las reglas se conectan una a otra por ligas de asociación para formar redes de reglas. Una vez que han sido ensambladas tales redes, entonces tenemos una representación de un cuerpo de conocimientos que es substancial.

Generalmente, un experto tiene muchas reglas de criterio o empíricas por lo que el soporte suele ser incompleto para la evidencia que se dispone. En tales casos una técnica es la de vincular valores numéricos a cada regla para indicar el grado de certidumbre que ésta tiene. En la operación de Sistemas Expertos los valores de certidumbre se combinan unos a otros a través de la red, considerando también, la certidumbre de los datos de entrada del problema, para llegar finalmente a un valor de certidumbre de la solución final. Pero no es suficiente con conocer la base de conocimientos para entender la estructura y el funcionamiento de los Sistemas Expertos, otro de los componentes esenciales de estos sistemas, es la base de datos o base de hechos.

Base de Conocimientos La base de datos o base de hechos es una parte de la memoria del ordenador que se 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 registrarán en ella las conclusiones intermedias y los datos generados en el proceso de inferencia. Al memorizar todos los resultados intermedios, conserva el vestigio de los razonamientos efectuados; por lo tanto, se puede utilizar explicar las deducciones y el comportamiento del sistema. Todos estos datos no son suficientes, si no se tiene un sistema encargado de procesar y manipular toda la información para generar los resultados deseados, este sistema es conocido como Motor de inferencia.

Base de Datos o Base de Hechos El motor de inferencia es el "supervisor", un programa que está entre el usuario y la base de conocimientos, y que extrae conclusiones a partir de los datos simbólicos que están almacenados en las bases de hechos y de conocimiento. Dependen en gran medida de la representación elegida; por su importancia analizaremos los motores de inferencia basados en reglas. Existen varios algoritmos de búsqueda a lo largo de las reglas para inferir conclusiones a partir de los hechos y las reglas. Todos los algoritmos son del tipo "pattern-matching", van disparando reglas a medida que se cumplen las condiciones. Se pueden diferenciar dos mecanismos de inferencia: Encadenamiento hacia delante y encadenamiento hacia atrás. La llamada "técnica de encadenamiento hacia adelante" consiste en aplicar al conocimiento-base (organizado en forma de reglas de producción), junto con otro conocimiento disponible, el esquema inferencial modus ponens. Esta estrategia se denomina "encadenamiento hacia adelante" o "razonamiento de datos dirigidos", porque comienza con los datos conocidos y aplica el modus ponens sucesivamente hasta obtener los resultados que se siguen. Las reglas se aplican "en paralelo", o sea, en cualquier iteración una regla toma los datos cuales eran al principio del ciclo, por lo tanto el conocimiento-base y el sistema no dependen del orden en el que las reglas son establecidas, almacenadas o procesadas. Esta técnica suele utilizarse cuando la cantidad de datos es potencialmente muy grande, y resulta de interés algún conocimiento específico tomado en consideración (caso típico en los problemas de diagnóstico; MYCIN, por ejemplo).

La técnica del "encadenamiento hacia atrás" consiste en tratar de probar un dato (o conocimiento) engarzándolo en las reglas-base con el esquema de inferencia modus ponens, o sea, tomando al dato como un consecuente y buscando en el conocimiento-base el correspondiente antecedente, a través de los pasos correspondientes. Estas dos formas de inferencia se corresponden con los dos métodos lógicos clásicos conocidos por varios nombres: método resolutivo / método compositivo; análisis / síntesis. La distinción se basa en la relación direccional entre objetivos y datos. Y ambas formas pueden combinarse en el razonamiento. Cabe partir de un supuesto inicial, inferir una conclusión mediante un razonamiento hacia adelante y luego establecer un encadenamiento hacia atrás hasta encontrar los datos que confirman esa conclusión. Es importante destacar que la base de conocimientos y el motor de inferencia son sistemas independientes, por lo que se han desarrollado herramientas que únicamente necesitan la implementación del conocimiento, llevando incorporado el motor de inferencia. La forma en que se obtiene o se presenta la información debe ser tal, que facilite la comprensión de los datos y la forma como se ingresa la información, por lo cuál es necesario la interfase Hombre-Máquina.

Motor de Inferencia La interface establece una comunicación sencilla entre el usuario y el sistema. El usuario puede consultar con el sistema a través de menús, gráficos, o algún otro tipo de interfaces, y éste le responde con resultados. También es interesante mostrar la forma en que extrae las conclusiones a partir de los hechos. En sistemas productivos se cuida la forma de presentar al operador las órdenes obtenidas del sistema experto, debido a que información excesiva o confusa dificulta la actuación en tiempo real. Aunque no se maneja dentro de la estructura de un Sistema Experto en general, existe un componente adicional, el componente de explicación, el cual se tratará a continuación.

Ventajas y Desventajas de los Sistemas Expertos A la hora de tomar la decisión de desarrollar un Sistema Experto, se deben analizar las distintas ventajas y desventajas que estos tienen. Ventajas Entre las principales ventajas de un Sistema Experto, se pueden mencionar:      

Los Sistemas Expertos que se codifican y tratan el conocimiento de un experto, alcanzan el nivel de prestaciones de un experto humano. La separación entre base de conocimiento y motor de inferencia proporciona una gran flexibilidad al Sistema. Los Sistemas Expertos permiten llegar a una reflexión sobre el conocimiento y los procedimientos, para toma de decisiones realizados por los expertos. Posibilidad de trazar el razonamiento seguido por el Sistema Experto. Algunos Sistemas Expertos utilizan coeficientes de verosimilitud para ponderar sus deducciones. En manipulación de símbolos, los Sistemas Expertos abren el campo a nuevas aplicaciones, no automatizadas hasta la fecha.

Desventajas Aunque son grandes las ventajas, no hay que dejar de lado las desventajas que se pueden presentar:          

La publicidad realizada alrededor de esta técnica seduce a muchas personas pero crea aspiraciones imposibles de satisfacer. La extracción del conocimiento es el problema más complejo que se les plantea a los ingenieros de conocimientos. Ciertos problemas están ligados a la representación del conocimiento. Los SE son incapaces de reconocer un problema para el que su propio conocimiento es inaplicable o insuficiente. Los motores de inferencia poseen algunos límites. Las interfaces con usuarios no son lo suficientemente amigables. Las aplicaciones suministradas por los SE son, frecuentemente, esotéricas. Falta personal competente para investigar y desarrollar aplicaciones. Campo de aplicaciones restringido y específico. El costo es bastante alto.

Aunque se conozcan las ventajas y las desventajas de los Sistemas Expertos, no se logra una visión clara de los Sistemas Expertos y su capacidad, hasta que se conocen algunos ejemplos en aplicaciones reales.

Pruebas

Función 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 cómo aumentando el presupuesto, obtenemos más ciudades y diferentes medios de transporte.

Conclusiones Gracias al lenguaje de programación Prolog, hemos conseguido resolver el problema del desarrollo de un sistema experto en turismo de una manera relativamente sencilla. Por medio de la declaración de una base de hechos y unas sencillas reglas somos capaces de, a partir de ciertas premisas, llegar a la recomendación de la ciudad más adecuada para el viajero que utiliza nuestro programa. Durante la implementación de este programa hemos profundizado más en el conocimiento del lenguaje Prolog, disfrutando en su programación y aumentando nuestro interés en el campo de la inteligencia artificial, y la creación de sistemas expertos. Por otro lado, consideramos que aplicaciones de este tipo son útiles para el ser humano, y pensamos darle uso más de una vez para escoger una ciudad a la que viajar.

Código Fuente %*************************** % DESCRIPCIÓN DEL PROGRAMA. %*************************** % Este programa se encarga de recomendar una ciudad a la que viajar desde Madrid % y pasar allí un fin de semana. % El programa selecciona la ciudad de acuerdo con tus preferencias y te recomienda % un medio de transporte para ir allí. % Todo esto teniendo en cuenta el presupuesto del que dispones. % Para invocar a la funcion, se escribe: % finde(Ciudad,Mes,Presupuesto,Transporte,Precio,[Preferencias]). % Donde Preferencias puede ser una o varias de entre las siguientes: % montaña, playa, norte, sur, fiestas, cultural, juerga o parque_tem %**************** % BASE DE HECHOS %**************** %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %ciudades %%%%%%%%%%%%%%%%%%%%%%%%%%%%% ciudad(coruña). ciudad(oviedo). ciudad(santander). ciudad(bilbao). ciudad(logroño). ciudad(pamplona). ciudad(zaragoza). ciudad(barcelona). ciudad(valencia). ciudad(murcia). ciudad(sevilla). ciudad(toledo). ciudad(caceres). ciudad(valladolid). %%%%%%%%%%%%%%%%%%%%% %precios transportes %%%%%%%%%%%%%%%%%%%%% % Precios en AUTOBUS (Ida/Vuelta) en_bus(coruña,54). %Alsa-Enatcar en_bus(oviedo,49). %Alsa-Enatcar en_bus(santander,41). %Continental Auto en_bus(bilbao,41). %Continental Auto en_bus(logroño,35). %Continental Auto en_bus(pamplona,45). %Continental Auto en_bus(zaragoza,21). %Alsa en_bus(barcelona,41). %Alsa en_bus(valencia,19). %Auto-Res en_bus(murcia,41). %Alsa-Enatcar en_bus(sevilla,26). %Socibus-Sercobus en_bus(toledo,8). %Galiano-Continental en_bus(caceres,29). %Auto-Res en_bus(valladolid,20). %Alsa-Enatcar %Precio en COCHE para un consumo medio de 6 litros/100 km. %Precio gasolina: 0.9 €/litro %Recorrido: Ida/Vuelta en_coche(coruña,82). %587.5 km (9 euros peaje (ida)) en_coche(oviedo,80). %445 km (16 euros peaje (ida)) en_coche(santander,42). %382 km (no peaje) en_coche(bilbao,71). %386.5 km (14.30 peaje)

en_coche(logroño,56). %361.5 km (8.30 peaje) en_coche(pamplona,67). %440.3 km (9.59 peaje) en_coche(zaragoza,34). %311.6 km (no peaje) en_coche(barcelona,106). %611.5 km (19.85 peaje) en_coche(valencia,38). %356.1 km (no peaje) en_coche(murcia,43). %400.4 km (no peaje) en_coche(sevilla,57). %526.1 km (no peaje) en_coche(toledo,8). %75.2 km (no peaje) en_coche(caceres,33). %302.8 km (no peaje) en_coche(valladolid,20). %188.3 km (no peaje) % Precios en TREN (Ida/Vuelta) en_tren(coruña,80). en_tren(oviedo,67). en_tren(santander,65). en_tren(bilbao,59). en_tren(logroño,56). en_tren(pamplona,69). en_tren(zaragoza,43). en_tren(barcelona,118). en_tren(valencia,73). en_tren(murcia,68). en_tren(sevilla,100). en_tren(toledo,8). en_tren(caceres,44). en_tren(valladolid,41). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Precios Hoteles (precio por finde,1 persona en hab. doble, hotel 3 estrellas) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Se considera el mismo precio para todos, ya que se hace uso de talones de Bancohotel finde_hotel(coruña,50). finde_hotel(oviedo,50). finde_hotel(santander,50). finde_hotel(bilbao,50). finde_hotel(logroño,50). finde_hotel(pamplona,50). finde_hotel(zaragoza,50). finde_hotel(barcelona,50). finde_hotel(valencia,50). finde_hotel(murcia,50). finde_hotel(sevilla,50). finde_hotel(toledo,50). finde_hotel(caceres,50). finde_hotel(valladolid,50). %%%%%%%%%%%%%%%%%%%%% %Características de las ciudades. %%%%%%%%%%%%%%%%%%%%% % Ciudades con playa o muy proximas a ella playa(coruña). playa(oviedo). playa(santander). playa(bilbao). playa(barcelona). playa(valencia). playa(murcia). % Ciudades de elevada importancia cultural cultural(bilbao). cultural(zaragoza). cultural(barcelona). cultural(valencia). cultural(sevilla). cultural(toledo). cultural(caceres). cultural(valladolid). % Ciudades por las que salir de juerga juerga(bilbao). juerga(zaragoza).

juerga(barcelona). juerga(valencia). juerga(sevilla). % Cercanía a parques temáticos parque_tem(barcelona). parque_tem(valencia). parque_tem(sevilla). % Zona montaña o rural montaña(oviedo). montaña(santander). montaña(bilbao). montaña(logroño). % Situación geografica norte(coruña). norte(oviedo). norte(santander). norte(bilbao). norte(logroño). norte(pamplona). norte(zaragoza). norte(barcelona). norte(valladolid). sur(valencia). sur(murcia). sur(sevilla). sur(toledo). sur(caceres). % Fiestas autonómicas fiestas(zaragoza,octubre). % El Pilar fiestas(sevilla,abril). % Feria de abril. fiestas(pamplona,julio). % San Fermín. fiestas(valencia,marzo). % Las fallas. fiestas(bilbao,agosto). % Fiestas. %***************************************************** % DECLARACION DE PREDICADOS O RELACIONES DERIVADAS %***************************************************** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Precio del transporte a una Ciudad, según se vaya en tren,coche o bus. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% transporte(Ciudad,bus,Coste):- en_bus(Ciudad,Coste). transporte(Ciudad,coche,Coste):- en_coche(Ciudad,Coste). transporte(Ciudad,tren,Coste):- en_tren(Ciudad,Coste). %%%%%%%%%%%%%%%%%%%%% %Precio del viaje completo a una ciudad. %%%%%%%%%%%%%%%%%%%%% % viaje dice el precio de un fin de semana en una ciudad, teniendo en cuenta el hotel % y el precio del transporte. viaje(Ciudad,Transporte,Precio):- transporte(Ciudad,Transporte,Coste_t),finde_hotel(Ciudad,Coste_h),Precio is Coste_t+Coste_h. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Seleccion de una ciudad en funcion de la opcion elegida %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% opcion_elegida(juerga,_,Ciudad):-juerga(Ciudad). opcion_elegida(playa,_,Ciudad):-playa(Ciudad). opcion_elegida(cultural,_,Ciudad):-cultural(Ciudad). opcion_elegida(parque_tematico,_,Ciudad):-parque_tem(Ciudad). opcion_elegida(montaña,_,Ciudad):-montaña(Ciudad). opcion_elegida(norte,_,Ciudad):-norte(Ciudad). opcion_elegida(sur,_,Ciudad):-sur(Ciudad). opcion_elegida(fiestas,Mes,Ciudad):-fiestas(Ciudad,Mes). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Descripcion de la informacion de cada ciudad. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% descripcion(coruña):- write('Ciudad: A CORUÑA.'),nl, write('La distancia desde Madrid es: 587.5 Km'),nl, write('Podrás visitar (entre otros):'),nl,

write(' - Obelisco Millenium (50 metros de altura).'),nl, write(' - Casa del hombre (Museo La Domus).'),nl, write(' - Faro Romano "La torre de Hércules."'),nl, write(' - Castillo de San Antón.'),nl, write('En cuanto a la gastronomía, pescados y mariscos de gran calidad, vinos... (MUY RECOMENDABLE).'),nl. descripcion(oviedo):- write('Ciudad: OVIEDO.'),nl, write('La distancia desde Madrid es: 445 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Teatro Campoamor.'),nl, write(' - Gran belleza de las esculturas públicas.'),nl, write(' - La casa de la Rúa.'),nl, write(' - Palacio Episcopal.'),nl, write('La sidra es la más antigua y la mejor del mundo según expertos. ¿Aún no la has probado?'),nl. descripcion(santander):- write('Ciudad: SANTANDER.'),nl, write('La distancia desde Madrid es: 382 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Museos: Bellas Artes, Menendez Pelayo, Marítimo del Cantábrico.'),nl, write(' - Bellísimos itinerarios: Santander marítimo, Península de la Magdalena y sus playas,'),nl, write(' Santander monumental Cabo mayor, El Sardinero y sus Playas.'),nl. descripcion(bilbao):- write('Ciudad: BILBAO.'),nl, write('La distancia desde Madrid es: 386.5 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Museo Guggenheim, Teatro Arriaga, Basílica de Begoña.'),nl, write(' - Catedral de Santiago, Iglesia de San Antón, Mercado de la Ribera.'),nl, write(' - Palacio de Congresos (el EUSKALDUNA).'),nl, write(' - Pasarela de Calatrava .'),nl, write('El 22 de Agosto son las Fiestas locales. Viernes de la Semana Grande.'),nl, write('Disfrutarás con el chupinazo, la bajada de comparsas, la Marijaia (¿no sabes lo que es?¿a qué esperas para venir?)'),nl, write('Bilbao cuenta con una intensa vida nocturna que comienza después del horario de cierre de los'),nl, write('excelentes y numerosos restaurantes de la ciudad. Desde el Gran Casino hasta los nightclubs,'), nl, write('hay una infinidad de posibilidades nocturnas: bares, pubs, disco-bares, discotecas, salas de fiestas y cabarets,'),nl, write('con todos los ambientes para todas las edades y para todos los bolsillos.'),nl, write('La mayoría están ubicados en el centro, por lo que desplazarse entre ellos dando un paseo es fácil.'),nl. descripcion(logroño):- write('Ciudad: LOGROÑO.'),nl, write('La distancia desde Madrid es: 361.5 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Plazas más emblemáticas de la ciudad: Amos Salvador, San Agustín... .'),nl, write(' - Edificios religiosos de Sta. María de Palacio, La Redonda... .'),nl, write(' - Arte riojano en el Museo de la Rioja.'),nl, write(' - Ruta Jacobea, Ruta del Vino, de los Monasterios.'),nl. descripcion(pamplona):- write('Ciudad: PAMPLONA.'),nl, write('La distancia desde Madrid es: 440.3 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - La catedral.'),nl, write(' - La taconera.'),nl, write(' - Ayuntamiento.'),nl, write(' - Monumento a los Fueros.'),nl, write('Y por supuesto en julio las más universales fiestas de España: Los San Fermines.'),nl. descripcion(zaragoza):- write('Ciudad: ZARAGOZA.'),nl, write('La distancia desde Madrid es: 311.6 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Arte Románico: murallas romanas, foro de Caesar Augusta... .'),nl, write(' - Basílica Nuestra Sra del Pilar.'),nl, write(' - Ayuntamiento.'),nl, write(' - Palacio de la Aljafería.'),nl, write('Por supuesto tendrás que comprar un cachirulo en las fiestas del Pilar (12 octubre).'),nl. descripcion(barcelona):- write('Ciudad: BARCELONA.'),nl, write('La distancia desde Madrid es: 611.5 Km'),nl, write('Podrás visitar (entre otros):'),nl,

write(' - Barrio Gótico: Catedral, Palacio de la Generalitat (Plaza de San Jaume).'),nl, write(' - Mercado de La Boquería, Las Ramblas, Plaza Real.'),nl, write(' - Gaudí: Casa Milá, Casa Battló, Sagrada Familia, Parque Güell.'),nl, write(' - Montjuïc (Sede Olímpica).'),nl, write('Gran ambiente nocturno.'),nl. descripcion(valencia):- write('Ciudad: VALENCIA.'),nl, write('La distancia desde Madrid es: 356.1 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Real Basílica de la Virgen de los Desamparados, Plaza de la Reina, Puerta de Serranos.'),nl, write(' - Mercado Central, Lonja, Palacio del Marqués de Dos Aguas, Jardines del Real.'),nl, write('Podrás disfrutar de una buena paella y escuchar una mascletá si te pasas en las fallas (marzo).'),nl. descripcion(murcia):- write('Ciudad: MURCIA.'),nl, write('La distancia desde Madrid es: 400.4 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Ayuntamiento, Catedral de Sta María, Convento de Sta Clara del Real.'),nl, write('Disfrutarás de su gastronomía: es la "huerta" de España.'),nl. descripcion(sevilla):- write('Ciudad: SEVILLA.'),nl, write('La distancia desde Madrid es: 526.1 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Basílica de la Macarena, Catedral, Giralda, Palacio Arzobispal.'),nl, write(' - Teatro y Plaza de la Maestranza, Torre del Oro, Real Fábrica de Tabacos.'),nl, write(' - Plaza de España, Parque de Maria Luisa.'),nl, write(' - Museo Arqueológico, Museo de Artes y Costumbre populares, Pabellón Real.'),nl, write('Te embrujará su feria de abril.'),nl. descripcion(toledo):- write('Ciudad: TOLEDO.'),nl, write('La distancia desde Madrid es: 75.2 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Catedral, Alcázar, Palacio Arzobispal, Palacio de Fuensalida.'),nl, write(' - Puerta del Cambrón, Puerta de Bisagra, Puente de San Martín, Puente de Alcántara.'),nl, write(' - Monasterio de San Juan de Los Reyes, Hospital de la Santa Cruz, Hospital de Tavera.'),nl, write('A menos de una hora de Madrid...'),nl. descripcion(caceres):- write('Ciudad: CACERES.'),nl, write('La distancia desde Madrid es: 302.8 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Plaza Mayor, Ayuntamiento, Arco de la Estrella, Casa de los Toledo Moctezuma.'),nl, write(' - Iglesia de Santiago, Palacio de Godoy, Palacio de los Golfines de Abajo'),nl, write(' - Plaza de San Jorge, Plaza de San Mateo, Templo de San Mateo.'),nl. descripcion(valladolid):- write('Ciudad: VALLADOLID.'),nl, write('La distancia desde Madrid es: 188.3 Km'),nl, write('Podrás visitar (entre otros):'),nl, write(' - Convento de San Benito el Real, Iglesia de San Agustín, Palacio Fabio Nelly.'),nl, write(' - Iglesia de la Veracruz, Plaza Mayor, Academia de Caballería, Seminario de Agustinos Filipinos.'),nl, write(' - Colegio de San Gregorio, Iglesia de San Pablo, Plaza de San Pablo.'),nl, write(' - Catedral, Plaza de la Universidad.'),nl, write('Donde se habla de forma más parecida a Madrid.'),nl. % Función que imprime una linea separadora. separa :- write_ln(''), write('********************************************************************'),write_ln(''). %%%%%%%%%%%%%%%%%%%%% % Comprobacion del precio del viaje %%%%%%%%%%%%%%%%%%%%% %Funcion que comprueba si la ciudad está dentro del presupuesto del cliente comprueba_precio(Ciudad,Transporte,Presupuesto,Precio):-viaje(Ciudad,Transporte,Precio),Z is PresupuestoPrecio,Z>0. %%%%%%%%%%%%%%%%%%%%% % Imprime la informacion de la ciudad. %%%%%%%%%%%%%%%%%%%%% imprimir(Ciudad,bus):-separa,descripcion(Ciudad),separa. imprimir(_,coche):-write_ln(''). imprimir(_,tren):-write_ln(''). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Funcion principal del programa ¡es la que llama a todas las demas!

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Invocación de la función "finde(X,playa...). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,W):opcion_elegida(W,Mes,Ciudad),comprueba_precio(Ciudad,Transporte,Presupuesto,Precio_total), imprimir(Ciudad,Transporte). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,X,Y):- opcion_elegida(X,Mes,Ciudad), opcion_elegida(Y,Mes,Ciudad),comprueba_precio(Ciudad,Transporte,Presupuesto,Precio_total),imprimir(Ciudad,Transpor te). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,X,Y,Z):- opcion_elegida(X,Mes,Ciudad), opcion_elegida(Y,Mes,Ciudad),opcion_elegida(Z,Mes,Ciudad),comprueba_precio(Ciudad,Transporte,Presupuesto,Precio_t otal),imprimir(Ciudad,Transporte). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,X,Y,Z,T):- opcion_elegida(X,Mes,Ciudad), opcion_elegida(Y,Mes,Ciudad),opcion_elegida(Z,Mes,Ciudad),opcion_elegida(T,Mes,Ciudad),comprueba_precio(Ciudad,Tr ansporte,Presupuesto,Precio_total),imprimir(Ciudad,Transporte). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,X,Y,Z,T,R):- opcion_elegida(X,Mes,Ciudad), opcion_elegida(Y,Mes,Ciudad),opcion_elegida(Z,Mes,Ciudad),opcion_elegida(T,Mes,Ciudad),opcion_elegida(R ,Mes,Ciudad),comprueba_precio(Ciudad,Transporte,Presupuesto,Precio_total),imprimir(Ciudad,Transporte). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,X,Y,Z,T,R,S):- opcion_elegida(X,Mes,Ciudad), opcion_elegida(Y,Mes,Ciudad),opcion_elegida(Z,Mes,Ciudad),opcion_elegida(T,Mes,Ciudad),opcion_elegida(R ,Mes,Ciudad),opcion_elegida(S,Mes,Ciudad),comprueba_precio(Ciudad,Transporte,Presupuesto,Precio_total),imprimir(Ciu dad,Transporte). finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,X,Y,Z,T,R,S,M):- opcion_elegida(X,Mes,Ciudad), opcion_elegida(Y,Mes,Ciudad),opcion_elegida(Z,Mes,Ciudad),opcion_elegida(T,Mes,Ciudad),opcion_elegida(R ,Mes,Ciudad),opcion_elegida(S,Mes,Ciudad),opcion_elegida(M,Mes,Ciudad),comprueba_precio(Ciudad,Transporte,Presup uesto,Precio_total),imprimir(Ciudad,Transporte). ayuda:- nl, write('******************************************************'),nl, write('Práctica de "Inteligencia en Redes de comunicaciones"'),nl, write(' Realizada por los alumnos:'),nl, write(' - Alberto Castro Hinojosa'),nl, write(' - Maria Sanchez Labrador'),nl, nl, write('******************************************************'), nl, nl, write(' SISTEMA EXPERTO EN TURISMO.'), nl,nl, write('Para pasar un buen fin de semana fuera de Madrid escriba:'),nl, nl,write(' finde(Ciudad,Mes,Presupuesto,Transporte,Precio,Preferencias).'),nl,nl, write(' Sustituya "Mes", "Presupuesto" (en euros) y "Preferencias".'),nl, write(' El resto de los parametros déjelos como estan escritos arriba y obtendrá los resultados'),nl, write(' "Preferencias" puede ser: fiestas, montaña, norte, sur, playa, cultural, juerga o parque_tem'),nl, write(' Pulse "r" detrás de cada resultado para ver todas las posibilidades.'),nl.

Fuentes Bibliográficas  http://www.monografias.com/trabajos23/sistemasexpertos/sistemas-expertos.shtml