Simulated annealing algorithm para Resource Leveling Problem.
C.A. Arias-Falla, J.L. Ponz-Tienda.
RESUMEN
Realizar un control efectivo en la programación de obra ha sido una constante necesidad en los últimos tiempos, para ello se han desarrollado diversas metodologías que tienen distintas funciones objetivo, diferentes restricciones y por lo tanto resultados variables. Una de estas metodologías es Resource Leveling Problem (RLP). Anteriores investigaciones han demostrado que el uso de algoritmos de metaheurísticas para buscar solución a este tipo de problemas es bastante eficiente como por ejemplo Harmony Search. Teniendo en cuenta lo anterior este proyecto de grado desarrolló una herramienta de visualización utilizando el Simulated Anneling Algorithm (SAA) para encontrar una solución de RLP con múltiples recursos. Dicha herramienta de visualización permite tener de forma gráfica los resultados de los problemas RLP, por medio del lenguaje Java. Los resultados con el algoritmo SAA fueron aceptables y muestran una mejora considerable respecto del estado inicial de las librerías, la función objetivo como mejores resultados fue la suma de cuadrados. En el presente documento se expondrá de manera breve las consideraciones tomadas para el desarrollo de este proyecto de grado, y por lo tanto del producto final que es el archivo ejecutable.
Tabla de contenido
1. Programación de construcción ... 3
2. Funciones Objetivo ... 3
3. Librerías de Proyectos ... 3
4. Metaheurística ... 5
5. Archivo ejecutable y visualización ... 7
6. Conclusiones... 8
Referencias ... 10
1. Programación de construcción
Los problemas de programación en construcción (SP) nacen de la necesidad de optimizar proyectos basándose en los recursos. Este tipo de problemas se pueden dividir en dos principalmente. El primero conocido como RCPSP, es un problema regular y tiene como objetivo principal minimizar el makespan del proyecto sin exceder la disponibilidad de recursos, ya que la vital restricción en este problema es que los recursos son limitados. El segundo grupo de problemas es llamado RLP, un tipo no regular, el cual tiene como objetivo nivelar los recursos mejorando la eficiencia en el consumo de recursos y reducir las variaciones significativas sin afectar la ruta crítica y el makespan del proyecto. Lo anterior, concluye que el RLP busca homogenizar el consumo de recursos, ya que, las variaciones en el uso de estos tienden a ser costosa e ineficiente en obra. (El-Rayes, Jun, 2009) (Neumann, Zimmermann, 2000) (Ponz, Yepes, Pellicer, Moreno, 2013)
Este proyecto de grado busca encontrar solución a problemas RLP, teniendo en cuenta que las variaciones en obra conocidas como fluctuaciones son poco prácticas, ineficientes y costosas, de igual manera, para dar solución a los problemas, un factor clave deberá ser aumentar la eficiencia de la secuenciación del proyecto para finalmente cumplir los objetivos del proyecto (Damci, Arditi, Polat, 2013) (El-Rayes, Jun, 2009) (Koualinas, Anagnostopoulos, 2013).
Las consideraciones más importantes que se deben valorar para poder buscar solución a los problemas RLP son las siguientes:
• La secuenciación entre actividades debe ser en todos los casos de relaciones final-comienzo.
• Las actividades que se encuentre dentro de la ruta crítica no deben ser modificadas, esto con el fin de no afectar la duración del proyecto (Makespan).
• El objetivo primordial es reducir las fluctuaciones en el consumo de recursos. Es decir, nivelar los recursos.
2. Funciones Objetivo
Con el fin de medir la eficiencia de la solución encontrada en la literatura, se han propuesto diversas funciones objetivo. Para el desarrollo de este proyecto de grado se tuvieron en cuenta 4 principalmente:
• Suma de cuadrados (SSQR): esta función tiene como objetivo minimizar la varianza muestral en el consumo de recursos dando una forma lo más uniforme a la distribución de recursos.
• Suma de diferencias de los recursos diarios consecutivos (SDCDR): tiene como objetivo reducir la suma de variaciones de recursos en el tiempo.
• Suma de cuadrados de diferencias de recursos diarios consecutivos (SSDCDR): es una evolución de (SDCDR) y trata de ofrecer una forma más plana de la nivelación de recursos.
• Resource Idle Days and Maximum Resource Demand (RID-MRD): busca cuantificar días no productivos causados por fluctuaciones y al mismo tiempo lo combina con cuales son los días de máxima de demanda de recursos, siendo de esta manera una función multiobjetivo.
3. Librerías de Proyectos
Para el desarrollo de este proyecto de grado y evaluación del archivo ejecutable se utilizaron librerías de proyectos de “Project Scheduling Problem Library (PSPLIB)”. Los archivos que se
descargan de PSLIB son instancias que se diferencian en la cantidad de actividades que tiene cada una j30 (30 actividades), j60 (60 actividades), j120 (120 actividades). Ahora bien, estas instancias son .RCP que se pueden leer como un archivo de texto y tienen la siguiente estructura:
Ilustración 1 Estructura de librerías de proyectos (2)
• La primera columna de la primera fila hace referencia a la cantidad total de actividades que va a leer el modelo. Acá es relevante mencionar que se deben utilizar dos actividades que no tendrán duración ni uso de recursos que se conocerán como dummy inicial y dummy final.
• La segunda columna de la primera fila hace referencia a la cantidad de tipos de recursos que se pueden consumir en el proyecto.
• La segunda fila contiene en cada una de las columnas la disponibilidad de cada recurso en el periodo de tiempo. En la primera columna serían los recursos disponibles para el tipo de recursos 1, que en este caso sería el de cuadrillas exteriores y acabados. Así sucesivamente con los demás recursos.
• A partir de la tercera fila se encuentran los parámetros de las actividades. Dentro de los cuales, la primera columna se percibe la duración de la actividad, las siguientes cuatro columnas (2 a 5) son la necesidad de cada tipo de recurso para cada actividad.
• La sexta columna de la fila tres en adelante es la cantidad de actividades que son sucesoras de la actividad actual.
• Finalmente, las siguientes columnas se mencionan cuáles son las actividades sucesoras a la actividad actual.
4. Metaheurística
Las metaheurísticas son metodologías que se utilizan para resolver problemas computacionales complejos que no tienen solución a través de heurísticas definidas, estos algoritmos avanzados se utilizan con problemas que tienen como objetivo encontrar el óptimo para una función objetivo y no tienen una única solución, así mismo, estos algoritmos son usualmente utilizados para realizar procesos de optimización combinatoria. Ahora bien, muchas de estas metaheurísticas son basadas o inspiradas en hechos de la naturaleza o procesos industrializados que en la realidad han dado buenos resultados.
Las metaheurísticas usualmente se dividen en 4 tipos:
• Metaheurísticas de relajación: Este tipo de procedimientos lo que busca es hacer modificaciones al modelo original para que la solución del problema inicial sea paulatinamente más fácil de encontrar. A este proceso de modificación del modelo se conoce como relajación.
• Metaheurísticas constructivas: Estos procedimientos buscan obtener soluciones a partir de análisis y selección controlada de los parámetros que forman parte del modelo inicial.
• Metaheurísticas de búsqueda: Son procedimientos que usan movimientos para recorrer el espacio de posibles soluciones y conseguir que las estructuras de entorno asociadas tengas modificaciones.
• Metaheurísticas evolutivas: Estos algoritmos están basados en procedimientos que toman conjuntos de soluciones que pueden evolucionar dentro del espacio de soluciones.
Ilustración 2 Tipo de metaheurísticas (Caparrini, 2018).
En consecuencia, para el presente proyecto de grado se escogió el algoritmo de la metaheurística Simulated Annealing, puesto que este ha ofrecido unas soluciones óptimas a diversos procesos de optimización en otros aspectos computacionales. Es relevante mencionar que, esta es un metaheurística de búsqueda que permite encontrar soluciones a problemas de optimización global.
Ahora bien, este algoritmo está basado en el recocido del acero o cerámicas, lo cual buscar calentar el material hasta una temperatura determinada y enfriarlo lentamente para poder alterar sus propiedades físicas. Por otra parte, computacionalmente lo que se realiza en cada iteración es que se evalúan los vecinos del estado inicial y se toma la decisión de moverse a un nuevo estado o quedarse en el estado actual. Este proceso se repite continuamente evaluando diferentes estados en cada iteración hasta que se cumplan la cantidad total de iteraciones definidas en este caso.
Por otro lado, para poder realizar el proceso iterativo se debe definir la temperatura inicial que debe ser muy alta y para las simulaciones se definió por defecto como 100, así mismo, se debe definir una temperatura final que tradicionalmente es 0, pero para este caso específico fue definida como 1. A medida que se va disminuyendo la temperatura y teniendo en cuenta el parámetro Alpha de probabilidad se van a explorando las soluciones que existen entre los diferentes estados.
Para el caso puntual de RLP, se calientan el estado inicial con la secuenciación actual de las actividades, dentro del estado inicial también se encuentra el uso de recursos que consume cada una de las actividades a lo largo del tiempo. Luego el estado se empieza a enfriar paulatinamente hasta que la solución sea lo óptimo en las iteraciones.
5. Archivo ejecutable y visualización
El archivo ejecutable se realizó con lenguaje Java a través de la plataforma eclipse cuya visualización tiene 3 paneles:
• Panel de datos: se encuentra ubicada en la zona superior derecha y se puedan visualizar las duraciones, los tiempos de inicio y final tanto temprano como tardíos, una columna de verificación de ruta crítica y el uso de cada tipo de recursos.
• Panel de valores: se encuentra ubicado en la zona inferior derecha y se ven los valores del estado inicial como la cantidad de actividad, las actividades de la ruta crítica, los trabajos secuenciados, la función objetivo, el valor inicial de la función objetivo, el mejor valor actual, la mejora después la simulación.
• Panel de visualización: en el lado derecho se encuentra el diagrama de Gantt y los histogramas de recursos esto con el fin de ver gráficamente los resultados y el estado actuales del problema.
A continuación, se muestran tomas de como se ve el estado inicial y el final del programa con una de las instancias presentes en las librerías de proyectos:
Ilustración 3 Estado inicial instancia J30_1
Ilustración 4 Estado final instancia J30_1
6. Conclusiones
Es necesario realizar un estudio exhaustivo por medio de comparaciones con otros estudios similares, por ejemplo “Improved Adaptive Harmony Search algorithm for the Resource Leveling Problem with minimal lags”, el cual ofrece una serie de resultados amplios para los distintos tipos de proyectos encontrados en PSPLIB a través de la metaheurística armónica que simula la improvisación de los cantantes de jazz (Ponz, Salcedo, Pellicer, Benlloch, 2017). Sin embargo, de manera inicial se muestran los siguientes comparativos con los encontrados por IAHS para la función de SSQR.
Tabla 1 Comparativo Inicial entre IAHS – RLP para SSQR
Como se puede evidenciar en la anterior tabla, los resultados encontrados con SAA son similares a los encontrados por IAHS, sin embargo, la mejora con SAA sigue siendo menor que con IAHS. De igual manera, se encontró que la variación entre los resultados que arrojaba la SAA varían en un orden de ±5% por cada simulación.
Estado Inicial Estado Final Mejora Estado Inicial Estado Final Mejora
j301_1 11.247 7.497 33,34% 11.247 7.783 30,80%
j301_2 11.977 8.811 26,43% 11.977 9.097 24,05%
j301_3 8.545 6.043 29,28% 8.545 6.647 22,21%
j301_4 17.846 11.542 35,32% 17.846 11.750 34,16%
j301_5 8.061 5.661 29,77% 8.061 5.689 29,43%
IAHS-RLP SAA-RLP
Instancia
Para finalizar es válido mencionar, que el desarrollo de este ejecutable es un buen paso para posibles desarrollos más adelante con otras metaheurísticas que permitan encontrar buenas soluciones a los problemas de programación de obra no únicamente del tipo RLP si no también RCPSP.
A continuación, se encontrarán dos links, el primero es para descargar el archivo ejecutable del modelo que se realizó en este proyecto de grado y que utiliza la metaheurística SA para buscar solución a problemas RLP. El segundo link es una carpeta comprimida donde están las librerías que se utilizaron para probar el modelo y realizar las simulaciones.
Archivo Ejecutable: https://bit.ly/37aDFqH Carpeta Comprimida: https://bit.ly/37aEIqD
Referencias
A. Damci, D. Arditi, G. Polat, Resource leveling in line-of-balance scheduling, Comput. Aided Civ.
Infrastruct. Eng. 28 (2013) 679–692, http://dx.doi.org/10.1111/mice.12038.
Caparrini, F., & Work, W. (2018). Metaheurísticas para Búsqueda y Optimización (Parte 1) - Fernando Sancho Caparrini. Retrieved 19 January 2020, from http://www.cs.us.es/~fsancho/?e=207
E. Demeulemeester, Minimizing resource availability costs in time-limited project networks, Manag.
Sci. 41 (10) (1995) 1590–1598, http://dx.doi.org/10.1287/mnsc.41.10.1590.
El-Rayes, D.H. Jun, Optimizing resource leveling in construction projects, J. Constr.Eng. Manag. 135 (11) (2009) 1172–1180, http://dx.doi.org/10.1061/(ASCE)CO.1943-7862.0000097
G.K. Koulinas, K.P. Anagnostopoulos, A new tabu search-based hyper-heuristic algorithm for solving construction leveling problems with limited resource availabilities,Autom. Constr. 31 (2013) 169–
175, http://dx.doi.org/10.1016/j.autcon.2012.11.002
K. Neumann, J. Zimmermann, Procedures for resource leveling and net present value problems in project schedulingwith general temporal and resource constraints, Eur. J. Oper. Res. 127 (2) (2000) 425–443.
J.L. Ponz-Tienda, V. Yepes, E. Pellicer, J. Moreno-Flores, The resource leveling problem with multiple resources, Autom. Constr. 29 (2013) 161–172, http://dx.doi.org/10.1016/j.autcon.2012.10.003 J.L. Ponz-Tienda, A. Salcedo-Bernal, E. Pellicer, J. Benlloch-Marco Improved Adaptive Harmony Search algorithm for the Resource Leveling Problem with minimal lags, https://www.sciencedirect.com/science/article/abs/pii/S0926580517300596