Agente Inteligente Paper

8

Click here to load reader

description

Paper inteligencia artificial Luis FeijooSantiago Medina

Transcript of Agente Inteligente Paper

Page 1: Agente Inteligente Paper

AGENTE INTELIGENTE: VIAJERO PERDIDO Santiago Medina-Luis Feijoo Loja-08 de Febrero del 2010

Teléfono: 2571753 Av. Paltas y Estados Unidos.

Mail: [email protected], [email protected]

1. ABSTRACT

El presente trabajo describe como resolver un juego con algoritmos de inteligencia artificial. El viajero perdido el cual consiste en un carro en el que un viajero trata de conducir para encontrar el destino al cual desea llegar, para ello debe ir pasando por unas calles las cuales tienen obstáculos y este deberá ir sorteándolos, y además deberá ir desde el inicio hasta el final siguiendo la ruta más corta. Aquí se debe analizar que puede existir un caso en el que el viajero no encuentre una ruta en este caso no existe solución. 2. INTRODUCCIÓN

En los últimos años la inteligencia artificial a evolucionado en gran medida hasta el punto que se han construido maquinas inteligentes que inclusive tienen la capacidad de aprender. Abarca un sinnúmero de campos y conceptos entre los cuales se encuentra el concepto de agente, se dice que estos constituyen el próximo avance más significativo en el desarrollo de sistemas y pueden ser considerados como la nueva revolución en el software. La característica quizá más importante de un agente inteligente es la autonomía, quizá la mayoría de personas se preguntarán si maquinas con inteligencia artificial llegarán a superar la mente humana, quizá estén dotadas de mucha inteligencia pero pensamos que será muy difícil superar la inteligencia de los humanos 3. DESCRIPCIÓN DEL PROBLEMA

Meta: El viajero deberá llegar a su destino final en un corto tiempo, de la manera más rápida, escogiendo las calles más cortas o ruta más corta y además deberá evitar chocar con los obstáculos que se encuentre en su camino.

Inicio: El viajero tendrá un punto de partida cualquiera, tendrá varias rutas para llegar a su destino, y este deberá tener la capacidad para llegar al destino sorteando los obstáculos colocados en su trayecto. El camino escogido debe ser el más corto para minimizar tiempo. Obstáculos:Los obstáculos serán casas que las cuales estarán a lo largo de todo el trayecto. Estos obstáculos permanecen estáticos, no varían cuando el viajero se desplaza.

4. INGENIERIA DEL AGENTE

4.1. DESCRIPCIÓN DEL AGENTE

Una vez que hemos dado una breve descripción de lo que se trata el problema de este juego pasaremos a analizar la ingeniería del agente. 4.1.1. Tipo de agente Basado en Objetivos El objetivo principal de este agente es llegar a su destino final pero puede existir el caso en el que no exista una ruta para llegar a su destino final, ya que el camino está lleno de obstáculos y no tiene salida. El agente al tener un camino el cual tiene un largo recorrido debería establecer puntos de control, avanzar por cada calle será un punto de control, por ejemplo avanzar hasta la siguiente calle el punto de control es verificar que avanzo hasta esa calle.

Page 2: Agente Inteligente Paper

4.1.2. Sensores

Los sensores son los que nos ayudaran a interactuar o responder con acciones correctas ante los eventos o percepciones provocados por el medio en el cual se desenvuelve el agente, proporcionarán información de cuál sería la posible ruta a seguir. A continuación describimos estos sensores: Sensor para detectar obstáculos:

Percibirá si alrededor del agente se encuentra un obstáculo o si el camino está libre, y así nos dará información si está en peligro de chocar con algún obstáculo.

Sensor de posición final o meta: Este sensor será muy útil ya que nos dirá que el agente llego al punto final y ya no debe seguir recorriendo mas distancia, además dará la ubicación exacta del punto final, y esto ayudara a guiar al viajero por las calles.

Sensor de posición inicial.- No dará la dirección desde donde salió el agente para en caso de retroceder sepa el punto de inicio.

4.1.3. Entorno

Ya hemos determinado el tipo de agente, los sensores que tendrá, ahora vamos a dar características del entorno en el cual se desenvolverá. Calles.- Por donde se va a desplazar el agente Obstáculos.- Con lo que debe evitar chocar el agente. Características entorno Episódico ya que cada vez que el

