• No se han encontrado resultados

Para facilitar la comprensión de la manera en la que el programa PT-ACO funciona se presenta una lista con los pasos y acciones a seguir para le ejecución del programa.

1. Abrir el mapa de configuraciones (figura 9), El programa se encargara de inte-grar cada capa en una figura drimensional33 que se desplegará si ha sido car-gada correctamente en el visor. A nivel de programación se construye una tabla de tres dimensiones a la cual se hace referencia mediante un puntero del tipo: mapa[X][Y][Z].

2. El programa espera a que el usuario introduzca las posiciones del punto de con-figuración inicial y el punto de concon-figuración final mediante los arrastradores. Es importante recalcar que es responsabilidad del usuario introducir los datos correctamente pues no se cuenta con un verificador de errores, entonces el pro-grama almacena las coordenadas en dos vectores del tipo: origen[3]=[Xo,Yo,Zo] y final=[Xf,Yf,Zf].

3. En este momento se puede ya calcular la trayectoria inicial, para ello se carga el mapa de configuraciones con un valor de feromona igual a uno para todo el espacio libre y cero en el prohibido, es decir, mapa[X][Y][Z] es cero si el espacio es prohibido y uno si el espacio es libre. Desde la ventana principal se cargan los datos que tenga la el deslizador de selección de pertenencia a la heurística para obtener el valor del parámetro q0(sección 1.3.2). A continuación se verifica el estado de los seis vecinos mencionados en la sección 3.2 y se aplican las heuristicas descritas en las ecuaciones (4) y (5); es decir, se debe obtener primero

4.3 Ejecución del Programa 31

el rastro de feromona τrs así como la preferencia de movimiento ηrsen base a la nueva heuristica de distancia (ecuaciónes 9, 10 y 11) - para cada vecino disponible.

En cada iteración la información sobre la nueva posición y pesos adyacentes se almacena en una lista circular y la hormiga actualiza el rastro de feromona localmente. Finalmente, si ha conseguido la trayectoria se actualiza el rastro de feromona global. El resultado de este proceso se ilustra gráficamente en la figura 10, en donde se ha representado mediante una esfera cada una de las posiciones contenidas en la lista circular.

El proceso de iteración descrito anteriormente esta contenido en un ciclo FOR que se rompe sólo en tres casos:

a) Que alcanze un tope máximo de iteraciones. b) Que sufra bloqueo.34

c) Que encuentre la trayectoria deseada.

Fig. 10: Busqueda inicial de la trayectoria.

4. Una opción muy útil es borrar el mapa del visor para analizar con más detalle la trayectoria encontrada, dicho proceso se realiza elegiendo la opción Archivo . Limpiar . Mapa del Menu principal. El resultado se muestra en la figura 11.

34 Bloqueo es en este programa una condición que ocurre cuando la hormiga no encuentra una solución porque se estanca en un mínimo local.

Fig. 11: Trayectoria generada en el primer intento.

5. La última opción es optimizar la trayectoria, si no se han registrado errores y se ha obtenido una trayectoria inical satisfactoria es hora de pulsar el botón de Optimizar, internamente el programa se encarga de leer los rastros de feromona que se han dejado en el mapa tridimensional y buscar un camino mejor utilizando las heuristicas de las que ya se habló en la 1.3.2. El resultado del proceso de optimización se muestra en la figura 12.

4.4. Tiempos

Para realizar las mediciones de tiempo se utilizaron funciones de temporizador de Windows35, además se trabajó con mapas de distintas resoluciones. Se empleó un procesador Pentium III a 750 MHz con 128 MB de RAM, corriendo bajo Windows 2000 y fue programado en el entorno de Visual C++ 6.0 con las librerias de Qt y Coin3D.

4.4.1. Comparación

Para realizar la comparación del método ACO, se implementó el método de bús-queda en gradillas A*. Éste método que ya ha sido mencionado en [11] considera una

35 En particular se usaron QueryPerformanceFrecuency() y QueryPerformanceCounter(), funciones que realizan los calculos de tiempo mediante el valor del contador de desempeño de alta resolución. Esté último cuenta en algunos procesadores, por ejemplo, la frecuencia de reloj del ordenador.

