viernes, 18 de enero de 2019

TRABAJO DE INVESTIGACION SISTEMA EXPERTO EN TURISMO DESARROLLADO EN PROLOG


El presente trabajo de investigación se realizo utilizando un 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.

esperando que sea de mucha ayuda para todos que empiezan y sirva de guía para el desarrollo de otros proyectos de investigación 





SISTEMA EXPERTO EN TURISMO







PRESENTADO POR:
           


Ø   Jarol, RIVERA VILLACORTA.
Ø  Lleferson, GUERRA INGA.
Ø  Milton, HERNANDEZ CASTAÑEDA.
Ø  Johann, CHAVEZ PINCHI.
Ø  Sergio, PANDURO BALTAZAR.

















ÍNDICE


1.    Introducción...............................................................................................2

2.    Planteamiento del problema......................................................................2

3.    Resolución del problema...........................................................................3

4.    Implementación de la solución..................................................................4

5.    Pruebas.....................................................................................................6

6.    Conclusiones.............................................................................................7

7.    Código.......................................................................................................8


1. Introducción

Actualmente se le da mucha importancia al ocio en nuestras vidas, y un campo muy importante dentro del terreno del ocio es el tema de los viajes. Muchas veces tenemos ganas de viajar, conocer nuevos sitios, nuevas culturas, o simplemente pegarnos unos “chapuzones” al rio o ir de juerga con los amigos para evadirnos de la “rutinaria ciudad.

Después de conseguir poner de acuerdo a las personas adecuadas para realizar un viaje en una fecha determinada, surgen los problemas para decidir cuál es la ciudad adecuada para ese viaje. Y es aquí cuando entra en juego nuestro programa: El sistema experto en turismo.

Se trata de un programa fácil de interactuar con él, implementado en el lenguaje de programación Prolog, el cual, a partir de nuestras preferencias y restricciones económicas nos recomienda todas las opciones turísticas que se amoldan a esas características, acomo el precio del viaje y lo que hay que visitar en cada ciudad.


2. Planteamiento del problema

Sistema experto en turismo”
Sistema de recomendación de una ciudad, aconsejando qué sitios visitar según la ubicación del usuario, sus preferencias, sus posibilidades (si tiene coche o no, su presupuesto...), su experiencia (por ejemplo, si conoce la ciudad o no), etc.

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 por la península española.


De este modo, decidimos que nuestro programa recomendaría un viaje (partiendo Tarapoto) a cualquier ciudad San Martin (de entre 5 posibles), calculando los costes del trayecto, la estancia. 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 nos parece una buena referencia para al menos orientarse.


3. Resolución del problema

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 para cada transporte a cada una de las ciudades  que se  iban  a implementar.  El  precio  de los  viajes  en  autos se calculó partiendo de la distancia entre las ciudades, un consumo medio de 3 Galones a los 100 km, y un coste de la gasolina de S/13.
Además, visitamos una agencia de viajes para informarnos acerca de los precios de hoteles en las distintas ciudades. Nos recomendaron la utilización de los cheques de “RIO SHILCAYO”, que por un coste de S/ 100  por noche, se disponía de una habitación doble.



-  Fase II:       “Elección de las 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 nuestra propia experiencia, y a información que buscamos en internet sobre los mejores lugares para visitar en cada ciudad.



-  Fase III:      Creación de reglas e instrucciones”

Durante esta fase nos dedicamos a declarar los predicados y las reglas derivadas. Implementamos distintas funciones para la resolución del programa completo. Esta fase se explica más en profundidad en el siguiente  apartado.




4. Implementación de la solución

Implementamos distintas funciones para la resolución del programa completo.
En primer lugar, realizamos la base de hechos, en la que incluimos la información de las diferentes ciudades y sus atributos.
Incluimos diferentes tipos de información:

en_bus(ciudad, precio).
finde_hotel(ciudad,50).       

  Debido a que en todas las ciudades podemos encontrar hoteles por este precio

También incluimos las distintas características de las ciudades, para poder escoger de acuerdo a las preferencias de cada viajante.
Hemos clasificado las ciudades con los siguientes atributos:





Característica

Ciudad

Rio

Cultural

Juerga

Montaña

Norte-Sur

Fiestas
Moyobamba
X
x
x
x
Norte
(Junio)
Rioja
X
x
x

Norte
(Mayo)
Lamas
X
x
x

Norte
(Agosto)
Tarapoto
X
X
X

Sur
(Julio)
Juanjui

x
x

Sur
(agosto)

