La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Búsqueda en Vecindades Variables (Variable Neighborhood Search - VNS)

Presentaciones similares


Presentación del tema: "Búsqueda en Vecindades Variables (Variable Neighborhood Search - VNS)"— Transcripción de la presentación:

1 Búsqueda en Vecindades Variables (Variable Neighborhood Search - VNS)
Grupo Nº 5 Germán Ferrari Federico Laca

2 Introducción Marco Teórico Aplicaciones Resumen Conclusiones Preguntas
Vecindades Fundamentos Algoritmo básico Variantes Aplicaciones GCP VRPTW Resumen Conclusiones Preguntas

3 Marco Teórico - generalidades
Metaheurística para resolución de problemas de optimización combinatoria. Propuesto por P.Hansen y N.Mladenovic (1997). Extensión de Búsqueda Local que utiliza distintas vecindades a lo largo de la búsqueda. OC en general, MAXSAT, grafos

4 Marco Teórico – vecindades (1)
Estructura de vecindad: Función :2, que define para cada s, un conjunto (s)   de soluciones llamadas “vecinas” de s. El conjunto (s) se llama “vecindad” de s y cada elemento s´ (s) es una solución “vecina” de s. Observar que con esta definición, las soluciones vecinas no necesariamente son factibles.

5 Marco Teórico – vecindades (2)
Estructuras de Vecindad vs. Vecindades. Soluciones “cercanas”. Abstracciones del espacio de búsqueda. Es importante distinguir entres lo que es la estructura de una vecindad y una vecindad en sí. Un vecindad es simplemente un conjunto de soluciones, mientras que una estructura de vecindad es la función que asocia a cada solución su vecindad. Con esta definición cualquier procedimiento que me permita pasar de una solución particular a otras soluciones, en algún orden, implícitamente define una estructura de vecindad donde N(s) sería el conjunto de todas las soluciones a las que se puede llegar desde s aplicando el procedimiento. Esta forma de ver las estructuras de vecindad es la que en general se usa en las implementaciones. Observar que dos soluciones vecinas no tienen por que ser “cercanas”, o más bien que al definir una estructura de vecindad uno está definiendo lo que entiende por cercanía. Esto lo que nos muestra es que la definición que usamos de estructura de vecindad, es muy flexible, ya que no dice nada sobre como son las soluciones que forman parte de la vecindad. Por lo dicho, las estructuras de vecindades se pueden considerar como diferentes abstracciones del espacio de búsqueda, son formas de ordenar u organizar el espacio de búsqueda. La estructura de vecindad que uso cambia la forma en que me muevo por el espacio de soluciones.

6 Marco Teórico – clasificación
VNS Básico Sin memoria. Aleatorio. Trayectoria. M / S / 1. Como veremos en el correr de la presentación, existen variantes y extensiones del método básico, ahora veremos la clasificación del caso básico, pero no necesariamente se mantiene para todas las variantes. Es sin memoria porque sólo toma en cuenta la solución actual en la que está para obtener la siguiente solución. Es de muestreo aleatorio ya que en cada paso hay una búsqueda aleatoria en la vecindad de la solución. Es de trayectoria por que mejora una sola solución a la vez.

7 Marco Teórico – búsqueda local
s  Generar SolucionInicial() Repeat s  Mejorar(s,(s)) Until no hay mejora posible Óptimo Local Como dijimos el VNS es una extensión de la búsqueda local. Como todos sabemos el problema de la búsqueda local es que cae en óptimos locales. VNS intenta escapar de los óptimos locales permitiendo que se utilicen distintas estructuras de vecindad durante la búsqueda.

8 Marco Teórico – fundamentos
Un mínimo local con una estructura de vecindades no lo es necesariamente con otra. Un mínimo global es mínimo local con todas las posibles estructuras de vecindades. (Ejemplificar con dibujos...)

