La innovación tecnológica como agente de desarrollo ... - Zenodo
Skytravel, Agente Viajero
-
Upload
independent -
Category
Documents
-
view
0 -
download
0
Transcript of Skytravel, Agente Viajero
SKYTRAVEL, AGENTE VIAJERO Bruzual, R., Gil, A., Marquez, M., Perez, M.
Universidad de Los Andes
Mérida, Venezuela, 5101
{ricardo.bruzual.a,annyvanessag,mmarielb,businessat14 }@gmail.com
RESUMEN
En este artículo presentaremos el gestor de viajes Skytravel, es un agente inteligente que permite al
usuario facilitar la búsqueda de un viaje aéreo de manera fácil y rápida de acuerdo a sus intereses; este
agente puede darle sugerencias de viajes al usuario, a través del conocimiento de las actividades más
comunes que el cliente tiende a hacer o a repetir más; también el agente conoce los gustos del usuario y
considera los favoritos. Todo esto a través del manejo de Incertidumbre. Las herramientas tecnológicas que
nos permitieron llevar a cabo la implementación del proyecto fueron SWIPROLOG, ECLIPSE
Palabras claves: Agente Inteligente, Gestor de Viajes, JAVA, SWI-Prolog, Agente Viajero.
ABSTRACT
In this article we will present the travel manager Skytravel, is an intelligent agent that allows the user to
facilitate the search for air travel easily and quickly according to their interests; this agent can give tips to
the user, through the knowledge of the most common activities that the client tends to do or repeat more; the
agent also knows the user's tastes and considers the favorite. This is through the management of uncertainty.
The technological tools that allowed us to carry out project implementation were SWIPROLOG, ECLIPSE
Keywords: Intelligent Agent, Travel Manager, JAVA, SWI-Prolog, Travel Agent.
1. Introducción
Una gran variedad de servicios relacionados con los viajes
está creciendo enormemente por medios electrónicos, creando
una gran necesidad de acceso a estos servicios, en particular
por parte de los viajeros. La tecnología de agentes se adapta
particularmente bien a este tipo de contexto, en el que los
agentes pueden proporcionar ayuda a sus usuarios tanto en la
planificación del viaje como en su desarrollo.
El curso de Inteligencia Artificial nos ha enseñado las bases
teóricas necesarias para llevar a cabo la creación de un agente
inteligente aplicado a un problema específico, entre las cuales
están; representación con lógica de predicado, tipos de
Agentes, problemas de búsqueda, manejo de incertidumbre,
lógica temporal, ontologías, lógica difusa, planificación y
aprendizaje.
Con el fin de dar a conocer la gran variedad de ofertas
turísticas en países claves del mundo, se han desarrollado
portales Web que proporcionan información general
relacionada con destinos, costumbres, características, entre
otras. Sin embargo, realizar una elección a partir de estas
fuentes, acorde a los intereses o necesidades de los usuarios,
no es un área sencilla debido a la gran diversidad de opciones.
Es así como numerosas investigaciones se han enfocado en
el desarrollo de sistemas de información turística, tomando en
cuenta las preferencias de los usuarios, intentando emular la
interacción con los agentes de viaje. En este sentido, la
construcción de un sistema de viajes, basándose en perfiles de
usuarios, sería de gran utilidad para que éstos puedan obtener
recomendaciones que les permitan conocer y elegir destinos y
actividades adaptadas a sus necesidades e intereses.
En este trabajo, se describe el desarrollo de un Sistema
Basado en Conocimiento para recomendaciones de
información turística de algunos países, el cual maneja el
conocimiento sobre el ámbito turístico de los países
seleccionados y las preferencias de los usuarios relacionadas
con los destinos y atractivos. El sistema fue desarrollado
aplicando metodología SCRUM - MASINA [AGL*04].
En cuanto a la organización del trabajo se realizaron gran
cantidad de reuniones para ir desarrollando simultáneamente
la parte teórica y la implementación, en cada reunión nos
planteábamos objetivos que cumplir y nos dividíamos las
tareas, la evolución de las mismas consistía en investigar lo
planteado y buscar la herramienta tecnológica apropiada;
parte fundamental era la presencia a las reuniones de todos
los integrantes del grupo, para así llevar a cabo los
objetivos planteados.
Este artículo se encuentra estructurado de la siguiente
manera: en la próxima sección se presentan los conceptos
básicos y se describen algunas características del diseño de
nuestro agente. Luego, en la siguiente Sección, se muestra
cómo se desarrolló el Sistema Basado en Conocimiento para
hacer recomendaciones y escoger favoritos.
2. Marco Teórico
2.1. Descripción
Se trata de un especialista en gestionar viajes de un modo
totalmente planificado y acorde con las necesidades de
empresas o personas que lo contratan para controlar al
máximo el tiempo mínimo de vuelo y coste del viaje.
Básicamente se conforma así:
- Composición de servicios: el sistema debería
proporcionar una información integrada.
- Comparación de ofertas de servicios: el sistema
debería evaluar y proporcionar al usuario diferentes
dimensiones de servicios como precio u otras
experiencias del usuario.
- Aprendizaje del perfil del usuario: el sistema debería
ser cada vez más eficiente en cuanto a las
necesidades y hábitos del usuario.
Es decir, el Agente Inteligente viajero debe permitir al
usuario crear una cuenta para comprar boletos aéreos. Él
cuenta con una base de datos de los perfiles de los usuarios:
Datos básicos, frecuencia de tipos de viajes (Negocio o
turismo), época del año, actividades de interés (si es de
turismo) y presupuestos; en la que permitirá conocer sus
preferencias y dar recomendaciones a cada usuario.
Debe poder encontrar información en la web referente a
viajes, que es lo que el usuario está buscando. Si es un usuario
nuevo, elige la mejor opción. Si es un usuario que ya ha
realizado algún viaje antes con Skytravel, entonces el agente
debe ser capaz de aprender los viajes que el usuario ha hecho
y poder elegir la mejor opción de acuerdo a las preferencias de
cada cliente mediante su historial de viajes.
Skytravel podrá asesorar a un cliente con deseos de viajar
según una serie de preguntas (Clima preferido, Actividades
favoritas, intereses, cantidad de dinero) para sugerir posibles
destinos si este aún no ha decidido una ciudad y necesita
sugerencias. No será necesario preguntarlo cada vez que el
usuario necesite viajar.
2.2. Problema de Búsqueda
Algo indispensable en todos los tipos de agentes son los
algoritmos de búsqueda; [1] cuya función es permitir la
transición entre estados usando operadores, y controlar esos
movimientos. Estos algoritmos se clasifican de acuerdo a
los tipos de búsqueda, sabiendo que la búsqueda es el
proceso en el cual un agente, teniendo ante sí diversas
opciones, debe evaluar distintas secuencias de acciones
posibles que le conducen a estados cuyo valor se conoce o
no y luego decide irse por la mejor; una vez encontrada
una solución, se procede a ejecutar las acciones que este
recomienda.
2.3. Definición del Problema de búsqueda
Buscar los viajes a través de sugerencias sobre una
aplicación que permita escoger la mejor ciudad.
Objetivo: Escoger la ciudad que sea la mejor de acuerdo a
preferencias del cliente.
Problema:
Espacio de Estados (caminos): Recorridos de búsqueda, y
búsqueda por profundidad.
Figura 1. Diagrama del problema de búsqueda. Skytravel le muestra
al usuario las ciudades recomendadas que son seleccionadas si llenan
totalmente las preferencias del cliente, usando porcentajes, partiendo de los costos.
Acciones (operadores): Buscar atributos entre ciudades
Estado Inicial: Preferencias del Cliente.
Estado Objetivo: Buscar las ciudades que tengan la mayor
cantidad de coincidencias con sus gustos y recomendarlas.
Solución: recorrido entre ciudades.
Algoritmo de Búsqueda a usar: A*(Para búsqueda).
Utilizamos el siguiente estándar:
Planificación del Viaje.
Servicios: Enriquecimiento semántico, sugerencias.
Estado Inicial: Perfil del usuario, ciudad de origen,
Preferencias
Objetivos: Obtener posibles destinos que tengan similitud a las
preferencias del cliente en cuanto a idioma, actividades de
interés, clima, entre otros.
Espacio de Estados: Recorrido por los nodos que serán las
Ciudades, para buscar los que tienen similitudes con sus
preferencias. Cada nodo o ciudad tendrán una descripción
precisa para hacer dichas comparaciones
Acción: Encontrar varias opciones para los destinos con
mayor similitud.
Algoritmo de búsqueda: en profundidad (DFS para identificar
sugerencias) y de búsqueda heurística (A* para armar
paquetes de las ciudades recomendadas de acuerdo a
preferencias del cliente).
2.4. Casos de Uso UML planteados para el desarrollo
del problema de búsqueda
Caso de uso 001:
Descripción: Permite al actor proveer la información para
crear su cuenta.
Nombre: Crear cuenta.
Actores: Usuario.
Tópico a utilizar: Aprendizaje.
Pre condiciones: El actor debe poseer correo electrónico y
debe estar navegando en la aplicación web.
Post condiciones: El actor debe quedar registrado.
Flujo normal:
1. El sistema solicita ingresar nombre, correo y contraseña.
2. El sistema verifica los datos y crea la cuenta.
3. El sistema Inicia la sesión y le hace preguntas referentes a
sus gustos.
4. El sistema muestra su perfil.
Flujo Alternativo:
2.1 El sistema verifica los datos, si los datos son incorrectos le
dice al actor y le permite corregirlos.
Caso de uso 002:
Descripción: Permite al actor ingresar al sistema, por medio
de su correo y clave.
Nombre: Ingresar al sistema.
Actores: Usuario.
Tópico a utilizar: Búsqueda.
Pre condiciones: El actor debe estar registrado en el sistema.
Post condiciones: El actor debe estar dentro de su sesión lo
que le permite realizar búsquedas de acuerdo a sus
preferencias.
Flujo normal:
1. El sistema solicita ingresar correo y clave.
2. El sistema verifica los datos y abre la ventana principal.
Flujo Alternativo:
2.1 El sistema verifica los datos, si los datos son incorrectos le
informa al actor y le permite corregirlos.
Caso de uso 003:
Descripción: Permite al actor realizar la búsqueda de un viaje
a una determinada ciudad.
Nombre: Realizar una búsqueda.
Actores: Usuario.
Tópico a utilizar: búsqueda, aprendizaje y razonamiento.
Pre condiciones: El actor debe haber iniciado sesión.
Post condiciones: El actor puede visualizar los resultados de
su búsqueda.
Flujo normal:
1. El sistema realiza la búsqueda de la ciudad ingresada.
2. El sistema muestra los resultados obtenidos.
Flujo Alternativo:
El sistema realiza la búsqueda y si no hay resultados muestra
un mensaje informando que no se encontraron resultados.
Caso de uso 004:
Descripción: Permite al actor aceptar sugerencias que le
brinda el agente respecto a las ciudades que debería visitar.
Nombre: Aceptar sugerencia.
Actores: Usuario.
Tópico a utilizar: Aprendizaje y razonamiento
Pre condiciones: El actor debe haber iniciado sesión.
Post condiciones: El actor puede visualizar las ciudades
sugeridas por el agente.
Flujo normal:
1. El actor pulsa el botón “aceptar sugerencias”.
2. El sistema muestra los enlaces.
Flujo Alternativo:
El sistema no muestra los enlaces sugeridos, va a la pantalla
de inicio.
Caso de uso 005:
Descripción: Permite al actor identificar los atributos
favoritos de las ciudades que le interesan.
Nombre: Guardar atributos favoritos.
Actores: Usuario.
Tópico a utilizar: aprendizaje.
Pre condiciones: El actor debe estar dentro de su perfil y debe
haber realizado al menos una búsqueda previamente.
Post condiciones: El actor puede visualizar los enlaces
guardados en “favoritos” en cualquier momento que desee.
Flujo normal:
1. El actor pulsa el botón “guardar en favoritos”.
2. El enlace queda guardado en “favoritos”.
Caso de uso 006:
Descripción: Permite al actor comunicarle al agente acciones
que desee llevar a cabo. Como por ejemplo: Mostrar ciudades
de interés, reservar viaje, etc.
Nombre: Querer.
Actores: Usuario.
Tópico a utilizar: búsqueda, razonamiento y aprendizaje.
Pre condiciones: El actor debe estar dentro de su perfil.
Post condiciones: El actor puede visualizar la información de
las acciones a realizar que le solicita al agente. (Mostrar
ciudades de interés, reservar viaje, etc.)
Flujo normal:
1. El usuario le comunica al agente (por medio texto), de
alguna acción que desea realizar.
2. El sistema le muestra la información relacionada a dicha
acción.
Flujo Alternativo:
2.1 El sistema no encuentra nada relacionado a la acción que
desea realizar el actor y se lo deja saber.
Caso de uso 007:
Descripción: Permite al agente realizar cobros desde la
aplicación web.
Nombre: Hacer cobro
Actores: Usuario.
Tópico a utilizar: búsqueda, razonamiento y aprendizaje.
Pre condiciones: Haber seleccionado un lugar a visitar.
Post condiciones: El actor paga su viaje al destino deseado.
Flujo normal:
1. El sistema verifica que el “lugar” esté dentro de las
preferencias del cliente.
2. El actor presiona el botón “comprar”.
Flujo Alternativo:
El sistema verifica que el “lugar” posea al menos un atributo
que el actor prefiera, mostrándole a su vez sugerencias de
otros lugares que le pueden interesar.
Caso de uso 008:
Descripción: Permite al actor conocer su próximo viaje de
acuerdo a las ciudades que le sean sugeridas y guardar ese
posible destino, en el servidor.
Nombre: Explorar ciudad (es) a visitar.
Actores: Usuario.
Tópico a utilizar: búsqueda y aprendizaje.
Pre condiciones: El actor debe estar dentro de su perfil.
Post condiciones: El actor posee su lista de sugerencias de
ciudades a visitar guardada.
Flujo normal:
1. El actor presiona el botón “explorar ciudad (es)”.
2. El sistema verifica que la búsqueda haya sido exitosa, y
envía esos datos al servidor.
Flujo Alternativo:
2.1 El sistema verifica que la búsqueda haya sido exitosa y de
no ser así se lo hace saber al actor para volverlo a intentar.
2.5. Diagrama de Actividades
Figura 2. Diagrama de Actividades.
2.6. Modelo matemático
El usuario selecciona una serie de preferencias (clima, tipo
de relieve, idioma, moneda y religión). Cada nodo ciudad
tendrá una descripción donde se especifica cada una de estas
condiciones. Para el recorrido del grafo usamos el algoritmo
de profundidad, no estamos considerando los costos, solo
hacemos comparaciones.
Este algoritmo visitará todas las ciudades y cada vez que
encuentre una ciudad que llene un porcentaje de las
preferencias del cliente la ciudad será guardada en una lista de
ciudades recomendadas.
Figura 3. Grafo de Ciudades
Cliente:
Las ciudades recomendadas van hacer guardadas con un
porcentaje de posible aceptación superior a un 50 % de
coincidencia. Ejemplo de comparación.
Tabla 1. Ejemplo de Comparacion entre Ciudades
2.6.1. Recomendación
En las preferencias del cliente tendremos 4 atributos que
corresponden al clima, actividades, tipo de viaje y tipo de
relieve. Y cada ciudad tendrá en sus características, los
mismos atributos; entonces la función comparación es
Si Cliente_atributo(i) es igual ciudad_atrib(i)
entonces
pref (i)=1
Sino pref(i)=0
La siguiente función permite obtener un porcentaje para
considerar la ciudad como recomendable o no.
Si encuentra una ciudad que cumpla con un mínimo del 50
%, Skytravel la considera como recomendación para el cliente.
Si P(n) > 50
entonces
Mientras no sea el final de la lista
Si P(n)> porcentaje de lista(j)
guardamos en la lista la ciudad en la posición j
Para guardar las ciudades que llenen más del 50 %
usaremos una estructura tipo lista donde se irá almacenando
cada ciudad y su porcentaje de aceptación de manera
descendente según el porcentaje. Tabla 2Ciudades Almacenadas por Preferencias del Usuario
2.6.2. Diseño Final
Skytravel debe dar una buena recomendación al cliente que
se ajuste a sus gustos y a un precio mínimo. La función en
general debe maximizar el porcentaje de recomendación y
minimizar el costo de los vuelos.
2.7. Tabla de Servicios:
Tabla 3.Tabla de Servicios
Servicios: Buscar Evento, Insertar Evento, Eliminar Evento,
Posponer Evento
Estado inicial: Nodo inicial (Ciudad actual)
Objetivo: Informar al usuario sobre dicho evento.
Espacio de Estados: Recorrido por Eventos (Nodos)
Acciones: Desplazarse sobre los eventos (Nodos)
Función Costo: Tiempo de ejecución y memoria utilizada
Algoritmos de Búsqueda: Búsqueda, y búsqueda de
profundidad
3. Diseño del Agente
De acuerdo a investigaciones realizadas, inicialmente
el Problema del Agente Viajero (TSP por sus siglas en inglés)
o problema del viajante, es aquel en el que se responde a la
siguiente pregunta: Dada una lista de ciudades y las distancias
entre cada par de ellas, ¿cuál es la ruta más corta posible que
visita cada ciudad exactamente una vez y regresa a la ciudad
origen? Siendo este un problema NP-duro en optimización
combinatoria, muy importante en la investigación de
operaciones y en la ciencia de la computación.
Aunque el problema es computacionalmente complejo, una
gran cantidad de heurísticas y métodos exactos son
conocidos, de manera que, algunas instancias desde cien hasta
miles de ciudades pueden ser resueltas, aplicado y orientado
más en este caso, obtener sugerencias y favoritos. También
nos fundamentamos en el estándar de la IEEE, FIPA
(Foundation for Intelligent Physical Agents) que posee una
clasificación de Agente de Viajes Personal, material único
para el desarrollo de nuestro proyecto.
3.1. Manejo de Incertidumbre
3.1.1. Lógica de Predicados
3.1.1.1. Realizar Sugerencias
El agente inteligente, tendrá la capacidad de poder realizar
sugerencias del viaje a partir de un cuestionario que realiza el
usuario sobre sus preferencias y buscará las ciudades que
tengan la mayoría de las coincidencias para hacer la
sugerencia.
Medidas de rendimiento:
-Número de sugerencias que el agente ofrece.
-Tiempo de ejecución.
Razonamiento: Parte de las premisas de las preferencias del
usuario para buscar las ciudades que satisfagan mejor sus
gustos conocidos, por lo que lleno el cuestionario para buscar
la ciudad.
Vocabulario:
A1= Atributo1, A2= Atributo 2, A3= Atributo 3, A4= Atributo 4, Al
= Alternativa, Au= Ausente, C = Cliente, Ci =Ciudad, Ca =
Características, E = Equivalente, Ec= Económico, Gu = Gusto,
Su = Sugerencia, V = Viaje, R = Relieve, Cl = Clima, At =
Atracciones, I = Idioma
Sentencias Lógicas:
- ∀x,y,r,c,a,i
C(x)^Ci(y)^R(r)^Cl(c)^At(a)^I(i)^Gu(x)(A1(r)^A2(c
)^A3(a)^A4(i))^Ca(y)(A1(r)^A2(c)^A3(a)^A4(i)) ->
Su(y)
Para todo cliente que le guste una ciudad que cumpla ciertos
atributos y que en la lista de destinos exista una ciudad con esos
atributos como características, entonces la ciudad es sugerida.
- ∀x,y,z Ci(x)^Ci(y)^C(z)^E(x,y)^
Gu(z)(A1(r)^A2(c)^A3(a)^A4(i))^
))^Ca(x)(A1(r)^A2(c)^A3(a)^A4(i))^ ))^
Ca(y)(A1(r)^A2(c)^A3(a)^A4(i)) -> Su(x)^Su(y)
Para toda ciudad, si existe una ciudad con características
equivalentes, pero solo una cumple las preferencias del cliente,
se sugieren las dos ciudades.
- ∀x,y,z C(x) ^Ci(y)(A1^A2^A3 ^A4)^V(z)^Ec(z) ->
Su(y)
Para todo cliente que le guste las características de una ciudad
y considere el costo del viaje como económico, entonces la
ciudad es sugerida.
3.1.1.2. Ciudades Favoritas
Skytravel permite que el usuario califique una ciudad de 1 a 5 como
indicador de favorita. Si la ciudad logra un una buena calificación, es
decir mayor a 4, puede ser considerada como sugerencia en este viaje o
en otro que el mismo cliente o sus amigos, deseen realizar.
Supongamos también que el cliente ha realizado varios viajes con
Skytravel, esto facilita al agente poder hacer inferencias sobre gustos
particulares basados en los atributos que tienen en común estas ciudades
y así dar una sugerencia de destino(s).
Medidas de rendimiento: Debemos considerar que si el cliente ha
realizado varios viajes usando Skytravel podemos tener una base para
establecer relaciones de sus gustos con lo común que ofrecen las ciudades
en la lista.
- Aprendizaje del agente con el cliente.
- Número de sugerencias que el agente ofrece.
- Tiempo de ejecución.
Razonamiento: El cliente ha visitado con Skytravel 10 ciudades,
escogemos las que el cliente calificó como buenas, empezamos a realizar
comparaciones con las características (atributos) de cada ciudad; si
encontramos una característica en común en todas las ciudades o en la
mayoría de ellas podemos inducir que por ser un patrón repetitivo, es un
gusto particular del cliente y se puede tener en cuenta esa característica
para futuras recomendaciones.
De manera análoga si tenemos en cuenta las ciudades que fueran
calificadas menor a tres podemos buscar patrones que se repitan (como
las características) y deducir que es lo que no le gusta al cliente y
descartar las ciudades que tienen esta característica cuando se hacen las
sugerencias de posibles destinos. Pero esto no se cumple necesariamente,
también pueden ser coincidencias entre las ciudades calificadas como
malas por otros factores, por ejemplo: hubo un cambio drástico del clima,
ocurrió algún desastre natural, entre otros.
De esta forma Skytravel empieza a conocer al cliente.
3.1.2. Lógica Difusa
[1] Un conjunto difuso posee como lógica subyacente
Una lógica multivaluada, y permite la descripción de
conceptos en los cuales la transición entre poseer una
propiedad y no poseerla, no son claros.
Figura 4.Funcionamiento de un Sistema Difuso
Cada cliente puede guardar una calificación de la ciudad que
visitó en una escala de 1 a 5.
Ilustración 5. Valoración de Ciudades
A partir de estas valoraciones, SkyTravel puede agregar
ciertos factores que cambian a diario, dándole cierto grado de
incertidumbre a que recomendar cada día según factores como
costo, contaminación y seguridad.
Skytravel usa un sistema difuso que tiene como:
Variables de entrada: costo, contaminación, y seguridad
Variables de salida: recomendación diaria
3.1.2.1. Variables Lingüísticas
Si una variable puede tomar “palabras” en un lenguaje
natural (por ejemplo, pequeño, rápido, etc.) como valores,
entonces esa variable define una variable lingüística. Estas
palabras generalmente son etiquetas de conjuntos difusos.
X es la variable lingüística costo
A(costo)={Muy costoso, no tan costoso, poco costoso}
Universo de discurso U[0, 0.1 , 0.2 .. 1]
Y es la variable lingüística contaminación
A(contaminacion)={alta, regular, baja}
Universo de discurso U[0, 0.1 , 0.2 .. 1]
Z es la variable lingüística seguridad
A(seguridad)={Seguro, no tan seguro, poco seguro}
Universo de discurso U[0, 0.1 , 0.2 .. 1]
S es la variable lingüística Recomendación
A(Recomendacion)={recomendable, no recomendable}
Universo de discurso U[0, 0.1 , 0.2 .. 1]
3.1.2.2. Base de reglas difusas:
Si la ciudad tiene un nivel de contaminación alto, mala
seguridad y es muy costosa entonces la ciudad no es
recomendable.
Si la ciudad tiene un nivel de contaminación bajo, buena
seguridad y es poco costosa entonces ciudad es recomendable.
Si la ciudad tiene un nivel de contaminación bajo,
inseguridad y es muy costosa entonces la ciudad no es
recomendable
Si la ciudad tiene un nivel de contaminación bajo, no es tan
segura y es muy costosa entonces la ciudad no es
recomendable
Si la ciudad tiene un nivel de contaminación bajo, no es tan
segura y es poco costosa entonces la ciudad es recomendable
Si la ciudad tiene un nivel de contaminación bajo, es segura
y no es tan costosa entonces la ciudad es recomendable
Si la ciudad tiene un nivel de contaminación bajo, es
insegura y no es tan costosa entonces la ciudad no es
recomendable.
Si la ciudad tiene un nivel de contaminación alto, es
insegura y no es tan costosa entonces la ciudad no es
recomendable.
3.1.2.3. Operaciones difusas
Para los conjuntos difusos A y B en el mismo universo
U, tenemos:
– Unión:
μΑ∪Β = μΑ(x)∨μΒ(x) = {x/max(μΑ(x), μΒ(x)) ∀
x∈U}
3.1.2.4. Base de Reglas
La lógica difusa puede ser representada por implicaciones
difusas del tipo A => B (condición/acción), si A entonces B,
donde A y B son proposiciones difusas.
La inferencia borrosa es basada en implicaciones borrosas y
las reglas de inferencia derivadas de estas=>proceso deductivo
llamado modus ponens.
Figura 6. Diagrama de Manejo de Incertidumbre Difusa
3.1.2.5. Modelo Difuso:
Se accede al Toolbox de Lógica Difusa ingresando la
palabra Fuzzy en la ventana de comandos de Matlab.
Definimos como variables de entrada:
Costo,
Contaminación,
Seguridad.
Y como variables de la salida:
Recomendación diaria.
Figura 7. Definición de las Variables de Entrada y Salida
Se definen los siguientes valores para las variables de
entrada (Costo, Contaminación, y Seguridad).
Figura 9. Variable de Entrada Costo tiene los rangos de Barato, Accesible,
Caro
Se
defin
Figura 10. Variable de Entrada Contaminación tiene los rangos de Sin_Contaminación, Poco_Contaminado,
Muy_Contaminado
Figura 8. Variable de Entrada Seguridad tendrá los rangos de Seguro, No_tan_seguro, Inseguro.
en los siguientes valores para la variable de salida:
Figura 11. Variable de Salida Recomendación Diaria, que está entre los
rangos Ciudad_muy_interesante, Ciudad_Interesante y Ciudad_no _tan_interesante
Teniendo las funciones de las variables establecidas,
tenemos que ingresar las reglas a nuestro sistema, como son
algunas:
a. SI Costo = Barato ENTONCES Recomendación =
Ciudad_muy_interesante
b. SI Costo = Accesible ENTONCES Recomendación
= Ciudad_Interesante
c. SI Costo = Caro ENTONCES Recomendación =
Ciudad_no_tan_interesante
d. SI Contaminacion = Sin_Contaminacion
ENTONCES Recomendación =
Ciudad_muy_interesante
e. SI Contaminacion = Poco_Contaminado
ENTONCES Recomendación = Ciudad_Interesante
f. SI Contaminacion = Muy_Contaminado ENTONCES
Recomendación = Ciudad_no_tan_interesante
g. SI Seguridad = Seguro ENTONCES Recomendación
= Ciudad_muy_interesante
h. SI Seguridad = No_tan_seguro ENTONCES
Recomendación = Ciudad_Interesante
i. SI Seguridad = Inseguro ENTONCES
Recomendación = Ciudad_no_tan_interesante
j. SI Costo = Barato ^ Contaminacion =
Sin_Contaminacion ^ Seguridad = Seguro
ENTONCES Recomendación =
Ciudad_muy_interesante
k. SI Costo = Barato ^ Contaminacion =
Poco_Contaminado ^ Seguridad = Seguro
ENTONCES Recomendación = Ciudad_interesante
l. SI Costo = Barato ^ Contaminacion =
Muy_Contaminado ^ Seguridad = Seguro
ENTONCES Recomendación =
Ciudad_no_tan_interesante
m. SI Costo = Barato ^ Contaminacion =
Sin_Contaminacion ^ Seguridad = No_tan_Seguro
ENTONCES Recomendación = Ciudad_interesante
n. SI Costo = Accesible Barato ^ Contaminacion =
Sin_Contaminacion ^ Seguridad = No_tan_seguro
ENTONCES Recomendación =
Ciudad_no_tan_interesante
Figura 12. Gráfico de Reglas Difusas
3.2. Planificación
Lo que corresponde a planificación como base usando
prolog, se observa que el uso de varias herramientas como
tuprolog era muy limitadas; pues no nos brindaban los
elementos necesarios como swi-prolog. . Al optar por la
modalidad de Servidor-Cliente, nos dió mucha versatilidad
con el manejo entre Java, prolog y Programación Web. El
Servidor esta hecho en java el cual hace una conexión con la
base de conocimiento que está hecho en prolog, mientras que
el cliente está hecho en Web HTML que es el que va a enviar
las peticiones al servidor y el mismo espera la respuesta.
Teniendo claro que la planificación es un proceso mediante
el cual un agente busca un plan para lograr cierto objetivo, la
manera en que empleamos el concepto acorde al agente
viajero fue la siguiente:
Capacidad de Planificarse: Como parte del desarrollo
cognitivo del agente, se plantea como una herramienta
fundamental.
SkyTravel, por su parte, posee dos aéreas de uso de
planificación:
3.2.1. Planificación de eventos por sugerencia
El agente tiene como una de las características principales
hacer sugerencias al usuario sobre viajes que podría realizar.
Basándose en el conocimiento adquirido previamente (Base
del Conocimiento), SkyTravel será capaz de sugerir acciones
que pueda realizar el usuario según su perfil.
Ejemplo Ir a una ciudad(x)(PC= “Quiero ir a..
Características de la ciudad”)
Inicio: tener(caracteristicas) ^En(consola)
Objetivo: Guardar(IrACiudad(x))
Operadores: ir(aplicacion), guardar(evento)
3.2.2. Planificación de eventos por petición
El usuario tendrá la oportunidad de pedir a SkyTravel ayuda
para organizar algunos eventos.
SkyTravel, por su parte, deberá ayudarlo generando un plan
de acción que responda a las órdenes del usuario.
Ejemplo: Organizar Viaje. (PC= “hacer viaje”).
Inicio: tener(preferencias) ¬tener(paquetesDeViajes)
En(consola)
Objetivo: (Guardar(ciudades)^Confirmados(vuelos) ^
tener(paquetesDeViajes))
Operadores: ir(aplicacion),llamar(aereolineas),guardar(evento)
descargar(paquetesDeViajes), confirmar(vuelos)
Planes mediante Strips: Se muestran los nombres de las
acciones que el agente puede realizar, y en qué condiciones
iníciales se debe encontrar para poder cumplir el objetivo
mediante acciones; con STRIPS obtenemos la idea o el
concepto para llevarlo a una mínima expresión con el
propósito de que tenga la misma que se planteaba
normalmente.
Si se trata de un cliente ya registrado: Pide al usuario su
correo y contraseña Panel principal.
Una vez que el cliente este en el panel principal el agente
podrá realizar alguna de las siguientes tareas:
• Recomendar ciudades.
• Mostrar favoritos.
• Mostrar lista de países.
• Mostrar al usuario como reservar un viaje.
• Mostrar las ciudades más visitadas.
• Integrar redes sociales.
Una vez que el cliente haya elegido alguna de las opciones
anteriores, el agente procederá a armar un plan conforme el
cliente vaya solicitando las acciones.
• Si el cliente elige recomendar ciudades, el agente
basado en los gustos del cliente, procederá a
recomendarle dichas ciudades que más se aproximen
a sus gustos.
• Si el cliente elige mostrar favoritos, el agente le
mostrará la lista de sus ciudades favoritas, dándole la
opción de cambiarlas.
• Si el cliente elige mostrar como reservar un viaje, el
agente deberá enseñarle una serie de pasos de cómo
debe reservar.
• Si el cliente quiere integrar redes sociales, el agente
deberá mostrarle una lista de las redes sociales más
usadas y permitir el acoplamiento entre estas y la
cuenta del usuario en SkyTravel para que sus amigos
puedan ver sus destinos.
Otras de las tareas que el agente podrá realizar son:
• Crear la ruta desde la ciudad de origen del cliente
hasta la ciudad que haya elegido como destino.
• Seguir a disposición del cliente por si necesita
realizar algún cambio.
• Ayudar al cliente ante una duda.
Si se trata de un nuevo usuario:
• Permitir que el cliente cree su cuenta.
• Mostrar al cliente el cuestionario de preferencias.
• Mostrar lista de países.
• Mostrar al usuario como reservar un viaje.
• Mostrar las ciudades más visitadas.
• Integrar redes sociales.
3.3. Aprendizaje:
Un sistema aprende cuando es capaz de experimentar
modificaciones estructurales y/o funcionales, de acuerdo con
la experiencia, en vista a conseguir mayor eficacia en su
interacción con el medio.
El aprendizaje se da a partir de la interacción continua con el
usuario, el agente inicialmente no tiene idea de los gustos o
preferencias del usuario, a medida que el usuario haga
búsquedas, organice viajes y enseñe al agente sobre sus
preferencias, esté mejorara su habilidad para dar sugerencias y
generar viajes que mejor se ajusten al usuario. El agente jamás
deja de aprender y ajustar sus parámetros de búsqueda.
Se usa como método de aprendizaje la Inferencia inductiva
CB U ? => C
Establecer una hipótesis P que permita determinar el papel
de la información C respecto a la estructura lógica contenida
en CB.
CB = conocimiento base, todo lo conocido dependiente o
no del dominio
P = premisa (regla o hecho del dominio de aplicación)
C = consecuente
Skytravel es capaz de aprender los gustos y preferencias de
un cliente por sus viajes, si las ciudades que visitó las calificó
como favoritas y entre ellas predomina el clima frio; se puede
conocer un gusto por este clima y así con todas la
preferencias. Si (varias ciudades tienen un mismo tipo de
atributo) en ciudades favoritas de cada cliente entonces:
-Al cliente i le gusta el atributo de tipo j
h= induce(Tipo de atributo j le gusta)
3.3.1. Gustos del Cliente:
Figura 13. Grafo usado para representar los gustos del cliente
3.3.2 Aprendizaje de Conceptos
Ciudades favoritas de un determinado cliente.
Objetivo: Aprender el concepto “clima, relieve, costo e
idioma que le gustan al cliente”
Notación y Terminología:
Conjunto X de instancias x de instancias
<Frio (2/4), Mont.(2/4), No tan cost(3/6), espanol(2/4)>
Concepto o función objetivo: Lo que se desea aprender.
En principio no se conoce
Solo se conocen algunos ejemplos
Conjunto de entrenamiento
Objetivos de aprendizaje: Encontrar h tal que, para cada uno
de los atributos cuyo valor será el mayor entre él, para cada
grupo.
Ejemplo de hipótesis aprendida para una instancia:
<Frio, Mont., No tan cost, ingles? >
<Frio, Mont., No tan cost, espaNol >
Se puede inducir que al cliente le gusta el clima frio, relieve
montañoso e idioma español.
4. Modelo de Inteligencia de Skytravel:
5. Producto
Figura 13. Grafo usado para representar los gustos del cliente
Figura 14. Diagrama de Actividades
Figura 15. Modelo Inteligente
El producto fue realizado en Java, llevándose a una
aplicación grafica a través de JFrame. Se utilizó la
implementación SWI-Prolog-Java para lograr algunos
métodos de recomendaciones. A continuación se presentas
algunas capturas de pantalla de cada una de las tareas que
fueron implementadas en el producto.
Figura 16.Principal
Figura 17.Buscar Vuelo
Figura 18.Información de Vuelo
Figura 19.Compra Pasaje
Figura 20.Registrar Usuario
Figura 21.Inicia Sesion
Figura 22.Menu Usuario
Figura 23.Menú Recomendaciones
Figura 24.Recomendaciones Personales
Figura 25.Otras Recomendaciones
Figura 26.Clasificar Ciudades
Figura 27.Obtener preferencias de usuario
6. Conclusiones
El aporte fundamental de este trabajo es que logra integrar
en un solo agente varias habilidades de la IA para organizar
viajes: poder razonar, planificarse, aprender, entre otras. Para
ello, se usan un conjunto de técnicas de la IA, que permiten
implantar esas capacidades. Así, hemos presentado el diseño
de un agente inteligente usando las técnicas apropiadas,
integrándolas en el agente de una manera adecuada.
Referencias
[AGL*04] ALONSO, A., GUIJARRO, B., LOZANO, A.,
PALMA, J.T., TABOADA, M.J. Ingeniería del
Conocimiento. Aspectos Metodológicos. (2004).
Madrid: Pearson Educación, S.A