| Industrial Data
2002; 5(2): 64-67 |
|
ALGORITMO EVOLUTIVO
PARA EL PROBLEMA DE
ÁRBOL DE EXPANSIÓN MÍNIMA (MST)
Rosmeri Mayta H.*
INTRODUCCIÓN
El MST tiene una historia venerable en la optimización combinatoria. Fue formulado
inicialmente por Boruvka en 1926 quien se dice tuvo que aprender de éste durante la
electrificación del sur de Moraria donde él proporcionó una solución para hallar la
distribución más económica a través de una red de una línea de energía.
Desde entonces la formulación del MST ha sido aplicada en numerosos problemas
combinatorios tales como: problemas de transporte, diseño de redes de telecomunicaciones,
sistemas distribuidos y otros. Al mismo tiempo algunos algoritmos de tiempo polinomial
fueron desarrollados para su resolución por Prim, Kruskal, Dijkstra y Sollin. Los
problemas que son extensiones del MST son generalmente problemas NP-Hard para los cuales
no existen algoritmos de orden polinomial que los resuelvan. Debido a su complejidad se
han venido empleando algoritmos evolutivos para su solución.
Este problema es importante en dos aspectos, por el lado teórico, el MST pertenece al
conjunto de problemas definidos como NP-Completos [5], por lo que dado su complejidad es
importante encontrar técnicas estocásticas que encuentren soluciones aceptables en
tiempos adecuados, ya que las técnicas determinísticas tienen un comportamiento
exponencial y en las técnicas heurísticas conocidas se degrada la calidad de la
solución conforme crece el tamaño del problema.
Por el lado práctico, problemas como encontrar la configuración óptima de redes de
cómputo, redes de carreteras, o en general problemas de flujo son equivalentes al
problema del MST [5].
La promesa de calidad, eficiencia y robustez de los "algoritmos genéticos" (AG)
es una idea que atrae a muchas personas para trabajar con ellos, sobre todo porque los
métodos tradicionales son buenos para ciertas clases de problemas específicos, pero
cuando un problema no se adapta a tales métodos, encontrar la solución al problema puede
ser frustrante.
Las técnicas estocásticas, al recorrer el espacio de búsqueda del problema, deben de
tener un balance adecuado entre las partes de exploración y explotación que se hace
sobre el espacio de soluciones posibles. La exploración nos permite que el algoritmo se
mueva sobre todo el espacio de soluciones, con lo que evitamos los mínimos locales. Por
otro lado, la explotación nos permite, al encontrar una posible solución óptima,
moverse en el espacio circundante a ésta para encontrar la que más se acerque el óptimo
en dicho vecindario.
De estas técnicas, los algoritmos genéticos cuentan con un buen balance entre la
exploración y explotación, ya que aunque el AG esté cercano al punto de convergencia,
el operador permite explorar individuos -posibles soluciones- con diferentes
características. Por otra parte, el operador de mutación permite al AG una exploración
sobre un área determinada del espacio de soluciones.
FUNDAMENTOS DE MST
Considere un grafo conectado y no dirigido G = (V, E). Donde V = (v1, v2... vn) es un
conjunto finito de vértices (nodos) que pueden representar terminales o estaciones de
telecomunicación; y E = { eij e,ij,= (vi,vj), vi,vj, V} en un conjunto finito de enlaces
que representan la conexión entre los terminales o estaciones. Cada enlace tiene un
número positivo real asociado denotado por W = {wij wij,= w (vi,vj), wij > 0, vi, vj
V} representando distancia, costo, etc.
Un árbol de expansión es un mínimo conjunto de enlaces de E que conectan todos los
nodos en V y por lo tanto al menos un árbol de expansión puede ser encontrado en un
grafo G. El mínimo árbol de expansión denotado por T* es un árbol de expansión cuyo
peso total de todos los enlaces es mínimo. Es decir:
Donde T es un conjunto de árboles de
expansión del grafo G. El grado de un nodo es el número de enlaces conectados a éste.
Un nodo hoja tiene solamente un enlace conectado; de tal manera que el grado de un nodo
hoja en un árbol en uno y el de los otros nodos más de uno.
Luego para que un árbol de expansión sea mínimo debe cumplir una de tales condiciones:
a. Ser un subgrafo de G conectado con n-1 enlaces.
b. Ser un subgrafo de G sin ciclos con n-1 enlaces.
c. La sumatoria de los pesos de todos los arcos asociados al subgrafo de G es el menor de
todos los subgrafos asociados al grafo G que cumplen con las mismas restricciones.
¿QUÉ ES UN AG?
Son algoritmos de búsqueda basados en la mecánica de la selección natural y de la
genética natural. Estos combinan la supervivencia de los individuos más aptos entre las
cadenas de estructuras con un intercambio de información aleatorio para formar un
algoritmo de búsqueda.
ESTRUCTURA DE UN AG
El AG simple o básico comprende cinco pasos principales [5]:
1. Crear población inicial de cromosomas, ya sea en forma aleatoria o mediante cierto
conocimiento inherente al problema en sí. Es muy importante que la población inicial
tenga diversidad para que el algoritmo pueda explorar todo el espacio de soluciones, lo
que se espera se cumpla dadas las características de la inicialización. Además, si se
tiene conocimiento del problema, éste puede ser insertado en la población inicial, con
lo que se espera conseguir un mejor tiempo de convergencia del algoritmo.
2. Evaluación, consiste en calcular la aptitud mediante una función definida para el
problema en particular. El objetivo de esta función es proveer una medida numérica de la
calidad de un cromosoma dado.
3. Selección o explotación, se escogen de forma aleatoria los cromosomas con mejor
función de aptitud una o varias veces y se insertan en un depósito de cruza.
4. Enseguida se realiza una exploración, lo que consiste en la aplicación de operadores
de recombinación y mutación, con lo que se obtienen dos hijos los que según el tipo de
algoritmo usado, reemplazarán a sus padres en la siguiente generación.
5. La población es llenada con los nuevos cromosomas creados. Se repiten estos pasos
hasta que el criterio de paro se cumpla, v.g: un número de generaciones determinado [5].
CONVERGENCIA DEL ALGORITMO
Dado que el algoritmo genético opera con una población en cada iteración, se espera que
el método converja de modo que al final del proceso la población sea muy similar, y en
el infinito se reduzca a un sólo individuo.
Utilizar GAP generacional en la implementación de los algoritmos genéticos garantiza que
no se perderán las mejores soluciones de cada generación y esto contribuye a que se
preservaran los mejores individuos y estos podrán aportar su carga genética a futuras
generaciones que deberían ir aumentando su aptitud, es decir, ir aproximándose mucho
más rápido a la solución.
Utilizar Función Penalty en la implementación del los algoritmos genéticos garantiza
que se puede explorar en las regiones factible e infactibles, debido a que algunas
regiones infactibles pueden proporcionar mayor información acerca de la solución óptima
que otras soluciones factibles, se debe mantener un balance entre Preservación de la
Información (manteniendo soluciones infactibles) y Presión Selectiva (rechazar algunas
soluciones infactibles) [4].
CONSIDERACIONES AL USAR AG
Como cualquier otro algoritmo, el uso de un AG para resolver un problema a ciegas puede
resultar desafiante, por lo que resulta de vital importancia usar el conocimiento del
sistema a optimizar para determinar si el AG tendrá un desempeño adecuado.
Es importante observar que aún para algunos tipos donde se sugiere que otras técnicas
trabajarán mejor que los AG, con suficiente experimentos, se podrá obtener buen
desempeño en la búsqueda usando AG. Por supuesto, tomar cualquier método de
optimización para trabajar de una manera óptima requiere alguna experimentación con sus
parámetros de configuración y selecciones inadecuadas de éstos conducirán a un bajo
rendimiento en la búsqueda. Cuando no se conoce mucho acerca de la superficie de
respuesta y calcular el gradiente es
computacionalmente intensivo o numéricamente inestable muchas personas prefieren usar
métodos de optimización como AG, SA y Simplex los cuales no requieren información del
gradiente [5].
Por el contrario, para las aplicaciones donde el cálculo del vector gradiente es
numéricamente preciso y rápido, no se recomienda usar los AG, ya que éstos alcanzarán
la región óptima mucho más lento que los métodos hill-climbing. Otro tipo de
aplicaciones no recomendadas para los AG son aquellas que requieren encontrar el óptimo
global exacto, dada la característica de los AG de ser buenos encontrando la región
óptima global pero enfrentando problemas algunas veces para localizar el óptimo exacto.
Una de las dificultades más comúnmente mencionadas con los AG comparado con las
técnicas hill-climbing es que generalmente los AG requieren más evaluaciones de la
función de aptitud. Si la superficie de respuesta es bastante suave entonces un método
hill-climbing, v.g. el método Simplex, superará al AG para un número de evaluaciones
dado [5].
PROBLEMA
Elaborar un programa utilizando algoritmos evolutivos para hallar una solución al
problema MST que se presenta a continuación (figura 1):
 |