4.4 Tiempos 33

Fig. 12: Trayectoria optimizada.

gradilla rectangular con celdas (nodos) libres y prohibidas. El método se resume en [8] mediante los siguientes pasos:

1. Se abre el nodo inicial y se coloca en una lista llamada OPEN. Este nodo se le refiere como s.

2. Si no hay nodos en la lista OPEN, no existe trayectoria libre entre las configura-ciones inicial y final. (Nunca ocurre en el primer paso).

3. Se determina la función de costo f para todos los nodos de la lista OPEN. el nodo con el coste mínimo se remueve de la lista OPEN y se coloca en la lista CLOSED. Este nodo sera referido como n. (El costo f, se detalla en el paso 5). 4. Si n es el nodo final, se recuperan los punteros de adelante hacia atrás hasta llegar

al nodo inicial y se sale (los punteros se explican en el siguiente paso).

5. Crear una lista de sucesores n’ de todos los nodos adyacentes de n. Se genera un puntero desde cada sucesor hacia el nodo n indicando la dirección de retorno hacia el punto inicial. Para cada sucesor de n’ hacer:

a) Si el sucesor, n’ no esta en la lista OPEN o CLOSED o es un nodo prohi-bido, colocarlo en la lista OPEN. Para este nodo calcular el costo g(n’) de la trayectoria desde el punto inicial hasta el sucesor n’. Este costo se determina sumando el costo de moverse del nodo n al n’ y el costo g(n)

(previamente calculado). También se realiza una estimación del costo de moverse desde el sucesor hasta el nodo final que se denomina h(n’). Este es típicamente el costo de una linea recta entre ambos puntos. Finalmen-te, el coste total f que se asigna a la celda es la suma de ambos costes: f (n’)=g(n’)+h(n’).

b) Si el sucesor n’ ya esta en la lista OPEN o CLOSED, direccionar los pun-teros a través de la trayectoria hasta el g(n’) con valor más bajo. Esto se hace comparando los g(n’) previamente calculados durante la apertura pre-via con el g(n’) nuevo y utilizando el n actual. si el nuevo g(n’) es menor, los punteros se re-direccionan hacia n, Si no, el nodo no se reabre. c) Si el sucesor n’ requiere ajuste de puntero como en el inciso anterior y si

estuviese en la lista CLOSED, reabrirlo. 6. Ir al paso 2.

Este método tiene la ventaja de encontrar el camino óptimo, si es que existe en un tiempo razonablemente bajo (a continuación se verá la comparación de tiempos contra ACO) que depende básicamente del tamaño de la gradilla a explorar. Su desventaja es el consumo alto de memoria, por ejemplo, para el caso de dos dimensiones, si se tiene un mapa de 100x100, ACO necesita una matriz de 100x100 para depositar feromona y una lista de 10000 elementos para almacenar la trayectoria36. En cambio, A* utiliza una matriz de 100x100 para explorar, una lista de 10000 elementos para la lista OPEN, otra para la trayectoria, otra para los costos F, G y H, los padres, etc, y todas de las mismas dimensiones.

En este programa en particular se utilizó el método Manhatan37 para calcular los costos H de la heurística, se realizó una búsqueda cuatro-conectada38 y se buscó en una gradilla tridimensional. En las figuras 13 a la figura 17 se muestran las trayectorias obtenidas utilizando ACO y A* en una gradilla tridimensional de distintas dimensiones, así mismo se puede apreciar los tiempos y longitudes para cada trayectoria.

En la tabla 8 se muestra la comparación de los tiempos obtenidos entre los métodos ACO y A*, observe que en promedio el método A* es un 742.13 % más lento que ACO. De la tabla 8 se aprecia que el tamaño del mapa afecta a la trayectoria inicial y casi nada al tiempo de optimización, la cual depende en mayor medida de la longitud de la trayectoria encontrada, pues una vez encontrado dicha trayectoria se optimiza sobre si misma. Solo en este programa se realiza la optimización en una iteración sobre

3610000 es muy grande y correspondería al peor de los casos en donde se tuviera que explorar toda la gradilla, en la práctica se ha acotado a 2000 cuando mucho.