9 Marco Teórico – algoritmo básico
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax s  GenerarSolucionInicial() Mientras no se cumple condición de fin do k  1 Mientras k < kmax do s´  SeleccionarRandom(k(s)) // Shaking s´´  LocalSearch(s´) // Local Search if f(s´´) < f(s) then // Move or Not s  s´´ Else k  k+1 End if End mientras Como dijimos, la diferencia principal con la búsqueda local es que cambia la estructura de vecindad que utiliza a lo largo de la búsqueda. El algoritmo consta de tres fases (explicar cada una) Notar que el algoritmo no restringe qué estructuras de vecindades se utilizan, ni cuántas. Tampoco cómo se genera la solución inicial, ni las condiciones de parada, ni qué procedimiento se utiliza para mejorar las soluciones (Local Search). Por ejemplo, se podría tener una sola estructura de vecindad o se podría utilizar otra metaheurística para generar la solución inicial o inclusive otra también para realizar la búsqueda local. En la fase Local Search (comentar que se puede utilizar otra estructura de vecindad) (Comentar que la parte “menos intuitiva” del algoritmo es, que regresa a la primera estructura de vecindad cada vez que mejora. De alguna forma privilegiando a las primeras estructuras sobre las otras. En el caso de estructuras de vecindades crecientes, esto se podría ver como una manera de diversificar cada vez que no puedo mejorar la solución).

10 Marco Teórico – cond. de parada
Tiempo de cómputos. Número de iteraciones. Número de iteraciones sin mejorar la solución. Con la primera condición de parada el algoritmo termina luego de transcurrir un cierto tiempo, sin tener en cuenta si se puede seguir mejorando la solución. En el segundo caso es similar, sólo que termina luego de un cierto número de iteraciones, pero tampoco toma en cuenta la calidad de la solución y la posibilidades de mejorarlo. El tercer caso difiere del anterior en que se considera un número de iteraciones sin mejorar la solución, con esto lo que se busca es no detener el algoritmo teniendo la posibilidad de mejorar la solución. Observemos que...

11 Marco Teórico – algoritmo básico
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax s  GenerarSolucionInicial() Mientras no se cumple condición de fin do k  1 Mientras k < kmax do s´  SeleccionarRandom(k(s)) // Shaking s´´  LocalSearch(s´) // Local Search if f(s´´) < f(s) then // Move or Not s  s´´ Else k  k+1 End if End mientras Mirando el algoritmo, se podría tomar como condición de parada el haber buscado con todas las estructuras de vecindad, ya que eso significa que no pude mejorar la solución con todas las estructuras de vecindad definidas. Pero esta opción no sería razonable tomarla por que podría haber tenido “mala suerte” en el shaking y haber elegido k veces malas s’ para hallar mi nueva solución. Tal vez es mejor observar todo esto que acabamos de decir gráficamente... (mostrar un caso donde cambia la vecindad) (mostrar un caso donde no cambia) (mostrar un caso donde puedo elegir mal) Por otro lado, si mantengo este esquema y elijo determinísticamente a s’, no tendría sentido volver a “empezar” con la primer estructura de vecindad (k = 1) cuando he terminado de probar con todas las vecindades sin encontrar una mejora.

12 Marco Teórico – variantes
VNS descendente (VND) VNS sesgado (SVNS) VNS con descomposición (VNDS)

13 Marco Teórico – variante VND
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax s  GenerarSolucionInicial() Mientras no se cumple condición de fin do k  1 Mientras k < kmax do s´  ÓptimaMejora(k(s)) if f(s´) < f(s) then s  s´ Else k  k+1 End if End mientras Como se puede ver se remplazan las fases de shaking y local search por elegir la óptima mejora en la vecindad. El s’ es una solución (la mejor) dentro de la vecindad de s. En el caso anterior (VNS básico) s’’ no necesariamente pertenecía a la vecindad de s. Observar que este método es determinista.

14 Marco Teórico – variante SVNS
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax s  GenerarSolucionInicial() Mientras no se cumple condición de fin do k  1 Mientras k < kmax do s´  SeleccionarRandom(k(s)) ; s´´  LocalSearch(s´) if f(s´´) < f* then f* f (s’’); s*  s’’ End if if f(s´´) – (s,s”) < f(s) then s  s´´; k  1 Else k  k+1 End if End mientras Alfa empírico, ro mide la distancia entre las soluciones. La idea es favorecer la exploración de lugares “alejados” a la solución actual. Está relacionado con la idea de vecindades de cardinalidad creciente. (cardinalidad chica intensifica, cardinadlidad grande diversifica).

