8 GYE-BOG 2 4 4
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
: PARÁMETRO VORAZRCL: 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 0,5
. De todos los candidatos, los mejores candidatos son puestos en la lista de candidatos restringida (RCL) de acuerdo al rango y ancho: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.
=min {g(T)/ ∈
}; 5.
=máx { g(T)/ ∈
};6.
∈ /
g(s)≤ [[
]]} 7. Seleccionar aleatoriamente s∈
;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)
1. H={ y pertenece a n(x)/f(y)<f(x)} 2. Mientras H>0 hacer 3. Seleccionar n
∈
H; 4. H={y∈
/f(y)<f(x)} 5. FIN WHILE 6. FIN LOCAL RESULTADOS NUMÉRICOSConsideremos un ejemplo con 5 máquinas y 5 trabajos, con tiempos de procesamiento en horas (incluido el tiempo de Setup) dados en la tabla 1.
TABLA 1 Máquinas Trabajos 1 2 3 4 5 1 2 4 6 8 10 2 3 2 4 5 7 3 4 3 1 4 5 4 3 4 3 8 4 5 3 6 5 7 3
TABLA: Tiempo (en horas) de ejecución de los tr abajos en cada máquina
Primero inicializamos con tiempo cero para todas las máquinas
0 0 0 0 0
Ahora tomamos el trabajo 1 y calculamos el tiempo que tomará todas las máquinas completarlo. Similarmente esto es calculado para todos los trabajos.
Trabajo 1 2 6 12 20 30 Trabajo 2 3 5 9 14 21 Trabajo 3 4 7 8 12 17 Trabajo 4 3 7 10 18 22 Trabajo 5 3 9 14 21 24
MÍNIMO TIEMPO DE COMPLETACIÓN=17
RANGO= MÁX.TIEMPO –MÍN.TIEMPO =30-17=13 Sea
0.5
Ancho=Range x
=13(0.5)=6.5RCL= {Tiempo mínimo de completación, tiempo mín. completación+ Ancho} = {17, 23.5}
Los trabajos que tienen tiempo de completación en el rango RCL son los trabajos 2, 3 y 4.
ELECCIÓN 1: Podemos elegir cualquier trabajo elegible o usando la función de sesgo y probabilidad de seleccionar.
ELECCIÓN 2: Sea “r” el sesgo de los trabajos elegibles asignados por el tiempo de
completación. R [2]=2
R [3]=1 R [4]=3
El sesgo lineal está dado por
Se acumula al fitness del trabajo 2 es 0.5, del trabajo 3 es 1 y el trabajo 4 es 0.3. Prob. Trabajo 2 =
..
0.28
Prob. Trabajo 3 =
.
0.55
Prob. Trabajo 4 =..
0.17
Ahora generamos un número aleatorio “
” talque:Si
≤ 0.28
elegir 2Si 0.28<
≤ 0.83
elegir el trabajo 4, sino Elegiremos el trabajo 3.Supongamos que el trabajo 2 es escogido Trabajo 2 3 5 9 14 21 Trabajo (2 1) 5 9 15 23 33 Trabajo (2 3) 7 10 11 18 26 Trabajo (2 4) 6 10 13 22 26 Trabajo (2 5) 6 12 17 24 27
Máximo tiempo de terminación= 33 Mínimo tiempo de terminación= 26 Rango= 7
Cuando
0.5 Ancho =7(0.5)= 3.5 RCL= {26,29.5}Trabajos {3,4,5} caen en ese rango
Supongamos que el trabajo 3 es escogido
Ahora fijamos el trabajo (23). Tratamos con otras combinaciones y seguimos el mismo procedimiento. Trabajo (2 3) 7 10 11 18 26 Trabajo (2 3 1) 9 13 19 27 37 Trabajo (2 3 4) 10 14 17 26 30 Trabajo (2 3 5) 10 16 21 28 31 Rango= 37 -30 = 7 Con
= 0.5 Ancho= 7*0.5= 3.5 RCL = {30, 33.5)Los trabajos (2 3 4) y (2 3 5) caen en este rango. Supongamos que se elige el trabajo (2 3 4)
Fijamos (2 3 4) y probamos sus combinaciones TRABAJO (2 3 4) 10 14 17 26 30 TRABAJO (2 3 4 1) 12 18 24 34 44 TRABAJO (2 3 4 5) 13 20 25 33 36 Rango= 44-36= 8 Ancho=8*0.5= 4 RCL= {36,40}
El trabajo (2 3 4 5) cae en este rango
Elegimos el trabajo (2 3 4 5) y hacemos combinaciones. TRABAJO (2 3 4 5)
13 20 25 33 36
TRABAJO (2 3 4 5 1)
15 24 31 41 51
La secuencia construida por el algoritmo de GRASP (2 3 4 5 1) con MAKESPAN 51. Luego de esta construcción viene la fase de búsqueda local, que no está explicada aquí.
7.
Búsqueda Tabú
El método tabú es considerado, en general, como la metaheurística más eficiente para resolver problemas de optimización combinatorios. Sin embargo la estructuración de un algoritmo basado en este método puede tener asociada una complejidad grande. Es decir hay que pesar la relación eficiencia complejidad.
Los orígenes de la Búsqueda Tabú (Tabú Search, TS) pueden situarse en diversos trabajos publicados a finales de los 70 (Glover, 1977). Oficialmente, el nombre y la metodología fueron introducidos posteriormente por Fred Glover (1989). Numerosas aplicaciones han aparecido en la literatura, así como artículos y libros para difundir el conocimiento teórico del procedimiento (Glover and Laguna, 1997).
La Búsqueda Tabú es un método metaheurístico que puede utilizarse para resolver problemas de optimización combinatoria, tales como el TSP, utilizando un procedimiento de búsqueda local o por vecindades para moverse iterativamente desde una solución x hacia una solución x en la vecindad de x , hasta satisfacer algún criterio de parada.