1) El documento describe un problema de viajero perdido que se resolverá usando un agente inteligente. El viajero debe llegar a su destino siguiendo la ruta más corta y evitando obstáculos.
2) Se propone usar un agente basado en objetivos que use sensores para detectar obstáculos, posición y destino. Usará acciones como girar y avanzar.
3) El agente usará una búsqueda online y algoritmo de colonia de hormigas para encontrar la ruta óptima de manera incremental expandiendo nodos vecin
1. AGENTE INTELIGENTE: VIAJERO PERDIDO
Santiago Medina-Luis Feijoo
Loja-08 de Febrero del 2010
Teléfono: 2571753
Av. Paltas y Estados Unidos.
Mail: sfmedina@utpl.edu.ec, luisfe101@hotmail.com
1. ABSTRACT Inicio: El viajero tendrá un punto de partida
cualquiera, tendrá varias rutas para llegar a
El presente trabajo describe como resolver un su destino, y este deberá tener la
juego con algoritmos de inteligencia artificial. capacidad para llegar al destino sorteando
El viajero perdido el cual consiste en un carro los obstáculos colocados en su trayecto. El
en el que un viajero trata de conducir para camino escogido debe ser el más corto
encontrar el destino al cual desea llegar, para para minimizar tiempo.
ello debe ir pasando por unas calles las cuales
tienen obstáculos y este deberá ir Obstáculos:Los obstáculos serán casas
sorteándolos, y además deberá ir desde el que las cuales estarán a lo largo de todo el
inicio hasta el final siguiendo la ruta más corta. trayecto. Estos obstáculos permanecen
Aquí se debe analizar que puede existir un estáticos, no varían cuando el viajero se
caso en el que el viajero no encuentre una ruta desplaza.
en este caso no existe solución.
4. INGENIERIA DEL AGENTE
2. INTRODUCCIÓN 4.1. DESCRIPCIÓN DEL AGENTE
En los últimos años la inteligencia artificial a Una vez que hemos dado una breve
evolucionado en gran medida hasta el punto descripción de lo que se trata el
que se han construido maquinas inteligentes problema de este juego pasaremos a
que inclusive tienen la capacidad de aprender. analizar la ingeniería del agente.
Abarca un sinnúmero de campos y conceptos
entre los cuales se encuentra el concepto de 4.1.1. Tipo de agente
agente, se dice que estos constituyen el
próximo avance más significativo en el Basado en Objetivos
desarrollo de sistemas y pueden ser
considerados como la nueva revolución en el El objetivo principal de este agente es
software. La característica quizá más llegar a su destino final pero puede
importante de un agente inteligente es la existir el caso en el que no exista una
autonomía, quizá la mayoría de personas se ruta para llegar a su destino final, ya
preguntarán si maquinas con inteligencia que el camino está lleno de obstáculos
artificial llegarán a superar la mente humana, y no tiene salida.
quizá estén dotadas de mucha inteligencia
pero pensamos que será muy difícil superar la El agente al tener un camino el cual
inteligencia de los humanos tiene un largo recorrido debería
establecer puntos de control, avanzar
3. DESCRIPCIÓN DEL PROBLEMA por cada calle será un punto de control,
por ejemplo avanzar hasta la siguiente
Meta: El viajero deberá llegar a su destino calle el punto de control es verificar que
final en un corto tiempo, de la manera más avanzo hasta esa calle.
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.
2. 4.1.2. Sensores Ambiente dinámico ya que cada vez
se puede jugar cambiando de
Los sensores son los que nos ayudaran posición los obstáculos o la meta,
a interactuar o responder con acciones cada vez que se ejecute el juego
correctas ante los eventos o tendrá baja probabilidad de
percepciones provocados por el medio parecerse en la ubicación de dichos
en el cual se desenvuelve el agente, obstáculos o peor aun de la ruta a
proporcionarán información de cuál seguir, esto obligara al agente a
sería la posible ruta a seguir. A intentar prever los movimientos de
continuación describimos estos dichos elementos.
sensores: Es accesible porque los sensores no
tienen ningún tipo de restricción a la
Sensor para detectar obstáculos: hora de determinar el estado del
Percibirá si alrededor del agente se ambiente que rodea al agente,
encuentra un obstáculo o si el excepto los inherentes a la
camino está libre, y así nos dará capacidad del sensor para percibir
información si está en peligro de según qué cosas, como por ejemplo
chocar con algún obstáculo. la distancia máxima del sensor de
Sensor de posición final o meta: Este obstáculos.
sensor será muy útil ya que nos dirá Ambiente continuo ya que cada vez
que el agente llego al punto final y ya que el agente avance una calle
no debe seguir recorriendo mas tendrá altas probabilidades de recibir
distancia, además dará la ubicación percepciones.
exacta del punto final, y esto Es no determinista ya que sobre el
ayudara a guiar al viajero por las ambiente intervienen otros
calles. elementos ajenos a nuestro agente
Sensor de posición inicial.- No dará por lo que sus acciones no
la dirección desde donde salió el determinan el estado del mismo.
agente para en caso de retroceder
sepa el punto de inicio. 4.1.4. Actuadores-Acciones
4.1.3. Entorno Los actuadores son las acciones que
debe llevar a cabo el agente al recibir
Ya hemos determinado el tipo de cierta percepción por parte de los
agente, los sensores que tendrá, ahora sensores. Aquí describimos las
vamos a dar características del entorno acciones a llevar a cabo, las cuales son
en el cual se desenvolverá. motrices.
Calles.- Por donde se va a desplazar el Actuadores Acción
agente Dirección Girar Norte
Obstáculos.- Con lo que debe evitar Girar Sur
chocar el agente. Girar Este
Girar Oeste
Características entorno Adelante
Freno Parar
Episódico ya que cada vez que el Freno Retroceder
agente avanza una calle debe volver Motor
a rastrear para determinar si existen
obstáculos a su alrededor y no 4.1.5. Metas
importa lo que haya hecho Es el objetivo final del agente, al llegar a
anteriormente. la meta el agente se detendrá y dará
por concluida su misión. La meta
3. principal es llegar al destino final pasillos, los niveles son tomados en
siempre y cuando lo haga siguiendo la forma horizontal empezando desde cero
ruta más corta sin chocar con los por la parte superior, y los pasillos son
obstáculos que están puestos en su tomados en forma vertical empezando
camino 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
Cuadro FigFigura1.- Plano inicial del ambiente en
el cual actúa el agente.
5. Algoritmo y tipo de Agente para este
problema
4,0
Hemos determinado que la mejor opción
para resolver este problema es
implementar un agente de búsqueda
online.
La búsqueda online intercambia Entonces con la función dicha
computación con acción, y difiere en esto anteriormente calculamos en qué nivel y
con las búsquedas offline, las cuales pasillo se encuentra nuestro inicio
determinan una solución antes de enviando como parámetro el número de
ejecutarla. casilla en donde se encuentra la partida.
Una búsqueda online es necesaria para 3. Ahora que ya sabemos la ubicación de
entornos dinámicos y semi-dinámicos, es la partida ubicamos los vecinos de esta
por eso que son utilizados comúnmente en partida. Con vecinos nos referimos a los
problemas de exploración. nodos que lo rodean. Para hacer esta
ubicación enviamos como parámetro el
Para resolver nuestro problema seguimos nivel y pasillo de la partida al
los siguientes pasos: procediendo que lo hemos denominado
1. Primeramente ubicamos la posición de ‘Definir Vecinos’. En este procedimiento,
inicio o partida para ello usamos la hacemos una comparación:
clase que la hemos denominado Nodo y si nivel = 0
enviamos como parámetros: la partida y no vecino hacia arriba,
la casilla en cual se encuentra dicha si nivel = 9
partida no vecino hacia abajo,
Nodo("partida", this.casilla_partida.Name) si pasillo = 0
2. En esta clase utilizamos un no vecino izquierda
procedimiento llamado ‘calcular si el pasillo = 9
ubicación’ en el cual obtenemos la no vecino derecha
ubicación de la partida. Para ello hemos
dividido a nuestro cuadro en niveles y
4. n:0 a) Verificar si la casilla en donde
nos encontramos es la llegada
b) Llamar a la función expandir
p:0 p:9 nodos enviando como parámetro
el nodo en el cual nos
encontramos actualmente.
c) En la función expandir nodo
n:9 verificamos cuantos nodos hojas
puede tener un nodo, haciendo
4. Siguiendo los mismos pasos del 1 al 3 una comparación determinamos
calculamos la ubicación de la llegada, si un sucesor es un camino o es
así mismo calculamos los vecinos de la un obstáculo. En caso de ser un
casilla llegada. obstáculo pasamos, en caso de
5. A continuación calculamos la heurística ser un camino hacemos el
y enviamos como parámetro el nodo procedimiento del 1 al 3 que es
partida ya definido su ubicación y de calcular su ubicación, definir
vecinos. sus vecinos y calcular la
CalcularHeuristica(this.miPartida) heurística.
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 n1: S2
se encuentra cada nodo. Con la (4,0)
siguiente formula calculamos la S1
heurística:
a= nivel_nodo - nivel_llegada
b= pasillo_nodo - pasillo_llegada
h(n): a2 + b2 Llegada
Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2))
Partida
Este algoritmo nos dice que antes de un
agente poder realizar una acción debe Sucesores de n1
calcular la heuristica de los nodos n1
sucesores y asi luego hacer una
comparación de que heuristica es la S1 S2
mejor y tomar esa para su proxima
acción. d) Una vez que definimos cada
sucesor de un nodo lo ubicamos
6. Creamos dos variables de tipo array dentro en un array llamado árbol,
una para almacenar los nodos que calculando el costo desde el
expandiremos del árbol, y otro para padre al nodo hijo en este caso
almacenar la ruta que nos llevara a la desde n1 hasta s1 o desde n1
llegada. hasta s2, además calculamos la
7. Luego Hemos creado un procedimiento heurística de cada nodo hijo o
llamado BLO(Búsqueda Local Online), sucesor.
el cual a su vez hace un llamado a la e) Ya tenemos en nuestro árbol el
función Búsqueda Local Online nodo padre y sus sucesores, con
1(BLO1), esta función BLO1 lo que nos sus respectivas heurísticas, a
hace es: continuación creamos un array
auxiliar para poder ordenar
5. nuestro árbol, ordenamos los
sucesores de un nodo tomando 6.1. Verdino
en cuenta la función heurística en
nodo con menor función Un equipo de ingenieros de la Universidad
heurística estará primero, esto de La Laguna (ULL), en Canarias, ha
con la finalidad de escoger como diseñado a “Verdino”, un vehículo
primera opción el nodo con autoguiado que detecta la carretera
función heurística más corta. utilizando una técnica denominada
f) Además debemos tomar en ‘Optimización de Colonia de Hormigas’
cuenta que no siempre un nodo (OCH).
con mejor función heurística será
el elegido, se debe hacer todo el Este método se basa en el comportamiento
proceso nuevamente con ese que emplean las hormigas para encontrar
nodo con mejor función el camino más corto entre su hormiguero y
heurística para determinar si los las fuentes de alimentación. El autor
sucesores de este son principal del estudio, Rafael Arnay, del
obstáculos o caminos y Departamento de Ingeniería de Sistemas y
determinar sus funciones Automática y Arquitectura y Tecnología de
heurísticas respectivas. Así es el Computadores de la ULL, explica a SINC
proceso que se hace nodo a que los algoritmos de OCH se emplean
nodo hasta llegar al objetivo final. para resolver “problemas de optimización
g) Una vez que hemos llegado a la combinatoria” y se inspiran directamente en
meta el nodo llegada tendrá una el modo en que lo hacen las hormigas.
bandera llamada ‘llegada’, el cual
nos indicara que hemos llegado En la naturaleza, estos insectos depositan
al final. feromonas en sus desplazamientos,
h) Además para poder almacenar dejando un rastro oloroso que puede ser
las rutas que sigue el agente las seguido por los miembros de la colonia.
almacenamos en un array
llamado ruta, para luego pasar Las feromonas se evaporan con el tiempo,
esta ruta a otro array llamado mi por lo que el camino que recorren las
ruta y poder presentarla en hormigas que van y vienen al alimento por
pantalla. 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
6. TRABAJOS RELACIONADOS DEL ingenieros canarios para que “Verdino”
PRESENTE AGENTE detecte correctamente la carretera sin
necesidad de ser dirigido por ningún
Agentes como el que planteamos en este conductor. El prototipo se parece a los
documento han sido realizados pero mucho vehículos utilizados en los campos de golf,
más avanzados y con otros objetivos, y a pero lleva incorporada una cámara que
su vez aplicando nuevas técnicas lo cual recoge los datos visuales necesarios para
los hace mucho más interesantes. aplicar los algoritmos, así como un sistema
6. 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 6.3. Búsqueda aplicada al mapa de
atacan en forma vertical, horizontal y Romania (6)
diagonal. Se busca las posiciones más
optimas y esto se puede observar al Implementamos dos casos, uno para el
obtener como h(n), es decir número de par caso en que de todas las ciudades llegan a
de reinas atacándose, igual a "0" o cercano bucharest (como el dado en Clase y libro
a él como: "1". de Russell) y usando las distancias en línea
recta (para las heurísticas) las mismas
Los algoritmos usados para determinar el dadas, y otro suponiendo que cada ciudad
nº de colisiones de reinas fueron tiene unas ciertas posiciones (X,Y), para
recopilados de Algoritmos para el problema calcular las distancias en línea recta, como:
de las n-reinas. (5)
Arad (91, 492)
Bucarest (400, 327)
Craiova (253, 288)
7. 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
Bibliografía
ciudad, ejecutando el algoritmo y los 1. Norvig, Stuart Russell-Peter. Inteligencia Artificial Un
resultados obtenidos: 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/cl
ase5iabusquedainformadaii.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.