15 Marco Teórico – variante VNDS
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax s  GenerarSolucionInicial() Mientras no se cumple condición de fin do k  1 Mientras k < kmax do s´  SeleccionarRandom(k(s)) ;(s y s’ difieren en un conjunto de k atributos) s´´  LocalSearch(s´, atributos); (sólo k atributos involucrados) if f(s´´) < f(s) then s  s´´; k  1 Else k  k+1 End if End mientras En el VNS con descomposición la búsqueda local la realiza en el subespacio del espacio de soluciones, generado por los atributos en que difieren las soluciones s y s’.

16 Aplicaciones Problema de coloreado de grafos (GCP).
A variable neighborhood search for graph coloring (C.Avanthay, A.Hertz, N.Zufferey). Problema de ruteo de vehículos con ventanas de tiempo (VRPTW). A reactive variable neighborhood search for the vehicle routing problem with time windows (O.Bräysy). Ahora vamos a ver dos aplicaciones de esta metaheurística. Dichos problemas son el GCP y el VRPTW. Vamos a ver con más detalle la aplicación al GCP por que usa esencialmente el VNS, y vamos a comentar los puntos que a nuestro entender son más importantes del VRPTW donde se usa otra metaheurística distinta basada en VND.

17 Aplicación GCP Coloreado de grafos. NP-duro.
Métodos exactos (menos de 100 vértices). El problema consiste en encontrar la menor cantidad de colores con las que se puede pintar un grafo, sin que dos vértices adyacentes tengan el mismo color. Existen métodos exactos para resolver el problema pero sólo pueden ser aplicado a problemas “pequeños”.

18 Aplicación GCP – definiciones
k-coloreado de G: Dado k es una función c: V {1,...,k}. Dado un vértice v, c(v) es llamado el color de v. Clase de color: Es un conjunto Vr de los vértices con el color r. Vértice conflictivo: Es un vértice que tiene otro vértice adyacente del mismo color. Arista conflictiva: Es una arista que une dos vértices del mismo color. Color conflictivo: Es un color para el cual existen vértices conflictivos. Conjunto estable: Conjunto de vértices del mismo color sin vértices conflictivos. k-coloreado legal: Es un k-coloreado sin aristas conflictivas.

19 Aplicación GCP – k-GCP Minimizar el número de aristas conflictivas de un k-coloreado. f(s) = kr=1 |Er| Er es el conjunto de las aristas conflictivas que tienen sus dos vértices de color r. Mejor método encontrado, híbrido que combina algoritmo genético con búsqueda tabú (Galinier y Hao). Otro problema similar que vamos a ver después que relación tiene es el k-GCP, el cual consiste en dado un entero k, encontrar el k-coloreado de un grafo que minimice el número total de aristas conflictivas.

20 Aplicación GCP – alternativas
Construir sucesivamente conjuntos estables maximales y quitarlos del grafo. Partition approach Determinar una cota superior para k, y luego resolver una serie de k-GCPs con k cada vez más chico hasta que no se pueda encontrar un k-coloreado legal. En el paper se presentan dos alternativas para encarar este problema (decirlas). (se puede recordar la definición de k coloreado) La eligen los autores es la segunda la por partición.