37A diferencia de ACO en donde se utilizó distancia euclidiana para la heurística. Sin embargo, como este proyecto esta sirviendo también como banco de pruebas y con la intención de darle mayor rapidez al algoritmo A* al no realizar cálculos de coma flotante se propuso la utilización del método Mamhatan (ver [15]).

4.4 Tiempos 35

Fig. 13: Trayectorias obtenidas utilizando ACO y A* para un mapa de 30 × 30 × 30.

Fig. 15: Trayectorias obtenidas utilizando ACO y A* para un mapa de 50 × 50 × 50.

4.4 Tiempos 37

Fig. 17: Trayectorias obtenidas utilizando ACO y A* para un mapa de 70 × 70 × 70. la misma trayectoria generada, lo cual no entrega el camino óptimo. En realidad la optimización es el procedimiento que consume más tiempo pues de resultados como [2] se observa que se necesitan en promedio 120 iteraciones; en este caso si se multiplica la más sencilla (30x30x30) para 100 iteraciones daría 2.34 E-3 x 100 = 234 ms para encontrar el óptimo, este tiempo aproximado tendría que sumarse al que tome encontrar la trayectoria inicial, trayectoria que además pude variar bastante mientras se optimiza. Por lo tanto, para un mapa pequeño de 30x30x30 utilizando el método ACO, se puede esperar un tiempo mayor a 26,7+(100×2,34) = 260, 7 [ms] para obtener la trayectoria optimizada. En la misma tabla 8 se se tiene que este tiempo aproximado sigue siendo menor que el obtenido con A*, así que aunque en este trabajo no se hizó, sería muy importatnte optimizar mínimo en 100 iteraciones.

En la tabla se tiene la comparación entre las longitudes de las trayectorias generadas con los enfoques ACO y A*, observe que, en promedio, la longitud de la trayectoria obtenida mediante A* es un 65 % más corta que la obtenida con ACO. Cabe mencionar que la longitud de A* siempre será la misma mientras que la de ACO puede variar.

tiempo [ms] A CO inicialización A CO optimización A CO T otal A estrella A AC O × 100 30 × 30 × 30 26.7 2.34 29.04 169.75 584.54 40 × 40 × 40 20.7 1.19 21.89 151.78 693.38 50 × 50 × 50 20.3 2.11 22.41 126.15 562.92 60 × 60 × 60 49.8 2.55 52.35 746.27 1425.54 70 × 70 × 70 117.0 3.37 120.37 534.80 444.30

Tab. 8: Comparación de tiempos entre ACO y A*.

longitud ACO al inicializar ACO al optimizar A estrella A∗ ACO × 100 30 × 30 × 30 330 154 68 44.16 40 × 40 × 40 113 101 95 94.06 50 × 50 × 50 306 174 106 60.92 60 × 60 × 60 314 180 132 73.33 70 × 70 × 70 726 278 146 52.52

39

5. Conclusiones

Este trabajo tiene como objetivo el presentar una alternativa de solución al pro-blema de planificación de trayectorias en gradillas tridimensionales. Se desarrolló un programa escrito en C++ capaz de encontrar trayectorias que unan las configuraciones inicial y final definidas por el usuario, en un mapa de configuraciones de tres dimen-siones que tambien puede ser definido por el usuario.

Los tiempos de respuesta que se obtuvieron en todos los casos vistos en en el apar-tado 4.4.1 fueron menores a los obtenidos con A*. ACO Resultó menos ventajoso en cuanto a las longitudes de las trayectorias obtenidas, que siempre fueron mayores a las de A* por las razones que ya se mencionaron. El programa es capaz de encontrar trayectorias en mapas con obstáculos que no están unidos y hasta en pasajes estrechos pero es deficiente para mapas del tipo laberinto o con huecos.

Una ventaja que se puede señalar de PT-ACO con respecto a A* es en la busqueda de trayectorias en espacios de configuraión que varían con el tiempo. Por ejemplo, si se ha encontrado ya la trayectoria y el robot tratase de recorerla encontrando en su camino un obstaculo que no estaba presente, esto supone: (a) para A* volver a planificar la trayectoria por completo, (b) para ACO buscar y optimizar sobre la región que ha sufrido cambios.