| Figura 1. Grafo pesado no dirigido |
Las especificaciones y requerimientos de
la implementación son los siguientes:
a. Representación genética. Se empleará la denominada Codificación Enlace en donde se
asocia un índice k con cada enlace es decir, E = { ek}, k= 1,2, .... k en donde k es el
número de enlaces en un nodo. De tal manera que una cadena de bits puede representar una
solución candidata indicando cuales enlaces son usados en un árbol de expansión como se
ilustra en la figura 2.
 |
| Figura 2. Representación genética
de los individuos |
b. Cruce. Un punto.
c. Mutación. Realizar mutación como una perturbación aleatoria dentro del rango
permisible de enteros entre 1 y n (n = números de nodos en un grafo dado).
d. Selección. Rueda de la ruleta.
e. Parámetros del algoritmo (ver cuadro 1).
Cuadro 1. Parámetros
de algoritmo
|
| GAP-Generacional |
10 |
| Tamaño Poblacional |
50 |
| Probabilidad de Cruce |
0.5 |
| Probabilidad de mutación |
0,01 |
| Generaciones |
500 |
| Número de Corridas |
30 |
f. Elaborar un gráfico en donde pueda
apreciarse la mejor aptitud en cada corrida del algoritmo.
El algoritmo implementado recibirá un grafo como el mostrado en la figura 1 y
determinará el árbol de mínima expansión sabiendo que los costos asociados son como se
ilustra en el cuadro 2.
Cuadro 2. Costos
asociados al MTS
|
| Nodo |
Enlace |
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
| 1 |
0 |
224 |
0 |
0 |
0 |
300 |
539 |
| 2 |
224 |
0 |
200 |
0 |
0 |
0 |
539 |
| 3 |
0 |
200 |
0 |
400 |
0 |
0 |
600 |
| 4 |
0 |
0 |
400 |
0 |
400 |
0 |
200 |
| 5 |
0 |
0 |
0 |
400 |
0 |
600 |
447 |
| 6 |
300 |
0 |
0 |
0 |
6000 |
0 |
283 |
| 7 |
539 |
539 |
600 |
200 |
447 |
283 |
0 |
En donde cero (0) indica sin conexión
directa. Asimismo, en la figura 3 se muestra el resultado de colocar los pesos asociados a
cada arco del grafo de la figura 1.
 |