21 Aplicación GCP – modelado
Solución factible: cualquier k-coloreado. Función objetivo: min f(s) = kr=1 |Er|. Solución inicial: elegida randómicamente. Condición de parada: número de iteraciones (MaxVNS) sin realizar ninguna mejora. Búsqueda local: Tabucol. Maxtabu = 10*MaxVNS iteraciones sin mejora. Largo lista tabú = 10. Como el problema que vamos a resolver es el k-GCP, cualquier coloreado es factible ya que no importa si es legal o no. Función objetivo ya se mencionó. Como condición de parada se utiliza un número máximo de iteraciones sin mejorar la solución. Se toma MaxVNS=|V|. Experimentos preliminares mostraron que valores más grandes no llevan a mejoras significativas. Para la fase de búsqueda local se utiliza Tabucol, que está basada en la búsqueda tabú y sigue la aproximación por partición que es la alternativa que eligieron los autores. Está búsqueda busca soluciones vecinas cambiando el color r de un vértice conflictivo v. Y guarda el par (v, r) en la lista tabú para no volver al mismo color por algunas iteraciones. La condición de parada es MaxTabu iteraciones sin realizar mejora y se utiliza 10*|V| como valor. El valor se determinó empíricamente. valores grandes de MaxTabu inducen tiempos largos de computo para el VNS, mientras que valores chicos pueden no dar suficiente tiempo a tabucol para mejorar la solución actual.

22 Aplicación GCP – algoritmo
1. Inicialización Seleccionar un conjunto de estructuras de vecindad t, t = 1..tmax s  GenerarKColoreadoRandom() IVNS  0; t  1 2. Repetir hasta IVNS = MaxVNS IVNS  IVNS + 1 s´  SeleccionarRandom(t(s)) // Shaking s´´  TabuCol(s´) // Local Search if f(s´´) < f(s) then // Move or Not s  s´´; t  1 IVNS  0 Else t  t+1 End if End repetir Con lo que hemos hablado hasta ahora el algoritmo general de VNS que teníamos quedaría así. Si bien este no es el algoritmo definitivo, da una idea de cómo se “instancia” el método general a un problema particular.

23 Aplicación GCP – vecindades (1)
Metodología general. Grupos de estructuras de vecindades. Pruebas independientes. Selección de “las mejores”. Pruebas de estructuras de vecindades combinadas. Selección de la “mejor combinación”. Lo que nos está faltando es decidir que vecindades vamos a usar y como las vamos a intercambiar Una de las cosas para nosotros más rescatables del paper es que deja ver una metodología general para decidir que vecindades utilizar. Primero se define grupos de estructuras de vecindades. Luego define varias vecindades de cada clase y las prueba individualmente con diferentes problemas quedándose con las que resultaron mejores que todas las de su clase para algún problema. A continuación realiza pruebas combinando las estructuras de vecindades seleccionadas para determinar cual es el mejor orden. Está metodología es básicamente prueba y error, y puede servir cuando no se sabe por donde empezar.

24 Aplicación GCP – vecindades (2)
Vecindades de vértice. Se generan cambiando el color de algunos vértices conflictivos. Vecindades de clase. Se generan cambiando el color de algunos o todos los vértices de una clase de color conflictiva. Vecindades no-crecientes. Se generan cambiando el color de algunos vértices pero nunca aumentando el número total de aristas conflictivas. Como dijimos la metodología que usa para decidir que vecindad utilizar comienza por definir grupos de estructuras de vecindades. (leer). Observar que ningún grupo de estructuras de vecindades está incluido en otro (en vértices puedo cambiar vértices de distinto colores) (en clases puedo cambiar vértices no conflictivos) (en no-crecientes puedo cambiar un color no conflictivo)

25 Aplicación GCP – vecindades (3)
Vecindades de vértice. Básica. De cadena. Granada. Fuego artificial. Permutación. Vecindades de clase. Vaciar-rellenar. Conjunto estable. Clase vacía. Clase tabú. Vecindades no-crecientes. Culverson. Sub-grafo. En total se consideraron 11 estructuras de vecindades que se probaron individualmente. Por falta de tiempo no vamos a describir todas las estructuras de vecindades, vamos a comentar 2.

