Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Resumen
1 Introducción
En Geometrı́a Computacional hay numerosos problemas que, o bien son de naturaleza NP-dura, o
bien son problemas para los cuales no se conocen soluciones eficientes. De todos modos, resulta de
interés encontrar soluciones a tales problemas, aunque las mismas sean aproximadas a las óptimas, por
medio de métodos de naturaleza heurı́stica. En particular, es interesante el estudio de problemas de
optimización geométrica relacionados con ciertas configuraciones geométricas obtenidas a partir de un
conjunto de puntos como son las triangulaciones, las pseudotriangulaciones y las poligonizaciones. En
estos problemas se busca optimizar ciertas propiedades que miden la calidad de las configuraciones:
peso, perı́metro, dilación, factor de carga, etc. Dada la dificultad inherente de dichos problemas, los
algoritmos aproximados surgen como candidatos alternativos para su aplicación. Éstos, pueden dar
soluciones cercanas a las óptimas y pueden ser especı́ficos para un problema tratado o formar parte
de una estrategia general aplicable en la resolución de distintos problemas, como lo son las técnicas
metaheurı́sticas.
Una metaheurı́stica es un proceso de generación iterativo que guı́a la búsqueda de soluciones com-
binando inteligentemente diferentes conceptos de diversos campos como: inteligencia artificial [13],
evolución biológica [2], inteligencia colectiva [9], sistemas inmunes [3], entre otros. Una metaheurı́stica
da un marco algorı́tmico general que puede ser aplicado en problemas de optimización con pocas
modificaciones que lo adapten a un problema especı́fico. Estos métodos son simples de implementar
y han demostrado ser exitosos en encontrar de forma eficiente buenas soluciones para problemas de
optimización NP-duros [11].
Los algoritmos propuestos en este trabajo derivan de una metaheurı́stica basada en inteligen-
cia colectiva (swarm intelligence), más especı́ficamente, en el comportamiento de ciertas colonias de
hormigas. Este marco presupone un sistema de agentes que obedecen a un conjunto de reglas muy
simples, pero que actuando cooperativamente, componen un sistema complejo. En particular, trata-
mos con la técnica Ant Colony Optimization (ACO), la cual es un proceso distribuido, en el que un
∗ Parcialmente subvencionado por Proyecto UPM AL09-PAC-12 y por Proyecto Tecnologı́as Avanzadas de Bases de
La Optimización basada en Colonias de Hormigas (Ant Colony Optimization, ACO en el resto del
trabajo) es una metaheurı́stica inspirada en el comportamiento que siguen las hormigas para encontrar
los caminos más cortos entre las fuentes de comida y el hormiguero, surgida a partir del trabajo inicial
de Dorigo, Maniezzo y Colorni sobre Sistema de Hormigas (Ant System) [4].
Los algoritmos ACO son aptos para resolver problemas de optimización combinatoria. Se basan en
una colonia de hormigas artificiales, representadas por agentes computacionales simples, que trabajan
de manera cooperativa y se comunican mediante rastros de feromona artificiales [5].
Son esencialmente algoritmos constructivos: en cada iteración del algoritmo, cada hormiga cons-
truye una solución al problema recorriendo un grafo de construcción. Cada arista (p, q) del grafo
representa los posibles pasos que la hormiga puede dar y tiene asociadas dos informaciones que guı́an
el movimiento de la hormiga:
• Información heurı́stica, que mide la preferencia heurı́stica, ηpq , de moverse desde el nodo p hasta
el nodo q, o sea, de recorrer la arista. Las hormigas no modifican esta información durante la
ejecución del algoritmo.
• Información de los rastros de feromona artificiales, que miden la “deseabilidad aprendida” del
movimiento, τpq , de p a q, imitando a la feromona real depositada por las hormigas reales.
Esta información se modifica durante la ejecución del algoritmo dependiendo de las soluciones
encontradas por las hormigas.
Una vez que cada hormiga ha generado una solución se evalúa la misma y se puede depositar una
cantidad de feromona en función de la calidad de su solución. Esta información representa el sesgo de
búsqueda que influye al resto de las hormigas de la colonia en el futuro.
Además, el modo de operación genérico de un algoritmo ACO incluye dos procedimientos adi-
cionales, la evaporación de los rastros de feromona y las acciones del demonio. La evaporación de
feromona la lleva a cabo el entorno y se usa como un mecanismo que evita el estancamiento en la
búsqueda y permite que las hormigas busquen y exploren nuevas regiones del espacio. Las acciones
del demonio son acciones opcionales, que no tienen una correspondencia con el comportamiento de las
hormigas reales, para implementar tareas desde una perspectiva global. Algunos ejemplos de acciones
del demonio son: observar la calidad de todas las soluciones generadas y depositar una nueva cantidad
de feromona adicional sólo en las aristas asociadas a algunas soluciones, o aplicar un procedimiento de
búsqueda local a las soluciones generadas por las hormigas antes de actualizar los rastros de feromona.
A continuación presentamos los pasos fundamentales de la estrategia de ACO.
Algoritmo 2.1. ACO-General
{
Inicializar /* inicialización de parámetros y estructuras */
Para c=1 hasta NroCiclos
Para k=1 hasta NroHormigas
ConstSolucionk /* hormiga-k construye solución k */
ActualizarMejorSolución /* selección de la mejor solución */
ActualizarRastro /* actualización de rastro de feromonas */
FinPara
RetornarMejorSolución
}
Inicializar
Incluye la inicialización de los valores de los parámetros que se consideran en el algoritmo. Entre
otros, se deben fijar: el rastro inicial de feromona asociado a cada arista, τ0 , que es un valor positivo
pequeño, normalmente el mismo para todas las aristas, el número de hormigas en la colonia, k, y
los pesos que definen la proporción en la que afectarán la información heurı́stica y de los rastros de
feromonas en la regla de transición probabilı́stica, denominados β y α respectivamente.
Construcción de una solución por la hormiga k
Se inicia con una solución parcial vacı́a, que se extiende a cada paso añadiéndole un componente
de solución factible elegido entre los vecinos de la solución actual. Esto equivale a encontrar una ruta
en el grafo de construcción guiada por el mecanismo que define el conjunto de vecinos factibles con
respecto a la solución parcial. La elección de un vecino factible se realiza de manera probabilı́stica en
cada paso de la construcción, dependiendo de la variante ACO utilizada. En este trabajo, el modelo
de probabilidad con retroalimentación utilizado en los algoritmos de construcción es:
α β
τij .ηij
P α .η β
, j ∈ F(pi );
τih
Pij (k) = ih (1)
0,
h∈F (pi )
en otro caso.
donde:
La evaporación de feromona evita una convergencia demasiado rápida del algoritmo. Además, esta
forma de olvidar permite la exploración de nuevas áreas del espacio de búsqueda.
La actualización del rastro de feromona se puede realizar al menos de dos formas: elitista o no
elitista. En el caso elitista, se utiliza la mejor solución encontrada para dar un refuerzo adicional a los
niveles de feromona. El no elitista utiliza las soluciones encontradas por todas las hormigas para dar
un refuerzo adicional a los niveles de feromona. Nuestra propuesta incluye la aplicación de estas dos
formas de actualización del rastro de feromona.
En el algoritmo ACO, cada hormiga construye una triangulación, partiendo de un punto inicial
cualquiera, agregando aristas a la triangulación mientras no se corten. En caso de no haber aristas
factibles desde el punto actual, la elección del próximo punto de referencia se realiza mediante alguno
de los siguientes criterios: i) en forma aleatoria; ii) que tenga mayor cantidad de aristas factibles; iii)
tenga menor cantidad de aristas factibles.
Algoritmo 3.1. ConstSolucionk
{
Sk ← ∅ /* Sk Solución construida por la hormiga k */
pi ← SeleccionarPuntoInicial(S)
Mientras CantFactibles(Sk ) > 0
Fpi ← Factibles(pi , Sk )
Si Fpi = ∅ /* no existen puntos factibles desde pi */
pi ← SeleccionarPunto(S, Sk )
Fpi ← Factibles(pi , Sk )
FinSi
pj ← SeleccionarPuntoProbabilisticamente(Fpi )
Sk ← Sk ∪ {(pi , pj )} /* agrega la arista (pi , pj ) a la solución */
ActualizarFactibles(pi , pj )
pi ← pj
FinMientras
}
donde:
Factibles(pi , Sk ): retorna un conjunto de puntos p ∈ S, tal que la arista (pi , p) no corta a ninguna
arista perteneciente a la solución Sk .
SeleccionarPuntoInicial(S): retorna un punto p ∈ S, elegido aleatoriamente.
CantFactibles(Sk ): retorna la cantidad de puntos factibles calculada de acuerdo a las aristas que forman
parte de la solución Sk hasta el momento.
SeleccionarPunto(S, Sk ): retorna un punto p ∈ S, tal que Factibles(p, Sk ) debe contener al menos un
punto. Esta selección se realiza teniendo en cuenta las aristas que forman parte de la solución Sk y
alguno de los siguientes criterios: 1) se elige el punto p en forma aleatoria; 2) se elige el punto p que
tenga mayor cantidad de puntos factibles; 3) se elige el punto p que tenga menor cantidad de puntos
factibles.
SeleccionarPuntoProbabilisticamente(Fpi ): retorna un punto pj ∈ Fpi elegido de acuerdo al modelo
de probabilidad dado en la ecuación 1.
Dado un conjunto S de puntos en el plano, una pseudotriangulación es una partición del cierre convexo
de S en pseudotriángulos cuyo conjunto de vértices son los puntos de S. Un pseudotriángulo es un
polı́gono simple con exactamente tres vértices convexos. El peso de una pseudotriangulación P es la
suma de las longitudes euclı́deas de todas las aristas de P. La pseudotriangulación que minimiza esta
suma se denomina pseudotriangulación de peso mı́nimo de S y la denotaremos por M W P T (S). El
término pseudotriangulación fue introducido por Pocchiola y Vegter en [14] por analogı́a con los arreglos
de pseudorrectas y en [15] hay un excelente resumen de muchos resultados sobre pseudotriangulaciones.
En cuanto al peso, Gudmundsson y Levcopoulos presentaron en [8] un algoritmo que construye, en
tiempo cúbico, la pseudotriangulación de peso mı́nimo de un polı́gono convexo. Y también una solución,
en tiempo O(nlogn), que aproxima la solución óptima con un factor O(logn) con respecto al peso del
árbol generador de peso mı́nimo sobre S.
En el algoritmo ACO, cada hormiga construye una solución, partiendo de la cara formada por el
cierre convexo de la nube de puntos, CH(S). Ası́ se inicia un proceso de partición de regiones o caras
hasta que se consigue que todas sean pseudotriángulos vacı́os de puntos interiores. En el paso general
se considera el conjunto Carask donde se mantienen las caras no tratadas. En el análisis de una cara
se verifica en primer lugar si es pseudotriángulo vacı́o de puntos interiores, en cuyo caso pasa a formar
parte del conjunto final de pseudotriángulos (PST). En otro caso, se parte en dos nuevas regiones, o
bien seleccionando un punto interior y dos del borde, o bien, si no hay puntos interiores, dos del borde,
para descomponer la cara inicial en dos nuevas. Se actualiza Carask y se repite el proceso hasta que
todas las caras de Carask se han analizado.
{
PST ← ∅
Mientras CARASk 6= ∅
Sea F ∈ CARASk
Si F es pseudotriángulo vacı́o de puntos interiores
PST ← PST ∪ {F} /* F es un nuevo pseudotriángulo */
CARASk ← CARASk - {F}
Sino
ParticionarCara(F) /* particiona la cara F */
FinSi
FinMientras
Sk ← Convertir(PST)
}
Donde:
SeleccionarPuntoProbabilisticamente(F, pi , pj ): si pi es cero retorna un punto p ∈ Factibles(F, pi ).
En otro caso, retorna un punto p ∈ {Factibles(F, pi )-pj }. En ambos casos, p es elegido de acuerdo al
modelo de probabilidad dado en la ecuación 1. Factibles(F, pi ) es el conjunto de puntos visibles de pi ,
no unidos a pi por una arista, en la cara F.
DividirCara(F, pi , pj , pk , F1 , F2 ): construye dos caras F1 y F2 , a partir de F y de los puntos pi , pj y
pk .
SubAlgoritmo SeleccionarPunto(F)
{
I ← Interiores(F)
Si I 6= ∅
p ← SeleccionarPuntoInterior(F)
Sino
p ← SeleccionarPuntoBorde(F)
FinSi
Retornar p
}
{
Sk ← ConstruirSoluciónInicial(S) /* Sk : Solución construida por la hormiga k */
S ← S - {p / p ∈ Sk }
AristasUsadas ← ∅ /* conjunto de aristas utilizadas en la construcción de la poligonización */
Mientras S 6= ∅
p ← SeleccionarProximoPunto(S)
AgregarPuntoSolucion(p, Sk )
S ← S - {p}
FinMientras
}
SubAlgoritmo SeleccionarProximoPunto(S)
{
PuntoNoFactible ← true
Mientras PuntoNoFactible
p ← SeleccionarPunto(S)
Si (el interior del CH(Sk ∪ {p}) es vacı́o de puntos pertenecientes a S) Y (AristasVisibles(p, Sk ) 6= ∅)
PuntoNoFactible ← false
FinSi
FinMientras
Retornar p
}
donde:
ConstruirSoluciónInicial(S): retorna el triángulo formado por tres puntos pi , pj , pk pertenecientes a
S elegidos en forma aleatoria, tal que dicho triángulo no contiene puntos interiores.
SeleccionarPunto(S): retorna un punto p ∈ S elegido aleatoriamente.
AristasVisibles(p, Sk ): retorna el conjunto de aristas de Sk completamente visibles desde p.
CH(Sk ∪ {p}): calcula el cierre convexo del conjunto de puntos formado por los puntos del polı́gono
Sk y el punto p.
AgregarPuntoSolucion(p, Sk ): selecciona una arista (pj , pk ) ∈ AristasVisibles(p, Sk ), para reem-
plazarla por las aristas (pj , p) y (p, pk ) pertenecientes a Sk , guardando la arista (pj , pk ) en AristasU-
sadas. La selección se realiza de acuerdo al modelo de probabilidad dado en la ecuación 1.
4 Experimentación
En este artı́culo hemos presentado el diseño de algoritmos ACO para la obtención de soluciones apro-
ximadas a los siguientes problemas: triangulación de peso mı́nimo, pseudotriangulación de peso mı́nimo
y poligonización de perı́metro mı́nimo. La etapa experimental se realizará empleando casos de prueba
diversos, que permitan determinar cuáles de los parámetros de los algoritmos ACO son los más ade-
cuados para los problemas de optimización presentados.
Pretendemos continuar en la obtención de buenas aproximaciones a las estructuras geométricas
presentadas, considerando otras medidas de calidad tales como dilación, número de apuñalamiento,
área, etc., utilizando ACO y otras técnicas metaheurı́sticas.
Referencias
[1] T. Auer y M. Held, Heuristics for the generation of random polygons. Proc. 8th Canadian Con-
ference Computational Geometry, pp. 38-44, 1996.
[2] T. Bäck, D. Fogel y Z. Michalewicz, Handbook of Evolutionary Computation. IOP Publishing Ltd
and Oxford University Press, 1997.
[3] D. Corne, M. Dorigo y F. Glover, New Ideas in Optimization. McGraw-Hill, 1997
[4] M. Dorigo, V. Maniezzo y A. Colorni, The Ant System: An autocatalytic optimizing process.
Technical report 91-016 revised, Dipartimento di Elettronica, Politecnico di Milano, Milan, 1991.
[5] M. Dorigo y T. Stützle, Ant Colony Optimization. Massachusetts Institute of Technology, 2004.
[6] S. Fekete, On simple polygonizations with optimal area. Discrete and Computational Geometry,
23, pp. 73-110, 2000.
[7] M. Garey y D. Johnson, Computers and Intractability: a guide of theory of NP-completeness.
Freeman, 1979.
[8] J. Gudmundsson y C. Levcopoulos, Minimum weight pseudo-triangulations. Computational Geom-
etry, Theory and applications, 38, pp. 139-153, 2007.
[9] J. Kennedy y R. Eberhart, Swarm Intelligence. Morgan Kaufmann Publishers, 2001
[10] D. Krznaric, C. Levcopoulos, Quasi-greedy triangulations approximating the minimum weight tri-
angulation. Journal of Algorithms, 27 (2) pp. 303–338, 1998.
[11] Z. Michalewicz y D. Fogel, How to Solve It: Modern Heuristics. 2nd Edition, Springer, 2004.
[12] W. Mulzer y G. Rote, Minimum weight triangulation is NP-hard. Proceedings of the 22nd Annual
ACM Symp. on Computational Geometry. pp. 1-10, 2006.
[13] I. Osman y J. Kelly, MetaHeuristics: Theory & Application. Kluwer Academic Publishers, 1996.
[14] M. Pocchiola y G. Vegter, Pseudo-triangulations: theory and applications. Proceedings of the 12th
Annual ACM Symposium on Computational Geometry, pp. 291-300, 1996.
[15] G. Rote, F. Santos y I. Streinu, Pseudo-triangulations - a survey. Surveys on Discrete and Com-
putational Geometry-Twenty Years Later, Contemporary Mathematics, E. Goodman, J. Pach, R.
Pollack, eds. American Mathematical Society, 2008.