Por las razones anteriormente dichas se concluye que el método de optimización mediante colonias de hormigas para planificación de trayectorias es una buena opción cuando el entorno esta cambiando constantemente, aunque la busqueda en gradillas no sea la mejor elección.

Las actualizaciones y/o correcciones, así como la aplicación se pueden encontrar en [17] o mediante el correo: [email protected]

Referencias 41

Referencias

[1] Sergio Alonso, et. al., La Metaheurística de Optimización Basada en Colonias de Hormigas. <http://sci2s.ugr.es/docencia/index.php>, Soft Computing and Intelli-gent Information Systems, 2004.

[2] Xiaoping Fan, et. al., Optimal Path Planning for Mobile Robots Based on Infes-ted Ant Colony Optimization Algorithm. Proc. Of the 2003 IEEE international Conference on Robotics, Intelligent Systems and Signal Processing, Changsha, China, 2003, 131-136.

[3] Dorigo, M.; Maniezzo, V.; Colorni, A., Ant system: optimization by a colony of cooperating agents, Systems, Man and Cybernetics, Part B, IEEE Transactions on, Volume: 26 , Issue: 1, 1996, 29 41.

[4] Dorigo, M.; Gambardella, L.M., Ant colony system: a cooperative learning ap-proach to the traveling salesman problem, Evolutionary Computation, IEEE Tran-sactions on, Volume: 1, Issue: 1, 1997, 53 66.

[5] Kavraki,L.E. et.al; Probabilistic roadmaps for path planning in high-dimmensional configuration spaces, IEEE transactions on Robotics and Automa-tion, Volume 12, issue 4, Aug. 1996. Page(s):566-580.

[6] Faverjon, B; Obstacle avoidance using an octree in the configuration space of a manipulator, Proceedings of the 1984 IEEE International Conference on Robotics and Automation, Volume 1, Mar 1984, Page(s) 504-512.

[7] Fujita, Y,; Nakamura, Y,; Shiller, Z.; Dual Dijkstra Search for paths with diffe-rent topologies, Proceedings of the ICRA ’03 IEEE International Conference on Robotics and Automation, Volume 3, 19 Sept. 2003, Page(s) 3359-3364, vol 3. [8] Warren, C.W.; Fast path planning using modified A* method, Proceedings of the

1993 IEEE International Conference on Robotics and Automation. 2-5 May 1993 Page(s) 662-667 vol. 2.

[9] Ying-Tung Hsiao, et.al.; Ant colony optimization for best path planning, ISCIT 2004, IEEE International Symposium on Communications and Information Te-chnology, Volume 1, 26-29 Oct. 2004, Page(s) 1009-113 vol. 1.

[10] Marco Dorigo; Ant Algorithms Solve Difficult optimization Problems, Advances in Artificial Lif, Proceedings os the Sixth European Conference on Artificial Life, LNAI 2159, Springer-Verlag, pp. 11-12.

[11] Jan Rosell; Planificació de moviments en robòtica

PlanificacioMovimentsRobotica.htm>, Curso de Doctorado en AAR del IOC, 2004.

[12] Eric W. Weisstein;MathWorld,<http://mathworld.wolfram.com>, Web Mathematical Resource, 2005.

[13] Trolltech; Qt Technical Documentation, <http://www.trolltech.com/ developer/doc.html>, web resources, 2005.

[14] SIM; Coin3D, <http://www.coin3d.org/doc/>, web resources, 2005. [15] Patrick Lester; A* Pathfinding for Beginers, <http://www.

policyalmanac.org/games/aStarTutorial.htm>, web resour-ces, 2004.

[16] Dimitri van Heesch; Doxygen,<http://www.stack.nl/~dimitri/ doxigen/index.html>, web resources, 2005.

[17] Carlos Vázquez; Documentación, <http://www.ioc.upc.edu/ usuaris/carlosvazquez/>, web resources, 2005.

[18] Jimmy Wales, Larry Sanger; Wikipedia, <http://www.wikipedia. org/>, web resources, 2005.

Documento similar