26 Aplicación GCP – vecindades (4)
Vecindad de granada Se realiza i veces Selecciono randómicamente un vértice conflictivo x de Vr (llamado vértice granada) y lo cambio a Vj (mejor clase de color posible). A todos los nuevos vértices conflictivos de Vj se les cambia a la mejor clase de color posible. i random en {1,..,imax} imax decrece de 40 a 1 con IVNS (Leer comentando cómo funciona el procedimiento) Es una estructura de vecindad del grupo “de vértices”. La mejor clase de color posible para realizar un cambio para un vértice conflictivo x es aquella que tiene la menor cantidad de vértices adyacentes a x. (decir que Vj es la mejor clase de color para x). El IVNS es la cantidad de iteraciones consecutivas realizadas sin mejorar la solución y varía de 0 a MAXVNS . A medida que el IVNS crece el imax decrece. Observar que con imax chico se realizarían menos cambios por lo que las soluciones vecinas serían “más cercanas” a la actual (se puede ver como una intensificación), en cambio con un imax grande en general se realizan más cambios lo que produciría que las soluciones vecinas sean “más lejanas” (diversificación). Por otro lado cada vez que una solución se mejora IVNS cae a cero, por lo que imax toma el valor más grande. Lo que se podría ver como que cada vez que una solución es mejorada, se diversifica. Se puede observar que el i se elige randómicamente. (Hacer dibujo).

27 Aplicación GCP – vecindades (5)
Vecindad vaciar-rellenar Vaciar V* Cada vértice se “mueve” a la mejor clase de color. Rellenar con otros p vértices En lo posible nuevos vértices conflictivos. Es una estructura de vecindad de grupo “de clase”. Decir que V* es la clase de color que tiene más vértices conflictivos y p es la cantidad de elementos de esa clase. Acá se cambian todos los vértices de la clase V*, sin importar si son o no conflictivos. Al vaciar V*, con seguridad se generen nuevos vértices conflictivos, entonces al rellenar, la idea es considerar estos nuevos vértices conflictivos.

28 Aplicación GCP – vecindades (6)
Pruebas individuales de las estructuras de vecindades. 9 grafos de tamaño mediano. 4 grafos aleatorios de 500 vértices y densidad 0.5. 2 grafos planos de 300 vértices con solución óptima conocida 28 y 26. 2 grafos de Leighton de 50 vértices y solución óptima conocida 15. 1 grafo aleatorio DSJ de 500 vértices y densidad 0.5. Los primeros 4 grafos aleatorios se generaron para esta aplicación, mientras que los otros se tomaron de la literatura, de los cuales, 4 tienen número cromático conocido. Como se dijo se probó con cada estructura de vecindad por separado, con un VNS de una sola estructura de vecindad. Se realizaron 4 corridas para cada grafo con un k fijo para cada estructura de vecindad.

29 Aplicación GCP – vecindades (7)
También como forma de comparar se tomó en cuenta los resultados de aplicar el Tabucol (individualmente) con una cantidad de iteraciones mayor a la utilizada “dentro” del VNS para conseguir tiempos de cómputos comparables. Se observó que en todos los casos de prueba con alguna de las vecindades se mejoró el resultado del Tabucol (excepto en el R500.1, donde sólo se igualó). Utilizando el criterio mencionado de quedarse con las estructuras de vecindades que en algún caso produjeran la mejor solución de su clases de estructura de vecindad, es que se seleccionaron: Cadena Fuegos Artificiales Granada Conjunto Estable Vaciar – Rellenar Clase Vaciar

30 Aplicación GCP – vecindades (8)
Pruebas de estructuras de vecindades combinadas. Ninguna permutación es mejor que otra. Falta decidir el orden en que se van a usar las vecindades, ya que puede influenciar en la calidad de la solución. Se probó con distintas permutaciones buscando que sean representativas de todas las posibles. De las pruebas se concluyó que ningún orden es claramente mejor que otro.

31 Aplicación GCP – VNS propuesto
1. Inicialización Considerar la permutación  de {2,3,4,6,7,8} s  GenerarKColoreadoRandom() IVNS  0; t  1 2. Repetir hasta IVNS = MaxVNS IVNS  IVNS + 1 s´  SeleccionarRandom((t)(s)) // Shaking s´´  TabuCol(s´) // Local Search if f(s´´) < f(s) then // Move or Not s  s´´; t  1 IVNS  0 Else if IVNS es múltiplo de MaxVNS/6 t  t+1 End if End if End repetir Acá el algoritmo se muestra con un orden de estructuras de vecindad arbitraria. El número de las estructuras de vecindad hace referencia a la numeración que se le dio a cada estructura de vecindad. Cabe aclarar (señalar aquí) que en este punto la estructura de vecindad no se cambia cada vez que no se mejora sino que repite la misma estructura de vecindad un número de veces sin mejorar antes de cambiar. De esta manera se evita cambiar de estructura de vecindad en los casos “poco afortunados” donde elige mal s’. En el caso de las estructura de vértices, esto permite probar la misma estructura de vecindad , pero con distintos valores de i que como vimos “acerca o aleja” las soluciones vecinas.

