Skytravel, Agente Viajero

14
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

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