SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
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.
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. 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].
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):
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
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
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.
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
“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)
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].
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.
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.

Más contenido relacionado

Similar a Agente Carro Aplicando La Búsqueda A Star

Inteligencia Informe
Inteligencia InformeInteligencia Informe
Inteligencia Informeluis eduardo
 
Navegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fugaNavegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fugaalepusto
 
Agente Inteligente
Agente InteligenteAgente Inteligente
Agente Inteligenteluisfe
 
Agente Inteligente: Viajero Perdido
Agente Inteligente: Viajero PerdidoAgente Inteligente: Viajero Perdido
Agente Inteligente: Viajero PerdidoUTPL
 
Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...
Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...
Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...CESARGARCIABECERRA
 
cuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdfcuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdfVictorCamacaro1
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)Cristina Lopez
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosAlexandra Ochoa
 
Pia grupo12 equipo1
Pia grupo12 equipo1Pia grupo12 equipo1
Pia grupo12 equipo1javicool
 
Presentacion Rutas Turisticas
Presentacion Rutas TuristicasPresentacion Rutas Turisticas
Presentacion Rutas Turisticasakpaz1
 
Presentacion Rutas Turisticas
Presentacion Rutas TuristicasPresentacion Rutas Turisticas
Presentacion Rutas Turisticasakpaz1
 

Similar a Agente Carro Aplicando La Búsqueda A Star (20)

Inteligencia Informe
Inteligencia InformeInteligencia Informe
Inteligencia Informe
 
Problema del agente viajero monografia
Problema del agente viajero monografiaProblema del agente viajero monografia
Problema del agente viajero monografia
 
Sistema de Taxi Compartido - Java
Sistema de Taxi Compartido - JavaSistema de Taxi Compartido - Java
Sistema de Taxi Compartido - Java
 
Navegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fugaNavegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fuga
 
Agente Inteligente
Agente InteligenteAgente Inteligente
Agente Inteligente
 
Agente Inteligente: Viajero Perdido
Agente Inteligente: Viajero PerdidoAgente Inteligente: Viajero Perdido
Agente Inteligente: Viajero Perdido
 
Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...
Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...
Deteccion de trayectorias y caracteres con algoritmos geneticos y redes de ho...
 
CRAFT
CRAFTCRAFT
CRAFT
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
cuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdfcuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdf
 
Power point algoritmo
Power point algoritmoPower point algoritmo
Power point algoritmo
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmos
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Pia grupo12 equipo1
Pia grupo12 equipo1Pia grupo12 equipo1
Pia grupo12 equipo1
 
Algoritmo a
Algoritmo aAlgoritmo a
Algoritmo a
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Presentacion Rutas Turisticas
Presentacion Rutas TuristicasPresentacion Rutas Turisticas
Presentacion Rutas Turisticas
 
Presentacion Rutas Turisticas
Presentacion Rutas TuristicasPresentacion Rutas Turisticas
Presentacion Rutas Turisticas
 

Agente Carro Aplicando La Búsqueda A Star

  • 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.