32 Aplicación GCP – comparación
VNS no obtuvo mejoras significativas. Mejor que Tabucol. No compite con GH (híbrido que combina algoritmo genético con búsqueda tabú). Para este problema, el VNS propuesto no significó una mejora significativa, comparado con las búsquedas realizadas con vecindades individualmente. Se podría concluir que en algunos casos, es más simple utilizar una buena estructura de vecindad obteniendo resultados aceptables, antes que realizar un VNS. El método fue comparado con Tabucol y GH (el mejor hasta el momento), como se pudo observar, aunque siempre VNS produce mejores resultados que Tabucol, no es competitivo con GH. Esto parece mostrar que el uso de varias estructuras de vecindades es efectivo a la hora de escapar del óptimo local. Esto indicaría que buenos intercambios de información a través de soluciones de una población parece ser más importante que el uso de varias estructuras de vecindades sobre una única solución.

33 Aplicación VRPTW Ruteo de vehículos con ventanas de tiempo.
VNS reactiva (RVNS). Robusta. Confiable. Soluciones de alta calidad. El problema es encontrar una mínima cantidad de rutas (tours) tal que cada cliente es alcanzado en su ventana de tiempo y nunca se excede la capacidad de los vehículos. Un objetivo secundario es minimizar la distancia total viajada. Lo que nos interesa mostrar de esta aplicación es cómo incorporando información particular del problema, tanto a nivel de la metaheurística, como a nivel de los procedimientos de mejora de soluciones, es posible lograr soluciones de muy alta calidad, de forma confiable, robusta y siguiendo un esquema de VNS.

34 Aplicación VRPTW – RVNS (1)
Fases Generar las soluciones iniciales. Heurística constructiva. Eliminación de rutas. Procedimiento de eliminación de rutas. VND. Procedimientos de mejora de rutas. Post-optimización. Reactividad. Para resolver el problema, se propone un esquema compuesto por cuatro fases. En la fase uno se generan varias soluciones iniciales utilizando una heurística de construcción con diferentes combinaciones de los valores para los parámetros. En la fase dos se mejoran las soluciones iniciales utilizando un procedimiento de eliminación de rutas, que es el objetivo primario de este problema. A partir de las mejores soluciones producidas por la fase dos, en las fases tres y cuatro, se busca mejorar cada ruta de cada solución siguiendo ahora el objetivo de minimizar la distancia total viajada. Con un esquema de VND. En la fase cuatro además se cambian parámetros de la función objetivo para lograr una post-optimización, lo que le da el carácter de reactivo.

35 Aplicación VRPTW – RVNS (2)
Metaheurística específica para el problema. Desarrollo de procedimientos de mejora de soluciones (extensiones de métodos ya existentes). Construcción de soluciones iniciales. Eliminación de rutas. Mejora de rutas. Además de trabajar en la formulación de una metaheurística específica para el problema se trabajo mucho en cada paso concreto (en los procedimientos) utilizando mucha información de otras investigaciones desarrollando nuevos procedimientos. Por las pruebas los procedimientos desarrollados en general son mejores que los ya existentes. Dado que en la mejora de rutas se sigue un esquema VND, detallaremos un poco más estos procedimientos.

