Metaheuristicas y Redes Neuronales (1)

March 5, 2019 | Author: Cristian Reyes | Category: Matrix (Mathematics), Heuristic, Mathematical Optimization, Algorithms, Applied Mathematics
Share Embed Donate


Short Description

redes...

Description

Metaheurísticas Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 1

Metaheurísticas y Redes Neuronales

Fernando Sandoya, Ph.D.

Metaheurísticas Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 2

Contenido

1.

2.

Introducción ................................................................... .......................................................................................................................... ....................................................... 5 1.1

Conceptos básicos de grafos y redes .................................................................... ............................................................................ ........ 5

1.2

Grafos y redes con Mathematica ............................................................ ................................................................................ .................... 11

Los métodos heurísticos........................................................... ...................................................................................................... ........................................... 12 2.1

Definición y propiedades de los métodos heurísticos ................................................ 12

2.2

Tipos de métodos heurísticos ................................................................. ..................................................................................... .................... 15

2.2.1

Métodos de Descomposición ............................................................................. Descomposición ............................................................................. 15

2.2.2

Métodos Inductivos  Inductivos ............................................................................................ ........................................................................................... 1 6

2.2.3

Métodos de Reducción  Reducción ....................................................................................... ...................................................................................... 1 6

2.2.4

Métodos Constructivos .................................................................. ...................................................................................... .................... 16

2.2.5

Métodos de Búsqueda Local .............................................................................. Local .............................................................................. 16

2.2.6

Métodos combinados  combinados ......................................................................................... ........................................................................................ 1 6

2.2.7

Métodos metaheurísticos .................................................................................. metaheurísticos .................................................................................. 16

2.3

Problemas Estructurados ............................................................. ............................................................................................ ............................... 17

2.3.1

Problema de la Mochila (Knapsack Problem)  Problem)  .................................................... ................................................... 18

2.3.2 Los problemas de Recubrimiento, empaquetamiento y particionamiento de Conjuntos  Conjuntos ............................................................................................................................ ........................................................................................................................... 1 9 2.3.3

Problema del Agente Viajero (Traveling Salesman Problem) ........................... Problem)  ........................... 23

2.3.4

El Problema de la Asignación Cuadrática  Cuadrática  ........................................................... .......................................................... 2 5

2.3.5

Problema de Asignación Generalizada .............................................................. Generalizada  .............................................................. 26

2.3.6

Problema de la Ordenación Lineal ..................................................................... Lineal  ..................................................................... 27

2.4

3.

4.

Medidas de Calidad de un Algoritmo .................................................................... .......................................................................... ...... 28

2.4.1

Comparación con la solución óptima  óptima ................................................................. ................................................................ 2 8

2.4.2

Comparación con una cota  cota ................................................................................. ................................................................................ 2 8

2.4.3

Comparación con un método exacto truncado ................................................. truncado  ................................................. 29

2.4.4

Comparación con otros heurísticos........................................................... heurísticos .................................................................... ......... 29 29

2.4.5

Análisis del peor caso (worst case analisys) ...................................................... analisys)  ...................................................... 29

Métodos Constructivos ............................................................ ....................................................................................................... ........................................... 30 3.1

Heurísticos del Vecino más Cercano ..................................................................... ........................................................................... ...... 30

3.2

Heurísticos de Inserción ............................................................... .............................................................................................. ............................... 31

3.3

Heurísticos Basados en Árboles Generadores ............................................................ 33

3.4

Heurísticos Basados en Ahorros .............................................................. .................................................................................. .................... 37

Métodos de Búsqueda Local ................................................................ ............................................................................................... ............................... 40 4.1

Procedimientos de 2 intercambio ........................................................... ............................................................................... .................... 41

4.2

Procedimientos de k - intercambio ......................................................... ............................................................................. .................... 43

Fernando Sandoya, Ph.D.

Metaheurísticas Metaheurísticas y Redes Neuronales

4.3 5.

ESPOL, 2015/ 3

Algoritmo de Lin y Kernighan .................................................................. ...................................................................................... .................... 45

Métodos Combinados .............................................................. ......................................................................................................... ........................................... 49 5.1

Procedimientos Aleatorizados ................................................................... .................................................................................... ................. 49

5.2

Métodos Multi - Arranque ........................................................... .......................................................................................... ............................... 51

6.

Método GRASP (Greedy Randomized Adaptive Search Procedures) ................................. 53 6.1

Rencadenamiento de Trayectorias ......................................................... ............................................................................. .................... 55

6.2

Búsqueda en Vecindades Variables ...................................................................... ............................................................................ ...... 56

6.3

Resolución de un caso: implementación GRASP en FS-scheduling:............................ 57

7.

Búsqueda Tabú .............................................................. .................................................................................................................... ...................................................... 63 7.1

Descripción del método de búsqueda tabú ................................................................ 63

7.2

Resolución de un caso: implementación de Tabu Search para resolver el TSP: ......... 67

8.

7.2.1

Introducción:  Introducción: ....................................................................................................... ...................................................................................................... 67

7.2.2

Algoritmo ............................................................................................................ Algoritmo ............................................................................................................ 67

7.2.3

Resultados numéricos ......................................................... ........................................................................................ ............................... 68

Recocido Simulado ........................................................ .............................................................................................................. ...................................................... 73 8.1

Origen: .................................................................... ......................................................................................................................... ..................................................... 73

8.2

El algoritmo SA .................................................................. ............................................................................................................ .......................................... 74

8.3

Ejemplos de aplicación ................................................................. ................................................................................................ ............................... 76

9.

Métodos Evolutivos................................................................... ............................................................................................................. .......................................... 77 9.1

Algoritmos Genéticos ................................................................... .................................................................................................. ............................... 77

9.2

Búsqueda Dispersa (Scatter Search) ..................................................................... ........................................................................... ...... 83

10.

Métodos de evolución diferencial............................................................... ................................................................................... .................... 91

10.1

Introducción .......................................................... ................................................................................................................ ...................................................... 91

10.2

Optimización combinatoria DE basada en permutaciones. ........................................ 92

10.3

Adecuación de la DE como un optimizador combinatorio.......................................... 92

10.4

DE canónica para problemas de optimización contínuos. .......................................... 92

10.5

DE para problemas problemas de optimización combinatorios basados en permutaciones. ...... 96

10.6

Enfoque de de la indexación de de la posición relativa relativa o el enfoque enfoque Knapsack................... 97

10.6.1 11.

Ejemplos  Ejemplos .............................................................................................................. ............................................................................................................. 9 8

Otras metaheurísticas: Harmony Search y variantes .................................................... 108

11.1

Introducción .......................................................... .............................................................................................................. .................................................... 108

11.2

Descripción del Proceso de Optimización .......................................................... ................................................................. ....... 109

11.3

Pseudocódigo de la Metaheurística Harmony Search .............................................. 110

11.4

Variantes de la Metaheurística Harmony Search...................................................... 111

12.

11.4.1

Improved Harmony Search ............................................................. ............................................................................... .................. 111

11.4.2

Global Best Harmony Search ........................................................... ............................................................................. .................. 111

Redes neuronales .................................................................. .......................................................................................................... ........................................ 111

Fernando Sandoya, Ph.D.

Metaheurísticas Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 4

22.1

Introducción .......................................................... .............................................................................................................. .................................................... 111

22.2

Modelos de neuronas .................................................................. ............................................................................................... ............................. 112

22.3

Arquitecturas ......................................................... ............................................................................................................. .................................................... 113

22.4

Reglas de aprendizaje................................................................... aprendizaje................................................................................................ ............................. 114

22.5

Redes neuronales artificiales y los problemas de optimización combinatoria ......... 115

22.6

Aproximación estadística para el problema de la optimización. .............................. 115

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 5

Metaheurísticas Metaheurísticas y Redes Neuronales

1.

Introducción

El propósito de este curso es introducir los principales métodos heurísticos y metaheurísticos para resolver problemas de optimización combinatoria, y como analizar su eficiencia. Desde el punto de vista práctico esto es muy interesante para la industria, la logística, el transporte, los servicios, etc., basta decir que muchos de los problemas que encontramos en la literatura de la optimización combinatoria tienen sus orígenes en muchos problemas de ingeniería y administración reales, por ejemplo diseño de las de hospitales, diseño de chips y circuitos electrónicos, asignación de tareas, ruteo, diseño de líneas de ensamblaje, secuenciación de órdenes de producción, asignación de personal y determinación de turnos, planificación de horarios, etc.. Todos estos problemas tienen sus abstracciones en la literatura científica, tales como: Knapsack problem, problem, set covering problem, problem , set partitioning problem, problem ,  permutation assignment , travel salesman problem, problem, vehiche routing problem, problem,  flow shop problem, problem,  job shop  problem,  problem, timetabling problem, problem, etc. A lo largo del texto consideraremos algunos de estos problemas para desarrollar e implementar los algoritmos algor itmos propuestos. La mayoría de problemas de optimización combinatoria pueden ser representados eficientemente a través de grafos y redes, por lo que a continuación se revisan algunos aspectos relacionados con estos temas:

1.1

C oncept onceptos os bás bás icos de g rafos rafos y redes redes

  ,, 

Grafos Dirigidos: Un grafo dirigido (o dígrafo)  consiste en un conjunto y un conjunto  de arcos cuyos elementos son pares ordenados de nodos.

 



 de nodos

Red Dirigida: Una red dirigida es un grafo dirigido cuyos nodos o arcos tienen asociados valores numéricos tales como costos, costos, capacidades, ofertas, demandas, demandas, tiempo etc. En general se suele representar el número de nodos con la letra  y al número de arcos con .



  ,, 



Grafos no Dirigidos: Dirigidos : Un grafo no dirigido, o simplemente grafo,   consiste en un conjunto  de nodos y un conjunto  de aristas cuyos elementos son pares no ordenados de nodos distintos. En un grafo nos podemos referir a la arista que une a los nodos i-j, como o como . Un grafo no dirigido permite el flujo en ambas direcciones, direcciones, es decir desde el nodo  al  al nodo  o viceversa.

 ,     

 

,

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 6

Metaheurísticas Metaheurísticas y Redes Neuronales

,     ,   

   ,    

Colas y Cabezas: Un arco dirigido  tiene dos puntos de finalización . Nos referiremos al nodo  como  como la cola del arco y al nodo  como su cabeza. Diremos que al arco   emana del nodo  y  y termina en el nodo . El arco es incidente a los nodos .

   ,   ,

El arco es un arco saliente del nodo  y   y un arco entrante al nodo . Siempre que el arco arco pertenezca al conjunto A, diremos que el nodo  es  es adyacente al nodo . Grados: El grado interno de un nodo es el número de arcos que llegan al nodo y su grado externo es el número de arcos que salen del nodo. Al sumar el grado interno de un nodo con su grado externo se obtiene el grado del nodo. Se observa que la suma de los grado interno de todos los nodos es igual a la suma de todos los grados externos de todos los nodos y ambos son iguales al número de arcos  en la red.



     ,  ∈ ::  ∈  ’  ’ ,  ’    ,  ,  ’ ⊆     ’ ⊆  ’  ’,’ ’  ’  ’   ’  ’,’   ,,  ’    ’ ⊆  1  ,,    1   Lista de Adyacencia: La lista de arcos de adyacencia que emanan del nodo i, esto es:

 de un nodo i es el conjunto de arcos

SUBGRAFO: Un grafo  es un subgrafo de que  es el subgrafo de  inducido por  si  si puntos de finalización en .

 si  si  y . Diremos  contiene  contiene cada arco de  con ambos

Un grafo

 es un subgrafo de expansión de

 si  si

 y

.

CAMINO:  CAMINO:  Un camino (o denominado también camino no dirigido) en un grafo dirigido  es  es un subgrafo de  que satisface la propiedad que para todo , donde , se tiene que: ak= (i k  1 , i k  ) 



 A o ak= (i k  , i k  1 ) 







 A.

Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 7

CAMINO DIRIGIDO: Un camino dirigido es una versión orientada de un camino, en el sentido de que para dos nodos consecutivos i k e i k+1 en el camino, se tiene que (i k  , i k  1 ) 



A.

Por ejemplo en el siguiente grafo un camino dirigido del nodo 1 al nodo 3 es: 1-2-3-4-5-2-3

RUTA: Una ruta es un camino sin repetición de nodos. Es posible particionar los arcos de un camino en dos grupos: los arcos que van hacia delante y los arcos que van hacia atrás. Un arco

(i, j )  en el camino es un arco dirigido hacia delante si la ruta visita al nodo i antes de visitar al nodo j, de ser contrario es un arco que está dirigido hacia atrá s. RUTA DIRIGIDA: Una ruta dirigida es un camino dirigido en el que no se repiten nodos. Dicho de otra forma en una ruta dirigida no existen arcos dirigidos hacia atrás. Resulta fácil almacenar una ruta en una computadora definiendo un índice pred(j), para todo nodo j en la ruta. CICLO: Un ciclo es una ruta i 1 – i2 - ...  –ir , junto con el arco (i1 , i r  ) o el arco (ir  , i1 ) . Nos referiremos a un ciclo empleando la notación i1 – i2 - ...  –ir –ir. De manera análoga a las rutas es posible definir arcos dirigidos hacia delante o hacia atrás.

CICLO DIRIGIDO: Un ciclo dirigido es una ruta dirigida i1 – i2 - ...  –ir, junto con el arco (i r  , i1 ) .

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 8

Metaheurísticas y Redes Neuronales

GRAFO ACÍCLICO: Un grafo es acíclico si no contiene ciclos dirigidos.

 ,    

CONECTIVIDAD: Dos nodos   están conectados si el grafo contiene por lo menos una ruta desde el nodo   al nodo . Un grafo es conectado si cada par de nodos están conectados. De otra forma el grafo es desconectado. Nos referimos a los subgrafos conectados de una red como sus componentes. CONECTIVIDAD FUERTE: Un grafo conectado está fuertemente conectado si contiene por lo menos una ruta dirigida desde cada nodo hacia todos los demás nodos. ÁRBOL: Un árbol es un grafo conectado acíclico.

PROPIEDADES DE UN ÁRBOL:

  

Un árbol de n nodos contiene exactamente n-1 arcos. Un árbol contiene por lo menos dos nodos hojas, es decir con grado 1. Cada pareja de nodos de un árbol están conectados por una ruta única.

BOSQUE:

Un bosque es un grafo acíclico. De manera alternativa un bosque es una colección de árboles. SUBÁRBOL: Un subárbol es un subgrafo conectado de un árbol.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 9

Metaheurísticas y Redes Neuronales





ÁRBOLES DE EXPANSIÓN: Un árbol  es un árbol de expansión de si es un subgrafo de expansión. Cada árbol de expansión de un grafo conectado de n nodos, tienen n-1 arcos.

DEFINICIONES PARA REDES NO DIRIGIDAS: Las definiciones para redes dirigidas se pueden trasladar hacia las redes no dirigidas. Un arco no dirigido  tiene dos puntos de finalización  y , pero la cabeza y la cola del arco no están definidos.

,

  

, ,



    

 

Si la red contiene al arco , el nodo   es adyacente al nodo   y el nodo  es adyacente al nodo . Las listas de nodos y arcos de adyacencia están definidas de manera similar, con la diferencia de que el arco aparece en  y también en . En consecuencia se tiene



que



i N 

 A(i )

 2m .

 

El grado de un nodo es el número de nodos adyacentes al nodo . Los demás conceptos como caminos, rutas, ciclos, cortaduras y árboles tienen las mismas definiciones para redes no dirigidas, pero no existen diferencias entre rutas y rutas dirigidas, ciclos y ciclos dirigidos, y así sucesivamente. REPRESENTACIONES DE REDES: La resolución de problemas de redes no solo depende de los algoritmos empleados, sino también de la forma de representar la red en la computadora y el esquema de almacenamiento empleado para guardar y actualizar los resultados que se vayan obteniendo. En la representación de una red se necesitan dos clases de información:

 

La topología de la red, es decir la estructura de los nodos y arcos. Datos de interés como costos, capacidades, ofertas, demandas asociadas con los nodos y los arcos.

A continuación se presentan algunas representaciones. MATRIZ DE INCIDENCIA DE NODOS Y ARCOS: Esta representación almacena la red como una matriz de , que contiene una fila por cada nodo, y una columna por cada arco. La

  ×

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 10

Metaheurísticas y Redes Neuronales

,

columna correspondiente al arco  tiene solo dos elementos diferentes de cero, posee un +1 en la fila correspondiente al nodo y un –1 en la fila correspondiente al nodo .

 

 ×

2

Esta matriz tiene una estructura particular. De los  elementos de la matriz solo  son diferentes de cero, las que toman los valores de +1 y  –1 en cada columna. El número de elementos en la fila -ésima iguales a +1 representa el grado exterior del nodo  y el número de elementos en tal fila iguales a –1 representa el grado interior del nodo .



 

Debido a que la matriz de incidencia de nodos y arcos contiene pocos elementos diferentes de cero en relación al número total de elementos, esta representación requiere del uso de matrices dispersas o de lo contrario origina algoritmos poco eficientes. MATRIZ DE ADYACENCIA DE NODO A NODO: Esta representación almacena la red como una matriz  de . La matriz posee una fila y una columna por cada nodo y la i-ésima entrada  es igual 1 si el arco pertenece al conjunto , y es igual a cero en otro caso. Si se pretende almacenar los costos y las capacidades de los arcos se pueden utilizar dos matrices adicionales de  ,  y .

ℎ ℎ  × ,  ×  

 

De los n2 elementos que posee la matriz, solo m son diferentes de cero, cuyo número se debe al número de arcos de la red. Por lo tanto esta representación es eficiente si la red es suficientemente densa, para redes esparcidas esta representación desperdicia mucho espacio en la matriz. La manipulación de esta matriz es muy fácil. Para determinar el costo o la capacidad del arco basta con ubicar a los elementos situados en la posición   de las matrices y respectivamente. Se puede conocer qué arcos emanan del nodo   observando los elementos iguales a 1 en la fila -ésima de la matriz . De manera análoga se pueden obtener los arcos que llegan al nodo  examinando los elementos de la columna de la matriz , si elemento de la fila -ésima es igual a 1, entonces el arco pertenece a la red.

,



 

 ,

 

 





El tiempo requerido para determinar los arcos que llegan y salen de un nodo es proporcional a n. En conclusión para redes densas se podría permitir emplear esta representación, pero para redes dispersas contribuiría al mal desenvolvimiento del algoritmo empleado.

 

LISTAS DE ADYACENCIA: Anteriormente se definió a las listas de arcos de Adyacencia como el conjunto de arcos que emanan del nodo  y las listas de los nodos de adyacencia como el conjunto de nodos  tal que el arco pertenezca al conjunto .

 ,

 

 

Esta representación almacena la lista de adyacencia de cada nodo en la estructura de datos llamada lista enlazada en una dirección. Una lista enlazada es una colección de celdas, donde cada celda puede contener uno o más campos. La lista de adyacencia del nodo i será representada por una lista enlazada en una dirección, la que tendrá un número de celdas igual a la cardinalidad del conjunto , y cada celda corresponde a un arco perteneciente al conjunto . El número de campos de la celda que hace referencia al arco , será consistente con la cantidad de información que se desee

,,

 

 

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 11

Metaheurísticas y Redes Neuronales

 

almacenar. Un campo almacenará al nodo  y los demás pueden ser utilizados para guardar el costo c ij , los límites de flujo del arco l ij  y u ij .

1.2

G rafos y redes con Mathematica

Mathematica Wolfram incluye grandes capacidades para modelado y visualización de grafos y redes. Esta plataforma contiene mecanismos simbólicos prácticos para crear, etiquetar y dar estilo a los grafos, desde pequeños y diagramáticos a largos y complejos. Todas las funciones están integradas completamente con la programabilidad, gráficos e interfaz dinámica.

 

En el documento:  pasos para instalar MATHEMATICA.docx   se encuentran las instrucciones para descargar el programa y la licencia. En los archivos sesion1.nb, sesion2.nb y sesion3.nb  se encuentra el material introductorio al uso y programación con Mathematica.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 12

Metaheurísticas y Redes Neuronales

2.

Los métodos heurísticos

Los métodos desarrollados para resolver problemas de optimización, que son abordados en este curso, reciben el nombre de algoritmos heurísticos o metaheurísticos. Este término se origina etimológicamente en la palabra griega heuriskein que significa encontrar  o descubrir  y se usa en el ámbito de la optimización para describir una clase de algoritmos aproximados de resolución. Aunque estos algoritmos (heurísticos o Metaheurísticos) son aplicables a la resolución de problemas de optimización contínuos o discretos, en particular en este curso se utilizan en el contexto de la resolución de problemas de optimización combinatoria, es decir en problemas de optimización sobre un espacio discreto cuyo conjunto de decisiones factibles es particularmente de gran cardinalidad.

 2.1