agente avanza una calle debe volver a rastrear para determinar si existen obstáculos a su alrededor y no importa lo que haya hecho anteriormente.

Ambiente dinámico ya que cada vez se puede jugar cambiando de posición los obstáculos o la meta, cada vez que se ejecute el juego tendrá baja probabilidad de parecerse en la ubicación de dichos obstáculos o peor aun de la ruta a seguir, esto obligara al agente a intentar prever los movimientos de dichos elementos.

Es accesible porque los sensores no tienen ningún tipo de restricción a la hora de determinar el estado del ambiente que rodea al agente, excepto los inherentes a la capacidad del sensor para percibir según qué cosas, como por ejemplo la distancia máxima del sensor de obstáculos.

Ambiente continuo ya que cada vez que el agente avance una calle tendrá altas probabilidades de recibir percepciones.

Es no determinista ya que sobre el ambiente intervienen otros elementos ajenos a nuestro agente por lo que sus acciones no determinan el estado del mismo.

4.1.4. Actuadores-Acciones

Los actuadores son las acciones que debe llevar a cabo el agente al recibir cierta percepción por parte de los sensores. Aquí describimos las acciones a llevar a cabo, las cuales son motrices.

Actuadores Acción Dirección

Girar Norte Girar Sur Girar Este

Girar Oeste Adelante

Freno Parar Freno Retroceder Motor

4.1.5. Metas Es el objetivo final del agente, al llegar a la meta el agente se detendrá y dará por concluida su misión. La meta

Page 3: Agente Inteligente Paper

principal es llegar al destino final siempre y cuando lo haga siguiendo la ruta más corta sin chocar con los obstáculos que están puestos en su camino

Cuadro FigFigura1.- Plano inicial del ambiente en el cual actúa el agente.

5. Algoritmo y tipo de Agente para este

problema Hemos determinado que la mejor opción para resolver este problema es implementar un agente de búsqueda online. La búsqueda online intercambia computación con acción, y difiere en esto con las búsquedas offline, las cuales determinan una solución antes de ejecutarla. Una búsqueda online es necesaria para entornos dinámicos y semi-dinámicos, es por eso que son utilizados comúnmente en problemas de exploración. Para resolver nuestro problema seguimos los siguientes pasos: 1. Primeramente ubicamos la posición de

inicio o partida para ello usamos la clase que la hemos denominado Nodo y enviamos como parámetros: la partida y la casilla en cual se encuentra dicha partida Nodo("partida", this.casilla_partida.Name)

2. En esta clase utilizamos un procedimiento llamado ‘calcular ubicación’ en el cual obtenemos la ubicación de la partida. Para ello hemos dividido a nuestro cuadro en niveles y

pasillos, los niveles son tomados en forma horizontal empezando desde cero por la parte superior, y los pasillos son tomados en forma vertical empezando desde cero por la izquierda niveles p a s i l l o s

Por ejemplo en la siguiente casilla estamos ubicados en el nivel 4 pasillo 0 4,0 Entonces con la función dicha anteriormente calculamos en qué nivel y pasillo se encuentra nuestro inicio enviando como parámetro el número de casilla en donde se encuentra la partida.

3. Ahora que ya sabemos la ubicación de la partida ubicamos los vecinos de esta partida. Con vecinos nos referimos a los nodos que lo rodean. Para hacer esta ubicación enviamos como parámetro el nivel y pasillo de la partida al procediendo que lo hemos denominado ‘Definir Vecinos’. En este procedimiento, hacemos una comparación:

si nivel = 0 no vecino hacia arriba,

si nivel = 9 no vecino hacia abajo,

si pasillo = 0 no vecino izquierda

si el pasillo = 9 no vecino derecha

Page 4: Agente Inteligente Paper

n:0 p:0 p:9 n:9

4. Siguiendo los mismos pasos del 1 al 3 calculamos la ubicación de la llegada, así mismo calculamos los vecinos de la casilla llegada.