| Figura 3. Grafo con pesos asignados
a cada arco |
Debe ser implementado en C++ Builder,
pues presenta una interfaz gráfica donde están predeterminados los parámetros de
entrada del algoritmo, estos pueden ser cambiados a conveniencia. Será construido en una
forma que permita el proceso de cualquier grafo dado suministrado.
CONCLUSIÓN
Por varias razones, los AG son muy atractivos como herramientas para varias tareas de
optimización. Primero, presentan una abstracción del material y los operadores
genéticos tal y como se presenta en la naturaleza. Segundo, se cree que los AG, como
procedimientos de búsqueda multipunto, pueden encontrar soluciones mucho mejores en
tiempos más cortos que los procedimientos clásicos de búsqueda de un punto. Tercero,
dado que los AG trabajan al nivel de la codificación, es difícil de que obtengan
resultados engañosos aún cuando la función puede ser muy difícil para los esquemas
tradicionales. Y cuarto, se piensa que los AG entregan un alto rendimiento, dado que
muestrean los esquemas en los cromosomas de una manera inherentemente paralela.
Bibliografía
_______________________________________________________________________________
*Ingeniero Industrial. Instituto de
Investigación de la Facultad de Ingeniería Industrial. UNMSM.
E-mail: iifi@unmsm.edu.pe
|