Definici ón y propi edades de los métodos heurís ticos

En el lenguaje común las personas utilizan el término “optimizar”  en el sentido de mejorar; pero, en el lenguaje de las matemáticas la optimización es el proceso de buscar la mejor solución posible para un determinado problema. En un  problema de optimización  existen diferentes soluciones, que conforman el conjunto de decisiones factibles, y una función que mide la calidad de cada una de esas soluciones, denominada función objetivo o criterio, la cual nos permite discriminar entre ellas, obviamente la meta  es encontrar la solución de mejor calidad, que se denomina la solución óptima del problema. De forma más precisa, un problema de optimización consiste en encontrar los valores que toman las variables de decisión para los que una determinada función objetivo alcanza su valor máximo o mínimo. El valor de las variables en ocasiones está sujeto a unas restricciones, que deben cumplirse de manera estricta (dura) o de manera suave. Algunos tipos de problemas de optimización son, desde un punto de vista matemático, relativamente fáciles de resolver, este es el caso, por ejemplo, de los  problemas de  programación lineal , en los que tanto la función objetivo como las restricciones son expresiones lineales y las variables pueden tomar valores dentro del conjunto de los números reales. Para estos problemas existen algoritmos que permiten resolverlos de una manera eficiente, como con el método Simplex, o los métodos de punto interior; sin embargo, la mayoría de problemas de optimización son muy difíciles de resolver. Es más, casi todos los problemas reales en la logística, la industria y la ciencia que podemos encontrar en la práctica entran dentro de esta categoría. A partir de ahí surge la necesidad de tener métodos aproximados, que a pesar que no permiten determinar la solución óptima de estos problemas, por lo menos nos proporcionan buenas soluciones, cercanas a la solución óptima. La idea intuitiva de los problemas “difíciles de resolver” queda reflejada en el término matemático NP-duro (NP-hard ) proveniente de la teoría de la complejidad computacional. En términos resumidos podemos decir que un problema de optimización difícil es aquel para el que no podemos garantizar el encontrar la mejor solución posible en un tiempo razonable. La existencia de una gran cantidad y variedad de problemas reales que pertenecen a esta clase NP-hard impulsó el desarrollo de procedimientos eficientes para encontrar buenas soluciones

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 13

Metaheurísticas y Redes Neuronales

aunque no fueran óptimas. Estos métodos, en los que la rapidez del proceso es tan importante como la calidad de la solución obtenida, se denominan heurísticos o aproximados. En (1) se recogen algunas definiciones de algoritmo heurístico, entre las que se destaca la siguiente: “Un método heurístico es un procedimiento simple, a menudo basado

en el sentido común, que se supone ofrecerá una buena solución, aunque no necesariamente la óptima, a problemas difíciles, de un modo fácil y rápido.” En ese sentido, al contrario de los métodos exactos  que proporcionan la solución óptima al problema, los métodos heurísticos se limitan a proporcionar una buena solución. Lo determinante es que el tiempo invertido por un método exacto para encontrar la solución óptima de un problema difícil, en general es muy superior (o incluso prácticamente infinito) en comparación con el tiempo que se requiere hallar una buena solución por el método heurístico. Por su importancia en el campo de las aplicaciones en la industria, la logística y el transporte, en este curso consideraremos los llamados problemas de Optimización Combinatoria. En estos problemas el objetivo es encontrar el máximo (o el mínimo) de una determinada función sobre un conjunto finito de soluciones factibles que representaremos por S. No se exige ninguna condición o propiedad sobre la función objetivo (puede ser lineal, no lineal, convexa, no convexa, etc.) ni sobre la estructura del conjunto S, salvo su carácter finito. Es importante notar que dada la finitud de S, las variables de decisión son discretas, ya que su dominio queda restringido a un conjunto finito de valores. El problema es que a pesar de ser finito, el número de elementos de S es muy elevado, haciendo impracticable la exploración exhaustiva de todas sus soluciones para determinar el óptimo. Aunque hemos mencionado que la razón de desarrollar y utilizar métodos heurísticos es la resolución de problemas difíciles de tipo NP-duros, existen otras razones por las que se necesita aplicar métodos heurísticos, entre las que se pueden resaltar:

 El problema a tratar es de una naturaleza tal que no se conoce ningún método exacto para su resolución.  Aunque existe un método exacto para resolver el problema, su uso es computacionalmente muy costoso.  Los métodos heurísticos son más flexibles que los métodos exactos, permitiendo, por ejemplo, la incorporación de condiciones de difícil modelización.  Se puede requerir la utilización de un método heurístico como parte de un procedimiento global para encontrar el óptimo de un problema, sobre todo en las siguientes situaciones: - El método heurístico permite determinar una buena solución inicial de partida.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 14

Metaheurísticas y Redes Neuronales

- El método heurístico participa en un paso intermedio del procedimiento, como por ejemplo las reglas de selección de la variable a entrar en la base en el método Simplex. Una característica determinante de los algoritmos heurísticos es que estos dependen en gran medida del problema concreto para el que se han diseñado, es decir el algoritmo diseñado para un problema no es directamente aplicable a otro problema de optimización. Esta característica los diferencia de los métodos de resolución de propósito general, como por ejemplo los algoritmos exactos de Branch & Bound, para los cuales existe un procedimiento conciso y preestablecido, independiente del problema abordado. Así, en los métodos heurísticos las técnicas e ideas aplicadas a la resolución de un problema son específicas y aplicables solo a éste y aunque, en general, pueden ser trasladadas a otros problemas, tienen que particularizarse y adaptarse en cada caso. Así pues, es necesario referirse a un problema concreto para estudiar con detalle los procedimientos heurísticos, por lo que, para su estudio, hay que considerar un problema de optimización combinatorio específico, y a partir de ahí describir el desarrollo de los métodos. Existen muchos problemas que se prestan, por ser fáciles de entender pero difíciles de resolver, para esto. En general se puede utilizar el Problema del Agente Viajero, que posee buenas propiedades combinatorias propiedades que lo hacen especialmente indicado. Dicho problema puede enunciarse del siguiente modo: “Un agente viajero ha de visitar n ciudades, comenzando y

 finalizando en su propia ciudad. Conociendo el costo de ir de cada ciudad a otra, determinar el recorrido de costo mínimo.”  Entre las buenas características que posee el Problema del Agente Viajero que lo hacen ideal para el estudio de las técnicas heurísticas se pueden nombrar las siguientes:

 Resulta muy intuitivo y con un enunciado muy fácil de comprender.  Es extremadamente difícil de resolver por lo que resulta un desafío constante para los investigadores y científicos.  Es uno de los que más interés ha suscitado en Optimización Combinatoria y sobre el que se ha publicado abundante material.  Sus soluciones admiten una doble interpretación: mediante grafos y mediante permutaciones, dos herramientas de representación muy habituales en problemas combinatorios, por lo que las ideas y estrategias empleadas son, en gran medida, generalizables a otros problemas.  La gran mayoría de las técnicas que han ido apareciendo en el área de la Optimización Combinatoria han sido probadas en él, puesto que su resolución es de gran complejidad EJERCICIO: Analice el problema de agente viajero (TSP por sus siglas en inglés) con  nodos a visitar



Fernando Sandoya, Ph.D.

ESPOL, 2015/ 15

Metaheurísticas y Redes Neuronales

a. Cuántas soluciones factibles tiene este problema. b. Considere ahora un problema con cuatro nodos, la base desde donde debe partir el agente es la ciudad 1, las distancias inter-elemento están dadas en la siguiente tabla: 1 2 3 4 1 12 14 42 2 12 9 13 3 14 9 15 4 42 13 15 - Utilizando la heurística del vecino más cercano (que funciona de la siguiente manera: en cada paso el siguiente nodo a visitar es el más cercano a la ubicación



actual) determine una “buena” solución a este problema.

-

Explore exhaustivamente todas las soluciones posibles y determine cuál es el tour óptimo para visitar todas las ciudades. - Cuál es el GAP relativo (diferencia entre la solución aproximada y la solución óptima). ¿Considera que la heurística del vecino más cercando le proporcionó una buena solución? c. Cuánto tiempo se demoraría en encontrar una solución óptima por el procedimiento de exploración exhaustiva para un problema que tiene 20 nodos, 50 nodos, 70 nodos. Tomar en cuenta que una computadora promedio actualmente, tiene un rendimiento de unos 15 teraFLOPS (15×1012 flops1). d. Implemente en la computadora un algoritmo para la búsqueda exhaustiva de la solución óptima del TSP. e. Implemente en una computadora el algoritmo del vecino más cercano para determinar una solución al TSP. Existen también otros problemas de optimización combinatoria que resultan también atractivos para el estudio de las técnicas heurísticas, estas técnicas también nos ayudaran a explicar e ilustrar algunas de las técnicas así como a plantear ejercicios para el estudiante, entre ellos tenemos: el problema de la mochila (Knapsack Problem), el problema de planificación de un taller (Job Shop Problem), el problema de ruteo de vehículos (Vehicle Routing Problem), el problema de asignación cuadrática y otros.

2.2

Tipos de métodos heurísticos

Existen muchos métodos heurísticos de naturaleza muy diferente, por lo que es complicado dar una clasificación completa. Además, muchos de ellos han sido diseñados para un problema específico sin posibilidad de generalización o aplicación a otros problemas similares. El siguiente esquema trata de dar unas categorías amplias, no excluyentes, en donde ubicar a los heurísticos más conocidos: 2.2.1

Métodos de Descomposición

En estos métodos heurísticos el problema original se descompone en subproblemas más sencillos de resolver, teniendo en cuenta, aunque sea de manera general, que estos pertenecen al mismo problema.

1

FLOPS es el acrónimo de FLoating-point Operations Per Seconds, es decir el número de operaciones de punto flotante por segundo. Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

2.2.2

ESPOL, 2015/ 16

Métodos Inductivos

La idea de estos métodos es generalizar de versiones pequeñas o más sencillas al caso completo. Propiedades o técnicas identificadas en estos casos más fáciles de analizar pueden ser aplicadas al problema completo. 2.2.3

Métodos de Reducción

Estos métodos consisten en identificar propiedades que cumplen mayoritariamente las buenas soluciones e introducirlas como restricciones del problema. El objeto es restringir el espacio de soluciones, encogiendo el espacio de búsqueda de las soluciones y simplificando el problema. El riesgo obvio es dejar fuera buenas soluciones e incluso la óptima del problema original. 2.2.4

Métodos Constructivos

Consisten en construir literalmente paso a paso una solución del problema, incorporando un nuevo elemento a la solución en cada iteración. Usualmente son métodos deterministas. 2.2.5

Métodos de Búsqueda Local

A diferencia de los métodos anteriores, los procedimientos de búsqueda o mejora local  comienzan con una solución del problema y la mejoran progresivamente. El procedimiento realiza en cada paso un movimiento de una solución a otra con mejor valor. El método finaliza cuando, para una solución, no existe ninguna solución accesible que la mejore. 2.2.6

Métodos combinados

Si bien todos estos métodos han contribuido a ampliar nuestro conocimiento para la resolución de problemas reales, la integración de los métodos constructivos y los de búsqueda local constituyen la base de los procedimientos metaheurísticos. Por ello, estudiaremos en capítulos independientes los métodos constructivos y los métodos de búsqueda local, mientras que se harán menciones a lo largo del texto a cualquiera de los métodos de descomposición, inductivos o de reducción, pero no dedicaremos una sección específica a su estudio. Alternativamente, prestaremos especial atención a los métodos resultantes de combinar la construcción con la búsqueda local   y sus diferentes variantes, puesto que puede considerarse un punto de inicio en el desarrollo de los métodos metaheurísticos. 2.2.7

Métodos metaheurísticos

Existen una serie de métodos que se conocen bajo el nombre de Metaheurísticos, los cuales tienen el propósito de obtener mejores resultados que los alcanzados por los heurísticos tradicionales. El término metaheurístico fue introducido por Fred Glover en 1986. En este curso utilizaremos la acepción de heurísticos para referirnos a los métodos clásicos en contraposición a la de metaheurísticos que reservamos para los más recientes y complejos, con los que se obtienen mejores soluciones. En algunos textos podemos encontrar la expresión “heurísticos modernos” refiriéndose a los Metaheurísti cos. En (2) se introduce la siguiente definición:

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 17

Metaheurísticas y Redes Neuronales

“Los procedimientos Metaheurísticos son una clase de métodos

aproximados que están diseñados para resolver problemas difíciles de optimización combinatoria, en los que los heurísticos clásicos no son efectivos. Los Metaheurísticos proporcionan un marco general  para crear nuevos algoritmos híbridos combinando diferentes conceptos derivados de la inteligencia artificial, la evolución biológica y los mecanismos estadísticos” 

De esta manera, los procedimientos Metaheurísticos se sitúan conceptualmente “por encima” de los heurísticos en el sentido que guían el diseño de éstos. Así, al enfrentarnos a un problema de optimización, podemos escoger cualquiera de estos métodos para diseñar un algoritmo específico que lo resuelva aproximadamente. En estos momentos existe un gran desarrollo y crecimiento de estos métodos. En este curso vamos a limitarnos a aquellos procedimientos relativamente consolidados y que han probado su eficacia sobre una colección significativa de problemas. Específicamente consideraremos en sendos capítulos la Búsqueda Tabú, el Recocido Simulado, los diferentes Métodos Evolutivos, incluyendo los Algoritmos Genéticos y la Búsqueda Dispersa (Scatter Search), la evolución diferencial, el rencadenamiento de trayectorias y los métodos GRASP. Es importante notar que para la correcta compresión y asimilación de los métodos descritos, resulta indispensable su puesta en práctica, para lo cual el lector deberá implementar en un lenguaje de computación los algoritmos descritos y resolver algún problema de optimización combinatoria. Se recomendamos utilizar cualquier lenguaje de programación que permita controlar los detalles de implementación y que incluya la posibilidad de programación funcional y un buen manejo de estructuras de datos, en particular Wolfram Mathematica tiene esas características. La sección 2.3 incluye una colección de problemas de entre los que el lector puede escoger alguno e ir trabajando con él, aplicando los métodos descritos a lo largo de todo el texto. Al resolver un problema de forma heurística debemos de medir la calidad de los resultados puesto que, como ya hemos mencionado, la optimalidad no está garantizada. En la sección  2.4 de este capítulo se recogen los principales métodos para medir la calidad y eficiencia de un algoritmo y poder determinar su valía frente a otros.

2.3

Problemas Estructurados

El objeto de esta sección no es únicamente dar una colección de ejemplos reales, sino el de establecer modelos que han sido muy estudiados. Así, al enfrentarse el lector a un problema dado, tratará de reconocer las estructuras especiales que aparecen en estos modelos y de esta forma se podrá aprovechar la extensa literatura y experiencia computacional al respecto. Además, no debemos olvidar la limitada, pero significativa, importancia práctica de estos modelos.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 18

Metaheurísticas y Redes Neuronales

2.3.1

Problema de la Mochila (Knapsack Problem)

El problema de la mochila (KP por sus siglas en inglés), es un problema de optimización combinatoria muy referenciado en la literatura de investigación de operaciones, tanto por sus aplicaciones como por su estructura, que lo hace ideal para la evaluación del desempeño de métodos de búsqueda inteligente en problemas de optimización combinatoria. El problema KP es un problema de optimización combinatoria de formulación sencilla, aunque su resolución es compleja, y que aparece, directamente, o como un subproblema, en una gran variedad de aplicaciones, incluyendo planificación de la producción, modelización financiera, muestreo estratificado, planificación de la capacidad de instalaciones, etc., como se observa en (3). Además de sus potenciales aplicaciones, el KP es de particular interés por sus características combinatorias y su estructura sencilla, que lo vuelve un problema ideal para el diseño de métodos de búsqueda inteligente. Con el tratamiento del problema KP se pueden evaluar las ventajas y desventajas de estos algoritmos, sobretodo su robustez, precisión y rapidez. El KP es un problema combinatorio que es NP-duro, como se puede ver en (4), con respecto a la codificación binaria estándar, y consta en la lista de 21 problemas NP-completos de Karp, por tanto es improbable que, en algún momento, pueda ser encontrado un algoritmo que pueda resolverlo en tiempo polinomial. Sin embargo KP no es del tipo fuertemente NP-duro, y por tanto puede ser resuelto en tiempo seudo-polinomial, particularmente por programación dinámica, como se demuestra en (5) ; es decir, que en su codificación uniaria el problema es resoluble polinomialmente. De esta manera, incluso grandes instancias del problema pueden ser resueltas de manera exacta con solvers que utilizan métodos como la búsqueda dinámica o branch & bound (en particular Cplex), y el planteamiento de métodos aproximados, como los basados en metaheurísticas, se da para probar la eficiencia de estos procedimientos. La formulación del KP se realiza de la siguiente manera:

  1,2,3,…,

, , … , 

Dado un conjunto de objetos , con utilidades unitarias ,y con pesos , respectivamente, y dado que se tiene un recipiente (la “mochila”), de capacidad , el problema KP consiste en determinar qué objetos debo seleccionar para incluir en la mochila, de tal manera que la utilidad total de los objetos que se cargan sea la máxima posible, como se puede ver esquemáticamente en la  Figura 1.

 , , … , 

Figura 1. Como cargar óptimamente la mochila sin rebasar su capacidad

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 19

Metaheurísticas y Redes Neuronales

Así, el KP puede ser representado sencillamente por la siguiente formulación de programación binaria:

  =   ..=  ≤   ∈ 0, 1;  1,2,… ,    1

En donde:



  0

 si decidimos incluir el objeto  en la mochila, y

 sino.

Este problema tiene numerosas aplicaciones tales como:

 La denominada Cutting Stock , en donde hay que cortar una plancha de acero en diferentes piezas.  Determinar los artículos que puede almacenar un depósito para maximizar su valor total.  Maximizar el beneficio en asignación de inversiones cuando sólo hay una restricción. EJERCICIO: Describir el problema Cutting Stock y plantearlo como un problema de la mochila. 2.3.2 Los problemas de Recubrimiento, empaquetamiento y particionamiento de Conjuntos Estos problemas, en inglés conocidos como Set Covering (SCP) , Set Packing (SSP)  y Set Partitioning (SPP) ,  respectivamente, son problemas de optimización de tipo NP-hard con un tronco común con muchas aplicaciones, en particular serán tratados como problemas de prueba para los métodos basados en evolución diferencial (Capítulo 0)  y que se pueden enunciar del siguiente modo:

 ×   , … , 

 

Sea  una matriz binaria 0/1 de dimensiones  y enteros, entontes se definen los problemas SCP, SSP y SPP como:

SCP

  ..  ≥ 1  ∈ 0,1

SSP

  ..  ≤ 1  ∈ 0,1

 un vector de coeficientes

SPP

  . .   1  ∈ 0,1

Los tres problemas, SCP, SSP y SPP, pueden ser muy útiles para mostrar la transformación y relaciones entre problemas. Así podemos ver que el Set Packing y el Set Partitioning son equivalentes. Para pasar del primero al segundo basta con añadir variables de holgura. La Fernando Sandoya, Ph.D.

ESPOL, 2015/ 20

Metaheurísticas y Redes Neuronales

transformación inversa se realiza mediante variables artificiales. Estos dos problemas son más “fáciles” de resolver de forma exacta que el Set Covering ya que en ellos las restricciones

lineales están más ajustadas respecto al conjunto de soluciones enteras posibles, por lo que los óptimos de las relajaciones lineales están más cerca de las soluciones enteras. 2.3.2.1

SCP (Problema del recubrimiento de Conjuntos):

Un ejemplo el problema de recubrimiento SPP podría ser el siguiente: Sea un conjunto de clientes   a los cuales se pretende dar un servicio, y un conjunto H de posibles ubicaciones de facilidades logísticas desde donde se da servicio a los clientes; es decir, cada elemento de H da cobertura a un subconjunto de S, H={H1,H2,. .,Hn}, cada Hi  tiene un costo ci  asociado. El problema consiste en cubrir con costo mínimo todos los clientes con elementos de H.

  1,2,. .,

  1

Para formular el problema se define una variable si Hi  está en la solución y 0 en otro caso. También se introduce una matriz A={aij } de cobertura, en la que  si el elemento j  de S está en Hi  y 0 en otro caso. La formulación es la siguiente:

  1

  =   ..: =  ≥ 1;   1, … ,  ∈ 0,1;   1,… ,