36 Aplicación VRPTW – RVNS (3)
Procedimientos de mejora de rutas (operadores de búsqueda local). Inter-ruta ICROSS IRP Intra-ruta IOPT O-opt Definen estructuras de vecindad. Vecindades crecientes. En la fase de mejoras de rutas utiliza 4 procedimientos de mejora a los que llama operadores de búsqueda local, que son simplemente distintos procedimientos para buscar soluciones vecinas de la solución actual. Por lo que se dijo al principio, cada procedimiento define entonces una estructura de vecindad. Estas 4 estructuras de vecindad son las que utiliza el VND para mejorar las soluciones. Cabe destacar que no se utiliza exactamente VND ya que en vez de en cada elegir la óptima mejora, se elige la primer mejora. Otra cosa para destacar es que cada vez que se termina de probar con las 4 estructuras de vecindad se cambian los parámetros de los operadores de búsqueda local para considerar vecindades más grandes y realizar búsquedas más profundas.

37 Aplicación VRPTW – pruebas
Sets de parámetros RVNS(1), RVNS(2), RVNS(3) Sets de problemas conocidos. Clientes “clusterizados”, distribuidos randómicamentes y combinaciones de los dos. Ventanas de tiempo estrechas y anchas. Distintas capacidades de vehículos. Comparación con las mejores metaheurísticas presentadas para cada caso de prueba. Algo que quizas se puede considerar como un aspecto negativo es que tienen una gran cantidad de parámetros. Sin embargo las pruebas indicaron que para la mayoría de ellos existe un valor fijo que resulta adecuado para la mayoría de los casos. A pesar de esto existen algunos parámetros que si impactan significativamente en los resultados obtenidos y que dependen del problema y por esto se definieron 3 conjuntos de parámetros (RVNS1...) que solo difieren en los valores de éstos parámetros.

38 Aplicación VRPTW– resultados(1)
%La tabla muestra una comparación de los operadores de búsqueda local sin usar procedimientos de post-optimización. El VND completo obtuvo mejores resultados en todos los problemas de prueba que cualquiera de los procedimientos de mejora considerados individualmente. Además puede observarse que tomando en cuenta los operadores individuales ICROSS es claramente el mejor, ya que ICROSS solo en general es mejor que el VND sin ICROSS.

39 Aplicación VRPTW– resultados(2)
La tabla muestra una comparación entre el uso o no de post-optimización. Puede verse que las mejoras obtenidas son bastante pequeñas y que en algunos casos no se obtuvo ninguna mejora. Sin embargo considerando en poco tiempo que insume esta post-optimización y el logro de 2 nuevas “mejores soluciones conocidas”, se encuentra que el procedimiento de post-optimización es valioso. De los resultados obtenidos se podría concluir que el variar la función objetivo ayuda a escapar del óptimo local.

40 Aplicación VRPTW– resultados(3)
Comparación de los resultados finales de RVNS con los resultados de las mejores metaheurísticas propuestas recientemente. Una observación muy importante es que ningún método domina a todos los otros en todos los problemas. Lo que se busca mostrar con esta comparación es que el método es competitivo con las mejores soluciones de los mejores métodos, incluso optimizando una cantidad limitada de parámetros.

41 Aplicación VRPTW– conclusiones
Es posible desarrollar buenos métodos basados en VNS. Para este problema utilizar vecindades variables resultó ser siempre mejor que cualquiera de las vecindades consideradas por separado. Alterar la función objetivo puede ayudar a escapar de los mínimos locales. El autor concluye que el método presentado es el método existente más efectivo para este problema hasta el momento en que se escribió el paper.

42 Resumen Varias estructuras de vecindad. Metaheurística “genérica”.
Variantes (VND, SVNS y VNDS). Aplicación GCP Metodología para seleccionar estructuras de vecindades. Aplicación VRPTW RVNS. Presentamos una metaheurística basada en la búsqueda local, que tiene como principal diferencia, el poder cambiar la estructura de vecindad que se utiliza durante la búsqueda, con el objetivo de escapar de los óptimos locales. (comentar cada punto).

43 Conclusiones generales
En general, el VNS consigue mejores resultados que la búsqueda local. Las estructuras de vecindades seleccionadas y el orden en que se utilizan inciden fuertemente en los resultados obtenidos. Utilizando información particular del problema, es posible conseguir muy buenas soluciones.

44 Preguntas...


Descargar ppt "Búsqueda en Vecindades Variables (Variable Neighborhood Search - VNS)"

Presentaciones similares


Anuncios Google