Implementación de un Algoritmo
Multioperador
Basado en Evolución Diferencial para
Optimización Númerica con Restricciones
TESIS DE MAESTRÍA
Luis Alfredo Gordián Rivera
Laboratorio Nacional de Informática Avanzada Maestría en Computación Aplicada
Implementación de un Algoritmo
Multioperador
Basado en Evolución Diferencial
para Optimización Númerica con
Restricciones
Tesis para obtener el grado de maestría Maestría en Computación Aplicada
Director
Dr. Efrén Mezura Montes Codirector
Dr. Edgar Alfredo Portilla Flores
Laboratorio Nacional de Informática Avanzada Maestría en Computación Aplicada
A mi madre, que
La creación intelectual es el más misterioso y solitario de los oficios humanos. Gabriel García Márquez
Agradecimientos
Si estás solo, serás todo tuyo, y si estás acompañado por una sola persona, serás medio tuyo. Leonardo Da Vinci
Quiero agradecer a mi familia por apoyarme y estar conmigo en los buenos momentos pero principalmente en los malos. A mi padre por su consejos y cariño, a mi madre por darme la vida y su apoyo aún en los peores momentos, a mi hermano por su compañia y su amistad.
Quiero dar mi más profundo agradecimiento al Dr. Efrén Mezura Montes por brindarme su tiempo y su apoyo en el desarrollo de este trabajo, ha sido realmente grata la experiencia de trabajar bajo su dirección.
Al Dr. Edgar Alfredo Portilla Flores por apoyarme en la revisión del documento y por abrirme las puertas en el CIDETEC para realizar mis residencias.
A mis compañeros y amigos que hicieron de esta experiencia un recuerdo inol-vidable.
Y al CONACYT por otorgarme la beca para la realización de esta maestría.
Resumen
La optimización se define como el proceso llevado a cabo para encontrar los valores o características que minimicen algún otro valor que depende de ellos. En el mundo real la mayoría de problemas de optimización se encuentran sujetos a un conjunto de restricciones lo que a su vez complica el proceso de búsqueda gene-rando a su vez una gran cantidad de clases de problemas.
En la actualidad diversos algoritmos han surgido con la intención de resolver la mayor cantidad de problemas de optimización. Sin embargo se ha observado que ningún algoritmo posee la capacidad para tener un buen desempeño en todas las clases de problemas.
En este trabajo se presenta un nuevo algoritmo para el manejo de múltiples operadores para resolver problemas de optimización con restricciones. La carac-terística principal del algoritmo es la adaptación de medidas de desempeño a su funcionamiento, así como el uso de variantes especializadas en el manejo de pro-blemas de optimización con restricciones.
Con el objetivo de probar y evaluar el comportamiento de la técnica propuesta se utilizó un conjunto de problemas de prueba, además de un grupo de problemas de optimización en ingeniería.
También, se presenta un análisis del comportamiento del algoritmo y se hace una comparación de los resultados obtenidos contra los obtenidos por otros algo-ritmos del estado del arte.
Índice
Agradecimientos IX Resumen XI 1. Introducción 1 1.1. Antecedentes . . . 1 1.2. Objetivos . . . 3 1.2.1. Objetivo General . . . 3 1.2.2. Objetivos Específicos . . . 3 1.3. Hipótesis . . . 4 1.4. Justificación . . . 4 1.5. Alcances y Limitaciones . . . 5 1.6. Organización de la Tesis . . . 5 2. Optimización 7 2.1. Motivación . . . 7 2.2. Definición de Optimización . . . 72.3. Clasificación de los Problemas de Optimización . . . 8
2.4. Componentes del Problema de Optimización . . . 9
2.5. Planteamiento del Problema General de Optimización Numérica con Restricciones . . . 9
2.6. Técnicas de Optimización . . . 10
2.6.1. Técnicas Tradicionales y No Tradicionales . . . 10
3. Evolución Diferencial 15 3.1. Algoritmos de Optimización . . . 15
3.1.1. Algoritmos de Inteligencia Colectiva . . . 15
3.1.2. Algoritmos de Computación Evolutiva . . . 16
3.1.3. Componentes de un Algoritmo Bio-inspirado . . . 16
3.2. Evolución Diferencial . . . 17
3.2.1. Algoritmo de ED . . . 18
3.2.2. Componentes de la ED . . . 18
XIV ÍNDICE 3.3. Manejo de Restricciones . . . 20 3.4. Ejemplos de aplicación . . . 24 4. Algoritmos Multioperadores 25 4.1. Introducción . . . 25 4.2. Hiperheurísticas . . . 26 4.2.1. Estructura y Funcionamiento . . . 27 4.2.2. Clasificación . . . 29 4.3. Ensambles e Híbridos . . . 30 4.3.1. Estructura y Funcionamiento . . . 30 4.3.2. Clasificación . . . 31
4.4. Clasificación del algoritmo propuesto . . . 33
5. Técnica Propuesta 35 5.1. Motivación . . . 35 5.2. Solución propuesta . . . 35 5.2.1. Variantes de ED . . . 36 5.2.2. Operadores . . . 41 5.2.3. Medidas de Desempeño . . . 41
5.2.4. Descripción general del Algoritmo . . . 43
6. Resultados 51 6.1. Diseño experimental . . . 51
6.2. Problemas de prueba . . . 51
6.2.1. Análisis estadístico y discusión de resultados finales . . . 53
6.2.2. Análisis de comportamiento . . . 55
6.3. Problemas de diseño ingenieril . . . 59
6.3.1. Análisis estadístico y discusión . . . 62
6.3.2. Analisis de comportamiento . . . 64
6.4. Integración de resultados . . . 65
7. Conclusiones y Trabajo futuro 67 7.1. Conclusiones . . . 67
7.2. Trabajo futuro . . . 68
I Apéndices 69 A. Problemas de prueba. 71 A.1. Problemas de prueba . . . 71
B. Gráficas de comportamiento. 83 B.1. Problemas de prueba . . . 83
ÍNDICE XV
Índice de figuras
2.1. Ejemplo del espacio de búsqueda . . . 11
3.1. Proceso de mutación . . . 19
3.2. Descripción gráfica de la cruza exponencial y binomial . . . 21
4.1. Estructura basica de una hiperheurística. . . 27
4.2. Clasificación de las hiperheurísticas. . . 29
4.3. Clasificación de los algoritmos cooperativos de acuerdo al tipo de algoritmos y a su forma de cooperación. . . 32
4.4. Clasificación de los algoritmos cooperativos de acuerdo al grado de cooperación y a la distribución del espacio de búsqueda. . . 32
5.1. Diagrama esquemático del algoritmo propuesto, donde P (t) son las subpoblaciones antes de ser evolucionadas por cada variante v y PR y DC son el Progress Ratio y la Diferencia de convergencia respectivamente . . . 44
5.2. Diagrama de flujo del algoritmo propuesto en un ciclo . . . 45
6.1. Promedio del comportamiento del tamaño de las subpoblaciones en las 30 ejecuciones para problemas representativos con base en el tamaño de la zona factible. . . 56
6.2. Promedio del comportamiento del tamaño de las subpoblaciones en las 30 ejecuciones para problemas representativos con base en su dimensionalidad. . . 57
6.3. Gráficas del comportamiento de las subpoblaciones en cuatro eje-cuciones distintas. Dos ejeeje-cuciones por problema. . . 58
6.4. Gráficas del comportamiento de las subpoblaciones en los proble-mas de ingeniería. . . 64
B.1. Comportamiento promedio de los tamaños de subpoblación en las 30 ejecuciones para el problema g01 . . . 84
B.2. Comportamiento promedio de los tamaños de subpoblación en las 30 ejecuciones para el problema g02 . . . 84
XVIII ÍNDICE DE FIGURAS
B.3. Comportamiento promedio de los tamaños de subpoblación en las 30 ejecuciones para el problema g03 . . . 85 B.4. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g04 . . . 85 B.5. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g05 . . . 86 B.6. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g06 . . . 86 B.7. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g07 . . . 87 B.8. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g08 . . . 87 B.9. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g09 . . . 88 B.10. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g10 . . . 88 B.11. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g11 . . . 89 B.12. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g12 . . . 89 B.13. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g13 . . . 90 B.14. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g14 . . . 90 B.15. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g15 . . . 91 B.16. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g16 . . . 91 B.17. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g17 . . . 92 B.18. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g18 . . . 92 B.19. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g19 . . . 93 B.20. Comportamiento promedio de los tamaños de subpoblación en las
30 ejecuciones para el problema g21 . . . 93 B.21. Comportamiento promedio de los tamaños de subpoblación en las
Índice de Tablas
6.1. Características principales de los 24 problemas de prueba . . . 52 6.2. Valores utilizados por cada parámetro del algoritmo propuesto. . . 52 6.3. Comparación estadística del algorimo propuesto contra tres
algo-ritmos encontrados en el estado del arte . . . 54 6.4. Características principales de los 4 problemas de ingeniería . . . . 59 6.5. Valores utilizados por cada parámetro del algoritmo propuesto. . . 62 6.6. Detalle de las mejores soluciones obtenidas por el algoritmo
pro-puesto para los problemas de ingeniería . . . 63 6.7. Resultados estadísticos obtenidos por el algoritmo propuesto . . . 63 6.8. Comparación de los resultados estadísticos obtenidos por el
algo-ritmo contra los encontrados en el estado del arte . . . 63 6.9. Porcentaje promedio de población asignado a cada variante por
ca-da problema incluidos los problemas de prueba . . . 65 A.1. Conjunto de datos para el problema de prueba g19 . . . 79 A.2. Conjunto de datos para el problema de prueba g20 . . . 80
Capítulo 1
Introducción
En este capítulo se presenta la motivación y la justificación de esta investiga-ción. También se presentan los objetivos principales y específicos de la presente tesis. Además se explica la hipótesis y la contribución de este trabajo.
1.1.
Antecedentes
La optimización es el proceso llevado a cabo para obtener los valores necesa-rios para maximizar o minimizar un resultado bajo ciertas circunstancias. Además, es uno de los principales puntos de estudio de diversas áreas del conocimiento[1]. Por otro lado, la optimización se ha vuelto una importante herramienta al momento de tomar decisiones en la ciencia y en el análisis de sistemas físicos [2].
Al hablar de optimización, un punto importante son los métodos empleados para obtener los valores óptimos. Existen diversas técnicas en el área de optimiza-ción [3], las más conocidas son las técnicas basadas en métodos numéricos, cálculo diferencial y programación matemática[4][5]. Actualmente han surgido novedosas técnicas que, apoyadas por la capacidad computacional actual, obtienen resultados comparables a los obtenidos con técnicas matemáticas.
Un ejemplo de ello son las heurísticas y las metaheurísticas, mediante las cua-les se realiza una búsqueda de soluciones que sacrifica la optimalidad para ganar eficiencia (la solución encontrada será competitiva, más no se garantiza que sea la mejor de todas) [6].
Una heurística es una técnica de búsqueda de soluciones aplicable a un pro-blema particular. De tal manera, que para cada propro-blema planteado es necesario diseñar un mecanismo capaz de buscar y encontrar una solución satisfactoria.
Por ejemplo, suponga que se desea optimizar el tiempo de fabricación de las piezas para automóvil, una posible heurística podría ser comenzar fabricando las piezas más pequeñas y terminar con las más grandes, sin que ésto signifique que es la mejor manera de hacerlo. Otra heurística puede ser el intercalado de piezas grandes y pequeñas.
2 CAPÍTULO1. Introducción
Los algoritmos heurísticos basan su funcionamiento en la aplicación de opera-dores o reglas, que de acuerdo al problema dirigen la búsqueda hacia las solucio-nes más prometedoras, un ejemplo de este tipo de algoritmos es el Hill Climbing o ascenso de colinas en el que la búsqueda parte de una solución inicial y el operador se encarga de realizar una búsqueda en soluciones vecinas donde si alguna de las soluciones es mejor que el punto actual entonces ésta se convierte en la solución actual [7].
Así, se reduce la cantidad de recursos necesarios, pues intentan evadir zonas poco favorables del espacio de búsqueda, lo que reduce precisamente el tiempo de búsqueda necesario y hace a los algoritmos heurísticos técnicas competitivas en espacios de búsqueda extensos.
Sin embargo, el funcionamiento del algoritmo heurístico está retringido al pro-blema para el que fué diseñado, pues el operador en cada heurística depende de las características y condiciones de la problemática para el que fue pensado. Así, la heurística utilizada para optimizar el tiempo de fabricación de las piezas de nuestro automóvil probablemente no se podría aplicar para optimizar el tiempo de armado. Por otro lado, una metaheurística es una técnica con mayor generalidad que una heurística y que aplica un conjunto de heurísticas de manera sistemática y sin necesidad de tener información a priori del problema que se quiere resolver. Las técnicas metaheurísticas poseen la ventaja de que las heurísticas se encuentra incluidas en su funcionamiento, lo que hace posible el uso de los algoritmos me-taheurísticos en una amplia variedad de problemas tanto de índole combinatoria como númerica, sin la necesidad de cambios importantes en su estructura o meca-nismo, además de que proporcionan un marco de trabajo bien definido lo que hace más fácil su implementación [8].
Existen diversos trabajos relacionados al desarrollo de metaheurísticas que bus-can mejorar la capacidad para converger a una buena solución del problema de manera rápida y con mayor exactitud. Algunos de estos algoritmos están basados en comportamientos de la naturaleza. Por ejemplo, en [9], se describe la Evolución Diferencial y la Optimización mediante Cúmulos de Partículas, métodos surgidos a partir de la teoría de la evolución de las especies y en el comportamiento social observado en las parvadas de aves, respectivamente.
Otro ejemplo, es [10] donde se explica el método utilizado en los algoritmos ABC (colonia artificial de abejas) y MBFOA (Optimización Mediante el Forrajeo de Bacterias) donde se emula principalmente la inteligencia colectiva mostrada por grupos de abejas y bacterias.
En [11] se realiza una comparación del algoritmo de Evolución Diferencial contra el método de Programación Matemática llamado programación por Metas aplicado a la optimización en el diseño concurrente de un CVT; en dicho trabajo se logra observar la capacidad de los algoritmos metaheurísticos para lidiar con problemas mecánicos reales.
A pesar de las ventajas que ofrecen los algoritmos metaheurísticos, existen ciertas desventajas relacionadas a su selección y aplicabilidad [12]; ya que es
dífi-1.2. Objetivos 3
cil establecer que técnica metaheurística se adapta mejor al problema que se quiere resolver. Aunque las técnicas metaheurísticas tienen la capacidad de guiar la bús-queda en el espacio de soluciones, cada una tiene comportamientos diferentes para explorar y explotar la región de búsqueda, teniendo mayores ventajas unas que otras de acuerdo a la forma del espacio y a la distribución de las buenas soluciones. Actualmente, han surgido nuevos enfoques de búsqueda, basadas en el uso de múltiples operadores mediante un solo mecanismo, denominadas ensambles así como las llamadas hiperheurísticas que son algoritmos diseñados para controlar la selección de heurísticas de acuerdo al problema. De esta manera se hace posible el manejo de universos de búsqueda más grandes, con la ventaja de soportar diversos problemas sin cambios significativos en la programación [13].
El desarrollo de ensambles e hiperheurísticas es relativamente nuevo y, más que un intento de desplazar los algoritmos metaheurísticos, buscan resolver la proble-mática de la selección de heurísticas apropiadas para la solución de un problema, así como disminuir la complejidad de desarrollo y ampliar la aplicabilidad de las técnicas heurísticas en diversos problemas.
En este trabajo se propone el uso de una técnica que integre características de ensambles e hiperheurísticas para el manejo de múltiples operadores (heurísticas) obtenidos de variantes especializadas de Evolución Diferencial (ED) para resolver problemas de optimización con restricciones con la capacidad de adaptarse a un mayor número de problemas en condiciones diversas de búsqueda. Con la finalidad de gestionar el uso de las heurísticas se propone una novedosa técnica para el uso de medidas de desempeño durante la ejecución del algoritmo.
1.2.
Objetivos
1.2.1. Objetivo General
Diseñar e implementar un mecanismo de control adaptativo de uso de opera-dores obtenidos de variantes de ED especializadas en problemas de optimización con restricciones previamente diseñadas y probadas, encontradas en la literatura especializada.
1.2.2. Objetivos Específicos
Identificar las técnicas empleadas en el desarrollo de ensambles e hiperheu-rísticas basadas en el uso de metaheuhiperheu-rísticas, principalmente de ED.
Analizar e implementar metaheurísticas de la literatura especializada capa-ces de soportar problemas de optimización con restricciones.
Aplicar la técnica planteada en la resolución de problemas de prueba para la optimización con restricciones.
4 CAPÍTULO1. Introducción
Aplicar y resolver un conjunto de problemas de optimización con restriccio-nes surgidos del diseño ingenieril.
Realizar un análisis estadístico de los resultados obtenidos en problemas de prueba y compararlos contra contra técnicas metaheurísticas encontradas en la literatura especializada que adopten principalmente multioperadores.
1.3.
Hipótesis
El diseño e implementación de un mecanismo adaptativo de control de multi-operadores demostrará capacidad para proporcionar resultados competitivos en la resolución de problemas de optimización con restricciones de prueba y de diseño ingenieril comparado contra algoritmos del estado del arte para optimización con restricciones. Por otra parte el diseño permitirá resolver un rango más amplio de problemas mediante la aplicación de múltiples operadores, además de lograrlo sin la intervención de usuario en el proceso de selección.
1.4.
Justificación
Debido a la complejidad que presentan los problemas de optimización numé-rica con restricciones es díficil encontrar un algoritmo heurístico capaz de manejar todas las clases de problemas existentes por lo que una propuesta de solución para ésto es aplicar múltiples heurísticas en un solo proceso de búsqueda.
Uno de los principales inconvenientes con respecto a la selección de las heurís-ticas para resolver problemas de optimización, es que se depende del conocimiento previo del comportamiento de cada algoritmo y de las características del problema que se quiere resolver.
Mediante este trabajo se busca facilitar al usuario la selección del mejor opera-dor de acuerdo a las condiciones de la búqueda al solucionar problemas de optimi-zación con restricciones; proporcionando un algoritmo adaptable capaz de aplicar tres operadores obtenidos de variantes de Evolución Diferencial para solucionar problemas de optimización con restricciones.
Por otro lado, han surgido diversas técnicas para evaluar el comportamiento de los algoritmos denominadas medidas de desempeño sin embargo éstas son utiliza-das una vez que el algoritmo finaliza su ejecución, por lo que sólo se utilizan con fines estadísticos.
Pues no se encontraron trabajos relacionados al uso de múltiples operadores de optimización en los que se utilicen medidas de desempeño para el ajuste y selec-ción de éstos. En este trabajo se propone un novedoso mecanismo de adaptaselec-ción basado en medidas de desempeño y no sólo para el análisis del comportamiento del algoritmo metaheurístico.
1.5. Alcances y Limitaciones 5
1.5.
Alcances y Limitaciones
El algoritmo propuesto se comparó contra otros encontrados del estado del arte en optimización con restricciones mediante la resolución de diversos problemas de prueba encontrados en la literatura especializada. Además se aplicó la propuesta en la optimización de modelos surgidos de diseño ingenieril.
Para el desarrollo de este trabajo se utilizarón variantes de evolución diferen-cial ya diseñadas y probadas en la literatura espediferen-cializada, por lo que el diseño se limitó a la creación del mecanismo adptativo para el uso de múltiples operadores heurísticos.
1.6.
Organización de la Tesis
La presente tesis se organiza de la siguiente manera.
Capítulo 2. Optimización. Donde se define el problema general de opti-mización, su planteamiento matemático, la motivación para hacer optimiza-ción, la clasificación de sus problemas y de sus técnicas de solución. Capítulo 3. Evolución Diferencial. En este capítulo se describen las téc-nicas metaheurísticas de optimización, particularmente el algoritmo general de Evolución Diferencial y las variantes utilizadas para el desarrollo de la presente tesis.
Capítulo 4. Algoritmos mutioperadores En este capítulo se presenta la descripción de un algoritmo mutioperador, sus características y las clasifica-ciones existentes.
Capítulo 5. Técnica propuesta En este capítulo se describe el funciona-miento del mecanismo adaptativo sus elementos principales y los parámetros de calibración que se utilizaron.
Capítulo 6. Resultados Se muestran los resultados obtenidos por el algorit-mo propuesto en problemas de prueba así coalgorit-mo los resultados en problemas de diseño ingenieril.
Capítulo 7. Conclusiones y trabajo futuro Se describen las concluciones de este trabajo de tesis, así como el trabajo futuro.
Capítulo 2
Optimización
En este capítulo se presenta una descripción de los principales conceptos en el problema de optimización, la motivación desde el punto de vista del diseño y sus principales características, así como su planteamiento general.
2.1.
Motivación
En la actualidad uno de los problemas con los que se encuentra el diseño inge-nieril es la exigencia del mercado. La competencia hace que el diseño de nuevos sistemas sea cada vez más difícil al surgir artefactos cada vez mejores, por lo que se hace necesario desarrollar modelos de simulación lo más cercanos a la realidad con la finalidad de reducir gastos en el proceso de desarrollo del diseño [14].
La ventaja principal es que mediante el uso de estos modelos se obtiene una vista preliminar del comportamiento del sistema sin la necesidad de desarrollarlo físicamente, proporcionando una base para mejorarlo de acuerdo a las necesidades del producto que se desea construir o de las que el diseñador considere importantes. El problema de optimización surge cuando alguna o varias de las características del diseño deben ser minimizadas o maximizadas y de la necesidad de obtener los parámetros adecuados para lograrlo.
Un punto importante en la optimización es el concepto de valor, ésto es, obtener una medida sobre qué es lo más importante o más deseable del diseño y decidir si es necesario optimizar ese valor; dicho valor es la capacidad inherente del diseño para satisfacer las características importantes en el sistema [15].
2.2.
Definición de Optimización
Desde el punto de vista de la terminología la optimización se puede definir co-mo hacer algo perfecto, efectivo o tan funcional coco-mo sea posible[16]. También se puede definir como el proceso llevado a cabo para obtener la mejor solución posible a un problema sometido a un conjunto de circunstancias o restricciones[17].
8 CAPÍTULO2. Optimización
2.3.
Clasificación de los Problemas de Optimización
Dentro del los problemas de optimización es posible encontrar diversas carac-terísticas que los distinguen. De esta manera es posible clasificarlos de acuerdo a cada una de ellas. K. Deb[18] propone la siguiente clasificación.
1. Basado en la existencia de restricciones Con restricciones
Sin restricciones
2. Basado en la naturaleza de las variables de decisión Problemas estáticos o paramétricos
Problemas dinámicos o de trayectorias
3. Basado en la naturaleza de las ecuaciones involucradas en el problema Problemas lineales
Problemas no lineales
Problemas de programación geométrica Problemas de programación cuadrática
4. Basado en los valores permitidos en las variables de diseño Problemas de programación entera
Problemas de programación con valores reales Problemas de optimización combinatoria
5. Basado en la naturaleza determinística de las variables Problemas estocásticos
Problemas deterministas
6. Basado en la separabilidad de las funciones Separables
No separables
7. Basado en el número de funciones objetivo Mono-objetivo
2.4. Componentes del Problema de Optimización 9
2.4.
Componentes del Problema de Optimización
De manera general los componentes principales de un problema de optimiza-ción son los siguientes [19][16][17].
Función Objetivo: Define la calidad de la solución y representa el valor que se quiere optimizar; dicho valor permite discriminar entre soluciones. Variables: Son el conjunto de valores que definen a una solución, y que afec-tan el valor que tomará la función objetivo. La dimensionalidad del problema está definida como el número de variables que posee el problema.
Restricciones: Son un grupo de limitaciones relacionadas al problema, éstas pueden ser:
• Restricciones de frontera. Definen el rango de valores que cada varia-ble puede tomar(cada provaria-blema tiene al menos un conjunto de estas restricciones).
• Restricciones funcionales. Dependen del problema que se plantea y co-múnmente están definidas como una función de las variables del pro-blema.
2.5.
Planteamiento del Problema General de
Optimiza-ción Numérica con Restricciones
Este trabajo se centra en los problemas de optimización numérica con restric-ciones CNOP (Constrained Numerical Optimization Problem). Un CNOP se puede definir como la búsqueda de los valores adecuados para minimizar o maximizar algún objetivo numérico en particular limitado por un conjunto de restricciones; Villela [13] define la optimización como:
Definición 1. Encontrar los valores de las n variables de decisión [x1, x2, ..., xn]T
denotadas por el vector~x ∈ S que satisfagan las m condiciones de desigualdad y lasp condiciones de igualdad que optimicen la función objetivo f (~x).
Sin pérdida de generalidad un CNOP se define como el: Minimizar:
f (~x), ~x = [x1, x2, ..., xn] (2.1)
Sujeta a:
10 CAPÍTULO2. Optimización
hj(~x) = 0, j = [1, 2, ..., p] (2.3)
Li ≤ xi≤ Ui
Donde:
~x es el vector de variables conocidas como variables de diseño o parámetros donde cada xi(i = 1, 2, ..., n) son valores escalares.
f (~x) es la función objetivo, la cual es un valor escalar de ~x.
gi(~x) y hi(~x) son funciones restrictivas(restricciones) con valores escalares
que deben ser satisfechas por el vector ~x.
Liy Ui son los límites inferior y superior respectivamentes, que pueden
to-mar cada una de las variables del vector ~x.
De acuerdo a la definición anterior, es posible decir que existe un espacio de búsqueda o espacio de diseño S definido como un espacio cartesiano de dimen-sión n, donde cada eje representa una de las variables del problema conocidas como variables de diseño y cada punto denominado vector de diseño representa una solución potencial al problema. Además, si se consideran las restricciones en el espacio de búsqueda, existe un subconjunto de soluciones que satisfacen las res-tricciones, denominado región factible; siendo el conjunto de puntos infactibles la región infactible (no factible) (Ver fígura 2.1).
2.6.
Técnicas de Optimización
El área de la optimización está caracterizada por el uso de técnicas basadas en el desarrollo matemático, principalmente derivadas del cálculo diferencial apli-cadas en la investigación de operaciones [2]. Recientemente han surgido nuevas técnicas denominadas no tradicionales, basadas en el uso de heurísticas y métodos probabilísticos que pueden ser aplicados a una gran gama de problemas sin requerir grandes cambios derivados de características particulares de algún problema[1].
2.6.1. Técnicas Tradicionales y No Tradicionales
La investigación de operaciones o investigación operativa es la rama de las mátematicas aplicadas y el análisis númerico que entre otra cosas se encarga de proponer técnicas para resolver problemas de optimización[20].
En los últimos años diversas técnicas basadas en el uso de heurísticas y de-dicadas a la resolución de problemas de optimización han surgido; la motivación
2.6. Técnicas de Optimización 11 Región Factible Región Infactible x1 x2 g(~x) h(~x)
Figura 2.1: Ejemplo del espacio de búsqueda de un problema con dos variables de diseño, el problema posee dos restricciones g(~x) y h(~x) las cuales limitan las soluciones dentro de la región factible(línea gruesa)
principal es que pese a que las técnicas tradicionales aportan soluciones satisfacto-rias a la mayoría de los problemas en los que se aplican, la complejidad sobre todo de problemas del mundo real pueden llegar a ser muy demandante. Las técnicas no tradicionales aportan una buena herramienta al momento de resolver problemas donde el espacio de búsqueda es muy amplio y/o las restricciones de las soluciones son altamente complejas.
Por otra parte, existen diversos tipos de técnicas para la resolución de proble-mas de optimización, dentro de la optimización global es posible encontrar diversos métodos los cuales Deb [3] propone la clasificación en las siguientes categorías:
1. Métodos Tradicionales
Algoritmos de optimización de variable simple: Estos algoritmos son clasificados en dos categorías métodos directos y métodos basados en gradientes. Además estos algoritmos proporcionan buena información sobre las propiedades de los máximos o mínimos en la función, traba-jando de manera iterativa.
Algoritmos de optimización multi-variable: son clasificadas en técnicas directas y técnicas basadas en gradiente.
Algoritmos de optimización restringida: Funcionan utilizando técnicas de variable simple y multi-variable de manera repetida y simultánea, manteniendo los esfuerzos de búsqueda en la región factible.
12 CAPÍTULO2. Optimización
Algoritmos de optimización especializada: Son métodos utilizados pa-ra cierta clase de problemas debido a su capacidad papa-ra resolverlos. 2. Métodos no tradicionales. Métodos que incorporan conceptos heurísticos
pa-ra mejopa-rar la búsqueda.
Por otro lado Tomas Weise [1] propone la siguiente clasificación para estos algoritmos.
1. De acuerdo al método de operación
Determinísticos: Son los más utilizados si se encuentra una relación clara entre las características de las posibles soluciones y su utilidad para el problema. Sin embargo si la relación entre las soluciones y la función objetivo es muy compleja o la dimensionalidad del espacio de búsqueda es demasiado grande, estas técnicas se vuelven imprácticas o incapaces de resolver el problema de optimización por lo que son aplicables para un grupo reducido de problemas.
Probabilísitcos: Son técnicas que procuran garantizar la mejor solución en un tiempo corto de ejecución; en este tipo de algoritmos se utilizan heurísticas, las cuales son funciones que ayudan al algoritmo a decidir de un conjunto de posibles soluciones cuál será la siguiente en ser ana-lizada. A su vez las técnicas probabilísticas pueden trabajar de acuerdo a dos enfoques :
• Heurísticas. Que es una parte del algoritmo de optimización que utiliza la información del estado actual de la búsqueda para decidir cuál solución debería ser la siguiente en ser evaluada o generada. Generalmente depende del problema con el que se esté trabajando • Metaheurísticas. Es un método que se utiliza para resolver proble-mas de manera más general, mediante la combinación de funcio-nes objetivo o heurísticas de una manera eficiente, comúnmente sin un conocimiento profundo de la estructura del problema, vis-tas como una caja negra.
2. De acuerdo a sus propiedades Velocidad de optimización
• Online optimization: Son problemas de optimización que deben ser resueltos rápidamente, ya sea en cuestión de segundos o una fracción de ellos. Por ejemplo, la localización robótica, el balance de cargas o actualizaciones en la programación de una máquina de fabricación
• Offline optimization: En este tipo de optimización no es tan im-portante el tiempo y es posible esperar incluso varios días siempre
2.6. Técnicas de Optimización 13
que la solución sea la mejor o muy cercana a la mejor. Un ejemplo de estos problemas son los sugidos de data mining, optimización estructural, u optimización de mecanismos.
Número de objetivos
• Mono-objetivo: Técnicas que se utilizan cuando es necesario ma-ximizar o minimizar un único valor en el problema y el problemas solo posee una función objetivo.
• Multi-objetivo: Técnicas usadas cuando es necesario maximizar o minimizar múltiples valores por lo que el problema posee varias funciones objetivo.
En el siguiente capítulo se abordarán algunas técnicas heurísticas para la so-lución de problemas de optimización, particularmente se tratará el algoritmo de Evolución Diferencial sus componentes principales y algunos casos de éxito en su aplicación.
Capítulo 3
Evolución Diferencial
En este capítulo se presentan las principales técnicas metaheurísticas para la resolución de problemas de optimización; de manera partícular se habla sobre los algoritmos evolutivos, principalmente del algoritmo de evolución diferencial. Por otro lado se explica la clasificación de las técnicas para el manejo de restricciones y se describe la utilizada en este trabajo.
3.1.
Algoritmos de Optimización
Debido a su facilidad de implementación, los métodos no tradicionales, como las heurísticas y las metaheurísticas han sido ampliamente utilizados en el área de la optimización; uno de los principales motivos, es la complejidad de los problemas que se resuelven; mientras más cercanos son a la realidad, es más difícil aplicar métodos tradicionales.
Siempre es conveniente considerar como primera opción los métodos clásicos pues a pesar de todas las ventajas que ofrecen los métodos no tradicionales, és-tos no garantizan el encontrar el óptimo global. Sin embargo, suelen proporcionar soluciones altamente competitivas [10]. Dentro de los métodos no tradicionales existe un grupo especial de técnicas las cuales basan su funcionamiento en com-portamientos o situaciones observadas en la naturaleza conocidos como algoritmos bio-inspirados. Los que a su vez se dividen en:
Computación Evolutiva [21] Inteligencia Colectiva [22]
3.1.1. Algoritmos de Inteligencia Colectiva
Estos algoritmos se caracterizan principalente por el intento de emular el com-portamiento de lo seres vivos y la manera en que se adaptan al entorno en el que viven; de esta esfera han surgido diversos trabajos, entre los que podemos encontrar 15
16 CAPÍTULO3. Evolución Diferencial
el PSO (Particle Swarm Optimization)[21] que funciona con base en el comporta-miento observado en grupos de aves en el proceso de búsqueda de alimento; donde las soluciones se comportan como un grupo de aves en el que existe un líder que guía a la parvada hacia regiones más favorables para encontrar alimento.
También existe el algoritmo basado en el comportamiento de las abejas ABC (Artificial Bee Colony) [16], donde se emula el comportamiento de las abejas di-vidiendo la colmena en abejas exploradoras y observadoras; las abejas empleadas buscan mejorar las soluciones ya encontradas mientras que las exploradoras se encargan de buscar nuevas zonas del espacio de búsqueda, y las observadoras per-manecen al pendiente de las zonas que pueden ser más favorables para explotarlas. Otro ejemplo es el algoritmo basado en bacterias BFOA (Bacterial Foraging Optimization Algorithm) [17], donde se reproduce el proceso que lleva a cabo la bacteria e-coli para hacerse de nutrientes, así como para evitar sustancias que pue-dan afectarla; además de emular la manera en que las bacterias se comunican por medio de la producción de químicos y su liberación en el ambiente, lo que permite a las otras bacterias reconocer áreas favorables o dañinas.
3.1.2. Algoritmos de Computación Evolutiva
La Computación Evolutiva (CE) es el término con el que se conoce al grupo de técnicas computacionales que intentan emular el proceso evolutivo natural. La CE engloba, entre otras técnicas, los Algoritmos Genéticos (Genetic Algorithms GA’s) los cuales están basados en la herencia genética y la forma en que las caracterís-ticas de los individuos se transmiten de generación en generación, las Estrategias Evolutivas basadas en la idea de adaptación y evolución, la Programación Evolu-tiva basada únicamente en los procesos de mutación y selección y la Evolución Diferencial (ED); y cuyo conjunto se conoce como Algoritmos Evolutivos (Evolu-tionary Algorithms EAs) [23][1].
3.1.3. Componentes de un Algoritmo Bio-inspirado
De manera general tanto los algoritmos de computación evolutiva como los de inteligencia colectiva comparten algunas características o elementos en su estruc-tura. En este apartado se explican los pasos principales para el desarrollo de un algorimo bio-inspirado[10].
1. Generación de un conjunto de soluciones (vectores) al problema denominado población, donde cada solución es denominada individuo.
2. Evaluar cada solución en la función objetivo que se quiere optimizar. 3. Seleccionar un grupo con las mejores soluciones de la población con base en
la función objetivo.
3.2. Evolución Diferencial 17
5. Evaluar las nuevas soluciones.
6. Seleccionar las soluciones que formaran parte del siguiente ciclo.
Además de los pasos para el desarrollo de un algoritmo bio-inspirado, existen un grupo de elementos comunes en la mayoría de algoritmos bio-inspirados que son los siguientes[10].
Representación de las soluciones: Las soluciones se pueden representar de acuerdo a las características del problema en cadenas binarias, números enteros o números reales. Para la resolución de CNOP la representación con números reales es la más adecuada, pues las variables de estos problemas comúnmente utilizan estos valores. Así cada solución será un vector que contenga un conjunto de números reales.
Mecanismo de selección: En algunos algoritmos bio-inspirados funciona como el elemento que guía la búsqueda. Mediante el uso de este mecanismo se eligen un conjunto de soluciones de la población para generar nuevas soluciones. En general se utiliza un criterio basado en la función objetivo para hacer esta selección.
Operadores de variación:Son elementos del algoritmo bio-inspirado que sirven para generar nuevas soluciones a partir de las ya existentes en la po-blación (regularmente las elegidas por el mecanismo de selección). Estos operadores son una de las características principales que distinguen a cada algoritmo bio-inspirado, y pueden generar desde una solución o varias a par-tir de una sola ya existente, o generar una o varias soluciones a parpar-tir de dos o más soluciones.
Mecanismos de reemplazo: Al igual que el mecanismo de selección fun-ciona como guía en la búsqueda, y es es mecanismo que funfun-ciona para se-leccionar las soluciones que formaran la siguiente generación; esto se hace considerando las soluciones ya existentes y las recién generadas. El proceso de reemplazo se puede basar en el valor de las función objetivo, la edad de la solución o en mecanismos aleatorios.
3.2.
Evolución Diferencial
El algoritmo de Evolución Diferencial (ED) es de reciente surgimiento; pro-puesto por Storn y Price en 1997 [24], ha sido exitosamente aplicado en diversos problemas de optimización demostrando gran competitividad contra otros algorit-mos del cómputo evolutivo y de inteligencia colectiva.
18 CAPÍTULO3. Evolución Diferencial
3.2.1. Algoritmo de ED
El algoritmo de ED es una técnica de búsqueda directa que se basa en el de-sarrollo evolutivo de una población durante varios ciclos, la población durante la ejecución completa del algoritmo puede representarse como sigue:
Px,g= {~x1,g, ~x2,g, . . . , ~xN P,g}, g = 1, . . . , M AX_GEN (3.1)
~
xi,g= [x0, x1, . . . , xn]T, i = 1, . . . , N P (3.2)
donde, M AX_GEN es el número máximo de ciclos que se ejecutara, P es la población, N P es la cantidad de vectores en la población y n es la cantidad de variables que tiene cada vector también llamada dimensionalidad del problema.
3.2.2. Componentes de la ED
El algoritmo de evolución diferencial se compone de tres etapas principales durante cada ciclo. El algoritmo, contempla como primer paso la aplicación de dos operadores de variacion denominados Mutación y Recombinación para posterior-mente llevar a cabo el proceso de Selección de individuos que formaran la siguiente generación. Es importante mencionar que en el algoritmo de ED no existe un pro-ceso de selección de padres; ya que cada vector de la población genera un vector hijo mediante el uso de los operadores de variación.
3.2.2.1. Mutación
El proceso de mutación, consiste en calcular un vector mutante para cada vec-tor de la población; lo que significa que si existen N P vecvec-tores en la población, entonces N P vectores de mutación serán generados. Cada vector que genera un vector mutante es denominado vector padre. El cálculo del vector de mutación se realiza en 2 etapas.
Se calcula el vector de diferencia, lo que representa la dirección de la bús-queda
Se realiza la suma de la diferencia con el vector base.
El cálculo del vector de diferencia se realiza utilizando un par de vectores r1 y r2, seleccionados de manera aleatoria de la población actual, restándolos entre sí para definir una dirección de búsqueda; el resultado es multiplicado por un factor de escala F; una vez que el vector de diferencia se ha calculado se suma un tercer vector denominado vector base o vector donante r3; el resultado obtenido es el vector de mutación o vector mutante en la Figura 3.1 se observa graficamente. Matemáticamente se expresa de la siguiente forma (Ver Eq. 3.3)
3.2. Evolución Diferencial 19 6 -7 > I e e x y ~ xr1,g− ~xr2,g ~ xr1,g ~xr2,g Región Factible Región Infactible 6 -e e x y ~ xr1,g ~ xr2,g Región Factible Región Infactible e e v v’ (a) (b)
Figura 3.1: (a)Vector de diferencia obtenido de la resta de ~xr1,gy ~xr2,g. (b) Posibles
soluciones con valor de F positivo y negativo (Ver Eq. 3.3)
3.2.2.2. Recombinación
Mientras que la mutación genera nuevas direcciones de búsqueda procuran-do explorar el espacio de soluciones; la recombinación se encarga de explotar las regiones ya encontradas mediante el intercambio de información de la población actual a sus descendientes.
Esta operación se realiza entre el vector padre ~xi,g−1y el vector de mutación ya
generado ~vi,g. La recombinación se realiza de forma discreta, es decir el vector hijo
~
ui,g heredará los valores de sus progenitores (vector padre y vector de mutación)
de forma directa. El proceso es el siguiente:
~
ui,g = uj,i,g=
vj,i,g si (randj[0, 1) ≤ CR o j = jrand); j = 1, 2, . . . , n
xj,i,g−1 de otra manera
(3.4) donde, CR es un número real definido por el usuario y se encuentra en el siguiente rango [0, 1) y permite definir qué tan parecido será el vector hijo con respecto al vector padre y al vector de mutación; si el valor de CR es cercano a 1, el vector decendiente será muy parecido al vector de mutacion; mientras que para valores cercanos a 0, el vector hijo será muy parecido al vector padre. Un punto importante, es que aunque el valor de CR sea 0, por lo menos en una posición el vector hijo será diferente del vector padre, dada la condición j = jrand, donde
20 CAPÍTULO3. Evolución Diferencial
aleatoria. Así, al menos en la posición j el vector padre diferirá del vector hijo. El algoritmo de ED en su versión original maneja dos tipos de recombinación discreta, y en ambas se utiliza el parámetro CR para ajustar el parecido del vector hijo con respecto al vector padre y al vector de mutación.
Recombinación exponencial: La recombinación se inicia en la posición jrand
y el vector es considerado como una cola circular donde al finalizar se con-tinua con las primeras posiciones de éste, si aún no han sido consideradas (en el caso de que jrandsea una posición media en el vector). Así, por cada
posición se genera un valor aleatorio entre 0 y 1 y los elementos que for-marán al vector hijo se copiarán del vector de mutación, hasta que un valor aleatorio sea mayor que CR; una vez que esto sucede, los valores restantes de la cadena se copian del vector padre (Ver Figura 3.2 (a)).
Recombinación binomial: Para el proceso de recombinación se genera un número aleatorio entre 0 y 1 para cada posición del vector, si el valor obteni-do es más pequeño que CR, el hijo obtiene el valor del vector de mutación; en el caso de que el valor obtenido sea mayor que CR el valor se copia del vector padre(Ver Figura 3.2 (b)).
3.2.2.3. Selección
La selección también denominada mecanismo de reemplazo, funciona de la siguiente manera: Una vez que todos los elementos de la población han generado su propio hijo, y la población total sea 2 ∗ N P ; el proceso de selección se encargará de mantener a la población con su tamaño original N P seleccionando a los mejores vectores. La comparación se realiza de forma directa padre contra hijo mediante la evaluación de cada uno de ellos en la función objetivo; de esta forma, el elemento que tenga mejor función objetivo permanecerá para el siguiente ciclo y el peor será eliminado (Ver Eq. 3.5).
~ui,g =
~ui,g si (f (~ui,g ≤)f (~xi,g−1))
~xi,g−1 de otra manera
(3.5) El proceso llevado por la técnica de ED se encuentra detallado en el algoritmo 1 .
3.3.
Manejo de Restricciones
El desarrollo de algoritmos evolutivos se ha caracterizado por su gran aplica-bilidad en una amplia gama de problemas; sin embargo, un punto importante, es que a pesar de sus ventajas, no poseen un mecanismo propio para el manejo de restricciones. Además se debe señalar que aunque los problemas para los que fue-ron diseñados originalmente no consideraban las restricciones, la mayoría de los problemas reales poseen un conjunto de ellas.
3.3. Manejo de Restricciones 21 6 6 ? ? 6 vector de mutación rand(0,1) vector hijo vector padre (a) 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.2 0.2 0.2 0.3 0.3 0.3 0.3 0.3 0.4 0.4 0.4 0.3 0.4 jrand=3 CR=0.2 ? 6 ? ? 6 vector de mutación rand(0,1) vector hijo vector padre (b) 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.2 0.2 0.2 0.3 0.3 0.3 0.3 0.3 0.4 0.4 0.4 0.3 0.4 jrand=3 CR=0.2
Figura 3.2: (a) Cruza exponencial el vector randj(0, 1) está compuesto por valores
aleatorios, el valor en negrita es menor que el parámetro CR, por lo que para esa posición, el vector hijo copia el valor del vector de mutación y el resto del vector padre (la cruza se inicia en la posición jrand). (b) Cruza binomial los valores en
negrita de randj(0, 1) son menores que CR y son las posiciones que el vector hijo
copia directamente del vector de mutación. El resto de las posiciones son copiadas del vector padre. El valor jrand define que posición sera tomada del vector de
22 CAPÍTULO3. Evolución Diferencial
Algoritmo 1 Algoritmo de ED/rand/1/bin
Require: Función Objetivo f (x), Número de generaciones M AX_GEN , Tama-ño de población N P , Factor de escala F , Factor de cruza CR.
1: G=0
2: Crear población inicial aleatoria ~xi,G∀i, i = 1, . . . , N P
3: Evaluar f (~xi,G)∀i, i = 1, . . . , N P
4: for G = 1 to M AX_GEN do
5: for i = 1 to N P do
6: Seleccionar aleatoriamente r1 6= r26= r3
7: jrand= randint(1, D)
8: for j = 1 to D do
9: if (randj[0, 1) ≤ CR or j = jrand) then
10: ui,j,G = xr3,j,G−1+ F (xr1,j,G−1− xr2,j,G−1)
11: else
12: ui,j,G = xi,j,G−1
13: end if
14: end for
15: if f (~ui.G) ≤ f (~xi,G−1) then
16: ~xi,G= ~ui,G 17: else 18: ~xi,G= ~xi,G−1 19: end if 20: end for 21: end for
3.3. Manejo de Restricciones 23
Por lo anterior, diversos trabajos han surgido con la intención de proporcionar diversos mecanismos para el manejo y la evaluación de restricciones. Mezura et al. [25] propone una clasificación para las técnicas para el manejo de restricciones en las siguientes categorías:
Funciones de penalización: Son enfoques que se basan en técnicas de pro-gramación mátematica, mediante las cuales se transforma el CNOP en un problema de optimización númerica sin restricciones.
Decoders: Funcionan con base en la idea de transformar o mapear el espacio de soluciones factibles en un espacio más simple y en el que el algoritmo de búsqueda pueda proveer un mejor desempeño.
Operadores Especiales: Son operadores que se diseñan con la finalidad de preservar la factibilidad de las soluciones o mover las soluciones a regiones de interes en el espacio de búsqueda.
Separación de funciones objetivo y restricciones:Se diferencían de las otras técnicas por el cambio de enfoque; pues mientras las técnicas restantes tratan de combinar la función objetivo con los valores de las retricciones en un solo valor, estas técnicas manejan los valores de manera separada.
En este trabajo se utiliza una técnica perteneciente a la clase de separación de funciones objetivo y restricciones, basada en un conjunto de reglas propuestas por K. Deb [26] que se aplican para realizar la selección entre padre e hijo. Las reglas que propone son las siguientes:
Entre 2 soluciones factibles, la que tenga el mejor valor en la función objetivo será seleccionada.
Si una solución es factible y la otra es infactible, la solución factible es sele-ccionada.
Si ambas soluciones son infactibles, la que tenga el menor valor en la suma de violación de restricciones es elegida.
La suma de violación de restricciones se calcula de la siguiente manera.
m X i=1 max(0, gi(~x)) + p X j=1 max(0, |hj(~x) − |) (3.6)
Donde m es el número de restricciones de desigualdad que presenta el proble-ma y p es el número de restricciones de igualdad del probleproble-ma; es un parámetro que funciona para ajustar el nivel de tolerancia permitido por las restricciones de igualdad; de tal forma que sea posible convertir la restricción de igualdad en res-tricción de desigualdad.
24 CAPÍTULO3. Evolución Diferencial
3.4.
Ejemplos de aplicación
Debido a su gran desempeño en la resolución de problemas de optimización, el algoritmo de evolución diferencial ha sido exitosamente aplicado en la resolución de problemas de optimización.
Gran diversidad de variantes de este algoritmo han surgido con la finalidad de proporcionar robustez al la técnica frente a problemas de optimización numérica con restricciones.
Por ejemplo en [27] se propone una combinación de evolución diferencial con el método de Constraint Consensus para acercar las soluciones infactibles a regio-nes factibles; En este algoritmo la población es dividida en población factible y población infactible. De la población infactible se seleccionan un grupo de indivi-duos para aplicar el método de Constraint Consensus. El algorimo demostró que la región factible se alcanzaba más rápidamente al compararla contra algunos otros algoritmos del estado del arte.
Por otro lado en [28] se propone un híbrido de evolución diferencial donde se hace uso de un mecanismo con base en dos poblaciones (factible e infactible). Además se utiliza el método simplex para realizar una búsqueda local alrededor de la mejor solución encontrada. El algoritmo demostró un desempeño competitivo al compararlo contra variantes de Particle Swarm Optimization, algoritmos genéticos y programación evolutiva.
Finalmente en [29] se utiliza la técnica de evolución diferencial modificada pa-ra integpa-rar la estructupa-ra y el control en el diseño de un CVT, además se realiza la comparación del algoritmo basado en ED contra un algoritmo de programación matemática donde se demuestra la competitividad de la técnica y las ventajas que ofrece como la facilidad para la implementación y la velocidad para encontrar so-luciones.
En el siguiente cápitulo se presentará la descripción de lo que es un algoritmo de operadores múltiples, su clasificación y las principales características de cada clase.
Capítulo 4
Algoritmos Multioperadores
Este capítulo se centrará en la descripción de dos mecanismos importantes en el uso de operadores múltiples, las hiperheurísticas y los ensambles e híbridos, la motivación de su desarrollo y sus principales componentes. Además se presenta-rá un breve recorrido sobre las clasificaciones existentes y las características que poseen cada una de ellas.
4.1.
Introducción
Para muchos problemas de optimización del mundo real, el uso de técnicas clásicas de búsqueda no es una tarea factible de ser realizada como medio para encontrar la mejor solución, pues el conjunto de soluciones podría ser muy grande. Para este tipo de problemas es común utilizar métodos heurísticos, sesgando la bús-queda y sacrificando la posibilidad de encontrar la mejor solución, pero reduciendo el tiempo para obtener soluciones competitivas.
Por varios años, diferentes autores trataron de sustentar la superioridad de una heurística sobre otras, para todos los tipos de problemas. Sin embargo, estos in-tentos se disminuyeron cuando Wolpert y MacReady hicieron la publicación de su teoremas "No Free Lunch" donde demuestran que no existe un algoritmo heurísti-co mejor que otro en todas las clases de problemas. Pues, cuando se promedian los resultados de cada heurística en todos los problemas definidos para un espacio de búsqueda finito, todas las heurísticas presentan el mismo rendimiento [13].
A pesar de lo anterior, antes de que este teorema fuera publicado se sabía que el uso de técnicas heurísticas individuales es capaz de presentar ciertas ventajas o lí-mitaciones dependiendo del problema que se quiere resolver. De esta manera, surge la idea de combinar o aplicar en una misma técnica diversas heurísticas explotando sus cualidades y compensando sus debilidades con las fortalezas de otras.
El desarrollo de técnicas basadas en multioperadores surge con este nuevo en-foque, pues a pesar de las capacidades de las heurísticas para resolver problemas de gran complejidad matemática, aún poseen algunas dificultades relacionadas a su capacidad para ser aplicadas a una diversidad más amplia de problemas. La 25
26 CAPÍTULO4. Algoritmos Multioperadores
principal característica que se pretende cubrir con el uso de las hiperheurísticas y ensambles, es hacer un algoritmo con aplicación más general que un algoritmo heurístico simple.
4.2.
Hiperheurísticas
Dentro del grupo de técnicas denominadas como multioperadores, surge un grupo de técnicas denominadas hiperheurísticas. Una de las características princi-pales de los algoritmos hiperheurísticos es que éstos trabajan sobre un conjunto de heurísticas y no sobre un conjunto de soluciones al problema de optimización como lo hacen las heurísticas y las metaheurísticas.
Una hiperheurística se podría definir entonces como una técnica para encontrar el método o secuencia de métodos correctos para resolver un problema de búsque-da. Cowling et al. [30], quien acuño el término, define una hiperheurística como: Definición 1. Enfoques que funcionan a un nivel más alto de abstracción que las heurísticas y gestionan la selección de lo que deberia ser un método heurístico de bajo nivel para ser aplicado en un momento dado, dependiendo de las caracterís-ticas de la región del espacio de soluciones en exploración.
Edmund K. Burke et al [31] por otra parte define a la hiperheurística como: Definición 2. Una metodología automatizada para seleccionar o generar heurísti-cas para resolver problemas complejos computacionales de búsqueda.
De acuerdo a las definiciones anteriores se puede considerar que la hiperheu-rística trabaja sobre el conjunto de heuhiperheu-rísticas, siendo éste su espacio de búsqueda, mientras que las heurísticas trabajan sobre el conjunto de soluciones. Ello significa que la hiperheurística no trabaja para encontrar la mejor solución a un problema determinado. En vez de eso, la hiperheurística trabaja para encontrar el conjun-to de pasos que mejoraran potencialmente las soluciones existentes, y en caso de no hacerlo, la hiperheurística debería ser capaz de cambiar el conjunto de pasos necesarios para tal propósito .
Regularmente las hiperheurísticas son confundidas con las metaheurísticas, sin embargo la diferencia principal radica en su campo de trabajo, pues como se men-cionó anteriormente, las hiperheurísticas trabajan sobre un conjunto de heurísticas, mientras que las metaheurísticas trabajan sobre el conjunto de soluciones al pro-blema que se resuelve. Otro punto importante es que existen ciertas desventajas relacionadas a la implementación de las metaheurísticas, puesto que para manejar-las es necesario un conocimiento más amplio tanto sobre el manejo y calibración de parámetros de la metaheurística como de la representación del problema que se resuelve [13].
4.2. Hiperheurísticas 27
4.2.1. Estructura y Funcionamiento
Como se mencionó anteriormente, existen ciertos elementos que componen las hiperheurísticas; en la Figura 4.1 se puede observar que existen tres elementos principales: las heurísticas, el motor principal de la hiperheurística y una barrera entre el motor de la hiperheurística y las heurísticas de bajo nivel, conocida como barrera de dominio. El nombre de barrera de dominio proviene del hecho de que el dominio sobre el que trabajan los elementos restantes no es el mismo.
Motor de la hiperheurística
Barrera de dominio
Heurística 1 Heurística 2 Heurística 3
Figura 4.1: Estructura básica de una hiperheurística. El motor de la hiperheurística es el encargado de tomar las decisiones respecto a las heurísticas de bajo nivel. La barrera de dominio marca la diferencia entre el campo de aplicación de las heurísti-cas contra el campo de aplicación de la hiperheurística. Finalmente las heurístiheurísti-cas son los elementos encargados de manipular las soluciones y moverse dentro del espacio de búsqueda.
Villela [13] también propone una interfaz entre la hiperheurística y las heurísti-cas de bajo nivel. Además propone que toda interfaz presente en la hiperheurística debe considerar las siguientes características.
Interfaz estándar para el manejo de heurísticas, lo que significa, que sólo se debe utilizar una interfaz para manejar el conjunto de heurísticas; pues no es factible manejar interfaces independientes para cada heurística. Además, la interfaz está obligada a decidir si el resultado de una heurística de bajo nivel debe aplicarse al estado actual de la búsqueda o sólo informar el posible cambio que tendría en caso de aplicarse; lo que facilitaría la decisión por
28 CAPÍTULO4. Algoritmos Multioperadores
parte de la hiperheurística sobre cuál o cuales heurísticas se aplicarán para modificar las soluciones.
La interfaz debe ser capaz de facilitar el desarrollo de heurísticas hacia otros dominios. Así, cuando se quiera modificar la hiperheurística para resolver otros problemas, sólo será necesario asignar el conjunto de heurísticas de bajo nivel y la función objetivo. Además, si las heurísticas de bajo nivel obedecen a la interfaz estándar, no será necesario modificarla permitiendo así resolver los problemas sólo introduciendo la información necesaria. Por otra parte, Ozcan [32], dice que el proceso de búsqueda de las hiperheu-rísticas puede ser dividido en dos partes fundamentales para su funcionamiento: la selección de la heurísitcay el movimiento de aceptación. No se hará un estudio a profundida de estos mecanismos, pues existen diversas técnicas para cada una de las partes. En vez de ello, se explicará de manera general cada una de las dos partes que componen la hiperheurísticas.
Selección de la heurística: En esta parte se realiza el proceso de evaluación de los resultados obtenidos de aplicar las heurísticas de bajo nivel en el proceso de búsqueda. Sin embargo, en este proceso los cambios que haya realizado la heurística no se aplican aún al estado actual de la búsqueda. El proceso de selección es el punto donde se obtiene información sobre las capacidades de las heurísticas de bajo nivel para tratar al problema que se resuelve.
Movimiento de aceptación: Aquí el algoritmo ya ha seleccionado la heurística o conjunto de heurísticas que se utilizarán dependiendo de los resultados obtenidos por el proceso de selección. El movimiento de aceptación es el proceso donde se utilizan los conocimientos previos obtenidos sobre el com-portamiento de las heurísticas aplicadas al problema que se resuelve. Cabe mencionar que estos procesos son llevados a cabo por la interfaz imple-mentada en el motor de la hiperheurística, por lo que no es necesario un cono-cimiento profundo del problema que se resuelve. Es decir, es suficiente conocer el valor objetivo obtenido. De forma general el algoritmo hiperheurístico podría quedar de la siguiente manera(Ver Algoritmo 2):
Algoritmo 2 Algoritmo general de una hiperheurística
Require: Función Objetivo f (x), Heurísticas H = [H1, H2, ..., HN]
1: Crear un estado de búsqueda inicial S
2: while Criterio de parada no cumplido do
3: Seleccionar la heurística más apta para las condiciones del problema.
4: Transformar el estado actual de la búsqueda aplicando la heurística seleccio-nada
4.2. Hiperheurísticas 29
Retroalimentación Naturaleza de el espacio de búsqueda Aprendizaje Aprendizaje aprendizaje En línea fuera de línea Sin Hiper-heurística Selección Metodologías de selección Generación Metodologías de Contrucción heurística Perturbación heurística heurística heurística heurística Contrucción Perturbación heurística generación
Figura 4.2: Taxonomía de acuerdo al tipo de algoritmos y la forma de cooperación
4.2.2. Clasificación
Las hiperheurísticas tienen un grupo de procesos fundamentales que las distin-guen de las demás técnicas que utilizan mutioperadores. Además, es posible clasifi-carlas de acuerdo a las características y mecanismos. Diversos trabajos han surgido con la intención de dar una clasificación completa de estas técnicas como [33] que realiza una clasificación con base en la capacidad de aprendizaje de la técnica. Por otro lado en [8], la clasificación se centra en la forma de uso de las heurísticas. En [34] las heurísticas con clasificadas en las siguientes cuatro categorías.
Hiperheurísticas basadas en selección aleatoria de heurísticas de bajo nivel Hiperheurísticas codiciosas que evaluan cada subconjunto de heurísticas pa-ra seleccionar la que mejor se comporta
Hiperheurísticas basadas en metaheurísticas
Hiperheurísticas con mecanismos de aprendizaje para manejar heurísticas de bajo nivel
Finalmente en [35] se propone una clasificación más completa donde se hace un análisis utilizando las clasificaciones anteriores, y proponiendo una clasificación de acuerdo a dos partes que ellos denominan dimensiones. La primera dimensión es de acuerdo a la naturaleza del espacio de búsqueda de la heurística, y la segunda es de acuerdo al punto de retroalimentación para su aprendizaje; estas dimensio-nes son ortogonales entre si lo que significa que diferentes espacios de búsqueda heurística pueden ser combinados con diferentes puntos de retroalimentación (Ver Figura 4.2).
De acuerdo a la naturaleza del espacio de la búsqueda de la heurística, existen dos categorías principales, que son:
30 CAPÍTULO4. Algoritmos Multioperadores
Selección Heurística: Son metodologías para la selección de heurísticas ya existentes.
Generación Heurística: Se denominan a las metodologías que generan nue-vas heurísticas de componentes de heurísticas ya existentes.
A su vez cada una de las categorías de acuerdo a la clasificación de [35] se dividen en metodologías con base en la construcción o perturbación. Por otro la-do, la clasificación basada en la retroalimentación se subdivide en las siguientes categorías(Ver Figura 4.2):
Aprendizaje en línea
Aprendizaje fuera de línea
Sin aprendizaje
4.3.
Ensambles e Híbridos
Al igual que las hiperheurísticas, los ensambles e híbridos son algoritmos de reciente creación y basan su funcionamiento en el uso de múltiples técnicas heurís-ticas o metaheurísheurís-ticas en un solo algoritmo. Los ensambles e híbridos funcionan principalmente mediante el ajuste constante de los parámetros de cada una de las heurísticas o metaheurísticas que contienen; de esta manera, durante cada ciclo el algoritmo se ajusta a las necesidades de la búsqueda.
Por lo anterior, mientras que los ensambles estan íntimamente relacionados con los ajustes de las heurísticas o metaheurísticas que manejan, las hiperheurísticas son independientes del funcionamiento de las heurísticas de bajo nivel.
4.3.1. Estructura y Funcionamiento
Los ensambles e híbridos no poseen un marco de trabajo definido para su fun-cionamiento. En general, estas técnicas dependen en gran medida de las caracterís-ticas de las heuríscaracterís-ticas y metaheuríscaracterís-ticas que cooperan en el mismo algoritmo.
En la actualidad existen diversos trabajos en relación al uso de ensambles; por ejemplo en [36] se presentan dos híbridos basados en evolución diferencial para la optimización en diseños de ingeniería, mediante el uso del algoritmo de evolución diferencial y un operador de búsqueda local por un lado; y por otro lado se realiza la combinación del algoritmo de ED con la metaheurística de búsqueda harmónica. Mientras que en [? ] se presenta un ensamble de diversas variantes de evolución diferencial para resolver problemas con restricciones.
4.3. Ensambles e Híbridos 31
4.3.2. Clasificación
No existe una clasificación general para los ensambles e híbridos debido a la diversidad en sus mecanismos, sin embargo diversos trabajos han desarrollado cla-sificaciones particulares para algunos algoritmos de este tipo. Por ejemplo en [37] se propone una taxonomía de las metaheurísticas híbridas, mientras que en [38] se proponen la dos taxonomías la primera basada en el tipo de algoritmos y la segunda basada en la manera en que el algoritmo descompone el espacio de búsqueda para encontrar las soluciones.
4.3.2.1. Taxonomía basada en algoritmos
Esta clasificación, está basada en el tipo de algoritmos que son utilizados de manera cooperativa. Se proponen las siguientes cuatro categorías (Ver Figura 4.3): 1. Algoritmos homogéneos seriales: En esta clase se encuentran aquellos me-canismos que utilizan diferentes instancias del mismo algoritmo buscando en diversas subsecciones del espacio de búsqueda. El mecanismo se ejecuta de forma secuencial y cada algoritmo provee una parte de la solución al pro-blema. Cada solución parcial es utilizada para formar una solución completa que es evaluada y utilizada en los siguientes ciclos.
2. Algoritmos homogéneos paralelos: Los mecanismos dentro de esta clasifi-cación usan diferentes variantes del mismo algoritmo corriendo en paralelo en búsqueda de una solución. La información transmitida entre los algorit-mos del mecanismo tiene diversas formas, principalmente obtenidas de la mejor solución encontrada hasta el momento.
3. Algoritmos heterogéneos seriales: Aquí se incluyen aquellos mecanismos que involucran diversos algoritmos en una cadena. La salida de un algoritmo es la entrada del siguiente.
4. Algoritmos heterogéneos paralelos: En esta clase entran aquellos meca-nismos que no entran en la segunda clasificación debido a la diversidad de algoritmos que lo conforman.
4.3.2.2. Taxonomía basada en la descomposición del espacio
Esta clasificacion busca organizar los algoritmos cooperativos de acuerdo a la forma en que manejan el espacio de búsqueda y lo distribuyen entre los diferentes algoritmos que cooperan(Ver Figura 4.4).
Descomposición implícita del espacio: Son todas aquellos mecanismos que dividen el espacio de búsqueda entre los algoritmos. En esta clase entran
32 CAPÍTULO4. Algoritmos Multioperadores
Algoritmos de búsqueda cooperativos
Heterogéneos? ? Paralelo Serial? Homogéneos? ? Serial ? Paralelo
Figura 4.3: Taxonomía de acuerdo al tipo de algoritmos y la forma de cooperación
Nivel de cooperación
Descomposición? ?
Descomposición explicita del espacio (Comparten soluciones
parciales)
implicita del espacio Técnica híbrida
?
Figura 4.4: Clasificación de acuerdo al grado de cooperación que alcanza el algo-ritmo y la manera en que comparten el espacio de búsqueda
aquellos mecanismos cooperativos que tienen diferentes algoritmos(o dife-rentes variantes del mismo) buscando una solución y compartiendo infor-mación útil entre ellos. La descripción de implícito viene del hecho de que los diversos algoritmos buscan en diferentes áreas en el espacio de búsqueda debido a que tienen diferentes soluciones iniciales y/o diferentes parámetros de búsqueda.
Descomposición explícita del espacio: El espacio de búsqueda de divide de forma explícita, es decir cada algoritmo provee una porción de la solución que es reunida con la finalidad de proporcionar una solución completa. Técnica híbrida: Son aquellos mecanismos que emplean ambos métodos de descomposición del espacio de búsqueda.