8aker [1] definió en forma sencilla el scheduling como el ... · 4.1.3 reglas de dominación. 28 ....
TRANSCRIPT
. ~ - ,"'....
DESARROLLO DE UNA HERRAMIENTA ANALiTICA
HEURíSTICA PARA RESOLVER EL PROBLEMA DE LA
AMACiÓN DE TAREAS (SCHEDULING) ~~
..~ U ".\TI¡ <1n....O N ....Cl0 NAL DE C OLOMBIA -' 51;1».' -.tt'.nHIJH
DEPTO. DE BIBLIOTECAS BIBLIOTECA MINAS
LUIS FERNANDO MORENO VELÁSQUEZ
INFORME DE AÑO SABÁTICO
UNIVERSIDAD NACIONAL DE COlO~BIA - SEDE MEDEllíN
MEDEllíN
MARZO DE 2005
11':'-v. ",¡i< ~~..:.;;........
U NlVER.SlOAD N ACIONAL DE COLOMBIA Sl:. Il't ~Wl )~LLtH
DEPTO. DE BIBLIOtECAS BIBLIOTECA MINAS
CONTENIDO
pág
INTRODUCCiÓN 1
1. DESCRIPCiÓN Y REPRESENTACiÓN DEL PROBLEMA 3
2. FORMAS DE CLASIFICAR Y RESOLVER EL PROBLEMA 6
DE SCHEDULlNG
3. ESTADO DEL ARTE 10
3.1 ALGORITMOS EXACTOS 10
3.2 ALGORITMOS HEURíSTICOS 18
4. TÉCNICAS A UTILIZAR 21
4.1 CONCEPTOS GENERALES 21
4.1.1 Cotas inferiores. 21
4.1.2 La búsqueda local. 25
4.1.3 Reglas de dominación. 28
4.2 ENFRIAMIENTO SIMULADO (SA) 30
4.2.1 Criterio para la generación de cada secuencia de
actividades (aleatoria o determinística). 36
4.2.2 Forma en que se genera un vecindario para cada secuencia 34
4.2.3 Valor de los parámetros de entrada. 34
UNIVERSIDAD NACIONAL DE COLOMBIA
DEPTO. DE BIBLIOTECAS BIBLIOTECA MINAS
pág
4.3. BÚSQUEDA TABÚ (TS) 35
4.3.1 Criterio para la generación de cada secuencia
de actividades (aleatoria o determinística). 37
4.3.2 Forma en que se genera un vecindario para cada secuencia 38
4.3.3 Valor de los parámetros de entrada 38
4.4 ALGORITMO EXACTO MODIFICADO (AEM) 40
4.5 UN ALGORITMO HEURíSTICO PARA RESOLVER EL RCPSP 43
5. EJEMPLO NUMÉRICO 50
5.1 DESARROLLO DEL ALGORITMO CON EL EJEMPLO NUMÉRICO 53
6. EVALUACiÓN Y ANÁLISIS DE RESULTADOS 57
6.1 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA) 59
6.2 RESULTADOS DE LA BÚSQUEDA TABÚ (TS) 60
6.3 RESULTADOS DEL ALGORITMO HEURíSTICO MODIFICADO
(AEM) 61
6.4 INTERFAZ DE EJECUCiÓN 64
6.5 ANÁLISIS COMPARATIVO 67
7. CONCLUSIONES 69
pág
8. TRABAJO FUTURO 72
9. PROCESO DE SOCIALIZACiÓN 73
BIBLIOGRAFíA 75
ANEXOS 77
ANEXO A MENÚ DE EJECUCiÓN DEL AEM 78
ANEXO B SEUDOCÓDIGO DEL ALGORITMO AEM 87
INTRODUCCiÓN
8aker [1] definió en forma sencilla el scheduling como el problema de asignar recursos
escasos a actividades durante un intervalo de tiempo. De esta definición han surgido
variaciones tales como invertir el orden de la asignación (actividades a recursos en
lugar de recursos a actividades) y suprimir la palabra escasos, debido a que en
realidad los recursos no tienen que ser escasos para realizar la asignación . Todas
estas definiciones dan una idea muy general del problema que se trata de resolver y
que, así sea sin plantearlo formalmente, lo viene resolviendo la humanidad desde hace
miles de años. Además, aunque ese problema se encuentra en organizaciones de
gran tamaño, tiene pleno sentido a nivel de hogar, y en general en muchas de las
actividades cotidianas, familiares y rutinarias del hombre.
Esta definición, aparentemente tan sencilla y meramente cualitativa, da origen a
definiciones, formalizaciones y discusiones de tipo matemático cuando se trata de
resolver el problema general del scheduling, el cual se vuelve un problema muy
complejo en la medida en que crece su tamaño y cuando se descubre la imposibilidad
matemática de encontrar un algoritmo general que resuelva en forma práctica el
problema, a pesar de la potencia de los computadores actuales.
Teóricamente, sería fácil plantear un algoritmo que resolviera el problema más general
de sCheduling , el cual si se ejecutara en un computador al que se le diera un tiempo no
limitado para encontrar la solución, la encontraría o detectaría su no existencia (no
factibilidad) en caso de no haberla. Pero por tratarse de un problema NP-hard obtener
la solución en tiempos razonables, aún para problemas de tamaño mediano, es
prácticamente imposible.
Por lo tanto , toda la discusión sobre el scheduling se centra en los algoritmos prácticos
que cada autor, desde su enfoque, plantea como eficientes.
En este trabajo se presenta un enfoque basado en un algoritmo determinístico (exacto)
al cual se le introducen algunas variaciones y aproximaciones que lo vuelven
heurístico, que constituyen la originalidad del trabajo, a la vez que se presenta también
el desarrollo de otros dos algoritmos de los más utilizados para la solución del
problema del scheduling: la búsqueda tabú (tabu search) y el enfriamiento simulado
(simulated annealing) y se realizan comparaciones entre los tres enfoques para medir
su eficiencia,
Con la descripción detallada de los algoritmos que se realiza a continuación y los
archivos y programas anexos en medios digitales se cumple con los objetivos
generales del trabajo que dicen textualmente "Desarrollar un algoritmo híbrido:
analítico heurístico para resolver algunos problemas de programación de tareas y
construir un prototipo de software que implemente el algoritmo desarrollado,
2
1. DESCRIPCiÓN Y REPRESENTACiÓN DEL PROBLEMA
Existen numerosas formas de plantear y resolver el problema de scheduling , las
cuales van desde casos muy particulares como Open Shop, Job Shop, Flow Shop y
Permutation Flow Shop, hasta formas más generales como el RCPSP.
A lo largo de este trabajo las palabras trabajo, actividad , tarea , job se consideran
sinónimas, aunque en otros contextos diferentes puedan no serlo.
La definición formal del problema que se aborda en este trabajo dada por Le Pape
(1994) en [2] se presenta a continuación.
Dado un conjunto de m recursos (R1 ... Rm) con capacidades dadas (C 1 ...Cm), un
conjunto de n actividades (A1 ...An) con duraciones dadas (d 1 . ..dn), un conjunto de
restricciones temporales que imponen precedencias y demoras entre los tiempos de
inicio y de terminación de las actividades, y un conjunto de requerimientos de los
recursos, que especifican para cada i y cada j, 1 ~ i ~ m, 1 ~ j ~ n, la cantidad q¡j del
recurso R¡ necesaria para la ejecución de la actividad Aj, el objetivo del scheduling es:
"asignar tiempos de inicio y de terminación a las actividades, de modo que se
satisfagan las restricciones y se minimice la duración total del proyecto".
Esta definición corresponde al problema RCPSP. Su forma es bastante general , ya
que comprende por ejemplo los cuatro casos particulares mencionados arriba. Sin
embargo no es la más general de todas, ya que pueden agregarse elementos
adicionales que hacen el problema mucho más complejo, tales como ventanas
temporales para la realización de las actividades, posibilidades disyuntivas, es decir
que las actividades pueden realizarse de distintos modos (problema multimodal) cada
uno de las cuales consume cantidades diferentes de recursos (este caso es
3
notablemente más difícil, pues es bien sabido en matemáticas y en investigación de
operaciones la dificultad adicional cuando se manejan restricciones de tipo "o",
restricciones disyuntivas, adicionalmente a las tradicionales restricciones de tipo "y",
restricciones que deben satisfacerse todas. También existen generalizaciones
mayores cuando se contemplan los casos de posibilidades de interrupción de las
actividades (non-preemption), manejo de recursos no renovables (que disminuyen con
el tiempo a medida que éste transcurre y que nos llevan a la consideración de
agotamiento y de inventarios, manejo de costos y otras generalizaciones, de las
cuales sólo se mencionan algunas.
Específicamente y puesto de otro modo, el problema objeto de este trabajo, es el
siguiente:
Un conjunto de trabajos tienen que ser programados (scheduled) sujeto a
restricciones temporales y de recursos . Las restricciones temporales se expresan
mediante relaciones de precedencia entre pares de trabajos que indican que un
trabajo no puede empezar antes de la terminación de otros trabajos denominados los
predecesores . Mientras está en proceso cada trabajo requiere una cierta cantidad de
recursos renovables (e.g . máquinas o personal) y la disponibilidad de estos recursos
es limitada. Una solución al problema (un schedule) se denomina factible por
precedencias (o por restricciones temporales) si respeta todas las restricciones
temporales y factible por recursos si respeta todas las restricciones de recursos (nunca
el conjunto de trabajos que están en ejecución en un punto del tiempo excede la
capacidad de ninguno de los recursos). El objetivo es encontrar un schedule factible
por precedencias y por recursos que minimice la duración total del proyecto
(makespan). El schedule como se definió antes consiste en asignar tiempos de inicio
y de terminación a los trabajos, aunque es suficiente con determinar los tiempos de
inicio, pues los de terminación se pueden obtener a partir de los de inicio y la duración
de los trabajos
En adelante se hace referencia al problema objeto de este trabajo como el problema
RCPSP (Resource-Constrained Project Scheduling Problem) tal como se describió en
el párrafo anterior.
4
A pesar de las variantes más complejas y generales descritas anteriormente, el
problema RCPSP tal como se presenta sigue siendo de mucho interés por parte de los
investigadores del scheduling, ya que por ser del tipo NP-hard no se conocen
algoritmos eficientes para problemas de tamaño moderado. Así , por ejemplo, para
muchos problemas de 60 actividades y 4 recursos no se conoce la solución óptima y
un problema de 60 actividades ya es un problema que se puede considerar pequeño
para muchas empresas de la vida real. De acuerdo con esto, el problema es relevante
tanto desde el punto de vista teórico como desde el punto de vista práctico.
En la determinación del grado de dificultad del problema es más crítico el número de
actividades que el de recursos, ya que son las actividades las que dan origen a la
explosión combinatoria del problema.
5
2. FORMAS DE CLASIFICAR Y RESOLVER EL PROBLEMAS DE SCHEDULlNG
Dado que existen numerosas formas de plantear y resolver el problema del scheduling
se realiza a continuación una descripción abreviada de algunos de los criterios de
clasificación más utilizados en la literatura[3]
Según el enfoque. Métodos analíticos o de investigación operativa como la
programación de enteros, el método de ramal y límite y programación dinámica ;
métodos de inteligencia artificial tales como problemas de satisfacción de
restricciones, búsqueda tabú, enfriamiento o temple simulado, algoritmos genéticos,
colonia de hormigas y GRASP, y métodos más especializados como técnicas que
utilizan el concepto de energía, blackboard y market models.
Según la existencia de función objetivo. En caso de no existir función objetivo, se trata
de encontrar alguna solución que satisfaga todas las restricciones .
Según la función de optimización o Función Objetivo (cuando existe) . Minimización del
tiempo total de finalización del scheduling o makespan (la más utilizada), minimización
del tiempo promedio de todos los trabajos, minimización de los inventarios en proceso,
maximización del porcentaje de utilización de los recursos, minimización de alguna
función de costos (que puede ser variable según los tipos de costo que se quieran
involucrar en el proceso de optimización).
Según la intervención de un experto. Los problemas se pueden resolver con la
intervención de un experto o por un proceso totalmente automático mediante un
computador.
6
Según la forma de recorrer el árbol en el proceso de solución (cuando se utiliza
estructura de árbol) . El árbol que va constituyendo la solución al problema de
scheduling se puede recorrer de dos maneras básicas, en profundidad o en anchura,
las cuales pueden ser mejoradas mediante técnicas heurísticas con el fin de podar
(evitar recorrer) algunas de las soluciones. El método de construcción de un árbol se
utiliza especialmente cuando se hace una enumeración exhaustiva .
Según la regla de despacho (Dispatching). Para la forma de escoger la siguiente
operación a la que se le asigna un recurso . Se conocen en la literatura más de 100
reglas, siendo las siguientes algunas de las más importantes:
• SPT: Shortest Processing Time. Tiempo de procesamiento más corto .
• LPT: Longest Processing Time. Tiempo de procesamiento mas largo. Nótese
como esta regla y la anterior son opuestas. Sin embargo, ambas pueden utilizarse
según los objetivos buscados y sin que ninguna de las dos domine a la otra.
• EDD: Earliest Due Date. Fecha de entrega más temprana.
• Min Slack: Mínimo tiempo de holgura , o sea la diferencia entre la fecha de entrega
y el tiempo restante de proceso.
• FIFO: Primero en llegar primero en ser despachado.
• Mínimo cociente entre tiempo de proceso y suma de todos los tiempos de proceso.
• Número más pequeño de operaciones pendientes.
Aunque cada una de estas reglas busca un objetivo definido, de ninguna de ellas
puede decirse que sea superior a las demás, ni que la aplicación de ellas garantice la
solución óptima. Sin embargo, según Hastings [4] , estas reglas sí se pueden
categorízar como las que tienen en cuenta solo una operación y las que consideran la
totalidad de las operaciones.
También existen formas de combinar reglas de manera estática (ponderaciones) o
dinámíca (según el estado de la solución) .
Para el caso del presente trabajo se consideran dos clasificaciones importantes ya que
una de las técnicas utilizadas recurre a algoritmos heurísticos paralelos que
7
construyen la solución parcialmente paso a paso, por lo que se debe justificar su
utilización
Estas clasificaciones son:
• Tipo de algoritmo: exacto o heurístico.
• Forma de seleccionar las actividades (esquema): serial o paralelo.
Los algoritmos exactos garantizan la solución óptima, en tanto que los heurísticos no
la garantizan, aunque pueden llegar a ella , con bastante probabilidad, en la medida en
que el algoritmo heurístico sea eficiente y se le de tiempo suficiente (o
equivalentemente número de iteraciones) para recorrer el espacio de soluciones.
En cuanto a los esquemas serial y paralelo, descritos en [5], se puede decir que cada
uno de los dos esquemas está asociado con una lista de prioridad que determina el
orden en que se consideran los trabajos para su ejecución .
De un trabajo se dice que está disponible (o elegible) en un punto t del tiempo si todos
sus predecesores han sido terminados en el punto t del tiempo.
A continuación se definen las características de los dos esquemas.
Esquema paralelo: toma en consideración el tiempo (usualmente se empieza en t=O o
t=1) . En cualquier tiempo t se puede iniciar el proceso de varios trabajos, de acuerdo
con el orden definido en la lista L de prioridades. Si no se pueden iniciar ningún trabajo
elegible en el tiempo t, entonces se mueve t hasta el siguiente punto de terminación de
alguno de los trabajos que están activos (en ejecución). Aunque se podría pensar que
basta con incrementar el tiempo 1 unidad , se ve claramente, que mientras no se
produzca la terminación de algún trabajo ninguno de los elegibles podría empezar,
puesto que si lo pudiera en t+1, entonces también hubiera podido iniciarse en t, ya que
las condiciones de disponibilidad de recursos no han cambiado entre t y t+1. Por esa
razón sólo se considera el siguiente punto en el tiempo donde se produzca la
8
terminación de un trabajo . De esta forma se va avanzando en el tiempo con la
programación de los trabajos. El esquema se denomina paralelo porque en un punto
del tiempo se pueden iniciar varios trabajos simultáneamente.
Esquema serial : toma en consideración los trabajos uno por uno. Del orden dado por
la lista de elegibles se toma un trabajo y se inicia tan pronto como sea posible con
respecto a los trabajos ya programados, terminados o no, hasta el momento. La lista
de elegibles se determina, al igual que en el caso anterior, teniendo en cuenta las
relaciones de precedencia, es decir son elegibles aquellos cuyos predecesores ya han
sido terminados. Aunque a primera vista pareciera ser un esquema más ineficiente,
puesto que los trabajos se inician uno por uno, sin embargo tiene la ventaja sobre el
esquema paralelo de que un trabajo se puede iniciar en un punto hacia atrás en el
tiempo, dado que haya la disponibilidad de recursos y que su duración lo permita.
Existen algoritmos que utilizan los dos esquemas, sin embargo en el presente trabajo
aunque se consideran tres algoritmos diferentes, el tercero de ellos que constituye el
núcleo del trabajo ya que es el aporte principal se utiliza el esquema paralelo, aunque
se le introducen variantes que describiremos más adelante para determinar de la lista
de trabajos elegibles el subconjunto de los realmente elegidos. Cuando no todos los
elegibles se pueden iniciar (schedule) se dice que se ha producido un conflicto de
recursos y se debe utilizar algún criterio pa~a seleccionar sólo algunos de ellos.
Resumiendo, de las diferentes formas de resolver el problema de scheduling , en el
presente trabajo se opta por la exploración de dos métodos heurísticos tradicionales:
Búsqueda Tabú y Enfriamiento Simulado y un tercer método también heurístico, pero
basado en la simplificación de un algoritmo analítico exacto, que como dijimos
anteriormente se describe luego con más detalle. Este tercer método se denomina
AEM (Algoritmo Heurístico Modificado). Se realizan varias ejecuciones utilizando cada
uno de estos métodos y se procede con un análisis comparativo de los resultados
obtenidos en cada uno de ellos.
9
3. ESTADO DEL ARTE
Como el AEM del presente trabajo toma como base un algoritmo exacto para
convertirlo por simplificaciones en un algoritmo heurístico, se hará un recuento de los
algoritmos exactos y posteriormente de los heurísticos.
3.1 ALGORITMOS EXACTOS
Algunos de los algoritmos exactos se encuentran descritos en Pritsker et al (1969) [6] ,
Balas (1970) [7], Davies and Heidorn (1971) [8], Talbot y Patterson (1978) [9],
Christofides et al (1987) [10] Y muchos otros.
Para el presente trabajo es de especial importancia el algoritmo desarrollado por
Demeulemeester y Herroelen (1992) [11], porque aunque el algoritmo exacto utilizado
como base no es el de estos dos autores se utiliza una estrategia de árbol similar a la
de ellos.
Sin embargo antes de mencionar el algoritmo de Demeulemeester y Herroelen se hará
una descripción de dos estrategias para tratar de resolver el RCPSP en forma exacta
por medio de programación entera, es decir algoritmos que garantizan el óptimo, que
como ya se ha mencionado sólo son útiles en la práctica para problemas pequeños. A
pesar de esta limitación, uno de los aspectos importantes de estos algoritmos es que
se pueden utilizar para derivar de ellos, por medio de simplificaciones y
modificaciones, algoritmos heurísticos, que aunque pierden la característica de
garantizar el óptimo se acercan a él, como se muestra en los resultados comparativos
expuestos al final del trabajo, en tiempos notablemente inferiores al de los algoritmos
exactos.
Existen otros algoritmos que garantizan el óptimo como la programación dinámica ,
pero no se abordan en este trabajo.
10
La forma simple tradicional de plantear el problema RCPSP que se describió en el
numeral 2 mediante programación entera es:
(1 )
Is¡
s.a. L ~¡t = 1 (2)
t=es¡
Is¡ Is¡
L t*~t - L t*f,¡t ;:: d¡ (i ,j) E H (3)
t=es¡ t=es¡
L rik L ~¡t sbk t=O.. , Tmax; k = 1 .. , m (4)
iEX T=a(t,i)
~j t E (0,1) iEX (5)
donde: Is¡ = late start de la actividad i (tiempo de inicio más tardío)
es¡ = early start de la actividad i (tiempo de inicio más temprano)
~¡ t = variable binaria =1 si y sólo si la actividad 1 empieza al principio del
período t
X = conjunto de actividades
H = conjunto (i ,j) de precedencias , donde (i ,j) significa que i es predecesor de j
r¡k = cantidad que la actividad i consume del recurso k durante su ejecución
11
a(t,i) =max(O, t-d¡ + 1)
bk =disponibilidad del recurso k (constante durante la duración del proyecto)
En este planteamiento siempre se consideran dos actividades artificiales (dummy jobs)
que son la primera y la última (1 y n) con duración cero y con consumo cero de todos
los recursos y que se utilizan con el fin de que la red que representa el proyecto tenga
un solo punto de inicio y un solo punto de terminación .
La ecuación (1) es la funcion objetivo: makespan o duración total del proyecto.
La ecuación (2) representan la restricciones de no interrupción (non-preemption) , es
decir las que obligan a que una actividad debe continuarse hasta su terminación una
vez iniciada.
Las ecuaciones (3) representan las restricciones de precedencia : una actividad debe
iniciar después de terminadas todas las predecesoras
Las ecuaciones (4) representan las restricciones de recursos : en cualquier tiempo la
cantidad de recursos utilizados por todas las actividades en ejecución no debe superar
la disponibilidad del recurso .
Aunque es fácil la solución del problema mediante cualquier programa de
programación entera como CPLEX, lingo, lindo, etc y también lo es la generación
automática de todas las restricciones y la función objetivo en función de las
precedencias, los consumos de los recursos y sus disponibilidades, es notorio el
deterioro del tiempo de ejecución cuando se incrementa el número de actividades.
Cabe recordar que la dificultad del problema está más asociada con el número de
actividades que con el número de recursos, pues son las actividades las que dan
origen a la explosión combinatoria del problema.
12
Aunque las restricciones (2), (3) Y (4) son fáciles de plantear, como se mencionó en el
párrafo anterior, hay que tener presente que en cada conjunto de ellas pueden existir
cientos y hasta miles para problemas no muy grandes. Por ello las versiones poco
potentes de lingo y lindo no son en la práctica muy útiles para la solución del
problema, desde el punto de vista de capacidad del paquete, adicional al ya
mencionado problema del tiempo de ejecución.
El planteamiento de programación entera entonces es útil para entender en que
consiste el problema y obtener conclusiones teóricas . Sin embargo existe una
característica del planteamiento de programación entera adicional, esa sí de mucha
utilidad , y es el hecho de que permite la obtención de cotas inferiores, mediante la
técnica de relajación (ignorar algunas restricciones: usualmente las difíciles).
Sobre la utilidad de una cota inferior se hablará más adelante, pero para la obtención
de cotas existe un planteamiento de programación entera del problema mucho más
complejo matemáticamente, pero de mayor utilidad para tal fin descrita por Mingozzi et
al en [12]
El nuevo del RCPSP hecho por Mingozzi aparece a continuación .
Antes de plantear el problema se define una solución al RCPSP como una secuencia
de subconjuntos de actividades S = (RI1 , R12 , • . • , RII ') donde t* es el tiempo de
terminación del proyecto y R It E S corresponde a un conjunto de actividades en
progreso en el tiempo t que satisfacen las siguientes dos condiciones
i) Se satisfacen las restricciones de recursos
ii) No existen relaciones de precedencia entre cada par i,j con i<j , es decir las
actividades del conjunto se pueden realizar simultáneamente.
Se denomina subconjunto factible cualquier subconjunto R de actividades de X'
13
Con estas definiciones el planteamiento del problema RCPSP es el siguiente:
(6)
t=esn
s.a.
Is¡
L [L Yltl =d¡ iEX' (7)
IER¡ t=es¡
L YI::::1 t=1 .. . . Tmax (8)
IER
~¡I ~ L YI - L YI-1 iE X'. t= es¡ .. .. Is¡ (9)
IER¡ IER¡
Is¡
iEX' (10)
t= es¡
ISj Is¡
L ~j l - L ~I ~ d¡ (i.j) E H (11 )
t= eSj t= es¡
YIt E (0,1) IER . t=1 ... . Tmax (12)
~¡I E (0.1) iEX. t= es¡ .... Is¡ (13)
14