Este problema tiene diferentes aplicaciones, entre las que podemos destacar la localización de servicios, tales como hospitales, bomberos, etc. y, la asignación de tripulaciones a vuelos. El problema del Set Covering es relativamente fácil de resolver con métodos de Ramificación y Acotación ya que la solución óptima del problema lineal coincide, en ocasiones, con la del problema MIP o está bastante cerca de él. La dificultad del problema proviene del número enorme de variables que suelen aparecer en problemas reales. EJERCICIO: (Resolver con GAMS) INSTALACION DE CENTROS DE SEGURIDAD Una empresa de seguridad residencial e industrial ofrece respuesta rápida a llamadas de auxilio (en menos de 5 minutos de la alarma ellos estarán en el sitio auxiliando al afiliado). Para cumplir este objetivo la empresa deberá instalar Centros de Auxilio Inmediato en diferentes sectores de la ciudad, desde donde partirán patrullas armadas hacia el lugar de auxilio. El gerente de operaciones ha establecido 15 locales que pueden ser adecuados como centros, así como también el costo de alquiler de estos locales. Así mismo se ha zonificado la ciudad en 17 zonas. En la tabla adjunta constan los costos así como también las zonas de la ciudad que

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 21

Metaheurísticas y Redes Neuronales

pueden ser servidas por cada uno de los mismos El objetivo es determinar que centros instalar de tal manera que se minimice el costo total y que permita dar el servicio a todas las zonas.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 A N O Z

ALQUILER

1 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 1 1

2 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1

3 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1

4 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0

CENTRO DE AUXILIO INMEDIATO 5 6 7 8 9 10 11 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1

600

500

380

400

600

280

500

480

510

390

420

12 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0

13 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 0 1

14 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0

15 0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1

450

500

600

550

EJERCICIO: (Resolver con GAMS) ASIGNACION DE TRIPULACIONES Una empresa aérea necesita asignar sus tripulaciones para cubrir todos sus vuelos. En particular, se quiere resolver el problema de asignar TRES tripulaciones con base en Bogotá a los vuelos listados en la primera columna de la tabla. Las otras columnas muestran las 12 secuencias factibles de vuelos para una tripulación cualquiera. Los números de cada columna indican el orden de los vuelos. Se necesita elegir tres secuencias (una por tripulación) de manera que se cubran todos los vuelos. Se permite tener más de una tripulación en un vuelo, donde la tripulación extra viaja como pasajeros, pero como parte del contrato colectivo cada tripulación extra que le toque viajar cobra como si estuviera trabajando. El coste de asignación de una tripulación a cada secuencia de vuelos se da en miles de dólares en la última fila. El objetivo es determinar una forma óptima de asignación de las tres tripulaciones de tal manera que se minimice el costo total para cubrir todos los vuelos.

1 2 3 4 5 6 7

1 1

BOG-UIO BOG-GYE BOG-LIM UIO-HAV UIO-BOG 2 HAV-GYE HAV-LIM

2

3

4 1

1

5

6

7 1

1 1

8

9

1 1

2

1 3

2 3

3

3

10 11 12 1 1 1 2 3 5 5

4 3

3

3

3

4

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 22

Metaheurísticas y Redes Neuronales

8 9 10 11 12 2.3.2.2

GYE-BOG 2 4 4 5 GYE-HAV 2 2 2 LIM-BOG 2 4 4 5 LIM-UIO 2 2 4 4 2 Costo 20 30 40 60 70 50 70 80 90 90 80 90 SPP (Problema de la Partición de Conjuntos)

Ahora consideremos el Set Partitioning y, al igual que en los dos anteriores, se tienen los conjuntos S y H. Así como en el Set Covering cada elemento de S tiene que aparecer al menos en uno de H, en este problema cada elemento de S tiene que aparecer exactamente en uno de H, por lo tanto la solución representa una partición del conjunto S. La función objetivo puede ser maximizar o minimizar, según la aplicación. Aplicaciones:

 Asignación de tripulaciones en una versión más restringida que la anteriormente mencionada.  Creación de distritos Electorales: Asignación de electores a un colegio electoral. EJEMPLO: EL PROBLEMA DEL COLOREO DE GRAFOS Dado un grafo G, el problema de coloreamiento del grafo consiste en colorear todos los nodos con la cantidad mínima de colores de tal manera que no existan dos nodos adyacentes (unidos con una arista) del mismo color. Este problema representa muchas situaciones reales como en la planificación de horarios para una serie de actividades que deben tener lugar, algunas de las cuales no pueden suceder simultáneamente, tales como horarios de exámenes, horarios de competencias deportivas, etc. Se desea conseguir una planificación que asegure la menor duración total de todo el plan. Para formular este problema se define un grafo en el que cada nodo representa una actividad, y cada arista   significa que las actividades   no pueden ocurrir simultáneamente. El problema consiste en particionar el conjunto de nodos en el menor conjunto posible de subconjuntos disjuntos, de tal forma que no existan dos nodos adyacentes en el mismo subconjunto.

, 

, 

 

Para formular el problema se consideran todos los posibles conjuntos de nodos  tales que no contengan dos nodos adyacentes, y a cada  se le asocia una variable de decisión . La matriz   se define como:   si el nodo j pertenece al subconjunto , y cero en caso contrario. Entonces la formulación es:

   ()

    1   = 



Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

EJEMPLO:

ESPOL, 2015/ 23

 ..: =   1;   1, … ,  ∈ 0,1;   1,… ,

Resolver con GAMS el problema de coloreo del grafo de Petersen:

2.3.2.3

SSP (Problema del empaquetamiento de Conjuntos):

Ahora consideremos una aplicación del Set Packing. Igual que en el problema anterior se tienen los conjuntos S y H, pero ahora cada Hi   tiene un valor asociado. El objetivo es empaquetar tantos elementos de S como sea posible de forma que el beneficio obtenido sea máximo y no haya solapamientos (ningún elemento de S puede aparecer más de una vez). En cierto modo, la relajación lineal del Set Covering y la del Set Packing son problemas duales. Sin embargo esto no sirve para establecer una relación entre los problemas enteros originales. Uno de los ejemplos/aplicaciones es el problema del Acoplamiento Máximo o Matching. Un acoplamiento es un subconjunto de las aristas de un grafo de manera que cualquier vértice no sea incidente con más de una de esas aristas. El problema del acoplamiento máximo consiste en encontrar un acoplamiento de máximo cardinal. EJERCICIO: Plantear una aplicación del SSP y resolverlo con GAMS 2.3.3

Problema del Agente Viajero (Traveling Salesman Problem)

Este problema, también conocido como Traveling Salesman Problem (TSP), ha sido uno de los más estudiados en Investigación Operativa, por lo que merece una atención especial. Cuando se desarrolló la teoría de la Complejidad Algorítmica, el TSP fue uno de los primeros problemas en estudiarse, probando Karp en 1972 que pertenece a la clase de los problemas difíciles (NPhard). Desde los métodos de Ramificación y Acotación hasta los basados en la Combinatoria Poliédrica, pasando por los procedimientos Metaheurísticos, todos han sido inicialmente

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 24

Metaheurísticas y Redes Neuronales

probados en el TSP, convirtiéndose éste en un problema de prueba obligado para “validar” cualquier técnica de resolución de problemas enteros o combinatorios. La librería TSPLIB (http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/) de domino público contiene un conjunto de ejemplos del TSP para ser usados como ejemplos de prueba en los algoritmos, y en los que consta la mejor solución obtenida hasta la fecha y, en algunos casos, la solución óptima. A efectos de medir empíricamente la bondad de los algoritmos que se describe, consideraremos un conjunto de 30 ejemplos de la TSPLIB basados en problemas reales con óptimos conocidos. El Problema del Agente Viajero puede enunciarse del siguiente modo: “Un agente viajero ha de visitar n ciudades, comenzando y finalizando en su

 propia ciudad. Conociendo el costo de ir de cada ciudad a otra, determinar el recorrido de costo mínimo.”  Para enunciar el problema formalmente introducimos la siguiente terminología: Sea un grafo G=(V , A,C ) donde V   es el conjunto de vértices,  A  es el de aristas y C =(cij ) es la matriz de costos. Esto es, cij  es el costo o distancia de la arista (i , j ).

 Un camino (o cadena) es una sucesión de aristas (e1, e2, …, ek) en donde el vértice final de cada arista coincide con el inicial de la siguiente. También puede representarse por la sucesión de vértices utilizados.  Un camino es simple o elemental si no utiliza el mismo vértice más de una vez.  Un ciclo es un camino (e1, e2, …, ek) en el que el vértice final de ek  coincide con el inicial de e1.  Un ciclo es simple si lo es el camino que lo define.  Un subtour es un ciclo simple que no pasa por todos los vértices del grafo.  Un tour o ciclo hamiltoniano es un ciclo simple que pasa por todos los vértices del grafo. El Problema del Agente Viajero consiste en determinar un tour de costo mínimo. La figura 2 muestra un grafo de 8 vértices en el que aparece destacado un ciclo hamiltoniano. 5

8

4

1 6 4

6

3 5

3

4

10

2

6

5 8

10

7

6 4 8

4 3

4

8

Figura 2. Ciclo Hamiltoniano

Consideraremos, sin pérdida de generalidad, que el grafo es completo; es decir, que para cada par de vértices existe una arista que los une. Notar que, de no ser así, siempre podemos añadir una arista ficticia entre dos vértices con el costo del camino más corto que los une. Así por ejemplo, en el grafo de la figura 2 podemos añadir una arista entre los vértices 1 y 6 con costo 9 correspondiente al camino 1-3-6.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 25

Metaheurísticas y Redes Neuronales

Entre las aplicaciones más importantes del TSP podemos destacar:

 Fabricación de circuitos integrados  Rutas de vehículos  Recogida (robotizada) de material en almacenes  Instalación de componentes en computadores  Aparece como subproblema en otras aplicaciones Este problema puede ser formulado mediante un modelo de programación lineal entera con variables binarias. Para ello basta considerar las variables x ij  que valen 1 si el viajante va de la ciudad i  a la j  y 0 en otro caso y llamar cij  al costo de ir de la ciudad i  a la j :

 c  x

 MIN 

ij

ij

i   j

 s.t . :

 x

  x  ji  2

ij

i   j



i  1,2,...,n

 j i

 x ij  2 S   {1,2,.., n}, 3  S   n / 2

( i ,  j )  ( S )

 x ij  0,1 i  j

Donde (S) representa el conjunto de aristas incidentes con exactamente un vértice de S. Las restricciones que aparecen en segundo lugar (vinculadas a todos los subconjuntos de vértices S) reciben el nombre de restricciones de eliminación de subtours y garantizan que la solución sea un tour. El problema es que al haber una por cada subconjunto del conjunto de vértices, aparecen en una cantidad del orden de 2 n, lo cual hace inmanejable tal formulación. Se han encontrado restricciones alternativas para evitar la formación de subtours que suponen la incorporación de una cantidad polinómica de restricciones (Miller, Tucker y Zemlin, 1960). Aún así, la resolución óptima del problema ha resultado poco eficiente, salvo para ejemplos relativamente pequeños, dado el elevado tiempo de computación requerido por cualquier método exacto. 2.3.4

El Problema de la Asignación Cuadrática

Introduciremos el problema mediante el siguiente ejemplo: “Se tienen n módulos electrónicos

y n posiciones en donde situarlos sobre una placa. Sea t ik  el número de cables que conectan los módulos i  y k , y sea d  jl  la distancia entre las posiciones j  y l  de la placa. El problema consiste en determinar la ubicación de los módulos minimizando la longitud total del cable utilizado”

Al igual que en los otros modelos de asignación vistos, se introducen variables binarias  x ij  que toman el valor 1 si el módulo i  se asigna a la posición j  y 0 en otro caso. La formulación MIP es la siguiente:

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 26

Metaheurísticas y Redes Neuronales

n

 MIN 

n

n

n



t ik d  jl  xij xkl 

i 1  j 1 k 1 l 1

 s.t . : n

 xij

1

i  1,2,..., n

1

 j  1,2,..., n

 j 1 n

 xij i 1

 xij  0,1

El problema se llama cuadrático por la función objetivo ya que el costo viene dado por parejas de variables que aparecen como producto. Así pues la función objetivo es no lineal, aunque se puede transformar en un problema lineal entero introduciendo variables que representen a los productos. Notar que esta transformación obligaría a reformular las restricciones. Este problema tiene numerosas aplicaciones ya que podemos encontrar en ámbitos muy diversos situaciones como la descrita. Así, por ejemplo, el problema de ubicar determinados servicios (como laboratorios, rayos X,... etc.) en un hospital en donde se conoce el flujo previsto de personal entre tales servicios. Análogamente el guardar determinados productos en un almacén. El objeto de introducir este problema es doble: por una parte mostrar un problema no lineal, con un gran número de aplicaciones prácticas, que puede transformarse en un PLE y, por otra, presentar uno de los problemas más difíciles (sino el que más) dentro de los ya de por sí difíciles problemas enteros. EJERCICIO: Introduciendo nuevas variables plantear el problema de asignación cuadrática como un problema MIP. 2.3.5

Problema de Asignación Generalizada

Se tiene un conjunto J={1,2,..,n} de índices de los trabajos a realizar y otro conjunto I={1,2,..,m} de personas para realizarlos. El costo (o valor) de asignar la persona i   al trabajo j   viene dado por cij . Además se tiene una disponibilidad bi  de recursos de la persona i   (como por ejemplo horas de trabajo) y una cantidad aij   de recursos de la persona i   necesarias para realizar el trabajo j . Con todo esto, el problema consiste en asignar las personas a los trabajos con el mínimo costo (o el máximo valor). Al igual que en los otros modelos de asignación vistos, se introducen variables  x ij  que valen 1 si la persona i  se asigna al trabajo j  y 0 en otro caso.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 27

Metaheurísticas y Redes Neuronales

n

n

 cij xij

 MIN 

i 1  j 1

 s.t . : n

 xij

1

 j  1,2,...,n

i 1 n

 aij xij  bi

i  1,2,...,n

 j 1

 xij  0,1 En este modelo de asignación se puede asignar una persona a más de un trabajo, respetando obviamente las limitaciones en los recursos. Algunas de las aplicaciones más relevantes son:

 Asignación de clientes a camiones (de reparto o recogida) de mercancías.  Asignación de tareas a programadores.  Asignación de trabajos a una red de computadores. 2.3.6

Problema de la Ordenación Lineal

Este problema consiste en determinar una permutación  p de las filas y columnas de una matriz cuadrada dada, de manera que la suma de los elementos por encima de la diagonal sea máxima. Notar que la permutación  p  proporciona el orden tanto de las filas como de las columnas. En términos económicos este problema es equivalente al de triangulación de matrices inputoutput, que puede describirse del siguiente modo: La economía de una región se divide en m sectores, se construye una matriz m*m donde la entrada aij  denota la cantidad de mercancías (en valor monetario) que el sector i   sirve al  j   en un año dado. El problema de triangulación consiste en permutar las filas y columnas de la matriz simultáneamente de manera que la suma de elementos por encima de la diagonal sea lo mayor posible. Una solución óptima presenta una ordenación de sectores de modo que los proveedores (sectores que producen para otros) van en primer lugar seguidos de los consumidores. Este problema también puede enunciarse en términos de grafos, lo cual ayuda a formularlo del siguiente modo: n

 MAX 

n



cij xij

i 1  j 1

 s.t . :  xij   x ji  1  xij   x jk    xki  2

i,  j  V , i   j

1  i <  j < k  n

 xij  0,1

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 28

Metaheurísticas y Redes Neuronales

Donde  x ij =1 representa que el sector (vértice) i   precede al j   en la ordenación dada por la solución.

2.4

Medidas de Calidad de un Algoritmo

Un buen algoritmo heurístico debe de tener las siguientes propiedades: 1. Eficiente. Un esfuerzo computacional realista para obtener la solución. 2. Bueno. La solución debe de estar, en promedio, cerca del óptimo. 3. Robusto. La probabilidad de obtener una mala solución (lejos del óptimo) debe ser baja. Para medir la calidad de un heurístico existen diversos procedimientos, entre los que se encuentran los siguientes: 2.4.1

Comparación con la solución óptima

Aunque normalmente se recurre al algoritmo aproximado por no existir un método exacto para obtener el óptimo, o por ser éste computacionalmente muy costoso, en ocasiones puede ser que dispongamos de un procedimiento que proporcione el óptimo para un conjunto limitado de ejemplos (usualmente de tamaño reducido). Este conjunto de ejemplos puede servir para medir la calidad del método heurístico. Normalmente se mide, para cada uno de los ejemplos, la desviación porcentual de la solución heurística frente a la óptima, calculando posteriormente el promedio de dichas desviaciones. Si llamamos ch al valor objetivo en la solución del algoritmo heurístico y copt  al valor objetivo de la solución óptima de un ejemplo dado, en un problema de optimización el GAP absoluto (desviación absoluta) viene dada por la expresión:

  |  |   |   | 100%

Y el GAP relativo (desviación relativa) como:

2.4.2

Comparación con una cota

En ocasiones el óptimo del problema no está disponible ni siquiera para un conjunto limitado de ejemplos. Un método alternativo de evaluación consiste en comparar el valor de la solución que proporciona el heurístico con una cota del problema (inferior si es un problema de minimización y superior si es de maximización). Obviamente la bondad de esta medida dependerá de la bondad de la cota (cercanía de ésta al óptimo), por lo que, de alguna manera, tendremos que tener información de lo buena que es dicha cota. En caso contrario la comparación propuesta no tiene demasiado interés.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 29

Metaheurísticas y Redes Neuronales

2.4.3

Comparación con un método exacto truncado

Un método enumerativo como el de Ramificación y Acotación explora una gran cantidad de soluciones, aunque sea únicamente una fracción del total, por lo que los problemas de gr andes dimensiones pueden resultar computacionalmente inabordables con estos métodos. Sin embargo, podemos establecer un límite de iteraciones (o de tiempo) máximo de ejecución para el algoritmo exacto. También podemos saturar un nodo en un problema de maximización cuando su cota inferior sea menor o igual que la cota superior global más un cierto  (análogamente para el caso de minimizar). De esta forma se garantiza que el valor de la mejor solución proporcionada por el procedimiento no dista más de  del valor óptimo del problema. En cualquier caso, la mejor solución encontrada con estos procedimientos truncados proporciona una cota con la que contrastar el heurístico. 2.4.4

Comparación con otros heurísticos

Este es uno de los métodos más empleados en problemas difíciles (NP-duros) sobre los que se ha trabajado durante tiempo y para los que se conocen algunos buenos heurísticos. Al igual que ocurre con la comparación con las cotas, la conclusión de dicha comparación está en función de la bondad del heurístico escogido. 2.4.5

Análisis del peor caso (worst case analisys)

Uno de los métodos que durante un tiempo tuvo bastante aceptación es analizar el comportamiento en el peor caso del algoritmo heurístico; esto es, considerar los ejemplos que sean más desfavorables para el algoritmo y acotar analíticamente la máxima desviación respecto del óptimo del problema. Lo mejor de este método es que acota el resultado del algoritmo para cualquier ejemplo; sin embargo, por esto mismo, los resultados no suelen ser representativos del comportamiento medio del algoritmo. Además, el análisis puede ser muy complicado para los heurísticos más sofisticados. Aquellos algoritmos que, para cualquier ejemplo, producen soluciones cuyo costo no se aleja de un porcentaje    del costo de la solución óptima, se llaman  Algoritmos  -Aproximados. Esto es; en un problema de minimización se tiene que cumplir para un   > 0 que: ch    (1+  ) copt 

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 30

Metaheurísticas y Redes Neuronales

3.

Métodos Constructivos

Los métodos constructivos son procedimientos iterativos que, en cada paso, añaden un elemento hasta completar una solución. Usualmente son métodos deterministas y están basados en seleccionar, en cada iteración, el elemento con mejor evaluación. Estos métodos son muy dependientes del problema que resuelven, por lo que utilizaremos el Problema del Agente Viajero (TSP) para describirlos. En este capítulo se describen cuatro de los métodos más conocidos para el TSP.

3.1

Heurísticos del Vecino más Cercano