Por  lo  que,  dependiendo  de  las  preferencias  que  escoja  el  viajero,  el  programa seleccionará todas las ciudades que encajen con esas características:

opcion_elegida(juerga,_,Ciudad):-juerga(Ciudad). opcion_elegida(playa,_,Ciudad):-rio(Ciudad). opcion_elegida(cultural,_,Ciudad):-cultural(Ciudad).
opcion_elegida(montaña,_,Ciudad):-monta(Ciudad).
opcion_elegida(norte,_,Ciudad):-norte(Ciudad). opcion_elegida(sur,_,Ciudad):-sur(Ciudad). opcion_elegida(fiestas,Mes,Ciudad):-fiestas(Ciudad,_,Mes).

A continuación, el programa calculará el coste que le conlleva al viajero llegar hasta esas ciudades con todos los medios de transporte posibles.

transporte(Ciudad,bus,Coste):- en_bus(Ciudad,Coste).

Y se calcula el precio total del fin de semana en cada ciudad seleccionada para cada medio de transporte:

viaje(Ciudad,Transporte,Precio):- transporte(Ciudad,Transporte,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 función:

comprueba_precio(Ciudad,Transporte,Presupuesto,Precio):- viaje(Ciudad,Transporte,Precio),
Z is Presupuesto-Precio,Z>0.

Debido a la utilización del valor de Presupuesto en el programa, es necesario que el cliente introduzca un Presupuesto para su viaje, aún cuando no tenga límite de presupuesto (en ese caso, bastará con introducir una elevada cantidad).

Finalmente,   se   imprimen    por    pantalla    los    resultados   (Ciudad(es),   Precios   y
Tranpsporte(s)) y se muestra información turística de cada una de las ciudades.

La  función  descripción”  contiene  información  escrita  de  la  ciudad  en  concreto, mientras que la función separa consiste en una nea para resaltar esta información.

La función principal del programa es la siguiente:

finde(Ciudad,Mes,Presupuesto,Transporte,Precio_total,Preferencias):- opcion_elegida(W,Mes,Ciudad), comprueba_precio(Ciudad,Transporte,Presupuesto,Precio_total), imprimir(Ciudad,Transporte).

Se encarga de recoger todos los parámetros de entrada e ir llamando a las funciones anteriormente  explicadas  para  devolver  la  solución  del  problema.  En  el  último parámetro se pueden incluir una o más opciones acerca de lo que pretende el usuario durante su viaje.

El  programa  consta  además  de  una  función  ayuda en  la  que  se  explica  la funcionalidad  del  programa  y se  informa  al  usuario  cómo  se  deben  introducir  los parámetros.



5. Pruebas

A  continuación,  realizaremos  una  serie  de  pruebas,  para  mostrar  los  resultados obtenidos.
  


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.


 6. 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 s de una vez para escoger una ciudad a la que viajar.






7. Código


%******************
%* BASE DE HECHOS *
%******************

%------------------------------

%CIUDADES

ciudad(moyobamba).
ciudad(rioja).
ciudad(lamas).
ciudad(tarapoto).
ciudad(juanjui).

%------------------------------

%DE PRECIOS TRANSPORTE (Ida/Vuelta)

%bus

en_bus(moyobamba,50).
en_bus(rioja,60).
en_bus(lamas,50).
en_bus(tarapoto,30).
en_bus(juanjui,90).


%------------------------------

% PRECIOS DE HOTELES  POR DIA

finde_hotel(moyobamba,120).
finde_hotel(rioja,75).
finde_hotel(lamas,90).
finde_hotel(tarapoto,140).
finde_hotel(juanjui,100).

%------------------------------

%CARACTERISTICAS DE LAS CIUDADES

%...............................

% ********
% * RIOS *
% ********

%Ciudad de tarapoto 
rio(cancum).
rio(mayo).



%...............................

%*********
%*CULTURA*
%*********

%Ciudades de elevada importancia cultural moyobamba
cultural(moyobamba).
cultural(rioja).
cultural(lamas).
cultural(tarapoto).
cultural(juanjui).


%...............................

%********
%*JUERGA*
%********

% Ciudades por las que salir de juerga tarapoto

juerga(moyobamba).
juerga(rioja).
juerga(lamas).
juerga(tarapoto).
juerga(juanjui).


%...............................

%*******
%*CAMPO*
%*******

% Zona u otros moyobamba .
montaña(moyobamba).

%...............................

%***********
%*GEOGRAFIA*
%***********

% Situación geografica.
norte(tarapoto).
sur(moyobamba).

%...............................

%*************
%*ANIVERSARIO*
%*************

% Fiestas autonómicas
%
fiestas(moyobamba,22,junio).
fiestas(rioja,3,mayo).
fiestas(lamas,22,agosto).
fiestas(tarapoto,8,julio).
fiestas(juanjui,15,agosto).


%------------------------------


%****************************************************
%* DECLARACION DE PREDICADOS O RELACIONES DERIVADAS *
%****************************************************


% Precio del transporte a una Ciudad, según se vaya coche o bus.


transporte(Ciudad,bus,Coste):- en_bus(Ciudad,Coste).
transporte(Ciudad,bus,Coste):- en_bus(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(rio,_,Ciudad):-rio(Ciudad).
opcion_elegida(cultural,_,Ciudad):-cultural(Ciudad).
%opcion_elegida(parque,_,Ciudad):-parque(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(moyobamba):-  write('Ciudad: MOYOBAMBA.'),
nl,write('Podrás visitar (entre otros):'),
nl,
nl,write('-Baños Sulfurosos de Oromina,  7 km de la ciudad de Moyobamba.'),
nl,write('Afloramiento natural de agua sulfurosa. Son conocidos por las propiedades,'),
nl,write('terapéuticas de sus aguas'),
nl,                                                                                          
nl,write('-Cataratas de Asnacyacu, A  7 km de la ciudad de Moyobamba.Caída de agua de'),
nl,write('8 metros) de altura, se caracteriza por sus aguas cristalinas y frías. Es un buen'),
nl,write('lugar para observar diferentes especies de aves de la selva alta'),
nl,
nl,write('-Baños Termales de San Mateo, A 4 km de la ciudad de Moyobamba, son bien'),
nl,write('conocidas por sus propiedades medicinales. Según se cuenta, las aguas son'),
nl,write('ideales para el tratamiento de la artritis,el reumatismo, los dolores musculares'),
nl,write('hasta el estrés.'),
nl,
nl,write('-Cataratas del Gera, A 21 km de la ciudad de Moyobamba Rodeadas de'),
nl,write('una densa vegetación intocada por el hombre, se observa el agua caer con'),  
nl,write('fuerza en tres etapas, desde una altura de 120 metros. '), 
nl,                                                                                          
nl,write('-La Cueva de los Huacharos, A 38 km al suroeste de la ciudad de Moyobamba.'),
nl,write('Esta poblada por centenares de aves nocturnas denominadas Huacharos, que'),  
nl,write('anidan en su bóveda.').



                                                                                             
descripcion(rioja):- write('Ciudad: RIOJA.'),
nl,write('Podrás visitar (entre otros):'),
nl,
nl,write('-Cueva del Diamante, A 58 km la noroeste de la ciudad de Rioja, en la localidad de Naranjos,'),
nl,write('Visitas: lunes-domingo 8:00-18:00 Ubicada dentro del Bosque de Protección del Alto Mayo,'),
nl,write('tiene estalactitas y estalagmitas con figuras caprichosas.'),
nl,
nl,write('-Naciente del Río Tioyacu, A 14 km de la ciudad de se llega hasta el poblado de Segunda Jerusalén,'),
nl,write('desde allí se recorren 600 metros hasta la naciente del río. El río Tioyacu nace desde la base de la montaña,'),
nl,write('ubicada a 898 msnm. Es de aguas frías y cristalinas; a lo largo de su recorrido'),
nl,write('va formando pozas y cascadas naturales.').

                                                                                             
descripcion(lamas):- write('Ciudad:LAMAS.'),
nl,write('Podrás visitar (entre otros):'),
nl,
nl,write('-Museo Etnico de Lamas, A 22 km al noroeste de la ciudad de Tarapoto. Muestra la historia, costumbres'),
nl,write('y el folklore de la cultura quechua-lamista. Utilizando madera y arcilla, se ambientan las representaciones'),
nl,write('de algunas costumbres como el enamoramiento, el "lanta-tipina" o primer corte de pelo,'),
nl,write('la confección de sus vestidos con algodón nativo y fibras vegetales, el teñido y las danzas de los lamas'),
nl,
nl,write('-Cascada de Chapawanka, A 3 km de la ciudad de Tarapoto. Tiene 4 metros de altura'),
nl,write('y una poza de 2,5 metros de profundidad.'),
nl,write('Alpie de la cascada, se observa caer el agua sobre una base rocosa que la divide en dos torrentes.'),
nl,write('Está rodeada por un paisaje exuberante, vegetación conformada por pashacas, shapajas, quinillas, renacos,'),
nl,write('orquídeas y helechos y diversas aves, mariposas e insectos.').


descripcion(tarapoto):- write('Ciudad: TARAPOTO.'),
nl,write('Podrás visitar (entre otros):'),
nl,
nl,write('Laguna Azul, A 35 km desde la ciudad de Tarapoto se llega hasta el puerto López,'),
nl,write('desde allí se recorren 17, 5 km hasta la laguna Sauce Alcanza una extensión de 430,80 hectáreas'),
nl,write('y una profundidad aproximad de 35 metros, está a 650 msnm. Sus aguas tienen una temperatura que oscila'),
nl,write('entre los 25ºC (77ºF)a 28ºC (82,4ºF) y su color varía entre tonos verduscos o azulados.'),
nl,
nl,write('Cataratas de Ahuashiyaku, A 14 km al noroeste de la ciudad de Tarapoto  caída de agua de 40 metros de altura.'),
nl,write('Se ubica en e cerro La Escalera, a 465 msnm. Las aguas discurren sobre una roca rodeada de tupidos helechos,'),
nl,write('orquídeas y otras especies d árboles. La poza, de unos 12 metros de largo'),
nl,
nl,write('Lago Lindo, A 35 km al sureste de la ciudad de se llega hasta el distrito del Sauce,'),
nl,write('desde allí se recorre 1 km hasta la laguna (10 minutos en auto aproximadamente) Se formó como consecuencia '),
nl,write('de la acumulación de las lluvias en la parte baja del terreno. '),
nl,
nl,write('Petroglifos de Polish, A 8,5 km de la ciudad de Tarapoto  Son cinco piedras que han sido cuidadosamente'),
nl,write('decoradas con figuras de animales y plantas en bajo relieve; aún no se puede precisar la época'),
nl,write('a la que pertenecen.').


descripcion(juanjui):- write('Ciudad: JUANJUI.'),
nl,write('Podrás visitar (entre otros):'),
nl,                                                                                          
nl,write('-Cataratas del Breo, A 22 km al sur desde la ciudad de Juanjui, se llega hasta la localidad'),
nl,write('de Huicongo, desde allí se recorren 58 km hasta las cataratas (5 horas 10 minutos en balsa aproximadamente.'),
nl,write('Se ubican en la cuenca alta del río Huayabamba, sobre un macizo rocoso cubierto por vegetación '),
nl,write('de bosque primario típico de selva alta. La caída de agua es de aproximadamente 140 metros'),
nl,write('y presenta cuatro niveles. '),

nl,
nl,write('-Gran Pajatén, Complejo arqueológico atribuido a la cultura Chachapoyas (años 1200 a 1500 d.C.).'),
nl,write('Se ubica en la margen derecha del río Montecristo, a 2850 msnm dentro del Parque Nacional Río Abiseo.'),
nl,write('A primera vista, aparece cubierto por una densa vegetación. Las construcciones se extienden'),
nl,write('desde los flancos de la meseta hasta un sector denominado Las Palmas. Los edificios fueron'),
nl,write('construidos en diferentes niveles. ').

% 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 Presupuesto- Precio,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,Transporte).

presentacion:- nl, write('******************************************************'),
                                                                                              nl,
                                                                                              nl, write('          "INTELIGENCIA ARTIFICIAL"  '),
                                                                                              nl,
                                                                                              nl, write('       RESPONSABLES:'),
                                                                                              nl,
                                                                                              nl, write('       - Jarol Rivera Villacorta'),
                                                                                              nl, write('       - Milton Hernandez Castañeda'),
                                                                                              nl, write('       - Lleferson Guerra Inga'),
                                                                                              nl, write('       - Sergio Baltazar Panduro'),
                                                                                              nl, write('       - Johan Chavez Pinchi'),
                                                                                              nl,
        nl, write('******************************************************'),
                                                                                              nl,
nl, write('                                                                                SISTEMA EXPERTO EN TURISMO.    '),
nl,write('Para pasar un buen fin de semana en SAN MARTIN:'),
nl,                                                                                          
nl,write(' "Preferencias" puede ser: fiestas, montaña, norte, sur, rio, cultural, juerga o parque'),
nl,write(' Pulse "r" detrás de cada resultado para ver todas las posibilidades.'),nl.

% Final del Programa.                                                         

No hay comentarios:

Publicar un comentario

ENTRADAS POPULARES