5. A continuación calculamos la heurística y enviamos como parámetro el nodo partida ya definido su ubicación y vecinos. CalcularHeuristica(this.miPartida) En esta heurística calculamos la distancia que existe desde la partida, y desde cada vecino donde no existe un obstáculo, para calcular la heurística utilizamos el nivel y el pasillo en el que se encuentra cada nodo. Con la siguiente formula calculamos la heurística: a= nivel_nodo - nivel_llegada b= pasillo_nodo - pasillo_llegada h(n): a2 + b2 Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)) Este algoritmo nos dice que antes de un agente poder realizar una acción debe calcular la heuristica de los nodos sucesores y asi luego hacer una comparación de que heuristica es la mejor y tomar esa para su proxima acción.

6. Creamos dos variables de tipo array una para almacenar los nodos que expandiremos del árbol, y otro para almacenar la ruta que nos llevara a la llegada.

7. Luego Hemos creado un procedimiento llamado BLO(Búsqueda Local Online), el cual a su vez hace un llamado a la función Búsqueda Local Online 1(BLO1), esta función BLO1 lo que nos hace es:

a) Verificar si la casilla en donde nos encontramos es la llegada

b) Llamar a la función expandir nodos enviando como parámetro el nodo en el cual nos encontramos actualmente.

c) En la función expandir nodo verificamos cuantos nodos hojas puede tener un nodo, haciendo una comparación determinamos si un sucesor es un camino o es un obstáculo. En caso de ser un obstáculo pasamos, en caso de ser un camino hacemos el procedimiento del 1 al 3 que es de calcular su ubicación, definir sus vecinos y calcular la heurística.

n1: (4,0)

S2

S1

Llegada Partida Sucesores de n1

d) Una vez que definimos cada

sucesor de un nodo lo ubicamos dentro en un array llamado árbol, calculando el costo desde el padre al nodo hijo en este caso desde n1 hasta s1 o desde n1 hasta s2, además calculamos la heurística de cada nodo hijo o sucesor.

e) Ya tenemos en nuestro árbol el nodo padre y sus sucesores, con sus respectivas heurísticas, a continuación creamos un array auxiliar para poder ordenar

n1

S1 S2

Page 5: Agente Inteligente Paper

nuestro árbol, ordenamos los sucesores de un nodo tomando en cuenta la función heurística en nodo con menor función heurística estará primero, esto con la finalidad de escoger como primera opción el nodo con función heurística más corta.

f) Además debemos tomar en cuenta que no siempre un nodo con mejor función heurística será el elegido, se debe hacer todo el proceso nuevamente con ese nodo con mejor función heurística para determinar si los sucesores de este son obstáculos o caminos y determinar sus funciones heurísticas respectivas. Así es el proceso que se hace nodo a nodo hasta llegar al objetivo final.

g) Una vez que hemos llegado a la meta el nodo llegada tendrá una bandera llamada ‘llegada’, el cual nos indicara que hemos llegado al final.

h) Además para poder almacenar las rutas que sigue el agente las almacenamos en un array llamado ruta, para luego pasar esta ruta a otro array llamado mi ruta y poder presentarla en pantalla.

6. TRABAJOS RELACIONADOS DEL PRESENTE AGENTE Agentes como el que planteamos en este documento han sido realizados pero mucho más avanzados y con otros objetivos, y a su vez aplicando nuevas técnicas lo cual los hace mucho más interesantes.

6.1. Verdino

Un equipo de ingenieros de la Universidad de La Laguna (ULL), en Canarias, ha diseñado a “Verdino”, un vehículo autoguiado que detecta la carretera utilizando una técnica denominada ‘Optimización de Colonia de Hormigas’ (OCH). Este método se basa en el comportamiento que emplean las hormigas para encontrar el camino más corto entre su hormiguero y las fuentes de alimentación. El autor principal del estudio, Rafael Arnay, del Departamento de Ingeniería de Sistemas y Automática y Arquitectura y Tecnología de Computadores de la ULL, explica a SINC que los algoritmos de OCH se emplean para resolver “problemas de optimización combinatoria” y se inspiran directamente en el modo en que lo hacen las hormigas. En la naturaleza, estos insectos depositan feromonas en sus desplazamientos, dejando un rastro oloroso que puede ser seguido por los miembros de la colonia. Las feromonas se evaporan con el tiempo, por lo que el camino que recorren las hormigas que van y vienen al alimento por la distancia más corta es el que queda más reforzado con estas sustancias químicas, y el que acaban seleccionando las otras hormigas. “De un modo similar, la técnica de OCH se basa en una colonia de hormigas artificiales, esto es, unos agentes computacionales que trabajan de manera cooperativa y se comunican mediante rastros de feromonas también artificiales”, indica Arnay. Esta técnica es la que han elegido los ingenieros canarios para que “Verdino” detecte correctamente la carretera sin necesidad de ser dirigido por ningún conductor. El prototipo se parece a los vehículos utilizados en los campos de golf, pero lleva incorporada una cámara que recoge los datos visuales necesarios para aplicar los algoritmos, así como un sistema