Uno de los heurísticos má s sencillos para el TSP es el llamado “del vecino más cercano”, que es un algoritmo glotón (Greedy) que trata de construir un ciclo Hamiltoniano de bajo costo basándose en el vértice cercano a uno dado. Este algoritmo en una versión estándar tiene el siguiente código: Algoritmo del Vecino más cercano Inicialización Seleccionar un vértice j al azar. Hacer t = j y W = V \ {j}. Mientras ( W    ) Tomar j de W / c tj  = min {cti  / i en W} Conectar t a j Hacer W = W \ {j} y t =j. Este procedimiento realiza un número de operaciones de orden O(n 2). Si seguimos la evolución del algoritmo al construir la solución de un ejemplo dado, veremos que comienza muy bien, seleccionando aristas de bajo costo. Sin embargo, al final del proceso probablemente quedarán vértices cuya conexión obligará a introducir aristas de costo elevado. Esto es lo que se conoce como miopía del procedimiento, ya que, en una iteración escoge la mejor opción disponible sin “ver” que esto puede obligar a realizar malas elecciones en iteraciones posteriores. El algoritmo tal y como aparece puede ser programado en unas pocas líneas de código. Sin embargo una implementación directa será muy lenta al ejecutarse sobre ejemplos de gran tamaño (10,000 vértices). Así pues, incluso para un heurístico tan sencillo como éste, es importante pensar en la eficiencia y velocidad de su código. Para reducir la miopía del algoritmo y aumentar su velocidad se introduce el concepto de subgrafo candidato, junto con algunas modificaciones en la exploración.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 31

Metaheurísticas y Redes Neuronales

Un subgrafo candidato es un subgrafo del grafo completo con los



vértices y únicamente las aristas consideradas “atractivas” para aparecer en un ciclo Hamiltoniano de bajo costo. Una posibilidad es tomar, por ejemplo, el subgrafo de los k vecinos más cercanos; esto es, el subgrafo con los  vértices y para cada uno de ellos las aristas que lo unen con los k   vértices más cercanos. Este subgrafo también será usado en otros procedimientos.



El algoritmo puede “mejorarse” en los siguie ntes aspectos:

 Para seleccionar el vértice  j   que se va a unir a t   (y por lo tanto al tour parcial en construcción), en lugar de examinar todos los vértices, se examinan únicamente los adyacentes a t  en el subgrafo candidato. Si todos ellos están ya en el tour parcial, entonces sí que se examinan todos los posibles.  Cuando un vértice queda conectado (con grado 2) al tour en construcción, se eliminan del subgrafo candidato las aristas incidentes con él.  Se especifica un número s < k   de modo que cuando un vértice que no está en el tour está conectado únicamente a s o menos aristas del subgrafo candidato se considera que se está quedando aislado. Por ello se inserta inmediatamente en el tour. Como punto de inserción se toma el mejor de entre los k  vértices más cercanos presentes en el tour. Considerando el estudio empírico sobre las 30 ejemplos utilizados, la versión inicial del algoritmo presenta un porcentaje de desviación en promedio respecto del óptimo de 24.2%, mientras que la mejorada con k =10 y s=4 de 18.6%. La primera tiene un tiempo de ejecución medio de 15.3 segundos mientras que la segunda lo tiene de 0.3 segundos. EJERCICIO: Implemente un código para hallar una solución al TSP por medio del algoritmo del vecino más cercano.

3.2

Heurísticos de Inserción

Otra aproximación intuitiva a la resolución del TSP consiste en comenzar construyendo ciclos que visiten únicamente unos cuantos vértices, para posteriormente extenderlos insertando los vértices restantes. En cada paso se inserta un nuevo vértice en el ciclo hasta obtener un ciclo Hamiltoniano. Este procedimiento es debido a los mismos autores que el anterior y su esquema es el siguiente: Algoritmo de Inserción Inicialización Seleccionar un ciclo inicial (subtour) con k vértices. Hacer W = V \ {vértices seleccionados}. Mientras ( W    ) Tomar j de W de acuerdo con algún criterio preestablecido

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 32

Metaheurísticas y Redes Neuronales

Insertar j donde menos incremente la longitud del ciclo Hacer W = W \ {j}. Existen varias posibilidades para implementar el esquema anterior de acuerdo con el criterio de selección del vértice j de W a insertar en el ciclo. Se define la distancia de un vértice v al ciclo como el mínimo de las distancias de v a todos los vértices del ciclo: d min (v) = min { civ  / i   V \ W } Los criterios más utilizados son: Inserción más cercana: Seleccionar el vértice j más cercano al ciclo. d min (j) = min { d min (v) / v   W } Inserción más lejana:

Seleccionar el vértice j más lejano al ciclo. d min (j) = max { d min (v) / v   W }

Inserción más barata: Seleccionar el vértice j que será insertado con el menor incremento del costo. Inserción aleatoria:

Seleccionar el vértice j al azar.

La figura 2 muestra la diferencia entre estos criterios en un caso dado. El ciclo actual está formado por 4 vértices y hay que determinar el próximo a insertar. La inserción más cercana escogerá el vértice i, la más lejana el s y la más barata el k. s

i k 

Figura 2. Selección del vértice a insertar

Todos los métodos presentan un tiempo de ejecución de O(n 2) excepto la inserción más cercana que es de O(n2log n). Respecto al estudio empírico sobre los 30 grafos de la TSPLIB los porcentajes de desviación del óptimo son de 20%, 9.9% 16.8% y 11.1% para el más cercano, más lejano, más barato y aleatorio, respectivamente, aunque el tiempo de ejecución del más barato es mucho mayor. Respecto al ciclo inicial se ha tomado k =3 vértices y se comprueba experimentalmente que el procedimiento no depende mucho del ciclo inicial (aproximadamente un 6% de variación). Fernando Sandoya, Ph.D.

ESPOL, 2015/ 33

Metaheurísticas y Redes Neuronales

EJERCICIO: Implemente un código para hallar una solución al TSP por medio del algoritmo de inserción.

3.3

Heurísticos Basados en Árboles Generadores

Los heurísticos considerados anteriormente construyen un ciclo Hamiltoniano basándose únicamente en los costos de las aristas. Los heurísticos de este apartado se basan en el árbol generador de costo mínimo, lo que aporta una información adicional sobre la estructura del grafo. Comenzaremos por ver algunos conceptos de teoría de grafos.

 Un grafo es conexo si todo par de vértices está unido por un camino.  Un árbol es un grafo conexo que no contiene ciclos. El número de aristas de un árbol es igual al número de vértices menos uno.  Un árbol generador de un grafo G=(V,A,C) es un árbol sobre todos los vértices y tiene, por tanto, |V| - 1 aristas de G.  Un árbol generador de mínimo peso (o de costo mínimo) es aquel que de entre todos los árboles generadores de un grafo dado, presenta la menor suma de los costos de sus aristas.  Un acoplamiento  de un grafo G=(V,A,C) es un subconjunto M del conjunto A de aristas cumpliendo que cada vértice del grafo es a lo sumo incidente con una arista de M.  Un acoplamiento sobre un grafo G=(V,A,C) es perfecto si es de cardinalidad máxima e igual a V/ 2. Las figuras siguientes ilustran los conceptos vistos sobre un grafo completo de 8 vértices. En la figura 3 tenemos un árbol generador. Notar que contiene a todos los vértices y no hay ningún ciclo. La figura 4 muestra un acoplamiento perfecto en el que podemos ver cómo cada vértice es incidente con una, y solo una, de las aristas. Al ser un grafo de 8 vértices el número máximo de aristas en un acoplamiento es de 4, por lo que el de la figura es perfecto.

5

5

1

1 6

6

3

3

2

2

7

4

7

4 8

Figura 3. Árbol generador

8

Figura 4. Acoplamiento Perfecto

El algoritmo debido a Prim (1957) obtiene un árbol generador de mínimo peso de un grafo G completo. El algoritmo comienza por definir el conjunto T de aristas del árbol (inicialmente vacío) y, el conjunto U de vértices del árbol (inicialmente formado por uno elegido al azar). En cada paso se calcula la arista de menor costo que une U con V\U, añadiéndola a T y pasando su vértice adyacente de V\U a U. El procedimiento finaliza cuando U es igual a V; en cuyo caso el conjunto T proporciona la solución. Fernando Sandoya, Ph.D.

ESPOL, 2015/ 34

Metaheurísticas y Redes Neuronales

Dado un ciclo vi0, v i1,…, vik que pasa por todos los vértices de G (no necesariamente simple), el siguiente procedimiento obtiene un ciclo Hamiltoniano comenzando en v i0 y terminando en v ik (vi0= vik). En el caso de grafos con costos cumpliendo la desigualdad triangular (como es el caso de grafos euclídeos), este procedimiento obtiene un ciclo de longitud menor o igual que la del ciclo de partida. Algoritmo de Obtención de Tour Inicialización Hacer T = {  vi0 }, v = vi0  y s=1. Mientras ( |T| < |V| ) Si vi s no está en T, hacer: T = T   {  vi s } Conectar v a v i s y hacer v = v i s Hacer s = s+1 Conectar v a v i0 y formar el ciclo Hamiltoniano

A partir de los elementos descritos se puede diseñar un algoritmo para obtener un ciclo Hamiltoniano. Basta con construir un árbol generador de mínimo peso (figura 5), considerar el ciclo en el que todas las aristas del árbol son recorridas dos veces, cada vez en un sentido (figura 6), y aplicar el algoritmo de obtención de tour   a dicho ciclo (figura 7). El ejemplo de las figuras mencionadas ilustra dicho procedimiento sobre un grafo completo con 10 vértices.

16

4

3

4

3 25

2

2 25

1

1

19

10

10 15

5

9

5

14

9

19

7

7 8 17

6

9

Figura 5. Árbol Generador

8

6

Figura 6. Duplicación de aristas

Figura 7. Ciclo Hamiltoniano

La figura 5 muestra un árbol generador de mínimo peso e igual a 156. En la figura 6 se han duplicado las aristas y se señala mediante flechas la dirección del ciclo resultante. Su costo obviamente será de 156x2=312. Aplicando el procedimiento de obtención de tour al ciclo de la figura 6, se obtiene el ciclo Hamiltoniano de la figura 7 con un costo de 258. El proceso de duplicación de las aristas (recorrerlas todas en ambos sentidos) para obtener un tour aumenta en gran medida el costo de la solución. Podemos ver que es posible obtener un

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 35

Metaheurísticas y Redes Neuronales

ciclo que pase por todos los vértices de G a partir de un árbol generador sin necesidad de duplicar todas las aristas. De hecho, basta con añadir aristas al árbol de modo que todos los vértices tengan grado par. El siguiente procedimiento, debido a Christofides (1976), calcula un acoplamiento perfecto de mínimo peso sobre los vértices de grado impar del árbol generador. Añadiendo al árbol las aristas del acoplamiento se obtiene un grafo con todos los vértices pares, y por lo tanto, un ciclo del grafo original, a partir del cual ya hemos visto cómo obtener un tour.  Algoritmo de Christofides 1. Calcular un Árbol Generador de Mínimo Peso 2. Obtener el conjunto de vértices de grado impar en el Árbol. 3. Obtener un Acoplamiento Perfecto de mínimo peso sobre dichos vértices. 4.  Añadir las aristas del Acoplamiento al Árbol. 5.  Aplicar el procedimiento de Obtención de Tour.

El cálculo del acoplamiento perfecto de costo mínimo sobre un grafo de k  vértices se realiza en un tiempo O(k 3) con el algoritmo de Edmonds (1965). Dado que un árbol generador de mínimo peso tiene como máximo n-1 hojas (vértices de grado 1 en el árbol), el procedimiento de Christofides tendrá un tiempo de orden O(n 3). Propiedad: El algoritmo de Christofides sobre ejemplos cuya matriz de distancias cumple la desigualdad triangular produce una solución cuyo valor es como mucho 1.5 veces el valor óptimo: 3 c H 

2

cOPT 

Es decir, es un algoritmo ½ - aproximado sobre esta clase de ejemplos. Prueba: Sea c(AGMP) el costo del árbol generador de mínimo peso y c(A) el costo del acoplamiento perfecto calculado en el algoritmo de Christofides. Al añadir las aristas del acoplamiento al árbol se obtiene un ciclo (con posibles repeticiones) cuyo costo es la suma de ambos costos. Dado que la matriz de distancias cumple la desigualdad triangular, al aplicar el algoritmo de obtención de tour el costo puede reducirse eventualmente. Por ello el costo de la solución obtenida, cH, cumple: cH   c(AGMP) + c(A)

(1)

Un árbol generador de mínimo peso, por construcción, tiene un costo menor que cualquier ciclo Hamiltoniano y, por lo tanto, que el ciclo Hamiltoniano de costo mínimo (tour óptimo). Para probarlo basta con considerar un ciclo Hamiltoniano y quitarle una arista, con lo que se obtiene un árbol generador.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 36

Metaheurísticas y Redes Neuronales

El árbol generador de mínimo peso tiene, obviamente, un costo menor que dicho árbol generador y, por lo tanto, que el ciclo Hamiltoniano. Luego: c(AGMP)    cOPT

(2)

El acoplamiento del paso 3 del algoritmo de Christofides tiene un costo menor o igual que la mitad de la longitud de un tour óptimo en un grafo Euclídeo. Para probarlo consideremos un tour óptimo y llamemos S al conjunto de vértices de grado impar en el árbol. El algoritmo calcula un acoplamiento perfecto de costo mínimo sobre los vértices de S. La figura 8 muestra un ciclo Hamiltoniano óptimo y los vértices de S en oscuro. Además aparecen dos acoplamientos perfectos sobre S, A 1 (trazo continuo) y A2 (trazo discontinuo), en donde cada vértice está acoplado al más próximo en el tour óptimo.

Figura 8. Dos acoplamientos sobre S

Como se cumple la desigualdad triangular, se tiene que c(A1 )+c(A2 )    cOPT . . Es evidente que por ser el de costo mínimo c(A)    c(A1 ) y c(A)    c(A2 ), de donde: 2 c(A)    cOPT

(3)

De (1), (2) y (3) se concluye el resultado. Las figuras siguientes ilustran el método de Christofides sobre el mismo ejemplo de las figuras 5, 6 y 7. En la figura 9 aparecen oscurecidos los vértices de grado impar en el árbol generador, y en trazo discontinuo las aristas del acoplamiento perfecto de costo mínimo sobre tales vértices. Al añadirlas se obtiene un tour de costo 199. La figura 10 muestra el ciclo Hamiltoniano que se obtiene al aplicarle el procedimiento de obtención del ciclo al tour de la figura anterior. La solución tiene un costo de 203, mientras que la obtenida con el procedimiento de duplicar aristas (figura 7) tenía un costo de 258.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 37

Metaheurísticas y Redes Neuronales

3

16

4

3

25

16

4

25

21

2

21

2

19 1

25

1

19

10 15

5

9

10

14

5

19

19

15

9

14

48 19

7

8 17

6

7 8

9

Figura 9. Acoplamiento Perfecto

17

6

9

Figura 10. Ciclo Hamiltoniano.

El procedimiento del árbol generador y posterior duplicación de aristas obtiene, sobre el conjunto de ejemplos considerados de la TSPLIB, una desviación del óptimo de 38%, mientras que el heurístico de Christofides de 19.5%.

3.4

Heurísticos Basados en Ahorros

Los métodos de esta sección son debidos a Clarke y Wright (1964) y fueron propuestos inicialmente para problemas de rutas de vehículos. Veamos una adaptación de estos procedimientos al Problema del Agente Viajero. El algoritmo siguiente se basa en combinar sucesivamente subtours hasta obtener un ciclo Hamiltoniano. Los subtours considerados tienen un vértice común llamado base. El procedimiento de unión de subtours se basa en eliminar las aristas que conectan dos vértices de diferentes subtours con el vértice base, uniendo posteriormente los vértices entre si. Llamamos ahorro a la diferencia del costo entre las aristas eliminadas y la añadida. Algoritmo de Ahorros Inicialización Tomar un vértice z V como base. Establecer los n-1 subtours [( z,v),(v,z)]    v V   \{z} . Mientras ( Queden dos o más subtours ) Para cada par de subtours calcular el ahorro de unirlos al eliminar en cada uno una de las aristas que lo une con z y conectar los dos vértices asociados. Unir los dos subtours que produzcan un ahorro mayor. En las figuras 11 y 12 se ilustra una iteración del procedimiento. Podemos ver cómo se combinan dos subtours eliminando las aristas de los vértices i y j al vértice base z, e insertando la arista (i,j).

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 38

Metaheurísticas y Redes Neuronales

i

i

z

z

 j

Figura 11. Conjunto inicial de subtours

 j

Figura 12. Conjunto final de subtours

En la implementación del algoritmo se tiene que mantener una lista con las combinaciones posibles. El punto clave de la implementación es la actualización de esta lista. Sin embargo, al unir dos subtours únicamente se ven afectados aquellos en los que su “mejor conexión” pertenece a alguno de los dos subtours recién unidos. Luego basta con actualizar

estos en cada iteración sin necesidad de actualizarlos todos cada vez que se realiza una unión. Al igual que en otros heurísticos, podemos utilizar el subgrafo candidato (en el que están todos los vértices y sólo las aristas consideradas “atractivas”) para acelerar los cálculos. Así, al

actualizar la lista de la mejores conexiones únicamente se consideran aristas del subgrafo candidato. El método presenta un tiempo de ejecución de O(n 3). Respecto al estudio empírico sobre los 30 ejemplos de la TSPLIB los porcentajes de desviación respecto del óptimo son de 9.8% para el método original y 9.6% para el mejorado con el uso del subgrafo candidato. Además, el tiempo de ejecución es mucho menor para este último. La siguiente tabla recoge los resultados del estudio comparativo sobre los cuatro algoritmos descritos, con los 30 ejemplos de la TSPLIB considerados: Heurístico Vecino más cercano (básico) Vecino más cercano (mejorado) Inserción más Lejana MST/duplicación de aristas Christofides Ahorros

Desviación del Óptimo 24.2% 18.6% 9.9% 38.0% 19.5% 9.6%

T. Ejecución (pr2392) 29.2 0.30 35.4 1.2 0.70 5.07

Todos los métodos están basados en cálculos relativamente sencillos y han sido implementados eficientemente, por lo que los tiempos de computación son muy parecidos entre sí e inferiores a 1 segundo en promedio. Por ello, para distinguir entre todos, en la tabla

Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 39

se muestra el tiempo en segundos sobre el ejemplo de mayor tamaño considerado (pr2392) de casi 2,400 vértices. A la vista de los resultados podemos concluir que tanto el método de los ahorros como el de inserción basado en el elemento más lejano son los que mejores resultados obtienen, aunque presentan un tiempo de computación mayor que los otros dos.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 40

Metaheurísticas y Redes Neuronales

4.

Métodos de Búsqueda Local

En general, las soluciones obtenidas con los métodos constructivos suelen ser de una calidad moderada. En este apartado vamos a estudiar diversos algoritmos basados en la búsqueda local para mejorarlas. Al igual que ocurría con los métodos descritos en la sección anterior, estos algoritmos son muy dependientes del problema que resuelven, por lo que al igual que allí, utilizaremos el TSP para describirlos. Específicamente, consideraremos tres de los métodos más utilizados, tal y como aparecen descritos en Jünger, Reinelt y Rinaldi (1995). Comenzaremos por definir y explicar algunos de los conceptos genéricos de estos métodos. Los procedimientos de búsqueda local, también llamados de mejora, se basan en explorar el entorno o vecindad de una solución. Utilizan una operación básica llamada movimiento que, aplicada sobre los diferentes elementos de una solución, proporciona las soluciones de su entorno. Formalmente: Definición: Sea X el conjunto de soluciones del problema combinatorio. Cada solución x  tiene un conjunto de soluciones asociadas N(x)    X , que denominaremos entorno de x. Definición: Dada una solución  x,  cada solución de su entorno,  x’   N(x),  puede obtenerse directamente a partir de x  mediante una operación llamada movimiento. Un procedimiento de búsqueda local parte de una solución inicial  x 0, calcula su entorno N(x 0 ) y escoge una nueva solución  x 1  en él. Dicho de otro modo, realiza el movimiento m1 que aplicado a  x 0  da como resultado  x 1. Este proceso puede ser aplicado reiteradamente tal y como muestra el diagrama siguiente: m

m

1

m

2

 x     x    x 0

1

2

3

     x3

Un procedimiento de búsqueda local queda determinado al especificar un entorno y el criterio de selección de una solución dentro del entorno. La definición de entorno/movimiento, depende en gran medida de la estructura del problema a resolver, así como de la función objetivo. También se pueden definir diferentes criterios para seleccionar una nueva solución del entorno. Uno de los criterios más simples consiste en tomar la solución con mejor evaluación de la función objetivo, siempre que la nueva solución sea mejor que la actual. Este criterio, conocido como Greedy (glotón o voraz), permite ir mejorando la solución actual mientras se pueda. El algoritmo se detiene cuando la solución no puede ser mejorada. A la solución encontrada se le denomina óptimo local respecto al entorno definido. El óptimo local alcanzado no puede mejorarse mediante el movimiento definido. Sin embargo, el método empleado no permite garantizar, de ningún modo, que sea el óptimo global del problema. Más aún, dada la “miopía” de la búsqueda local, es de esperar que en problemas de

