Este documento describe la simulación de un agente carro repartidor que aplica el algoritmo A* para encontrar la mejor ruta entre dos puntos en una ciudad. Se presenta el problema, los fundamentos teóricos sobre agentes y algoritmos de búsqueda informada como A*, y la especificación del proyecto incluyendo la interfaz y el funcionamiento de la simulación usando NetBeans. Finalmente, se describe la base de conocimiento del agente implementada en RDF.
1. Simulación de un Agente Carro Repartidor aplicando el algoritmo A*
en la búsqueda de la mejor ruta
María Esther Ruilova Rojas [*]
Escuela de Ciencias de la Computación
Universidad Técnica Particular de Loja
meruilova@utpl.edu.ec
Resumen. En este trabajo se presenta una solución al problema de encontrar la mejor ruta en el
desplazamiento de un punto a otro dentro de una ciudad. Para esto se utilizó el algoritmo A* que
pertenece a la familia de algoritmos de la búsqueda informada, cuya principal característica es
encontrar, si la hay, la mejor ruta hacia su destino. Para tal efecto, se realizó el planteamiento del
problema aplicando conceptos de Inteligencia Artificial, se efectuó el desarrollo teórico de la solución
planteada. Además encontrarán la base de conocimientos del agente de la cual aprenderá, la misma
que fue realizada en RDF. Finalmente las conclusiones que son el resultado de la ejecución del
presente proyecto.
Palabras Claves: Inteligencia Artificial, Algoritmos de Búsqueda, A*.
1. INTRODUCCIÓN
Desde hace muchos años la Inteligencia Artificial se ha enfrentado al reto de crear agentes inteligentes, capaces
de no sólo hacer lo que les diga su creador sino también capaces de aprender de sus percepciones para tomar
decisiones adecuadas e inteligentes.
Pero ¿cómo poder hacer esto? Dentro del estudio de la Inteligencia Artificial existen familias de algoritmos que
permiten que los agentes encuentren su objetivo de forma más eficaz y eficiente, logrando de esta forma ahorrar
recursos de tiempo y espacio; los algoritmos de búsqueda informada manejan heurísticas que nos permiten
establecer lineamientos para llevar a cabo dicha búsqueda.
Básicamente, el presente proyecto se basó en la simulación de un Carro Repartidor el cuál se mueve a través de
las principales calles de la ciudad de Loja, desde cualquier punto hacia otro, estableciendo las distancias entre
puntos y las distancias en línea recta hacia cada uno de los puntos Se ha aplicado el algoritmo A*, que es un
algoritmo que se caracteriza por encontrar siempre una solución en caso que exista.
1.1 Problemática
El presente agente, se basa en encontrar la ruta más corta desde un punto origen a un punto objetivo, tomado en
cuenta las distancias en línea recta desde San Sebastián (punto origen) hacia cualesquier punto y las distancias
entre los diferentes puntos conectados. Como se mencionó antes, el entorno son las principales calles de la
ciudad de Loja establecidas previamente.
El agente carro podrá desplazarse desde cualquier punto origen hacia otro, sin excepción alguna.
2. 1.2 Objetivos
El objetivo del presente trabajo es simular un agente inteligente aplicando técnicas de inteligencia artificial,
especialmente algoritmos de búsqueda informada, A*, y que dicho agente llegue a su objetivo con el menor
costo basándose en la heurística establecida.
Determinar por qué los algoritmos de búsqueda informada son más efectivos que los de búsqueda no informada.
2. FUNDAMENTOS TEÓRICOS
2.1 Agente
“Un agente no es más que cualquier cosa capaz de percibir su medio ambiente con la ayuda de sensores y actuar
en ese medio utilizando actuadores ”. [1]
2.2 Agente Racional
Es aquel que hace lo correcto, para de esta manera obtener un mejor resultado.
2.3 Tipos de agentes
A los agentes se los puede clasificar en 4 categorías principales [1]:
• Agentes reactivos
• Agentes reactivos basados en modelo
• Agentes basados en objetivos
• Agentes basados en utilidad
Se hace referencia a los agentes reactivos basados en objetivos ya que es el tipo de agente implementado en el
presente trabajo.
Es un agente basado en objetivos ya que se basa en alcanzar un objetivo (nodo objetivo), haciendo una búsqueda
en función a la heurística y el algoritmo aplicado, en este caso el Algoritmo A*, que pertenece a la familia de
algoritmos de búsqueda informada.
2.4 Estrategias de Búsqueda informada
Las técnicas de solución de problemas de IA, llevan incorporado un proceso de búsqueda. Este proceso de
búsqueda puede visualizarse a través de un árbol de recorrido donde constan los nodos, en este caso los distintos
lugares de la ciudad, y las aristas que indican con qué lugares se conectan los puntos.
2.4.1 Búsqueda A*: minimizar el costo total estimado de la solución
También conocida como la búsqueda primero el mejor. Lo que hace es evaluar los nodos combinando g(n), el
coste para alcanzar el nodo, y h(n), el coste de ir al nodo objetivo.
De esta manera se tiene la heurística:
f(n)= coste más barato estimado de la solución a través de n
f(n)= g(n) + h(n)
Básicamente lo que hace es tomar ambos valores y expande el nodo de menor coste, considerando al final todos
los valores de los nodos escogidos hasta alcanzar el objetivo. De esta manera garantiza que se encuentre la mejor
solución, es decir la de menor costo, para llegar al objetivo. Además la principal característica de este algoritmo
es que siempre va a encontrar una solución en caso de que exista.
3. 3. ESPECIFICACIÓN DEL PROYECTO
3.1 Entorno
El agente carro repartidor se desenvolverá en un entorno totalmente observable y determinista, esto, ya que
efectuará la búsqueda dentro de un entorno conocido (en este caso, las principales calles de la ciudad de Loja),
para llegar a su destino.
Como las rutas están predefinidas, el agente se desenvolverá en un ambiente estático.
Fig.1. Mapa de los principales puntos de la ciudad hacia donde se puede dirigir el agente
3.2 Tipo de agente
El agente implementado es del tipo reactivos basado en objetivos. El usuario debe indicarle al agente los puntos
de origen y destino. Además debe contemplar los costos del camino que incluyen las distancias entre los puntos
más las distancias en línea recta hacia ese punto objetivo.
Es una gente individual, ya que es un agente único, el cual debe valerse por sí mismo para llegar a su destino
escogiendo la mejor ruta.
3.3 Descripción REAS
El siguiente gráfico muestra la descripción de trabajo del agente carro [1].
4. Fig.2. Descripción REAS del agente
Además, en la Fig. 3, se puede visualizar la base de conocimiento que sirvió para general la ontología.
3.4 Especificación del problema
La estructura del árbol se visualiza en la fig.3, en la cual se observan los nodos y sus conexiones, esto varía
dependiendo de los datos origen y destino.
La especificación para el presente problema es:
• Estados: Mapa con los principales puntos de la ciudad de Loja.
• Estado inicial: depende del estado que le indique el usuario.
• Estado objetivo: depende del estado que le indique el usuario.
• Función sucesor: será el nodo expandido con el menor valor que le permita llegar a su objetivo.
• Test objetivo: Comprobar que el nodo objetivo ha sido alcanzado.
• Costo del camino: Cada paso al siguiente nodo aumenta según las distancias en línea recta y de un punto
a otro.
4. FUNCIONAMIENTO DE LA SIMULACIÓN
4.1 Herramienta de desarrollo
Para la simulación del agente carro repartidor, se usó NetBeans, la misma que es un framework para el lenguaje
java que permite crear aplicaciones de escritorio.
Se tomó esta herramienta ya que es más entendible y es flexible para el desarrollo de aplicaciones.
4.2 Clases desarrolladas en la aplicación
Está empaquetado con las siguientes propiedades (Ver fig.2):
5. Fig.2 Paquete Carro Repartidor
Al ejecutar el proyecto: Consta de una ventana distribuida en dos partes. La parte superior denominada
búsquedas y permite al usuario determinar el lugar de origen y el lugar de destino, seguido está la opción tipo de
búsqueda que contiene la Búsqueda A*, seguidamente un botón Buscar camino que da inicio a la búsqueda del
algoritmo. Se lo puede observar en la Fig.3.
Fig.3. Ventana generada al ejecutar el programa
En la parte inferior de la ventana llamada Mapa ciudad, presenta el mapa con los puntos desde y hacia donde
puede dirigirse el agente (marcadas de color rojo). Lo pueden observar en la Fig.4.
Fig.4. Mapa ciudad con enlaces
6. Además se puede observar los enlaces entre los diferentes puntos que se encuentran dentro de la ciudad de Loja.
Así mismo, se efectuó el cálculo de las distancias en línea recta hacia todos los puntos para poder tomar como
referencia cualquier punto dentro de la ciudad. Se lo hizo en función a los primeros valores calculados los cuales
fueron tomados como referencia. Estos valores se anexan al final en su respectiva tabla de anexos.
El resultado, que son los nodos visitados, lo pinta en dolor azul.
Fig.5. Muestra resultados tomando como inicio San Sebastián hacia EERSA.
4.3 Interfaz – Prototipo
• El software del agente trabajará con una base de datos previamente ingresada que son las distancias entre
puntos y las distancias en línea recta.
• El usuario podrá escoger el punto de origen y el punto de destino, para posteriormente efectuar la búsqueda
A*.
El software consta de dos paquetes, búsquedas y carro repartidor.
La clase Algoritmo Búsqueda contiene variables privadas para cargar los nodos y grafos (enlaces entre puntos).
Fig.6. Clase abstracta AlgoritmoBusqueda para cargar nodos y enlaces
7. La clase BúsquedaAStar, es la encargada de ejecutar el recorrido tomando la mejor ruta para llegar al objetivo.
Está compuesta por los métodos:
• Buscar: que llama a la función inicializar() para obtener los nodos objetivo y destino y crear nuevas
instancias de ListaOrdenada para cargar los nodos.
• Nodos iguales recibe los nodos N1 (visitados) y N2 (destino), hace una comparación entre ellos para ver si
son iguales y de esta manera terminar a búsqueda en caso de que lo sean, retornando el objetivo para
posteriormente marcar el recorrido resultante.
• generarSucesoresDirigidos: toma el nodo actual para buscar los nodos adyacentes, los mismos que serán
expandidos en la función PropagaG.
• En estimación hace los cálculos de ambas distancias (línea recta y de punto a punto) para hacer el análisis
porsteriormente.
Fig.7. Clase BusquedaStar que hereda de la clase AlgoritmoBusqueda
5. Base de conocimiento
“El crecimiento de la información en la web ha provocado un aumento en el hecho pr instrumentos como los
tesauros, clasificadores y las ontologías. Los profesionales cada vez más, entienden que es urgente la
construcción y aplicación de sistemas de organización y representación del conocimiento. Estos lenguajes
colaboran en la descripción de los diferentes recursos de la información, y en su posterior recuperación, lo que
tambi´én debiera mejorar la recuperación de información en la web, en términos de efectividad, rapidez y
facilidad de acceso a la información ” [3].
Se basa en tener un lenguaje común para interpretar el agente como único.
La base de conocimiento está implícita en los buscadores semánticos que permiten hacer búsquedas avanzadas,
donde dichos buscadores nos presentan resultados esperados concretos, y no los típicos resultados arrojados por
búsquedas tontas que no nos llevan a ningún lado.
Es por esto que es necesario que el agente tenga conocimiento del lenguaje natural para que actúe de forma
correcta.
8. Se dan algunos conceptos fundamentales para entender de mejor manera esto, ya que el presente agente posee su
base de conocimiento la misma que será presentada en los anexos respctivos.
RDF (Resouce Description Framework)
“También conocido como Marco de Descripción de Recursos, fue desarrollado por el W3C como lenguaje para
añadir metadatos legibles para la máquina a datos existentes en la web. RDF usa XML para su serialización de
modo que se haga uso del famoso pastel de capas definido por la Web Semántica.” [2]
RDF está compuesto por propiedades, clases e instancias. Su moldeo básico son las tripletas Sujeto-Predicado-
Objeto [2].
“RDF permite una forma de reificación (una declaración de una declaración), que significa que cualquier
declaración de RDF puede ser usada como sujeto en una tripleta. En la figura siguiente se muestra un ejemplo de
grafo RDF.”[2]
Fig.8. Ejemplo de grafo RDF
El modelo de RDF mostrado en la Fig. 9 muestra como está formado el modelo.
Fig.9. Modelo RDF
El modelo del agente carro se encuentra en los anexos, que por cuestiones de espacio no se puso aquí.
OWL (Ontology Web Languaje)
Es un lenguaje expresivo de ontologías que extiende RDF’s[2].
Está compuesto por tres lenguajes de expresividad crecientes [2]:
• “OWL Lite: El sublenguaje menos expresivo. Comparado con RDFS, añade restricciones de rango local,
restricciones existenciales, restricciones de cardinalidad simple y varios tipos de propiedades (inversa,
transitiva y simétrica)”[2].
• “OWL DL: Comparada con OWL Lite, añade soporte total a la negación, disyunción, restricciones de
cardinalidad, enumeraciones y restricciones de valor. El elemento "DL" viene por su semejanza a un
lenguaje expresivo de lógica de descripciones”[2].
• “OWL Full: Mientras que OWL Lite y OWL DL imponen restricciones al uso de vocabulario y el uso de
declaraciones RDF, OWL Full no tiene tales restricciones. Por ello, OWL Full permite tanto la
especificación de clases como instancias, así como el uso de construcciones del lenguaje, que por tanto
modifica éste”[2].
Una ontología está formada por cuatro conceptos fundamentales: clases, relaciones entre clases, propiedades de
clases, y restricciones entre las relaciones entre clases y propiedades de clase [2].
Objetivos de las ontologías
9. “Partiendo de Noy y McGuinness, se puede decir que las ontologías tienen los siguientes objetivos:
• Compartir la comprensión común de la estructura de la información entre personas o agentes software, lo
que debe revertir de forma positiva y casi necesaria la extracción y recuperación de información, en páginas
web, de contenidos conectados temáticamente.
• Permitir la reutilización del conocimiento perteneciente a un dominio. Por ejemplo, al momento de iniciar la
elaboración de una ontología.
• Permite hacer explícitos los supuestos de un dominio. Esta aseveración puede conducir a conclusiones muy
interesantes para la representación del conocimiento más allá de consideraciones técnicas, operativas e
informáticas.
• Separa el conocimiento de un dominio del conocimiento que se puede denominar operacional. Con esto se
alude a que, en ocasiones, el conocimiento que se está representando se puede implicar en diferentes áreas
al pertenecer más a un conocimiento relacionado con procesos.
• Hace posible analizar el conocimiento de un campo, por ejemplo en lo que se refiere al estudio de los
términos y relaciones que lo configuran ya sea formalmente o no.
En el contexto de uso actual de las ontologías Torres1 [4] apunta varias de las utilidades de las ontologías, entre
las que se destacan, en primer lugar, la mejora de la comunicación, habida cuenta de su dedicación a reducir la
confusión terminológica y conceptual en un único marco de trabajo. En segundo lugar, menciona la
interoperatividad. En efecto, las ontologías, en principio, han de potenciar el intercambio de datos en contextos
informáticos y digitales gracias a los fundamentos semánticos que se encuentran en ellos.” [3]
Para la base de conocimiento del agente carro, se diseñó en el programa CmapTools v5.0.03, se validó
correctamente, para posteriormente exportarla a lenguaje de ontologías owl en el programa protege v4.0. El
entorno de CmapTools se muestra en la fig. 10.
Fig.10. Entorno de CmapTools con la plantilla de Agente Carro para la base de conocimiento.
1
Torres Rodríguez, N. Imágenes en la web semántica: estándares, aplicaciones y organización de sitios en la
red. Universidad Carlos III de Madrid, 2003. (Tesina)
10. 5.1 Herramientas para generar el RDF
CmapTools
CmapTools es un software multiplataforma para crear mapas conceptuales, por medio de unas aplicaciones
escritas en Java. Permite tanto el trabajo local individual, como en red, ya sea local, o en internet, con lo que
facilita el trabajo en grupo o colaborativo. [6] (Ver fig. 11).
Protégé
Es libre, es un framework para edición y base de conocimiento de ontologías. Esta plataforma soporta dos
maneras principales de modelamiento de ontologías vía editores Protégé-Frames y Protégé-OWL. Las ontologías
protégé pueden ser exportadas en una variedad de formatos incluyendo RDF’s. OWL, y XML Schema. [7]
Está basado en Java, fácil de manejar y entender.
Fig.11. Plantilla para la base de conocimiento generada en CmapTools.
6. Aplicaciones
Algunas aplicaciones del software del agente se dan en los siguientes casos:
• Gestión de tráfico a través de los agentes TRACK-R los cuales poseen un conocimiento acerca de todos los
elementos relevantes del área que controla, es decir, la información de ciudades, carreteras, cruces de
carreteras y puntos de kilómetros [5]. En la fig.12 se muestra el entorno del agente.
Su base de conocimientos se ha codificado con Ciao Prolog [8].
11. Fig.12. Nodo de Bilbao y sus alrededores
• Desarrollo de servicios turísticos a usuarios, donde le permite al usuario planificar su itinerario de visitas en
determinada ciudad, visitando lugares de su interés. Está basado en sistemas multiagentes. Como podemos
observar su objetivo es encontrar la ruta adecuada para llegar al objetivo del usuario [9].
Fig.13. Los tres tipos de agentes usados y sus respectivas comunicaciones
Usa la plataforma JadeLeap [8], la cual permite la portabilidad de la plataforma Jade a dispositivos móviles.
Dicho agente puede ser instalado en un dispositivo móvil, como PDA, o una PC.
Ofrece servicios de búsqueda, reserva, planificar día.
7. Conclusiones
Como se podrán dar cuenta, en el apartado de aplicaciones, si bien es cierto, que mantienen temas diferentes,
todos llegan a un común denominador, que es el de encontrar la mejor ruta para efectuar determinada actividad.
Tomando en cuenta que deben minimizar el uso de recursos para maximizar sus medidas de rendimiento.
El agente carro repartidor, va desde un punto a otro, cuya funcionen de utilidad es el menor costo del camino.
Gracias a la búsqueda que efectúa el algoritmo A*, logra esto en el menor tiempo y con el menor de recursos
consumibles.
No existe regla general acerca del uso de determinado algoritmo, más bien, depende de la necesidad que se
tenga, y de las acciones que va a realizar.
12. El funcionamiento correcto del agente, depende fundamentalmente, en definir correctamente el REAS (Medidas
de Rendimiento, Entrono, Actuadores y Sensores) para el agente, seguidamente, el establecer que técnicas de
Inteligencia Artificial serán utilizadas para su implementación.
Posee una base de conocimiento, la misma que fue valida en la página oficial de la W3.[10]
Referencias
[1] Inteligencia Artificial [2. Agentes Inteligentes] / aut. RUSSELL STUART NORVIG PETER // Un Enfoque
Moderno. - Madrid : Pearson, 2003. - Vol. II.
[2] Gestión del Conocimiento [En línea] / aut. CONOCIMIENTO GESTIÓN DEL. - 1. - 2 de Febrero de
2010. - http://www.gestiondelconocimiento.es/rdf-skos-owl.asp.
[3] Gestión del Conocimiento [En línea] / aut. CONOCIMIENTO GESTIÓN DEL. - 1. - 2 de Febrero de
2010. - http://www.gestiondelconocimiento.es/rdf-skos-owl.asp.
[4] Imágenes en la web semántica: [Tesina. Universidad Carlos III de Madrid] / aut. TORES RODRIGUEZ
N. // Estándares, aplicaciones y organización de sitios en la red.. - Madrid : [s.n.], 2003.
[5] Agentes Inteligentes en el Tercer Milenio [Conferencia] / aut. MORENO ANTONIO UNIVERSIDAD
ROVIRA I VIRGILI // CAEPIA-2003. - Tarragona : [s.n.], 2003.
http://www.informatik.uni-trier.de/~ley/db/conf/caepia/caepia2003.html
[6] IHMC CmapTools [En línea] / aut. IHMC // Sitio oficial. - http://cmap.ihmc.us/.
[7] PROTÉGÉ [En línea]. - Stanford - California. – Sitio oficial.- http://protege.stanford.edu/.
[8] LEAP [En línea]. - Lightweight Extensible Agent Platform (LEAP), IST-199-10211. - 15 de Enero de
2010. - http://leap.crm-paris.com.
[9] www.clip.dia.fi.ump.es
[10] Sitio Validador RDF [En línea] / aut. W3C. - http://www.w3.org/RDF/Validator/ARPServlet.