Page 6: Agente Inteligente Paper

de control interno que procesa los datos en tiempo real. “Verdino” está programado para circular por carreteras no estructuradas, es decir, aquellas sin líneas dibujadas en la calzada o con bordes irregulares debido a la invasión de montones de tierra o de vegetación. Actualmente los ingenieros están probando el pequeño coche como medio de transporte interno para unir 25 viviendas y un centro de visitantes en una urbanización bioclimática que el Instituto Tecnológico y de Energías Renovables está construyendo en el sur de Tenerife, y consideran los primeros resultados como “muy prometedores”. (4)

6.2. Búsqueda aplicada al Problema de las 8-reynas

Esta búsqueda fue implementada en Matlab, donde se trató que dada una configuración inicial de las reynas, éstas se posicionen de tal forma que no se ataquen directamente o indirectamente entre pares de reynas, como sabemos las reynas se atacan en forma vertical, horizontal y diagonal. Se busca las posiciones más optimas y esto se puede observar al obtener como h(n), es decir número de par de reinas atacándose, igual a "0" o cercano a él como: "1". Los algoritmos usados para determinar el nº de colisiones de reinas fueron recopilados de Algoritmos para el problema de las n-reinas. (5)

6.3. Búsqueda aplicada al mapa de Romania (6)

Implementamos dos casos, uno para el caso en que de todas las ciudades llegan a bucharest (como el dado en Clase y libro de Russell) y usando las distancias en línea recta (para las heurísticas) las mismas dadas, y otro suponiendo que cada ciudad tiene unas ciertas posiciones (X,Y), para calcular las distancias en línea recta, como: Arad (91, 492) Bucarest (400, 327) Craiova (253, 288)

Page 7: Agente Inteligente Paper

Dobreta (165, 299) Eforie (562, 293) Fagaras(305, 449) Giurgiu (375, 270) Hirsova (534, 350) Iasi (473, 506) Lugoj (165, 379) Mehadia (168, 339) Neamt (406, 537) Oradea (131, 571) Pitesti (320, 368) Rimnicu (233, 410) Sibiu (207, 457) Timisoara (94, 410) Urziceni (456, 350) Vaslui (509, 444) Zerind (108, 531) A continuación algunas muestras de pantalla de la interfaz, seleccionando una ciudad, ejecutando el algoritmo y los resultados obtenidos:

Bibliografía 1. Norvig, Stuart Russell-Peter. Inteligencia Artificial Un Enfoque Moderno. Madrid : Pearson, 2007. 978-84-205-4003-0.

2. J.A. Martíın Meseguer, M.A. Zamora Izquierdo, H. Martínez Barberá. Planificación de Trayectorias en un Mapa de Celdillas Difusas. [En línea] [Citado el: 06 de 02 de 2010.] http://ants.dif.um.es/~humberto/papers/2003-waf-2.pdf.

3. Diaz, Jorge Luis Guevara. Búsqueda Informada y Exploracion II. [En línea] [Citado el: 06 de 02 de 2010.] http://jorge.sistemasyservidores.com/si_2008i/clases/clase5iabusquedainformadaii.pdf.

4. Dirección de Tecnología – U.A.T. [En línea] 17 de Septiembre de 2008. [Citado el: 25 de 01 de 2010.] http://www.ditae.uat.edu.mx/index.php/the-news/1-latest-news/401-ingenieros-canarios-disenan-un-vehiculo-autoguiado-que-se-orienta-como-las-hormigas.

5. León, Leissi Castañeda. Inteligencia Artificial.Universidad de Trujillo. [En línea] 2 de Junio de 2008. [Citado el: 23 de 01 de 2010.]

6. —. Busqueda Informada. [En línea] 2 de Junio de 2008. [Citado el: 23 de 01 de 2010.] http://nineil-leissi-cs.blogspot.com/2008/06/laboratorio-2.html.

Page 8: Agente Inteligente Paper