cierta dificultad, en general no lo sea. La figura 13 muestra el espacio de soluciones de un problema de maximización de dos dimensiones donde la altura del gráfico (el eje ) mide el valor de la función objetivo. Se



Fernando Sandoya, Ph.D.

ESPOL, 2015/ 41

Metaheurísticas y Redes Neuronales

considera un procedimiento de búsqueda local greedy iniciado a partir de una solución x 0 con valor 0.00001 y que realiza 8 movimientos de mejora hasta alcanzar la solución x 8  con valor 0.000015. La figura muestra cómo x8  es un óptimo local y cualquier movimiento que se le aplique proporcionará una solución con peor valor. Podemos ver cómo el óptimo global del problema, con un valor de 0.00002, no puede ser alcanzado desde x 8, a menos que permitamos realizar movimientos que empeoren el valor de las soluciones y sepamos dirigir correctamente la búsqueda ÓPTIMO GLOBAL





 (ÓPTIMO LOCAL)



 (VALOR INICIAL)

Figura 13. Óptimo local y global

Esta limitación de la estrategia greedy es el punto de partida de los procedimientos Metaheurísticos basados en búsqueda local: evitar el quedar atrapados en un óptimo local lejano del global. Para lo cual, como hemos visto, se hace preciso el utilizar movimientos que empeoren la función objetivo. Sin embargo esto plantea dos problemas. El primero es que al permitir movimientos de mejora y de no mejora, el procedimiento se puede ciclar, revisitando soluciones ya vistas, por lo que habría que introducir un mecanismo que lo impida. El segundo es que hay que establecer un criterio de parada ya que un procedimiento de dichas características podría iterar indefinidamente. Los procedimientos Metaheurísticos incorporan mecanismos sofisticados para solucionar eficientemente ambas cuestiones así como para tratar, en la medida de lo posible, de dirigir la búsqueda de forma inteligente. Pese a la miopía de los métodos de búsqueda local simples, suelen ser muy rápidos y proporcionan soluciones que, en promedio, están relativamente cerca del óptimo global del problema. Además, dichos métodos suelen ser el punto de partida en el diseño de algoritmos Metaheurísticos más complejos. En este apartado vamos a estudiar algunos métodos heurísticos de búsqueda local para el Problema del Agente Viajero.

4.1

Procedimientos de 2 intercambio

Este procedimiento está basado en la siguiente observación para grafos euclídeos. Si un ciclo Hamiltoniano se cruza a si mismo, puede ser fácilmente acortado, basta con eliminar las dos aristas que se cruzan y reconectar los dos caminos resultantes mediante aristas que no se corten. El ciclo final es más corto que el inicial.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 42

Metaheurísticas y Redes Neuronales

Un movimiento 2-opt  consiste en eliminar dos aristas y reconectar los dos caminos resultantes de una manera diferente para obtener un nuevo ciclo. Las figuras 14 y 15 ilustran este movimiento en el que las aristas (i,j) y (l,k) son reemplazadas por (l,j) y (i,k). Notar que sólo hay una manera de reconectar los dos caminos formando un único tour.

l

l

i

 j

i

 j



Figura 14. Solución original



Figura 15. Solución mejorada

El siguiente código recoge el algoritmo heurístico de mejora 2-óptimo. Consiste en examinar todos los vértices, realizando, en cada paso, el mejor movimiento 2-opt asociado a cada vértice. Algoritmo 2-óptimo Inicialización Considerar un ciclo Hamiltoniano inicial move = 1 Mientras (move = 1) move=0. Etiquetar todos los vértices como no explorados. Mientras (Queden vértices por explorar) Seleccionar un vértice i no explorado. Examinar todos los movimientos 2-opt que incluyan la arista de i a su sucesor en el ciclo. Si alguno de los movimientos examinados reduce la longitud del ciclo, realizar el mejor de todos y hacer move = 1. En otro caso etiquetar i como explorado.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 43

Metaheurísticas y Redes Neuronales

La variable move vale 0 si no se ha realizado ningún movimiento al examinar todos los vértices, y 1 en otro caso. El algoritmo finaliza cuando move=0, con lo que queda garantizado que no existe ningún movimiento 2-opt que pueda mejorar la solución. El orden en el que el algoritmo examina los nodos incide de manera notable en su funcionamiento. En una implementación sencilla podemos considerar el orden natural 1,2,.., . Sin embargo, es fácil comprobar que cuando se realiza un movimiento hay muchas posibilidades de encontrar movimientos de mejora asociados a los vértices que han intervenido en el movimiento recién realizado. Por ello, una implementación más eficiente consiste en considerar una lista de vértices candidatos a examinar. El orden inicial es el de los vértices en el ciclo comenzando por uno arbitrario y en cada iteración se examina el primero de la lista. Cada vez que se examina un vértice , éste se coloca al final de la lista y, los vértices involucrados en el movimiento (vértices ,  y  de la figura 15) se insertan en primer lugar.



    

Dado que el proceso de examinar todos los movimientos 2-opt  asociados a cada vértice es muy costoso computacionalmente, se pueden introducir las siguientes mejoras para acelerar el algoritmo:

 Exigir que al menos una de las dos aristas añadidas en cada movimiento, para formar la nueva solución, pertenezca al subgrafo candidato.  Observando el funcionamiento del algoritmo se puede ver que en las primeras iteraciones la función objetivo decrece substancialmente, mientras que en las últimas apenas se modifica. De hecho la última únicamente verifica que es un óptimo local al no realizar ningún movimiento. Por ello, si interrumpimos el algoritmo antes de su finalización, ahorraremos bastante tiempo y no perderemos mucha calidad. Es evidente que ambas mejoras reducen el tiempo de computación a expensas de perder la garantía de que la solución final es un óptimo local. Así pues, dependiendo del tamaño del ejemplo a resolver, así como de lo crítico que sea el tiempo de ejecución, se deben implementar o no. El comprobar si existe, o no, un movimiento 2-opt de mejora utiliza un tiempo de orden O(n 2), ya que hay que examinar todos los pares de aristas en el ciclo. Podemos encontrar clases de problemas para los que el tiempo de ejecución del algoritmo no está acotado polinómicamente. Respecto al estudio empírico sobre los ejemplos de la TSPLIB considerados, partiendo de la solución del algoritmo del Vecino más cercano, el promedio de desviación del óptimo es del 8.3%.

4.2

Procedimientos de k - intercambio

Para introducir mayor flexibilidad al modificar un ciclo Hamiltoniano, podemos considerar el dividirlo en k partes, en lugar de dos, y combinar los caminos resultantes de la mejor manera posible. Llamamos movimiento k-opt  a tal modificación. Es evidente que al aumentar k aumentará el tamaño del entorno y el número de posibilidades a examinar en el movimiento, tanto por las posibles combinaciones para eliminar las aristas del

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 44

Metaheurísticas y Redes Neuronales

ciclo, como por la reconstrucción posterior. El número de combinaciones para eliminar k aristas en un ciclo viene dado por el número   n  k  

Examinar todos los movimientos k-opt de una solución lleva un tiempo del orden de O(n k) por lo que, para valores altos de k, sólo es aplicable a ejemplos de tamaño pequeño. En este apartado vamos a estudiar el caso de k=3 y además impondremos ciertas restricciones para reducir el entorno y poder realizar los cálculos en un tiempo razonable. En un movimiento 3-opt, una vez eliminadas las tres aristas hay ocho maneras de conectar los tres caminos resultantes para formar un ciclo. Las figuras siguientes ilustran algunos de los ocho casos. La figura 16 muestra el ciclo inicial en el que se encuentran las aristas (a, b), (c, d) y (e, f) por las que se dividirá éste. La figura 17 utiliza la propia arista (e,f) para reconstruir el ciclo, por lo que, este caso equivale a realizar un movimiento 2-opt sobre las aristas (a,b) y (c,d). Análogamente podemos considerar los otros dos casos en los que se mantiene una de las tres aristas en el ciclo y se realiza un movimiento 2-opt sobre las restantes. Las figuras 18 y 19 muestran un movimiento 3- opt “puro” en el que desaparecen del ciclo las tres aristas seleccionadas.

e

e

a

a f 



 b

 b

c

c d

d

Figura 16. Ciclo inicial

Figura 17. Movimiento 2-opt

e

e

a

a f 

 b

f   b

c

c d

Figura 18. Movimiento 3-opt

d

Figura 19. Movimiento 3-opt

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 45

Metaheurísticas y Redes Neuronales

A diferencia de los movimientos 2-opt, el reconstruir el ciclo una vez eliminadas las tres aristas es muy costoso. Notar que la dirección en el ciclo puede cambiar en todos los caminos menos en el más largo por lo que hay que realizar varias actualizaciones. Además, el mero hecho de examinar todas las posibilidades representa un esfuerzo computacional enorme (más de 1 hora en los problemas considerados). Por ello, se consideran únicamente algunos de los movimientos 3-opt. En concreto se define para cada vértice i un conjunto de vértices N(i) de modo que al examinar los movimientos 3-opt asociados a una arista (i,j), únicamente se consideran aquellos en los que las otras dos aristas tengan al menos uno de los vértices en N(i). Una posibilidad para definir N(i) consiste en considerar los vértices adyacentes a i en el subgrafo candidato.  Algoritmo 3-óptimo restringido Inicialización Considerar un ciclo Hamiltoniano inicial Para cada vértice i definir un conjunto de vértices N(i) move = 1 Mientras (move = 1) move=0 Etiquetar todos los vértices como no explorados. Mientras (Queden vértices por explorar) Seleccionar un vértice i no explorado. Examinar todos los movimientos 3-opt que eliminen 3 aristas teniendo cada una, al menos un vértice en N(i). Si alguno de los movimientos examinados reduce la longitud del ciclo, realizar el mejor de todos y hacer move = 1. En otro caso etiquetar i como explorado. El promedio de las desviaciones al óptimo sobre el conjunto test considerado (TSPLIB) es de 3.8% con esta versión restringida, partiendo de la solución del Vecino más cercano, y de 3.9% partiendo de una solución al azar.

4.3

 Algoritmo de Lin y Kernighan

Como vimos en la introducción a los métodos de mejora (figura 13), el problema de los algoritmos de búsqueda local es que suelen quedarse atrapados en un óptimo local. Vimos que para alcanzar una solución mejor a partir de un óptimo local habría que comenzar por realizar movimientos que empeoren el valor de la solución, lo que conduciría a un esquema de

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 46

Metaheurísticas y Redes Neuronales

búsqueda mucho más complejo, al utilizar el algoritmo tanto movimientos de mejora como de no mejora. El algoritmo de Lin y Kernighan parte de este hecho y propone un movimiento compuesto, en donde cada una de las partes consta de un movimiento que no mejora necesariamente pero el movimiento compuesto sí es de mejora. De esta forma es como si se realizaran varios movimientos simples consecutivos en donde algunos empeoran y otros mejoran el valor de la solución, pero no se pierde el control sobre el proceso de búsqueda ya que el movimiento completo sí que mejora. Además, combina diferentes movimientos simples, lo cual es una estrategia que ha producido muy buenos resultados en los algoritmos de búsqueda local. En concreto la estrategia denominada “cadenas de eyección” se basa en encadenar movimientos

y ha dado muy buenos resultados en el contexto de la Búsqueda Tabú. Se pueden considerar muchas variantes para este algoritmo. En este apartado consideraremos una versión sencilla basada en realizar dos movimientos 2-opt seguidos de un movimiento de inserción. Ilustraremos el procedimiento mediante el ejemplo desarrollado en las figuras siguientes sobre un grafo de 12 vértices. Consideramos el ciclo Hamiltoniano inicial dado por el orden natural de los vértices y lo representamos tal y como aparece en la figura 20. 1

2

3

4

5

6

7

8

9

10

11

12

Figura 20 Paso 1: Realiza un movimiento 2-opt reemplazando las aristas (12,1) y (5,6) por (12,5) y (1,6). El resultado se muestra en la figura 21.

1

2

3

4

5

6

7

8

9

10

11

12

Figura 21

Paso 2: Realiza un movimiento 2-opt reemplazando las aristas (6,1) y (3,4) por (6,3) y (1,4). Ver figura 22.

1

2

3

4

5

6

7

8

9

10

11

12

Figura 22

Paso 3: Realiza un movimiento de inserción, insertando el vértice 9 entre el 1 y el 4 (figura 23).

1

2

3

4

5

6

7

8

9

10

11

12

Figura 23

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 47

Metaheurísticas y Redes Neuronales

El algoritmo funciona de igual modo que el 2-óptimo o el 3-óptimo: parte de un ciclo Hamiltoniano inicial y realiza movimientos de mejora hasta alcanzar un óptimo local.  Algoritmo de Lin y Kernighan Inicialización Considerar un ciclo Hamiltoniano inicial move = 1 Mientras (move = 1) move=0 Etiquetar todos los vértices como no explorados. Mientras( Queden vértices por explorar) Seleccionar un vértice i no explorado. Examinar todos los movimientos (2-opt, 2-opt, inserción) que incluyan la arista de i a su sucesor en el ciclo. Si alguno  de los movimientos examinados reduce la longitud del ciclo, realizar el mejor de todos y hacer move = 1. En otro caso etiquetar i como explorado. Dado el gran número de combinaciones posibles para escoger los movimientos, es evidente que una implementación eficiente del algoritmo tendrá que restringir el conjunto de movimientos a examinar en cada paso. De entre las numerosas variantes estudiadas para reducir los tiempos de computación del algoritmo y aumentar la eficiencia del proceso, destacamos las dos siguientes:

 Utilizar el subgrafo candidato en el que únicamente figuran las aristas relativas a los 6 vecinos más cercanos para cada vértice. Se admiten movimientos compuestos de hasta 15 movimientos simples todos del tipo 2-opt o inserción. Para el primer movimiento simple únicamente se examinan 3 candidatos.  El subgrafo candidato está formado por las aristas relativas a los 8 vecinos más cercanos. Se admiten hasta 15 movimientos simples del tipo 2-opt o inserción por cada movimiento completo. En los 3 primeros movimientos simples únicamente se examinan 2 aristas. Respecto al estudio computacional sobre los ejemplos de la TSPLIB considerados, la desviación del óptimo partiendo de la solución del heurístico del Vecino más cercano es de 1.9% para la primera variante y de 1.5% para la segunda. La siguiente tabla recoge el promedio de las desviaciones del óptimo y tiempos de ejecución de los 4 algoritmos de mejora considerados sobre los 30 ejemplos de la TSPLIB. Todos ellos toman como solución inicial la obtenida con el método del Veci no más cercano.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 48

Metaheurísticas y Redes Neuronales

Heurístico 2-óptimo 3-óptimo Lin y Kernighan 1 Lin y Kernighan 2

Desviación del Óptimo 8.3 % 3.8 % 1.9 % 1.5 %

T. Ejecución (pr2392) 0.25 85.1 27.7 74.3

Respecto a los tiempos de ejecución, podemos ver cómo el pasar de una exploración 2-opt a 3opt aumenta considerablemente el tiempo, incluso en la versión restringida planteada. También es de señalar cómo aumenta el tiempo, en casi un factor de 3, de una versión a otra del algoritmo de Lin y Kernighan, mientras que el porcentaje de desviación respecto del óptimo únicamente gana un 0.4 %. A la vista de los resultados, parece más interesante utilizar movimientos compuestos, que permiten controlar movimientos simples de no mejora, que utilizar movimientos k-óptimos con valores altos de k que, por su complicación, consumen mucho tiempo y, sin embargo, no llegan a tan buenos resultados.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 49

Metaheurísticas y Redes Neuronales

5.

Métodos Combinados

En los apartados anteriores hemos visto los métodos constructivos que obtienen una solución del problema y los métodos de mejora que, a partir de una solución inicial, tratan de obtener nuevas soluciones con mejor valor. Es evidente que ambos métodos pueden combinarse, tomando los segundos como solución inicial la obtenida con los primeros. En este apartado estudiaremos algunas variantes y mejoras sobre tal esquema. Como hemos visto, una de las limitaciones más importantes de los métodos heurísticos es la denominada miopía provocada por seleccionar, en cada paso, la mejor opción. Resulta muy ilustrativo que en los métodos de inserción, se obtengan mejores resultados al elegir al azar el vértice a insertar, que al tomar el elemento más cercano (11.1% frente a 20% de promedio de desviación del óptimo). Sin embargo, es evidente que el tomar una opción al azar como norma puede conducirnos a cualquier resultado, por lo que parece más adecuado recurrir a algún procedimiento sistemático que compendie la evaluación con el azar. Veamos dos de los más utilizados.

5.1

Procedimientos Aleatorizados

Una modificación en el algoritmo de construcción consiste en sustituir una elección greedy  por una elección al azar de entre un conjunto de buenos candidatos. Así, en cada paso del procedimiento, se evalúan todos los elementos que pueden ser añadidos y se selecciona un subconjunto con los mejores. La elección se realiza al azar sobre ese subconjunto de buenos candidatos. Existen varias maneras de establecer el subconjunto de mejores candidatos. En un problema de maximización, en donde cuanto mayor es la evaluación de una opción más “atractiva”

resulta, podemos destacar:

 Establecer un número fijo k para el subconjunto de mejores candidatos e incluir los k mejores.  Establecer un valor umbral e incluir en el conjunto todos los elementos cuya evaluación esté por encima de dicho valor. Incluir siempre el mejor de todos.  Establecer un porcentaje respecto del mejor, e incluir en el subconjunto todos aquellos elementos cuya evaluación difiere, de la del mejor en porcentaje, en una cantidad menor o igual que la establecida. En todos los casos la elección final se realiza al azar de entre los preseleccionados. Una estrategia alternativa a la anterior consiste en considerar las evaluaciones como pesos y utilizar un método probabilístico para seleccionar una opción. Así, si v1, v2,…vk son los posibles elementos a añadir en un paso del algoritmo, se calculan sus evaluaciones e 1, e 2,…, ek, y se les asigna un intervalo del siguiente modo: Elemento v1 v2

Evaluación e1 e2

