Agente  Carro Aplicando La Búsqueda  A Star
Upcoming SlideShare
Loading in...5
×
 

Agente Carro Aplicando La Búsqueda A Star

on

  • 2,497 views

El artículo completo de la solución al problema del agente carro que se dirige de un punto a otro empleando la búsqueda A*.

El artículo completo de la solución al problema del agente carro que se dirige de un punto a otro empleando la búsqueda A*.

Statistics

Views

Total Views
2,497
Views on SlideShare
2,497
Embed Views
0

Actions

Likes
0
Downloads
82
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Agente  Carro Aplicando La Búsqueda  A Star Agente Carro Aplicando La Búsqueda A Star Document Transcript

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