Intervalo [0, e1[ [e1, e1 +e2[ Fernando Sandoya, Ph.D.

ESPOL, 2015/ 50

Metaheurísticas y Redes Neuronales



vk





ek

 k 1 k    ei , ei   i 1 i 1 



Se genera un número a al azar entre 0 y

e

i

, y se selecciona el elemento correspondiente al

i 1

intervalo que contiene a a. Al algoritmo constructivo modificado, tanto con la opción primera como con la segunda, lo llamaremos algoritmo constructivo aleatorizado. Este algoritmo puede que produzca una solución de peor calidad que la del algoritmo original. Sin embargo, dado que el proceso no es completamente determinista, cada vez que lo realicemos sobre un mismo ejemplo obtendremos resultados diferentes. Esto permite definir un proceso iterativo consistente en ejecutar un número prefijado de veces ( MAX_ITER) el algoritmo y quedarnos con la mejor de las soluciones obtenidas. Obviamente, cada una de dichas soluciones puede mejorarse con un algoritmo de búsqueda local. El siguiente procedimiento incorpora el algoritmo de mejora a dicho esquema.  Algoritmo combinado aleatorizado Inicialización Obtener una solución con el algoritmo constructivo aleatorizado. Sea c* el costo de dicha solución. Hacer i =0 Mientras ( i < MAX_ITER) Obtener una solución x(i) con el algoritmo constructivo aleatorizado.  Aplicar el algoritmo de búsqueda local a x(i). Sea x *(i) la solución obtenida y S *(i) su valor. Si ( S*(i) mejora a c*) Hacer c* = S *(i) y guardar la solución actual i = i +1 En cada iteración el algoritmo construye una solución (fase 1) y después trata de mejorarla (fase 2). Así, en la iteración i , el algoritmo construye la solución  x(i)  con valor S(i) y posteriormente la mejora obteniendo x*(i) con valor S*(i). Notar que x*(i) puede ser igual a x(i) si el algoritmo de la segunda fase no encuentra ningún movimiento que mejore la solución. Después de un determinado número de iteraciones es posible estimar el porcentaje de mejora obtenido por el algoritmo de la fase 2 y utilizar esta información para aumentar la eficiencia del procedimiento. En concreto, al construir una solución se examina su valor y se puede considerar que la fase 2 la mejoraría en un porcentaje similar al observado en promedio. Si el valor resultante queda alejado del valor de la mejor solución encontrada hasta el momento, podemos descartar la solución actual y no realizar la fase 2 del algoritmo, con el consiguiente ahorro computacional.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 51

Metaheurísticas Metaheurísticas y Redes Neuronales

Dadas las numerosas variantes posibles sobre el esquema propuesto, no las incluiremos en la comparativa realizada sobre los 30 ejemplos ejemplos de la TSPLIB. Únicamente citar que en general general los resultados son de mejor calidad que los obtenidos por el heurístico de Lin y Kernighan (alrededor de un 0.5 %) aunque a expensas de emplear tiempos de computación bastante mayores (del orden de algunos minutos). Dado el interés por resolver problemas enteros en general, y en particular el TSP, se han propuesto numerosas mejoras y nuevas estrategias sobre el esquema anterior. Una de las más utilizadas es la denominada técnica de Multi-Arranque que abordamos en la próxima sección.

5.2

Métodos Multi - Arranque

Los métodos Multi-Start (también llamados Re-Start) generalizan generalizan el esquema anterior. Tienen dos fases: la primera en la que se genera una solución y la segunda en la que la solución es típicamente, pero no necesariamente, mejorada. Cada iteración global produce una solución, usualmente un óptimo local, y la mejor de todas es la salida del algoritmo.  Algoritmo Multi-Arranque Mientras (Condición de parada) Fase de Generación Construir una solución. Fase de Búsqueda Aplicar un método  método  de búsqueda para mejorar la solución construida Actualización Si la solución obtenida mejora a la mejor almacenada, actualizarla.

Dada su sencillez de aplicación, estos métodos han sido muy utilizados para resolver gran cantidad de problemas. En el contexto de la programación no lineal sin restricciones, podemos podemos encontrar numerosos trabajos tanto teóricos como aplicados. Rinnoy Kan y Timmer (1989) estudian la generación de soluciones aleatorias (métodos Monte Carlo) y condiciones de convergencia. Las primeras primeras aplicaciones en el ámbito de la optimización combinatoria consistían en métodos sencillos de construcción, completa o parcialmente aleatorios, y su posterior mejora con un método de búsqueda búsqueda local. Sin embargo el mismo esquema permite permite sofisticar el procedimiento basándolo en unas construcciones y/o mejoras más complejas. Numerosas referencias y aplicaciones se pueden encontrar en Martí (2000). Uno de los artículos que contiene las ideas en que se basa el método Tabú Search (Glover, 1977) también incluye aplicaciones de estas ideas para los métodos de multi-start. Básicamente se trata de almacenar la información relativa a soluciones ya generadas y utilizarla para la construcción de nuevas soluciones. soluciones. Las estructuras de memoria reciente y frecuente se introducen en en este contexto. Diferentes aplicaciones se pueden encontrar en Rochat y Taillard (1995) y Lokketangen y Glover (1996).

Fernando Sandoya, Ph.D.

Metaheurísticas Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 52

Utilizando como procedimiento de mejora un algoritmo genético, Ulder y otros (1990) proponen un método para para obtener buenas soluciones al problema del del agente viajero. Los autores muestran cómo el uso de las técnicas de re-starting aumenta la eficiencia del algoritmo comparándolo con otras versiones v ersiones de heurísticos genéticos sin re-starting. Un problema abierto actualmente para diseñar un buen procedimiento de búsqueda basada en multi- arranque es si es preferible implementar un procedimiento de mejora sencillo que permita realizar un gran número de iteraciones globales o, alternativamente, aplicar una rutina más compleja compleja que que mejore mejore significativamente unas pocas soluciones soluciones generadas. generadas. Un procedimiento sencillo depende fuertemente de la solución inicial pero un método más elaborado consume mucho más tiempo de computación y, por tanto, puede ser aplicado pocas veces, reduciendo el muestreo del espacio de soluciones. Una de las variantes más populares de estos métodos se denomina GRASP (Feo y Resende, 1995) y está obteniendo resultados excelentes en la resolución de numerosos problemas combinatorios. La próxima sección describe describe en detalle estos métodos.

Fernando Sandoya, Ph.D.

Metaheurísticas Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 53

Método GRASP (Greedy Randomized Adaptive Search Procedures) 6.

Los métodos GRASP fueron desarrollados al final de la década de los 80 con el objetivo inicial de resolver problemas de cubrimientos cubrimientos de conjuntos (Feo y Resende, Resende, 1989). El término GRASP fue introducido por Feo y Resende (1995) como una nueva técnica metaheurística de propósito general. GRASP es un procedimiento de multi-arranque en donde cada paso consiste en una fase de construcción y una de mejora. En la fase de construcción se aplica un procedimiento heurístico constructivo para obtener una buena buena solución inicial. Esta solución se mejora en la segunda fase mediante mediante un algoritmo de búsqueda local. La mejor de todas las soluciones examinadas se guarda como resultado final. La palabra GRASP proviene de las siglas de Greedy Randomized Adaptive Search Procedures que en castellano sería algo así como: Procedimientos de Búsqueda basados en funciones “Greedy” Aleatorizadas Adaptativas (que se adaptan).

Veamos los elementos de este

procedimiento. En la fase de construcción se construcción se construye iterativamente una solución posible, considerando un elemento en cada paso. En cada iteración la elección del próximo elemento para ser ser añadido a la solución parcial viene determinada por una función greedy. greedy. Esta función mide el beneficio de añadir cada uno de los elementos según la función objetivo y elegir elegir la mejor. Notar que esta medida es miope  miope  en el sentido que no tiene en cuenta qué ocurrirá en iteraciones sucesivas al realizar una elección, sino únicamente en esta iteración. Se dice que el heurístico greedy se adapta  adapta  porque en cada iteración se actualizan los beneficios obtenidos al añadir el elemento seleccionado a la solución parcial. Es decir, la evaluación que se tenga de añadir un determinado elemento a la solución en la iteración j, no coincidirá necesariamente con la que se tenga en la iteración j+1. El heurístico es aleatorizado porque aleatorizado porque no selecciona el mejor candidato según la función greedy adaptada sino que, con el objeto de diversificar y no repetir soluciones en dos construcciones diferentes, se construye una lista con los mejores candidatos de entre los que se toma uno al azar. Al igual que ocurre en muchos métodos, las soluciones generadas por la fase de construcción de GRASP no suelen ser óptimos locales. Dado que la fase inicial no garantiza la optimalidad local respecto a la estructura de entorno en la que se esté trabajando (notar que hay selecciones aleatorias), se aplica un procedimiento de búsqueda local como Postprocesamiento para mejorar la solución obtenida En la fase de mejora se mejora se suele emplear un procedimiento de intercambio simple con el objeto de no emplear mucho tiempo en esta mejora. Notar que GRASP se basa en realizar múltiples iteraciones y quedarse con la mejor, por lo que no es especialmente beneficioso para el método el detenerse demasiado en mejorar una solución dada.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 54

Metaheurísticas y Redes Neuronales

El siguiente esquema muestra el funcionamiento global del algoritmo:  Algoritmo GRASP Mientras (Condición de parada) Fase Constructiva  Seleccionar una lista de elementos candidatos.  Considerar una Lista Restringida de los mejores Candidatos.  Seleccionar un elemento aleatoriamente de la Lista Restringida. Fase de Mejora  Realizar un proceso de búsqueda local a partir de la solución construida hasta que no se pueda mejorar más.  Actualización  Si la solución obtenida mejora a la mejor almacenada, actualizarla.

El realizar muchas iteraciones GRASP es una forma de realizar un muestreo del espacio de soluciones. Basándonos en las observaciones empíricas, se ve que la distribución de la muestra generalmente tiene un valor en promedio que es inferior al obtenido por un procedimiento determinista, sin embargo, la mejor de las soluciones encontradas generalmente supera a la del procedimiento determinista con una alta probabilidad. Las implementaciones GRASP generalmente son robustas en el sentido de que es difícil el encontrar ejemplos patológicos en donde el método funcione arbitrariamente mal. Algunas de las sugerencias de los autores para mejorar el procedimiento son:

 Se puede incluir una fase previa a la de construcción: una fase determinista con el objetivo de ahorrar esfuerzo a la fase siguiente.  Si se conoce que ciertas subestructuras forman parte de una solución óptima, éstas pueden ser el punto de partida de la fase constructiva. Tal y como señalan Feo y Resende una de las características más relevantes de GRASP es su sencillez y facilidad de implementación. Basta con fijar el tamaño de la lista restringida de candidatos y el número de iteraciones para determinar completamente el procedimiento. De esta forma se pueden concentrar los esfuerzos en diseñar estructuras de datos para optimizar la eficiencia del código y proporcionar una gran rapidez al algoritmo, dado que éste es uno de los objetivos principales del método. El enorme éxito de este método se puede constatar en la gran cantidad de aplicaciones que han aparecido en los últimos años. Festa y Resende (2001) comentan cerca de 200 trabajos en los que se aplica o desarrolla GRASP. Por último, hay que resaltar que los algoritmos basados en GRASP pueden ser mejorados grandemente si se los combina con procedimientos provenientes de otras Metaheurísticas, como Rencadenamiento de trayectorias (Path Relinking) o Búsqueda en vecindades variables (Variable neighborhood search)

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 55

Metaheurísticas y Redes Neuronales

6.1

Rencadenamiento de Trayectorias

El término Rencadenamiento de Trayectorias se refiere a una técnica de intensificación de la búsqueda en regiones atractivas del espacio de soluciones, que fue originalmente propuesta por Glover en el contexto de la metaheurística de búsqueda TABU. La técnica consiste en utilizar una población de buenas soluciones que han sido creadas previamente con algún método, por ejemplo con GRASP, para luego intentar crear mejores soluciones. El objetivo del Rencadenamiento de trayectorias no es construir una solución a partir de otras, sino más bien crear un conjunto de soluciones, vecinas unas de otras, que conecten dos soluciones de buena calidad, creando así un camino o una trayectoria entre estas dos soluciones. Usualmente cada una de las soluciones del camino formado se mejora con un procedimiento de búsqueda local.

 

Más específicamente, dada una solución denominada solución inicial, , y una solución denominada solución guía, , se denomina un camino de a  a la sucesión de soluciones: , donde   es obtenida al introducir en   un atributo que reduce la distancia de   hasta la solución guía . Es decir, en el camino originado, cada nuevo elemento que se genera en la sucesión se parece más a la solución guía.

          0, 1, 2, … ,  1,    1

Algunas estrategias que se pueden considerar para el desarrollo de la técnica son:



Forward: La peor entre las soluciones es la solución guía;



 y

Backward: La mejor entre las soluciones otra es la solución guía;



   

 se pone como el origen y la otra

y

 se pone como el origen y la

Backward y Forward: Se exploran las dos trayectorias diferentes, de de

   a

, es decir intercambiando sus roles;

  a

y

En algunas implementaciones se ha considerado explorar el entorno de las soluciones intermedias para dar más posibilidad al descubrimiento de buenas soluciones. Actualmente se propone el uso de Rencadenamiento de trayectorias en el contexto de GRASP. Así, una vez generada una colección de soluciones mediante las fases de construcción y mejora de GRASP, se seleccionan parejas (o subconjuntos) de soluciones para unirlas mediante este procedimiento. A partir de una solución se realiza una búsqueda local para llegar a la otra (o a una combinación de las otras en el caso de subconjuntos). La hibridación de GRASP y Rencadenamiento de trayectorias se muestra muy prometedora, por lo que ha despertado gran interés entre la comunidad de investigación de operaciones y de ciencias de la computación, una muestra de ello es que algunos autores la han usado para tratar con éxito los problemas combinatorios.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 56

Metaheurísticas y Redes Neuronales

6.2

Búsqueda en Vecindades Variables

La Búsqueda en Vecindades Variables (Variable Neighborhood Search, VNS por sus siglas) es una metaheurística de desarrollo reciente, propuesta por Hansen y Madlenovic para resolver problemas de optimización combinatoria, cuya idea básica es cambiar sistemáticamente la vecindad, por medio de un procedimiento aleatorio o determinístico, dentro de un procedimiento de búsqueda local. Este cambio de vecindad puede favorecer enormemente la eficiencia de los algoritmos pues diversifica la búsqueda y así la búsqueda no queda viciada por algún sesgo en el tipo de vecindad seleccionada, por lo que VNS constituye una herramienta simple y poderosa para mejorar la eficiencia de los algoritmos de búsqueda. La idea original fue considerar distintas estructuras de entornos y cambiarlas sistemáticamente para escapar de los mínimos locales. El VNS básico obtiene una solución del entorno de la solución actual, ejecuta una búsqueda monótona local desde ella hasta alcanzar un óptimo local, que remplaza a la solución actual si ha habido una mejora y modifica la estructura de entorno en caso contrario. Una variante de esta estrategia básica es la búsqueda descendente por entornos variables (VND), que aplica una búsqueda monótona por entornos cambiando de forma sistemática la estructura de entornos cada vez que se alcanza un mínimo local. La ventaja de utilizar varias estructuras de entornos, como se plantea en VNS, radica en el hecho de que un óptimo local para un determinado entorno, no tiene por qué serlo para otro, por lo que la búsqueda podrá continuar hasta obtener una solución que sea un buen óptimo local para el problema. VNS ha sido hibridizado con éxito con otras metaheurísticas como Búsqueda Tabú o Scatter Search, y en particular con GRASP en su fase de búsqueda local. La filosofía del procedimiento VNS es la siguiente: se empieza representando por   al conjunto de estructuras de vecindades preseleccionadas, de tal manera que   representa el conjunto de soluciones, vecinas de , en la vecindad de . Estas vecindades   pueden ser inducidas a partir de una o más métricas introducidas en el espacio de soluciones considerado. Entonces la VNS se basa en tres principios generales:

,   1, 2, …,  ∗ 1. Si



  é

  es un óptimo local con respecto a una estructura de vecindad, no tiene

necesariamente que serlo para otra estructura de vecindad diferente.

2. Un óptimo global es un óptimo local respecto a todas las estructuras de vecindad. 3. En muchos problemas combinatorios, los óptimos locales respecto a una o varias estructuras de vecindad están relativamente cerca unos de otros. Con VNS se deben tener en cuenta estos tres principios a la hora de diseñar un algoritmo, pudiendo efectuar los cambios de vecindad de manera determinista o estocástica.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 57

Metaheurísticas y Redes Neuronales

6.3

Resolución de un caso: implementación GRASP en FS-scheduling:

Se considera el problema de permutación de Flow Shop Scheduling con el objetivo de minimizar el Makespan. Se enfoca la solución a través de un algoritmo basado en GRASP.



1. FORMULACIÓN DEL PROBLEMA DE FLOW SHOP SCHEDULING .- El problema de Flow



Shop scheduling consiste en secuenciar “ ” trabajos con los tiempos de procesamiento dados en “ ” máquinas. La secuencia de procesamiento  (la ruta de producción) de un

trabajo en todas las máquinas es idéntica y unidireccional. FUNCIÓN OBJETIVO El objetivo de este problema es minimizar el Makespan (el tiempo total de ejecución de todos los trabajos). Minimizar { Donde





}.

 es el tiempo de procesamiento del trabajo i en la máquina j.

n: el número total de trabajos a ser secuenciados . m: el total de máquinas en el Flow Shop.

[,]  [,] Σ

: El tiempo de completación del trabajo en posición i en la máquina j.

 :

=makespan

:Es el conjunto ordenado de trabajos ya secuenciados, secuencia parcial.

SUPOSICIONES.- En el Flow Shop hacemos las siguientes suposiciones: (1) Un conjunto de “n” trabajos con múltiples operaciones están disponibles para procesar en el tiempo. (2) Cada trabajo requiere “m” operaciones y cada operación requiere diferentes máquinas. (3) Tiempos de Setup para los trabajos son independientes de la secuencia de trabajos y pueden ser concluidos en el tiempo de procesamiento. (4) Descripción de los trabajos son conocidos de antemano. (5) Una vez que el procesamiento inicia en un trabajo, se procede a completarlo sin interrupción (sin derechos preferentes). DESCRIPCIÓN del GRASP El algoritmo Greddy resuelve problemas haciendo la elección que parece la mejor en ese momento. Un algoritmo Greddy exhibe dos propiedades denominadas: PROPIEDAD de elección voraz y estructura suboptimal. Sea: Z: FUNCIÓN OBJETIVO

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 58

Metaheurísticas y Redes Neuronales

  [] ⫪ 

: PARÁMETRO VORAZ

RCL: Lista de candidatos restringida.  : Rango de elementos. : Función de sesgo.

 : Probabilidad de seleccionar un trabajo.

Primero inicializamos el tiempo de terminación de un trabajo en una máquina igual a cero. Esto indica el tiempo de disponibilidad de un trabajo en el Flow Shop. La función objetivo a considerar es la minimización del Makespan. Determinamos un parámetro voraz ” ” determinado experimentalmente y su valor varía de 0 a 1. En este paper se toma . De todos los candidatos, los mejores candidatos son puestos en la lista de candidatos restringida (RCL) de acuerdo al rango y ancho:

  0,5

RANGO= {máximo tiempo de completar de un trabajo  – mínimo tiempo de completar de un trabajo) ANCHO= Rango x



RCL= {mínimo, mínimo+ ancho} ESTRUCTURA GENERAL DEL GRASP. En esta fase una solución factible es construida iterativamente un ELEMENTO a la vez. En cada iteración de construcción, la elección del próximo elemento a ser añadido es determinada ordenando todos los elementos candidatos en una lista de candidatos con respecto a la función Greddy. Un parámetro Greddy   es determinado experimentalmente y su rango es en [0,1]. La heurística es adaptativa por cuanto los beneficios asociados con cada elemento son actualizados en cada iteración para reflejar los cambios provocados por la selección del elemento previo. El componente probabilístico de GRASP es caracterizado por aleatorizar la elección el MEJOR candidato. La lista de los mejores candidatos se denomina LISTA de CANDIDATOS RESTRINGIDA (RCL).



El pseudocódigo describe la fase básica de construcción del algoritmo GRASP. PROCEDIMIENTO DE CONSTRUCCIÓN (g(.), 1. x=0

  ,  

2. Inicializar la lista de candidatos C.



3. Mientras c 0 hacer. 4. 5. 6.

  ∈    ∈     ∈ / ≤ [    ∈  =min {g(T)/

=máx { g(T)/

};

};

 g(s)

7. Seleccionar aleatoriamente s

]]}

;

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 59

Metaheurísticas y Redes Neuronales

8.

Χ  Χ ⋃

9. Actualizar la lista de candidatos C; 10. End Mientras 11. End Construcción



El pseudocódigo muestra que  controla la cantidad de voracidad y aleatoriedad en el algoritmo. FUNCIONES DE SESGO Un GRASP estándar usa una función de sesgo aleatoria. Otras funciones de sesgo tales como sesgo lineal, sesgo logarítmico, sesgo exponencial y sesgo polinomial pueden ser usados en el algoritmo de GRASP. Sin embargo, cualquier distribución de probabilidad puede ser usada para sesgar la selección hacia ciertos candidatos en particular. En este paper hemos considerado sesgo aleatorio para la ejecución de GRASP. ESTRUCTURA DEL ALGORITMO GRASP

Σ

Paso 1: Consideramos un conjunto vacío para inicialización .

Σ

Paso 2: Averiguar las operaciones de .

Paso 3: Calcule la función objetivo (Makespan) de las operaciones.. Paso 4: Averiguar el valor mínimo y máximo de la función objetivo. Paso 5: Averiguar el rango, es decir,(MAX-MIN)



Paso 6: Elegir el parámetro  (valor glotón) (0.2, 0.4, 0.5,...)

 

Paso 7: Calcular el ancho (Rango x ) Paso 8: Elegir candidatos para formar RCL, si Z (

Σ ≤ [min(ZΣ)ANCHO] )

Paso 9: Defina rango”r” para cada operación en RCL.

Paso 10: Calcular RANGO para función de sesgo aleatorio. Paso 11: Muestrear y actualizar la solución. FASE DE BÚSQUEDA LOCAL Las soluciones generadas en la fase de construcción GRASP no garantizan ser el óptimo global con respecto a una definición simple de vecindad. Así siempre es beneficioso para aplicar búsqueda local para mejorar cada construcción. Un algoritmo de búsqueda local trabaja en una función iterativa por reemplazar sucesivamente la solución actual por una mejor solución en la vecindad de la solución actual. El pseudocódigo siguiente describe un procedimiento de búsqueda local básico: PROCEDIMIENTO LOCAL (f(.),h(.),x)

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 60

Metaheurísticas y Redes Neuronales

1. H={ y pertenece a n(x)/f(y)0 hacer



3. Seleccionar n  H; 4. H={y

∈ 

 /f(y) 1, Fernando Sandoya, Ph.D.

ESPOL, 2015/ 92

Metaheurísticas y Redes Neuronales

 , , … ,   ∗  0,∗  1

La solución del problema es , pero aunque es aparentemente simple es extremadamente difícil encontrarla por medio de algún método numeric (con DE no es muy complicado).

10.2

Optimización combinatoria DE basada en permutaciones.

Un problema típico de optimización combinatorio DE basado en permutaciones es el Job Shop Problem. El objetivo es hallar la mejor secuencia que garantice el makespan óptimo. Como se puede ver, este problema es muy diferente que el problema en el espacio contínuo ya que estamos interesados en una secuencia de los trabajos, que tiene una naturaleza de permutación. Así, si  es el tiempo de operación del trabajo   en la máquina , y   es el instante de finalización de la ejecución del trabajo  en la máquina , entonces el problema es:

, min   1,. .,  {,} ,  {−,, ,−},

  



  ,

10.3  Adecuación de la DE como un optimizador combinatorio. En los últimos años se ha adaptado bastante bien la DE para resolver problemas combinatorios, hacienda esta técnica muy competitive frente a otras Metaheurísticas. Algunas de estas adaptaciones incluyen: 1. 2. 3. 4. 5.

Enfoque de transformación Forward/Backward; Enfoque de indexación de la posición relativa; Enfoque de la posición del valor más pequeño; Enfoque Discreto/binario; y, Enfoque de manipulación de conjunto discrete.

En este texto abordaremos el enfoque de indexación de la indexación de la posición relativa, que es más simple de implementar computacionalmente, y que ha dado Buenos reusltoados en algunos problemas de optimización combinatorial.

10.4

DE canónica para problemas de optimización contínuos.

ℐ           0 <  ≤ 1.2              ,     0 <  <  1 

  

Los parámetros usados en DE son = costo o valor de la function objetivo,  = dimension del problema,   = tamaño de la población,   = población de -vectores, =número de generación, = máximo número de generación, = vector compuesto de  parámetros, = vector de pruebas compuesto de  parámetros, =factor de cruce. Otros son: =factor de escala , = cota superior, = cota inferior, y =vectores de pruebas, = vector con mínimo costo en la generación

,

= i-ésimo vector en la generación



,

= i-ésimo vector regulador (buffer) en la generación , = vector seleccionado aleatoriamente, =entero aleatorio . En la formulación = número de ciudades.



Fernando Sandoya, Ph.D.

ESPOL, 2015/ 93

Metaheurísticas y Redes Neuronales



La evolución diferencial DE es un método de bpusqueda paralela directa, que utiliza vectores de parámetros:

 ,  0,1,2,… , 1





Como una población para cada generación . El tamaño de la población, , no cambia durante el proceso de minimización. La población inicial es generada aleatoriamente asumiendo una distribución de probabilidad uniforme para todas las decisions aleatorias si no hay información inteligente inicial para el sistema. La idea crucial detrás de DE es un Nuevo esquema para la generación de los vectores de parámetros de prueba. DE genera nuevos vectores de parámetros al añadir el vector de diferencias ponderado entre dos miembros de la población a un tercer miembro. Si el vector resultante produce un valor objetivo menor que un miembro predeterminado de la población, el nuevo vector generado reemplaza al vector con el cual fue comparado. El vector de comparación puede, pero no necesita ser parte del

 

proceso de generación mencionado. Adicionalmente el mejor vector de parámetros , es evaluado para cada generación  con el fin de realizar un seguimiento del progreso que se ha logrado durante el proceso de minimización. La extracción de información de distancia y dirección desde la población para generar desviaciones aleatorias resulta en un esquema adaptativo con excelentes propiedades de convergencia.



Las descripciones para las primeras dos variants mas prometedoras de DE, que se conocen como DE2 y DE3, son las siguientes: ESQUEMA DE2 Inicialización: Como con todos los algoritmos evolutivos, DE trabaja con una población de soluciones, no con una solución única para el problema de optimización. La población  de la generación  contiene  vectores solución llamados individuos de la población y cada vector representa una solución potencial para el problema de optimización:



    ,  1, 2,… ,;  1,… ,     , ,   1,2,… ,;   1, …,

Adicionalmente, cada vector contiene  parámetros:

En orden a establecer un punto de inicio para la búsqueda del óptimo, la población deberá ser inicializada. A menudo no hay más conocimiento acerca de la ubicación del óptimo global que las cotas de las variables del problema. En ese caso, una manera natural para inicializar la

   ,     [0,1]   ,∀ ∈ [1,]; ∀ ∈ [1,] [0,1]    

población   (población inicial) es sembrarla con valores aleatorios dentro de las restricciones de acotamiento dadas:

Donde

 representa un número aleatorio uniformemente distribuido en

restricciones de acotamiento superior e inferior son

 y

, respectivamente:

[0,1]

. Las

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 94

Metaheurísticas y Redes Neuronales

 ≤  ≤ , ∀ ∈ [1, ] Para este y otros esquemas, tres operadores son cruciales: mutación, cruce y selección. MUTACIÓN:  La primera variante de DE trabaja de la siguiente manera: para cada vector

,   0,1,2, … , 1  + ,   ,   , ,  ∈ [1,]; 1∈ [≠1,2],≠3> 0≠  1 2 3 ∈ [1,] 1,2 3  1,  2 3  [0,1]    , un vector de prueba  es generado de acuerdo a:

Donde generados, con tal que

 y los enteros .

,

 y

 son aleatoriamente

Los tres indices seleccionados aleatoriamente, y   se refieren a tres vectores seleccionados aleatoriamente de la población, los cuales on mutuamente diferentes y también diferentes de el índice que se está corriendo . Nuevos valores aleatorios  y  se asignan para cada valor del índice   (para cada vector). Un Nuevo valor para el número aleatorio  es asignado para cada valor de índice  (para cada vector parámetro).  es un factor constant y real, que controla la aplificación de la variación diferencial. El siguiente gráfico ilustra los diferentes vectores de DE2 para una function de dos variables.

: NP Vectores parámetros de la generación G. : Nuevo vector parámetro generado

    

 

 

Mínimo

 











   

   



 







 





       

  



 





CRUCE: Para incrementar la diversidad de los vectores parámetros se construye el vector:

 〈 〈  para    〉 ,  1〉 , … ,〈   1〉        , , … , ;     Si no Fernando Sandoya, Ph.D.

ESPOL, 2015/ 95

Metaheurísticas y Redes Neuronales

〈⋅〉 

 

Donde  representa la function modulo con modulo . Esto hace que una secuencia de los elementos de   son idénticos a los elementos de , mientras los otros elementos de

  [ ] [ ] 0 , 1  0 ,  1       ∈ [0.1]     7   2   3             23  4 Vect o r parámet r o con⏟ los parámetros



toman los valores originales de . Escoger un subgrupo de parámetros para mutación es similar al proceso de cruce de los algoritmos genéticos. El índice inicial   es escogido aleatoriamente en , mientras que   es escogido en   con probabilidad , donde   es la probabilidad de cruce, que es una variable de control en el esquema DE2. La determinación aleatoria de y  se hace para cada vector de prueba . Esta idea es representada en la siguiente figura con ,  y .

 j=0

j=0

j=0

1

1

1

2

2

2

3

3

3

4

4

4

5

5

5

6

6

6

,=,,…,−

    

Para decidir si el nuevo vector  pasará a ser un miembro de la población de la generación

1+  

, se lo compara con

,

. Si el vector  da un menor valor de la function objetivo que en

 es igual a , sino se retiene el viejo valor de



.

ESQUEMA DE3: Básicamente, el esquema DE3 trabaja de la misma manera que DE2, pero genera el vector introduciendo una nueva variable de control :

           La idea detrás de



  es proveer un mecanismo para aumentar el character glotón del



esquema incorporando el major vector encontrado . La construcción de  y  al igual que el proceso de decision es idéntico a DE2. La siguiente figura ilustra el proceso de genración de vectores de la ecuación anterior.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 96

Metaheurísticas y Redes Neuronales

: NP Vectores parámetros de la generación G. : Nuevo vector parámetro generado v

Mínimo

   

 

 

 











 



     

 











       







 







También existen otras estrategias DE para generar el vector , cuya efectividad dpende del tipo de problema para el cual son aplicadas. Estas estrategias pueden variar basadas en el vector a ser perturbado, número de vectores diferencia consideradospara la perturbación y finalmente del tipo de cruce usado.

10.5

DE para problemas de optimización combinatorios basados en permutaciones.

La DE canónica no puede ser aplicada a problemas permutativos o discretos, a menos que sea modificada. El mecanismo interno de cruce y mutación cambia invariablemente en cada número real, esto en si mismo conducirá a soluciones infactibles. La solución es una transformación o bien en la población o en el mecanismo interno de mutación y cruce. A lgunos invstigadores han decidido no modificar las estrategias de operación de DE, pero si manipular la población de tal manera que permita a la DE operar sin obstáculos. Ya que la solución para una población es permutativa, son necesarias rutinas de conversion adecuadas para cambiar la solución desde los enteros a los reales y luego regresar a los enteros después del cruce. Algunas áreas de aplicación donde puede aplicarse la DE para problemas de optimización combinatoria basadas en permutaciones son las siguientes:

      

Scheduling: Flow Shop, Job Shop, Open Shop, etc. Knapsack Problem. Problema de asignamiento lineal (LAP) Problema de asignamiento cuadrático (QAP) Problema del Agente Viajero (TSP) Problema de ruteo de vehículos (VRP) Modelo pick-and-place dinámico.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 97

Metaheurísticas y Redes Neuronales

10.6 E nfoque de la indexación de la pos ición relativa o el enfoque Knapsack. El enfoque de la indexación de la posición relativa también es conocido como representación basada en el orden, y aunque puede que no sea el mejor método para resolver los problemas combinatorios, se muestra como una herramienta muy versátil que se puede adaptar para encontrar resultados razonables a un amplio rango de problemas de optimización combinatoria, y lo más útil es que requiere de muy poco código computacional, y en particular DE está implementada en Mathematica. Para explicar el enfoque establecemos lo siguiente: Tenemos un grupo de vectores denominados cromosomas, constituidos por genes de valores contínuos, ellos se aparean de acuerdo a una probabilidad de cruce, mutan por diferencias con otros pares y compiten con un cromosoma padre para ver quien pasa a la siguiente generación. En Mathematica estas opciones se manipulan por medio de los comandos CrossProbability, ScalingFactor y SearchPoints. Cada variable corresponde a un gen en cada cromosoma. CrossProbability es el parámetro CR, SearchPoints es NP, es decir el tamaño de la población o número de vectores cromosoma, y ScalingFactor es F. Los valores por defecto de estos parámetros son los que se recomienda en el artículo original de DE. La función de Mathematica que invoca a DE es NMinimize, en la cual se debe establecer como Method  DifferentialEvolution. También se debe establecer la opción MaxIterations, que corresponde al número de generaciones. Es decir, se invoca a DE en Mathematica con las siguientes instrucciones:



NMinimize[objetivo, restricciones, variables, Method

 →

{“DifferentialEvolution”, opciones método}, otras opc.]

Los valores que están por defecto para las opciones de DE en Mathematica se pueden consultar con la opción: Options[NMinimize`DifferentialEvolution]

Estas opciones que están establecidas por defecto (pero pueden ser cambiadas) son: {"CrossProbability" → 1/2, "InitialPoints" → Automatic, "PenaltyFunction" → Automatic, "PostProcess" → Automatic, "RandomSeed" → 0, "ScalingFactor" → 3/5, "SearchPoints" → Automatic, "Tolerance" → 0.001}

Un parámetro importante es el del número de iteraciones (MaxIterations), que está puesto por defecto en 100, lo cual podría ser muy poco en la resolución de problemas de optimización, si uno desea mejoras más grandes en la función objetivo este parámetro debe ser puesto en 1,000 o más. Una parte importante que se debe definir es el campo de restricciones, en el cual se debe especificar, entre otras, la restricción de integralidad de las variables. Para esto hay al menos dos enfoques viables:

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 98

Metaheurísticas y Redes Neuronales



El primero es permitir que las variables tomen valores en los reales, pero usar funciones de penalidad para empujarlas al campo de los enteros. Por ejemplo se





( )



puede añadir para cada variable , una penalidad del tipo ; donde  es una constante grande adecuada. NMinimize no usa este enfoque, pero el usuario puede ponerlo de manera explícita usando la opción PenaltyFunction. El segundo método (que es el que usa por defecto NMinimize, es redondear explícitamente todas las variables de valor real antes de evaluarlas en la función objetivo. La experiencia en el desempeño de esta función indica que es el enfoque más eficiente.

Esto todavía no aborda el tema del cumplimiento del rango. Por ejemplo, supongamos que estamos usando variables en el rango {1,…,n} para construir una permutación de n elementos.

Si un valor resbala fuera del rango el efecto podría ser muy malo, por ejemplo se podría colgar la ejecución o un resultado sin sentido, por lo tanto es importante en el código hacer cumplir cuidadosamente las cotas de las variables. La implementación hace exactamente eso. SI una variable es restringida a tomar valores entre una cota inferior y una cota superior (restricción rectangular), entonces el código de NMinimize la forzará a caer dentro de las cotas, esto está ya implementado y no necesita ser invocado por el usuario. En la literatura de los métodos basados en evolución, frecuentemente se asocian las nociones de genotipo y  fenotipo, el primero se refiere a los valores actuales de los cromosomas. Recordemos el trabajo básico de DE. Típicamente se forma un nuevo cromosoma a partir del apareamiento de sus cromosomas padre con una mutación proveniente de un segundo padre aleatorio. Dicha mutación es a su vez dada como una diferencia de otros dos cromosomas aleatorios. Estas operaciones son todas dadas en el nivel genotipo. Es en la traducción del cromosoma a un objeto combinatorio (por ejemplo una permutación) que se encuentra el fenotipo, que se refiere a la expresión del cromosoma como algo que puede ser usado para su evaluación en la función objetivo, dicho de otra manera uno decodifica un genotipo para obtener un fenotipo. Queremos genotipos que sean dóciles para las operaciones de mutación y apareamiento de la DE, y fenotipos que respondan bien al genotipo, en el sentido de que permitan mejoras razonables de la función objetivo. 10.6.1 Ejemplos Consideremos primero dos ejemplos simples para introducir la forma en que DE resuelve los problemas de optimización: 10.6.1.1

TRIPLETAS PITAGÓRICAS:

Son ternas ordenadas de enteros

x,y,z

 tales que

x  y  z

.

El problema es hallar estas tripletas (supongamos que en un rango adecuado, por ejemplo los números enteros entre 1 y 25 que cumplen esto). Una forma de resolverlo es:

      . . 1 ≤  ≤ 25; 1 ≤  ≤ 25; 1 ≤  ≤ 25;  ≤ ; ,,  ∈  Fernando Sandoya, Ph.D.

ESPOL, 2015/ 100

Metaheurísticas y Redes Neuronales

x1x1 →→ 13224 x2 → 34451 x3 → 87930 x4 → 7662 40579 x2 → 57689 x3 → 13178 x4 → 31821 x1x1 →→ 37714 x2 → 30923 x3 → 53450 x4 → 21180 31859 x2 → 16466 x3 → 82094 x4 → 12848 x1x1→→56919 x2 → 31889 x3 → 21434 x4 → 33025 404 x2 → 50237 x3 → 87394 x4 → 5232 x1x1 →→ 12799 x2 → 75752 x3 → 33542 x4 → 21174 10179 x2 → 32063 x3 → 95986 x4 → 5039 x1x1 →→ 45954 x2 → 42608 x3 → 24686 x4 → 30019 16739 x2 → 80348 x3 → 21110 x4 → 25070

10.6.1.3

EL PROBLEMA DEL PARTICIONAMIENTO DE CONJUNTOS (SPP):

Este es un problema que aparece en muchos contextos, en particular en la geometría computacional (ver aplicaciones en http://www.cs.ou.edu/~qcheng/paper/essr.pdf) Empecemos con un caso sencillo, supongamos que tenemos que particionar el conjunto de enteros del 1 al 100 en dos conjuntos de 50 elementos cada uno, de tal manera que la suma de las raíces cuadradas de los números de cada grupo sea lo más cercana posible. Hay varias maneras de expresar este problema con NMinimize, una forma es utilizando una forma sencilla de elegir 50 elementos de un conjunto de 100: usamos 100 números aleatorios entre 0 y 1, tomamos sus posiciones relativas, que definen una permutación de los números 1, 2, …, 100. datos val

Range 100 ;

RandomReal 1,

100

;

Ordering val  pIndices, gIndices s1, s2

Map datos

Take &,

, 50 , Drop

, 50

& Ordering val

pIndices, gIndices

En este caso particular como los números son todos del 1 al 100 los conjuntos {pIndices, gIndices} y {s1, s2} coinciden, la misma idea aplica para la partición de cualquier conjunto en un número par de elementos, y con pequeñas modificaciones se puede efectuar la división en un número impar o una división en subconjuntos de cardinalidades distintas. SET PARTITIONNING VIA INDEXACIÓN DE LA POSICIÓN RELATIVA: Implementamos una función que particione un conjunto en dos (siguiendo las reglas anteriores):  partirRango

v  

:

With   nuevov   Ordering

v  

Take   nuevov,   mitad    , Drop   nuevov,   mitad 

,   mitad 

Floor Length

v  

2

;

 partirRango val

Una vez que tenemos esta función para partir un conjunto en dos, construimos la función objetivo, que podría ser el valor absoluto de la diferencia, o la suma de los cuadrados de las diferencias (que es muy usado en las técnicas de optimización que requieren diferenciabilidad), en particular DE es un algoritmo de optimización libre de la derivada y por tanto se puede utilizar el valor absoluto.

Fernando Sandoya, Ph.D.

,

ESPOL, 2015/ 109

Metaheurísticas y Redes Neuronales

mejora de los músicos es comparable con los esquemas de búsqueda local y global de las técnicas de optimización (7). El algoritmo utiliza un procedimiento de búsqueda estocástica aleatorizado basado en la información que se tiene en la memoria junto con otros parámetros que se definirán más adelante, de tal manera que la información del gradiente y el uso de las derivadas de la función objetivo del problema ya no es necesaria.

11.2 Des cripción del Proceso de Optimización Las interpretaciones musicales tratan de encontrar una armonía agradable guiados por un patrón estético, tal y como, los procesos de optimización buscan encontrar la solución global a un problema guiados por la función objetivo. El tono de cada instrumento musical determina una calidad estética, de igual forma que el valor de la función objetivo es determinado por el conjunto de valores asignados a cada variable de decisión. En las prácticas de los grupos musicales, cada miembro del grupo toca una nota seleccionada al azar de un rango posible de opciones, haciendo todos juntos una armonía (Harmony Vector). Si la armonía entonada es buena, la experiencia es recordada en la memoria de cada miembro (Harmony Memory) y la posibilidad de entonar una mejor armonía se incrementa para la próxima vez. De manera similar, en optimización, cada variable de decisión toma un valor seleccionado al azar dentro un intervalo posible, haciendo todas juntas un vector solución. Si todas las variables de decisión forman una buena solución del problema, el resultado es almacenado en la memoria de cada variable y la posibilidad de formar una mejor solución la próxima iteración aumenta. Cuando un músico mejora un tono, usualmente sigue una de las siguientes tres reglas:

  

Toca cualquier tono que se encuentre almacenado en su memoria. Toca un tono adyacente al tono actual basado en su memoria y en un ajuste de tono. Toca un nuevo tono al azar.

De manera similar, cuando una variable de decisión toma un valor dentro de la metaheurística Harmony Search, sigue uno de estos tres pasos:

  

Toma un valor seleccionado al azar de entre los que se encuentran almacenados en la memoria de la variable. Toma un valor adyacente a uno de los valores que se encuentre en la memoria de la variable, determinado por el ancho de banda. Toma un valor seleccionado al azar dentro de un intervalo posible.

Las tres reglas en el algoritmo son dirigidas de manera efectiva por medio de la utilización de los siguientes parámetros:

  

  

La probabilidad de consideración de memoria La probabilidad de ajuste de tono . El ajuste de ancho de banda .

.

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 110

Metaheurísticas y Redes Neuronales

Utilizando la harmony memory y las tres reglas mencionadas se puede crear una nueva armonía, la cual es análoga con encontrar una nueva solución del problema de optimización. Si la nueva armonía es mejor que alguna de las que se encuentran almacenadas en la harmony memory, ésta reemplaza a la peor de todas las armonías almacenadas. Caso contrario, se crea una nueva armonía siguiendo el procedimiento descrito. Se repiten los pasos anteriores hasta que el criterio de parada sea cumplido. En resumen, la metaheurística Harmony Search se sintetiza en los siguientes pasos: 1. 2. 3. 4. 5.

,  ,   

Inicializar los parámetros del algoritmo . Establecer el tamaño de la memoria  e inicializar la harmony memory Crear una nueva armonía a partir de la harmony memory. Actualizar la harmony memory. Repetir los pasos 3 y 4 hasta que el criterio de parada sea cumplido.



.

11.3 Ps eudocódig o de la Metaheurís tica Harmony S earch

  , , … ,         .: ≤  ≤   

Sea optimización:

Donde

 y

  el vector de variables de decisión del problema de

∀  1,2, … ,

 son las cotas inferior y superior asociadas a la variable de decisión

Paso 1 Se inicializan los parámetros del algoritmo:  



.

  0. 9 ,    10   0.5,  100

Paso 2 Inicializar la harmony memory creando armonías aleatorias utilizando el siguiente procedimiento:

  1 1ℎ    ℎ,      ~    

Paso 3 Crear una nueva armonía considerando los parámetros del algoritmo y la harmony memory. Para ello se utiliza el siguiente procedimiento:

 ~0,   1 ℎ      1 ≤   ′ ~0,    1 ≤ ~1, ′   ′   ∙  ~1,1 ′    ~ ,        

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 111

Metaheurísticas y Redes Neuronales

′

Paso 4 Comparar la nueva armonía   con la peor armonía almacenada en la harmony memory. Si   es mejor que la que se tiene almacenada, reemplazar la peor armonía por .

′′

Paso 5 Repetir los pasos 3 y 4 hasta que se alcance el criterio de parada establecido. La mejor solución almacenada en la harmony memory será la solución final encontrada para el problema de optimización que se esté resolviendo.

11.4 Variantes de la Metaheurís tica Harmony Search Desde su reaparición en el año 2005, algunas variantes han sido propuestas para mejorar el rendimiento del algoritmo original desarrollado por Geem. Las variantes más conocidas son:

11.4.1 Improved Harmony Search La cual propone un método adaptativo para ir actualizando algunos de los parámetros del algoritmo. El modelizador sólo necesita inicializar los parámetros y  y, a través del método propuesto, se irán calculando iteración tras iteración los valores reales de y . La principal desventaja de este método radica en que se necesita inicializar los valores de y   los cuales son muy dependientes del problema y difíciles de ajustar.

Bw PAR Bw Bw Bw 11.4.2 Global Best Harmony Search

PAR,PAR, Bw Bw

La cual propone, en lugar de actualizar iterativamente el valor de , eliminarlo del algoritmo y realizar el ajuste de tono asignándole a la variable de decisión que se está explorando, el valor que toma una de las variables de decisión (seleccionada de manera aleatoria) que forma parte de la mejor armonía almacenada hasta esa iteración en la harmony memory. Su principal desventaja radica en que las variables de decisión del problema pueden representar cosas completamente ajenas a lo que representa la variable que se explora en esa iteración. 12. Redes

 22.1

neuronales

Introducción

Las redes neuronales constituyen una floreciente tecnología que puede ayudar muy significativamente en una gran cantidad de aplicaciones. Son sistemas de cálculo que se asemejan las características biológicas del cerebro, y están siendo adaptadas para su uso en una variedad de aplicaciones comerciales, militares y tecnológicas, que van desde el reconocimiento de patrones hasta la optimización y planificación. En este capítulo se mostrará cómo las redes neuronales pueden ser utilizadas para manejar un tipo de complejos problemas de tipo combinatorio. DEL CEREBRO A LAS REDES NEURONALES

Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 112

A pesar de que el cerebro humano ya había sido estudiado desde la Edad Media e incluso antes, su estructura profunda n fue desvelada hasta finales del pasado siglo. En ese momento los científicos, en controversia, se dividían en reticularistas y neurologistas. Para los primeros el cerebro es una glándula cuya secreción se distribuye por todo el cuerpo por medio de las fibras nerviosas. En cambio, para los neurologistas, el cerebro es un sistema complejo constituido por unidades individuales bien diferenciasdas, llamadas neuronas, unidas unas a otras por una malla de fibras nerviosas. El trabajo desarrollado entre 1894 y 1911 por el médico español Ramón y Cajal disipó la controversia a favor por Golgi en 1888 basada en la tinción de las fibras nerviosas, e identificó las neuronas como las unidades constitutivas del cerebro. El examen de esta estructura tan compleja por medio del microscopio electrónico reveló que a pesar de la gran variedad existente de neuronas, tienen las mismas partes principales:

  

Cuerpo (o soma) Dendritas Axón (o cilindro eje)

Esta estructura se corresponde con la de un proceso, con sus respectivas funciones de entrada y salida. Las dendritas reciben las señales de las neuronas adyacentes y las transmiten al cuerpo en forma de un potencial eléctrico. Estas señales eléctricas son integradas por el cuerpo celular (soma). Si este potencial eléctrico es superior a un valor umbral, el soma genera un corto impulso eléctrico. Este impulso se transmite por el axón, que es una fibra nerviosa con una longitud que varía entre milímetros y varios metros. El axón se ramifica y dirige el impulso a varias neuronas vía sinapsis. La sinapsis es la unión del axón con otras neuronas. Hay dos tipos de sinapsis. El primero se llama sinapsis de excitación, cuyo efecto es incrementar el potencial en la neurona destino. El segundo tipo es el de sinapsis inhibitoria cuya misión es hacer decaer el potencial en la neurona de destino. Esta descripción de los componentes fundamentales del sistema nervioso es bastante simplificada. De hecho, en la teoría de redes neuronales, las neuronas se consideran como cajas negras, y por tanto no se necesita una descripción más detallada de a neurona. No obstante, no es posible comprender la capacidad del cerebro para realizar funciones tan complejas como la percepción visual o el control motriz si se permanece al nivel de la neurona.

22.2

Modelos de neuronas

El primer modelo artificial de neurona establecido por McCulloch y Pitts {1943}. Este modelo consistía en un dispositivo no lineal de múltiples entradas con interconexiones “con peso”. En este modelo las interconexiones afectadas por los pesos representaban las

dendritas; el cuerpo celular se representaba por una función no lineal; la neurona artificial sumaba las entradas ya ponderadas, les aplicaba la función no lineal y transmitía la salida. Veamos un caso muy simple en el cual la neurona tiene dos entradas, representadas por un vector x=(x1, x2). A los pesos para las interconexiones los llamaremos w1 y w2, y la función no

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 113

Metaheurísticas y Redes Neuronales

Θ ∑= 

lineal es una función umbral g(x), cuyo valor umbral es , siendo la salida un escalar y. Esto se puede representar como y= g con

     ≤> 

g(h)=

A pesar de su simplicidad, este modelo artificial puede resolver funciones booleanas. Por ejemplo, esta simple red es capaz de resolver la función booleana OR;para valores booleanos +1(cierto) y -1(falso),basta tomar los pesos w1=w2=1, y el umbral .

Θ  0.5

Cuando este modelo se extiende a vectores de entrada n-dimensionales reales, la ecuación es y=g

∑= 

A la función g se la denomina función de transferencia o ganancia, y representa cómo la neurona calcula la salida y para una entrada x, y unos pesos dados. Cuando g es una función umbral, como en el caso anterior, la neurona se llama unidad umbral.Pero esta clase de funciones umbrales no es la única posible. En la figura 3 se muestran otras funciones de ganancia de uso frecuente.

22.3  Arquitecturas Una red neuronal artificial está formada por un conjunto de neuronas interconectadas entre ellas. El modo en que se interconectan constituye la arquitectura de la red. Hay varias arquitecturas y las más comunes son las redes por capas, las redes recurrentes y las redes de conexión lateral. Estas arquitecturas están muy ligadas a la regla de aprendizaje para adiestrar a la red. En este apartado se representan estas arquitecturas y en el siguiente las correspondientes reglas de aprendizaje. Redes neuronales por capas La estructura de una red neuronal de este tipo está dispuesta en capas. En estas redes cada capa de neuronas recibe señales sólo de las capas previas. Por esto se llaman redes feedforward o perceptrón. La primera red feed-forward fue presentad por Rosenblatt {1957}, y tenía una capa de entrada y una capa de salida constituida por un conjunto de unidad umbral. La figura 4 ilustra la arquitectura del preceptrón. En la primera capa no se realiza cálculo (capa de entrada) y por este motivo se considera a esta red como de una capa. La segunda clase de red por capas es la multicapa con fedd-forward, también denominada perceptrón multicapa. En esta a clase, se tiene al menos una capa (las denominadas “capas ocultas”) entre las de entrada y la salida. Cuando cada unidad de una capa se conecta a cada

Fernando Sandoya, Ph.D.

ESPOL, 2015/ 114

Metaheurísticas y Redes Neuronales

nodo de la capa adyacente siguiente, la red se denomina “totalmente conectada” en contraposición a la que es “parcialmente conectada”. En la figura 5 se tien un ejemplo de cada

red. Redes neuronales recurrentes En estas redes cada neurona se conecta a todas las neuronas de la red, incluso contigo misma, lo que significas que se tienen bucles en la arquitectura de la red. Las entradas de una neurona son las salidas del resto de las neuronas de la etapa previa. En estas redes es muy importante la dinámica de las mismas. La salida de cada neurona se lllama “estado de la neurona”, y el estado de la red quedará definido por el es tado de cada neurona. La red es

estable cuando su estado permanece igual tras varias iteraciones. La estabilidad es un concepto muy importante es esta clase de redes. La red de Hopfield es un caso muy importante de esta clase. La figura 6 ilustra un ejemplo de red de Hopfiels. Redes conectadas lateralmente En esta clase de redes, las neuronas se colocan en los nodos de un retículo dimensión 1 ó 2 (aunque puede haber dimensiones mayores, no se suelen utilizar). La figura 7 ilustra un ejemplo de una red de dimensión uno, conectada lateralmente y otra de dimensión 2. La red de esta clase más común es la de Kohonen.

22.4

Reglas de aprendizaje

La característica más interesante de las redes neuronales artificiales es su capacidad de aprendizaje. Hay dos modos principales de aprendizaje: el aprendizaje supervisado y el no supervisado. En la práctica, las reglas de aprendizaje especifican cómo adaptar los pesos sinápticos. Esta adaptación se realiza mediante una interacción continua entre la red neuronal y el entorno. La primera hipótesis sobre el proceso de aprendizaje en los cerebros naturales fue formulada por Hebb [1949].Introdujo el siguiente principio: “Los pesos de sinapsis aumentan

cuando tanto las simultáneamente”.

neuronas

pre-sinápticas

como

la

post-sinápticas

se

activan

Una componente esencial en el aprendizaje supervisado es la existencia de un maestro o supervisor. La misión de la red neuronal es dar la salida deseada para cada entrada. Cuando se pasa un vector de entrada a la red, el instructor sabe cual ha de ser la salida (salida deseada). La regla de aprendizaje adaptará los pesos de las sinápsis de tal modo que el error entre la salida real y la deseada sea mínimo. El perceptrón y las redes multicapa utilizan este método de aprendizaje. El procedimiento seguido para “enseñar” a una red neuronal es el siguiente: se diseña un

conjunto de ejemplos de entrenamiento. Cada ejemplo consta de un par de vectores, uno de entrada y otro de salida deseada. Durante la fase de entrenamiento, los pesos sinápticos se adaptan para minimizar el error entre las salidas real y deseada. Cuando termina la fase de Fernando Sandoya, Ph.D.

ESPOL, 2015/ 115

Metaheurísticas y Redes Neuronales

entrenamiento (por ejemplo cuando el índice de error sea menor del 1% ) dejan de variar los pesos sinápticos y quedan fijados para las operaciones siguientes. A continuación viene la fase de generalización. Basándose en los pesos determinados en la fase de entrenamiento, la red encontrará la salida adecuada, incluso aunque el supervisor no conozca dicha salida. En el proceso de aprendizaje no supervisado, no se dispone de instructor. En este caso no hay conjunto de entrenamiento, y no se conocen las salidas deseadas. La tarea de una red no supervisada es clasificar los vectores de entrenamiento en clases y grupos. La tarea de aprendizaje se realiza aplicando el concepto de similitud. La similitud de dos vectores se suele medir por su producto escalar (ésta no es la única medida). La regla de aprendizaje competitiva se usa para realizar un proceso no supervisado de aprendizaje. Cuando se presenta un vector de entrada a la red, se selecciona una neurona (lo que significa que todas las neuronas tratan de ser seleccionadas), pero sólo la ganadora es seleccionada. El modelo de Kohonen es un ejemplo de red que utiliza el método no supervisado.

22.5

Redes neuronales artificiales y los problemas de optimización combinatoria

Los modelos conexionistas han atraído la atención por su prometedora potencialidad como métodos heurísticos para hallar soluciones aproximadas a complejos problemas de optimización. En sus pioneros trabajos, Hopfield y Tank[1985] mostraron que las redes neuronales artificiales pueden ofrecer buenas aproximaciones a la solución del problema del viajante,TSP. El principal resultado de este artículo fue mostrar la posibilidad de empleo de redes neuronales artificiales para la resolución de problemas, aunque desde el punto de vista de lso investigadores de operaciones los resultados de este método distaban de ser convincentes. De hecho, el método se aplicaba a problemas “pequeños” (el tamaño del

problema variaba entre 10 y 30 ciudades). Después de este artículo, hubo muchos intentos para desarrollar algoritmos neuronales para solucionar éste y otros problemas dde optimización. Hay dos aproximaciones básicas para el uso de redes neuronales en la solución de problemas de optimización. La primera se basa en la  física estadística. Entre los diferentes algoritmos neuronales basados en esta aproximación estudiaremos el Modelo de Hopfiel d y el recocido del campo medio (“ mean field annealig” en inglés). La segunda aproximación se basa en las redes competitivas y tienen dos variantes principales. Como veremos, la primera se basa en la red de Kohonen y la segunda en las redes deformables, especialmente adaptadas al problema del viajante. No obstante, mostraremos como extender estas aproximaciones a problemas más generales como múltiple TSP y el de rutificación.

22.6  Aproximación estadística para el problema de la optimización. En este apartado expondremos la relación entre la termodinámica y los problemas de optimización combinatoria. En la última década se ha visto que los problemas de optimización combinatoria están relacionados, de esta forma sencilla, con la física estadística :

Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

    

ESPOL, 2015/ 116

Una instancia de un problema de optimización combinatoria es equivalente a una muestra en física estadística. Una prueba en optimización combinatoria es una configuración en física estadística. La función de coste equivale a la energía. Una solución óptima corresponde a la energía mínima. El coste mínimo es el estado de mínima energía.

Consecuentemente, el primer paso para solucionar el problema de la optimización en el marco de la física estadística es inscribirlo en términos de estados que sean variables discretas en un espacio Euclídeo. BIBLIOGRAFÍA:

 Campos V., Laguna M. y Martí R. (1999), “Scatter Search for the Linear Ordering Problem”, New Ideas in Optimisation, D. Corne, M. Dorigo and F. Glover (Eds.), McGraw-Hill. 331-341.  Campos V., Laguna M. y Martí R. (2001) “Context -Independent Scatter and Tabú Search for Permutation Problems”, Technical report TR03 -2001, Departamento de Estadística e I.O., Universidad de Valencia.  Campos, V., F. Glover, M. Laguna and R. Martí (1999) “An Experimental Evaluation of a Scatter Search for the Linear Ordering Problem to appear in Journal of Global Optimization.  Corberán A., E. Fernández, M. Laguna and R. Martí (2000), “Heuristic Solutions to the Problem of Routing School Buses with Multiple Objectives”, Technical report TR08 -2000, Departamento de Estadística e I.O., Universidad de Valencia.  Davis, L. (1996), Handbook of Genetic Algorithms, International Thomson Computer Press, Londres.  Díaz, A., Glover, F., Ghaziri, H.M., Gonzalez, J.L., Laguna, M, Moscato, P. y Tseng, F.T. (1996). Optimización Heurística y Redes Neuronales, Paraninfo, Madrid.  Feo, T. and Resende, M.G.C. (1989), A probabilistic heuristic for a computational difficult set covering problems, Operations research letters, 8, 67-71.  Feo, T. and Resende, M.G.C. (1995), “Greedy Randomized Adaptive Search Procedures”,  Journal of Global Optimization, 2, 1-27.  Festa, P. and Resende, M.G.C. (2001), “GRASP: An Annotated Bibliography”,   AT&T Labs Research Tech. Report .  Fisher, M.L. (1980), “Worst-Case Analysis of Heuristic Algorithms", Management Science, 26, pág. 1-17.  Glover, F. (1977) “Heuristics for Integer Programming Using Surrogate Constraints,” Decision Sciences, Vol. 8, pp. 156-166.  Glover, F. (1986) “Future Paths for Integer Programming and Links to Artifical Intelligence”, Computers and Operations Research , 13, 533.  Glover, F. (1989), “Tabú Search: Part I”, ORSA Journal on Computing, 1, 190.  Glover, F. (1990), “Tabú Search: Part II”, ORSA Journal on Computing, 1, 4.  Glover, F. (1998) “A Template for Scatter Search and Path Relinking,” in  Artificial Evolution, Lecture Notes in Computer Science 1363, J.-K. Hao, E. Lutton, E. Ronald, M. Schoenauer and D. Snyers (Eds.), Springer-Verlag, pp. 13-54.

Fernando Sandoya, Ph.D.

Metaheurísticas y Redes Neuronales

ESPOL, 2015/ 117

 Glover, F., M. Laguna and R. Martí (1999) “Scatter Search,” to appear in Theory and  Applications of Evolutionary Computation: Recent Trends,  A. Ghosh and S. Tsutsui (Eds.), Springer-Verlag.  Glover, F., M. Laguna and R. Martí (2000), “Fundamentals of Scatter Search and Path Relinking”, Control and Cybernetics, 29 (3), 653 -684.  Glover, F., M. Laguna, E. Taillard and D. de Werra (1993), “A user’s guide to Tabú search”,  Annals of Operations Research, 4, 3-28.  Glover, F.and Laguna, M. (1997), Tabú Search, Ed. Kluwer, London.  Holland, J.H. (1992), Genetic Algorithms, Scientific American, 267, 66.  Johnson, D.S., Aragon, C.R., McGeoch, L.A. and Schevon, C. (1989), Optimization by Simulated Annealing: An experimental evaluation; Part I, Graph Partitioning, Operations Research 37.  Johnson, D.S., Aragon, C.R., McGeoch, L.A. and Schevon, C. (1991), Optimization by Simulated Annealing: An experimental evaluation; Part II, Graph Coloring and Number Partitioning, Operations Research 39.  Jünger, M., Reinelt, G. y Rinaldi, G. (1995), “The Traveling Salesman Problem", En: Ball, M.O., Magnanti, T.L., Monma, C.L. y Nemhauser, G.L. (eds.),   Handbook in Operations Research and Management Science, Vol. 7, Network Models, pág 225--330. NorthHolland, Amsterdam.  Kirkpatrick, S., Gelatt, C.D. and Vecchi, P.M. (1983), Optimization by simulated annealing, Science, 220, 671-680  Laguna M. and Martí R. (2000) “ Experimental Testing of Advanced Scatter Search Designs for Global Optimization of Multimodal Functions”. Technical report TR11-2000, Departamento de Estadística e I.O., Universidad de Valencia.  Laguna M. and Martí R. (1999), “GRASP and Path relinking for two layer straight-line crossing minimization”, INFORMS Journal on Computing, 11(1), 44-52.  Laguna M. and Martí R. (2002), “The OptQuest Callable Library” Optimization Software Class Libraries, Voss and Woodruff (Eds.), 193-218,Kluwer.  Laporte, G. (1992), “The Travelling Salesman Problem: An Overview of Exact and Approximate Algorithms", European Journal of Operational Research, 59, pág. 231--247.  Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G. y Shmoys, D.B. (eds.) (1985), The Traveling Salesman Problem. A Guided Tour to Combinatorial Optimization, John Wiley and Sons, Chichester.  Lin, S. y Kernighan, B.W. (1973), “An Effective Heuristic Algorithm for the Traveling Salesman Problem", Operations Research, 21, pág. 498--516.  Lokketangen, A. and Glover, F. (1996) “Probabilistic move selection in Tabú search for 0/1 mixed integer programming problems” Meta -Heuristics: Theory and Practice, Kluwer, pp. 467-488.  Martí, R. (2000), “MultiStart Methods” to appear in Ha ndbook on MetaHeuristics, Kluwer.  Michalewicz, Z. (1996), Genetic Algorithms + Data Structures = Evolution Programs, tercera edición, Springer Verlag.  Osman, I.H. and Kelly, J.P. (eds.) (1996), Meta-Heuristics: Theory and Applications, Kluwer Academic, Boston.

Fernando Sandoya, Ph.D.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF