• No se han encontrado resultados

Manejo de la Robustez en problemas de secuenciación de tareas (scheduling)

N/A
N/A
Protected

Academic year: 2020

Share "Manejo de la Robustez en problemas de secuenciación de tareas (scheduling)"

Copied!
73
0
0

Texto completo

(1)Universidad Central “Marta Abreu” de Las Villas Facultad de Matemática, Física y Computación. Trabajo para optar por el Título de Licenciado en Ciencia de la Computación. Manejo de la Robustez en problemas de secuenciación de tareas (scheduling).. Autor: Ana Li Oña García Tutores: Dra. Yailen Martínez Jiménez MSc. Beatriz M. Méndez Hernández. 2014.

(2) Hago constar que el presente trabajo fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de los estudios de la especialidad de Ciencia de la Computación, autorizando a que el mismo sea utilizado por la institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos ni publicado sin la autorización de la Universidad.. _________________ Firma del autor. Los abajo firmantes, certificamos que el presente trabajo ha sido realizado según acuerdos de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. ________________. ___________________. Firma del tutor. Firma del jefe del Laboratorio.

(3) Dedicatoria A mis padres, mi guía y estímulo en cada paso que doy..

(4) AGRADECIMIENTOS Es algo difícil tratar de agradecer a todas aquellas personas que me han ayudado de alguna forma u otra en la realización de esta tesis, pero trataré de mencionarlos a todos. -. Agradezco a mis padres que sin ellos no pudiera estar donde estoy hoy, esos que han sido mi apoyo, el hombro en el que llorar una mala nota o donde festejar un buen resultado.. -. A mi abuela, esa persona que aunque ya no está conmigo fue indispensable para mí a lo largo de la carrera.. -. Al resto de mi familia por aguantar tantos años de viajes.. -. A mi vida precioso por estar siempre a mi lado y apoyarme.. -. A Nayady y Arnaldo por ser unos segundos padres para mí.. -. A Alejandro y Liset por correr siempre conmigo cuando estaba en problemas.. -. Al resto de mis compañeros de clases, a Lili, a Laura, a Claudia Borroto y a tantos otros por ser ejemplos de amigos fieles. -. A mis profesores, esos ejemplos de profesionales que a veces nos ponían a correr pero siempre con el mayor interés de que estuviéramos preparados. A Mateo, Ramiro, Marilyn y tantos otros que al pasar de los años siempre los recordaremos.. -. A mis tutoras Yailen y Beatriz por hacer posible esta tesis y estar siempre dispuestas a ayudarme.. -. A todas aquellas personas que de alguna forma u otra ayudaron a la realización de esta tesis. Por todo esto y más Gracias mil..

(5) Pensamiento Ningún ejército puede detener la fuerza de una idea cuando llega a tiempo. Víctor Hugo.

(6) Resumen. RESUMEN Un horario o secuencia de tareas es usualmente definido como ‘un plan para ejecutar un trabajo o alcanzar un objetivo, especificando el orden y el tiempo asignado para cada parte’. La secuenciación en los procesos de manufactura no es más que un conjunto de trabajos que tiene que ser ejecutado en un conjunto de máquinas, con el objetivo de encontrar la mejor secuencia. Las investigaciones en el área de la secuenciación de tareas se han enfocado en el desarrollo de procedimientos para la generación de una solución base asumiendo que el ambiente en el que se ejecutan se comporta de manera estática .Sin embargo, el mundo real no es tan estable, los proyectos pueden ser sujetos a eventos inesperados durante su ejecución como roturas o mantenimientos de las máquinas lo cual puede llevar a numerosas interrupciones. Para lidiar con dichas eventualidades se generan soluciones robustas, donde robustez se refiere al desempeño de un algoritmo bajo incertidumbre. El objetivo es obtener planificaciones que sean capaces de absorber cierto nivel de incertidumbre sin tener que replanificar aun cuando esto implica tiempo extra de procesamiento. Para lograr esto existen diferentes técnicas como por ejemplo los métodos basados en tiempos de inactividad que lo que hacen es adicionar tiempos extra de procesamiento a aquellas operaciones que lo requieran. En el presente trabajo se propone un método que utiliza aprendizaje reforzado y técnicas basadas en tiempos de inactividad con el objetivo de obtener soluciones que sean capaces de absorber cierto nivel de incertidumbre. Palabras claves: secuencia de tareas, robustez, aprendizaje reforzado, técnicas basadas en tiempos de inactividad.. I.

(7) Abstract. ABSTRACT A schedule is commonly defined as ‘a plan for performing work or achieving an objective, specifying the order and allotted time for each part’. Manufacturing scheduling is defined as an optimization process that allocates limited manufacturing resources over time among parallel and sequential manufacturing activities with the objective of finding the best sequence. The vast majority of the research in scheduling has focused on the development of exact and suboptimal procedures for the generation of a baseline schedule assuming complete information and a deterministic environment. However, the real world is not so stable; projects may be subject to unexpected events during execution, which may lead to numerous schedule disruptions. One approach to deal with such disruptions is to generate robust schedules, where robustness refers to the performance of an algorithm under uncertainties. The objective is to generate schedules that are able to absorb some level of uncertainty without having to reschedule, even if this implies extra processing time. There are some techniques that can deal with such problems, for example the slack-based techniques, where the main idea is to provide each activity with some extra execution time (slack time) in such a way that part of the uncertainty can be absorbed. The present work proposes a method that uses reinforcement learning and slack-based techniques with the objective of obtaining solutions able to obtain some uncertainty level. Keywords: scheduling, robustness, reinforcement learning, slack-based techniques.. II.

(8) Tabla de contenidos. TABLA DE CONTENIDOS INTRODUCCIÓN ....................................................................................................................... 1 CAPÍTULO 1. PROBLEMAS DE SECUENCIACIÓN DE TAREAS ...................................... 5 1.1. Características de los problemas de secuenciación ........................................................... 5 1.2. Notación empleada en problemas de secuenciación ......................................................... 6 1.3. Clasificación de los problemas de secuenciación ............................................................. 8 1.3.1. Clasificación atendiendo al ambiente de las máquinas ............................................. 8 1.3.2. Clasificación de acuerdo a las características de los trabajos ................................... 8 1.3.3. Clasificación según la función objetivo .................................................................... 9 1.4. Tipos de soluciones ........................................................................................................... 9 1.5. Tipos de problemas ......................................................................................................... 11 1.6. Incertidumbre y robustez en secuenciación .................................................................... 12 1.6.1. Incertidumbre .......................................................................................................... 12 1.6.2. Robustez .................................................................................................................. 14 1.6.3. Métodos proactivos y métodos reactivos ................................................................ 16 1.6.4. Métodos proactivos ................................................................................................. 17 1.6.5. Métodos basados en tiempos de inactividad ........................................................... 18 1.6.6. Otro enfoque de las técnicas basadas en tiempo de inactividad .............................. 23 1.7. Conclusiones parciales .................................................................................................... 23 CAPÍTULO 2. MÉTODO BASADO EN TIEMPOS DE INACTIVIDAD UTILIZANDO LA CRITICIDAD DE LOS RECURSOS ....................................................................................... 25 2.1. Sistemas Multi-Agente y Aprendizaje Reforzado ...................................................... 25. 2.1.1 Agentes Inteligentes ................................................................................................. 25 2.1.2 Aprendizaje Reforzado ............................................................................................. 26 III.

(9) Tabla de contenidos. 2.1.3 Q-Learning ............................................................................................................... 27 2.1.4 Sistemas Multi-Agente (SMA)................................................................................. 28 2.1.5 Aprendizaje Reforzado y SMA para problemas de secuenciación .......................... 29 2.1.6 Q-Learning para problemas de secuenciación tipo Job Shop .................................. 30 2.2. Formato de las instancias ............................................................................................ 31. 2.2.1 Caso determinista con interrupciones conocidas ..................................................... 32 2.3. El enfoque basado en tiempos de inactividad propuesto ............................................ 34. 2.3.1 ‘Criticidad’ ............................................................................................................... 34 2.4. El método propuesto. .................................................................................................. 36. 2.5. Conclusiones parciales ................................................................................................ 42. CAPÍTULO 3. RESULTADOS EXPERIMENTALES ............................................................ 43 3.1. Especificaciones del experimento ............................................................................... 43. 3.1.1. Descripción del experimento .............................................................................. 44. 3.2. Análisis de los resultados. ........................................................................................... 51. 3.3. Conclusiones parciales. ............................................................................................... 53. CONCLUSIONES ..................................................................................................................... 54 RECOMENDACIONES ........................................................................................................... 55 REFERENCIAS BIBLIOGRÁFICAS ...................................................................................... 56 ANEXOS ................................................................................................................................... 59 Anexo 1 .................................................................................................................................. 59. IV.

(10) Lista de Figuras. LISTA DE FIGURAS Fig. 1.1 Diferentes factores que pueden influenciar un problema de secuenciación, tomado de (Martínez Jiménez, 2012) ............................................................................................................ 6 Fig. 1.2 Diagrama de tiempos de una operación ........................................................................ 7 Fig. 1.3 Tres soluciones factibles diferentes para la instancia presentada en la tabla 1.1 ........ 10 Fig. 1.4 Entorno de secuenciación, tomado de (Gao, 1996) .................................................... 13 Fig. 1.5 Secuenciación proactiva vs reactiva ........................................................................... 17 Fig. 1.6 Incrementando robustez pero añadiendo redundancia. El horario b) es considerado más robusto que el a) ................................................................................................................. 18 Fig. 1.7 Ejemplo de dos operaciones consecutivas que son ejecutadas con un recurso rompible ................................................................................................................................................... 19 Fig. 1.8 Ejemplo de una secuenciación donde un recurso rompible tiene tres operaciones programadas............................................................................................................................... 20 Fig. 1.9 Ejemplo en el que el tiempo de inactividad añadido por el método de protección temporal no puede ser utilizado por la siguiente actividad en la misma máquina, debido a las limitaciones de los pedidos ........................................................................................................ 21 Fig. 1.10 Adición de tiempos de inactividad por el método de Ventanas de Tiempos de Inactividad. ................................................................................................................................ 22 Fig. 1.11 Adición de tiempos de inactividad con el método de Ventana de Tiempos de Inactividad Enfocado. ................................................................................................................ 23 Fig. 2.1 Modelo estándar del aprendizaje reforzado ................................................................ 27 Fig. 2.2 Múltiples agentes actuando en el mismo ambiente ..................................................... 29 Fig. 2.3 Agentes en un ambiente de secuenciación .................................................................. 30 Fig. 2.4 Ejemplo de una instancia JSSP (ft06) tomada de OR-Library ................................... 31 Fig. 2.5 Descripción de un trabajo en un entorno JSSP ........................................................... 32 V.

(11) Lista de Figuras. Fig. 2.6 Adición de perturbaciones programadas a las instancias. ........................................... 33 Fig. 2.7 Solución óptima para la instancia ft06, Cmax=55 ...................................................... 35 Fig. 2.8 Solución óptima afectada por un conjunto de perturbaciones, Cmax=64................... 39 Fig. 2.9 Solución resultante usando la técnica de protección temporal ................................... 40 Fig. 2.10 Solución obtenida añadiéndole tiempos de inactividad a las máquinas críticas después del proceso de secuenciación ....................................................................................... 41 Fig.. 3.1 Gráfico que representa la desviación de las soluciones cuando se le incluyen. perturbaciones sin que se protejan los recursos con respecto a la solución óptima. ................. 48 Fig. 3.2 Gráfico que representa la desviación de las soluciones cuando se utiliza protección temporal con dos recursos rompibles con la inclusión o no de perturbaciones. ........................ 49 Fig. 3.3 Gráfico que representa la desviación de las soluciones cuando se utiliza protección temporal con todos los recursos rompibles con la inclusión o no de perturbaciones. ............... 49 Fig. 3.4 Gráfico que representa la desviación de las soluciones cuando se utiliza la técnica de criticidad de los recursos con la inclusión o no de perturbaciones. ........................................... 50 Fig. 3.5 Comparación de las desviaciones de las soluciones para todos los casos presentados. ................................................................................................................................................... 51. VI.

(12) Lista de Tablas. LISTA DE TABLAS Tabla 1.1 Instancia de secuenciación con 2 recursos y 2 trabajos ............................................ 10 Tabla 2.1 Conjunto de perturbaciones ...................................................................................... 36 Tabla 3.1 Instancias de secuenciación de problemas tipo Job Shop y sus respectivas soluciones óptimas en términos de makespan. .......................................................................... 43 Tabla 3.2 Resultados obtenidos para 15 instancias sin inclusión de perturbaciones ................ 45 Tabla 3.3 Resultados obtenidos para las 75 nuevas instancias con inclusión de diferentes conjuntos de perturbaciones ...................................................................................................... 46 Tabla 3.4 Resultados al aplicarle a la combinación de cada par de las muestras el test de Wilcoxon ................................................................................................................................... 52. VII.

(13) Introducción. INTRODUCCIÓN Muchos de los problemas de toma de decisiones que ocurren en la vida cotidiana pueden ser resueltos utilizando secuenciación de tareas (scheduling), entiéndase secuencia de tareas como ‘un plan para ejecutar un trabajo o alcanzar un objetivo, especificando el orden y el tiempo asignado para cada parte’. Una de las aplicaciones de este tipo de problemas y quizás donde más se vea su utilización lo constituye la secuenciación en los procesos de manufactura, que se define como un proceso de optimización que asigna recursos limitados en el tiempo entre actividades que se pueden ejecutar en paralelo. Esta asignación tiene que cumplir un conjunto de restricciones que reflejan las relaciones temporales entre las actividades y las limitaciones de capacidad del conjunto de recursos compartidos (Wang and Shen, 2007). En otras palabras, el problema puede ser definido como un conjunto de trabajos que tiene que ser ejecutado en un conjunto de máquinas, con el objetivo de encontrar la mejor secuencia, es decir, una asignación de trabajos a intervalos de tiempo en las máquinas de forma tal que el objetivo deseado sea minimizado. Los problemas de secuenciación se clasifican de acuerdo a las restricciones que los mismos tienen que cumplir, estas clasificaciones son: para m máquinas en las que cada trabajo tiene que ser procesado por cada una de ellas, si el problema no tiene restricción de orden se dice que es de tipo Open Shop; si el problema sí tiene restricción de orden pero este no es el mismo para todos los trabajos el problema es de tipo Job Shop; si por el contrario todos los trabajos pasan por todas las máquinas en el mismo orden, el problema se clasifica como de tipo Flow Shop. Existen además otras clasificaciones que constituyen extensiones de las anteriormente expuestas. La mayoría de las investigaciones en el área de la secuenciación de tareas se han enfocado en el desarrollo de procedimientos exactos para la generación de una solución base asumiendo que se tiene toda la información necesaria y un ambiente determinístico (Herroelen and Leus, 2005). Sin embargo, el mundo real no es tan estable, los proyectos pueden estar sujetos a eventos inesperados durante su ejecución, lo cual puede llevar a numerosas interrupciones, por ejemplo, los recursos pueden tornarse inaccesibles (roturas o mantenimiento), nuevos pedidos pueden llegar al sistema, la ejecución de las operaciones puede tomar más tiempo del esperado, entre otros. 1.

(14) Introducción. Un enfoque para lidiar con dichas eventualidades es generar soluciones robustas, donde robustez se refiere al desempeño de un algoritmo bajo incertidumbre (Davenport et al., 2001). El objetivo es generar secuenciaciones que sean capaces de absorber cierto nivel de incertidumbre sin tener que replanificar. Existen algunas técnicas que pueden lidiar con estos problemas como por ejemplo las técnicas basadas en tiempos de inactividad (slack), donde el objetivo es proporcionar a cada operación cierto tiempo extra de ejecución (tiempo de inactividad) de tal forma que parte de la incertidumbre pueda ser absorbida. El tiempo de inactividad que se proporciona a cada operación es proporcional a su duración y al recurso donde será ejecutada. Es conocido que las compañías prefieren contar con soluciones robustas, aun cuando robustez implica tiempo extra de procesamiento. La inclusión de estos tiempos extra implica que se pierde en optimalidad pero en ocasiones ese cambio no es tan relevante si se quiere lograr una representación que tenga en cuenta el dinamismo del mundo real. Planteamiento del problema La secuenciación de tareas se aplica en muchos problemas de la vida real sobre todo en los procesos de manufactura. La mayor parte de las investigaciones de este tema se enfocan en obtener secuenciaciones óptimas asumiendo que se tiene de antemano toda la información necesaria y que no ocurrirán cambios en el sistema; sin embargo el mundo real no es tan determinístico pues pueden ocurrir interrupciones que modifiquen el horario propuesto, una forma de lidiar con esto es incorporándole robustez a las soluciones lo que implica un tiempo extra de procesamiento que no sea tan relevante si se quiere lograr que las soluciones tengan en cuenta un cierto nivel de incertidumbre. Objetivo general -. Implementar un algoritmo que permita incrementar la robustez de las soluciones de problemas de secuenciación de tareas tipo Job Shop usando aprendizaje reforzado y técnicas basadas en tiempos de inactividad.. Objetivos específicos -. Comparar las técnicas basadas en tiempos de inactividad existentes en la literatura. 2.

(15) Introducción. -. Definir un método basado en tiempos de inactividad que mejore las deficiencias detectadas en las técnicas existentes.. -. Implementar un algoritmo para incrementar la robustez de las soluciones usando aprendizaje reforzado y el método basado en tiempos de inactividad.. -. Evaluar el algoritmo de acuerdo a la calidad de las soluciones y el nivel de robustez incorporado en las mismas.. Preguntas de investigación -. ¿Por qué surge la necesidad de definir un nuevo método para tratar la robustez de las soluciones de problemas de secuenciación de tareas de tipo Job Shop?. -. ¿En qué mejora el nuevo método definido a los anteriores de la literatura?. -. ¿Vale la pena aplicar la robustez a los problemas de secuenciación de tareas?. Justificación En ambientes reales como la industria, la probabilidad de ejecutar una secuencia de tareas en el tiempo en que se ha planeado es muy baja ya que las máquinas pueden romperse, los recursos se pueden agotar, entre otros. Estas interrupciones provocan altos costos debido a que esto evita que se cumpla con las fechas de entrega y por otra parte los trabajadores tienen que trabajar más horas lo que lleva a pagarles mayor salario. Un algoritmo que permita incrementar la robustez de las secuenciaciones sería de gran utilidad para evitar estos problemas, además serviría para aplicarlo a otros problemas de secuenciación de tareas no solo a los de la industria. Hipótesis de investigación Las soluciones de los problemas de secuenciación de tareas que incorporan robustez usando aprendizaje reforzado y las técnicas basadas en tiempos de inactividad son más representativas del mundo real además de no ser relevante la pérdida de optimalidad que implica la inclusión de tiempos extra. Estructura de la Tesis La tesis quedó estructurada de la siguiente manera: después de la Introducción, la tesis cuenta con tres capítulos. En el primero de ellos se hace un análisis de las características principales de los problemas de secuenciación de tareas así como las fuentes de incertidumbre en las 3.

(16) Introducción. soluciones y las técnicas existentes para lidiar con las mismas. El segundo capítulo propone un algoritmo que utiliza aprendizaje reforzado y las técnicas basadas en tiempos de inactividad para hacer más robustas las soluciones, fundamentadas en lo que se denomina criticidad de los recursos. Por su parte, el tercer capítulo realiza la validación del algoritmo propuesto a través de un estudio estadístico comparativo para 15 instancias del problema de tipo Job Shop presentes en la biblioteca OR-Library. Por último, se formulan las conclusiones y recomendaciones y se relacionan las Referencias Bibliográficas.. 4.

(17) Capítulo 1: Problemas de secuenciación de tareas. CAPÍTULO 1. PROBLEMAS DE SECUENCIACIÓN DE TAREAS Los problemas de secuenciación están presentes en cada situación donde un conjunto dado de tareas tiene que ser realizado y estas requieren la asignación de los recursos para espacios de tiempo. Esto es algo que usualmente se realiza en la vida diaria, pero cuando las restricciones que tienen que ser conocidas aumentan y el número de tareas y recursos crecen, entonces construir un horario que satisfaga todos los requisitos no es tan sencillo (Martínez Jiménez, 2012). En este capítulo se introducirán aspectos fundamentales de los problemas de secuenciación de tareas, así como las diferentes clasificaciones, los tipos de problemas (haciendo énfasis en los problemas de tipo Job Shop) y de soluciones, además se abordarán algunos temas relacionados con la incertidumbre y la robustez en problemas de este tipo. 1.1. Características de los problemas de secuenciación Típicamente los problemas de secuenciación son clasificados como NP-Completos (Garey et al., 1976), por ello encontrar una solución óptima es imposible si no se usa un algoritmo esencialmente enumerativo, y el tiempo de cómputo incrementa exponencialmente de acuerdo al tamaño del problema, convirtiendo a los problemas de secuenciación en ambientes de manufactura en uno de los más complejos (Shen, 2002). La investigación en este campo ha tenido un gran progreso, desde modelos simples que son sólo útiles desde el punto de vista académico, hasta enfoques que pueden ser aplicados en configuraciones complejas del mundo real, por ejemplo en las industrias farmacéuticas, químicas y de producción de alimentos (Charnprasitphon, 2007). El enfoque clásico para resolver este tipo de problemas consiste en construir un modelo matemático, usualmente basado en Programación Mixta en Enteros y luego aplicar un algoritmo de búsqueda como el algoritmo de Ramificación y Acotamiento para encontrar la solución óptima (Mendez et al., 2006). Sin embargo, a medida que el número de recursos disponibles en el problema incrementa, o el número de operaciones a ser planificadas crece, este enfoque no será capaz de encontrar la solución óptima en un tiempo computacional razonable (Ruiz et al., 2008). Por esta razón los métodos heurísticos se convierten en el centro 5.

(18) Capítulo 1: Problemas de secuenciación de tareas. de atención, pues son capaces de encontrar buenas soluciones de manera eficiente (Zhang, 1996). En un problema de secuenciación muchos factores pueden influir en el tiempo que tome realizar un conjunto de tareas, entre ellos se puede citar el costo de las operaciones, el orden de las secuencias, entre otros, la figura 1.1 muestra un esquema de los mismos, por supuesto estos factores no aparecen necesariamente al mismo tiempo.. Fig. 1.1 Diferentes factores que pueden influenciar un problema de secuenciación, tomado de (Martínez Jiménez, 2012). 1.2. Notación empleada en problemas de secuenciación La definición de un problema de secuenciación incluye diferentes propiedades y variables, a continuación se listan algunas de ellas: 𝑚. Número de máquinas. 𝑛. Número de trabajos. 𝑀𝑖. Máquina i, donde 𝑖 = {1, … , 𝑚}. 𝐽𝑗. Trabajo j, donde 𝑗 = {1, … , 𝑛}. 𝐶𝑗. Tiempo de terminación del trabajo j. 𝑃𝑗. Tiempo de procesamiento del trabajo j 6.

(19) Capítulo 1: Problemas de secuenciación de tareas. 𝑜𝑖𝑗. La i-ésima operación del trabajo j. 𝑠𝑖𝑗. Tiempo de inicio de la operación i, trabajo j. 𝑐𝑖𝑗. Tiempo de terminación de la operación i, trabajo j. 𝑝𝑖𝑗. Tiempo. de. procesamiento. de. la. operación i, trabajo j 𝑟𝑗. Fecha de inicio del trabajo j. 𝑑𝑗. Fecha de vencimiento del trabajo j. 𝐶𝑚𝑎𝑥. El makespan, máximo 𝐶𝑗 entre todos los trabajos, 𝑚𝑎𝑥{𝐶1 , … , 𝐶𝑛 }. 𝐿𝑗. Impuntualidad del trabajo j. 𝐸𝑗. Anticipación del trabajo j. 𝑇𝑗. Tardanza del trabajo j. 𝑤𝑗. Peso asociado al trabajo j. La figura 1.2 muestra un ejemplo de un diagrama de tiempos de la operación 𝑜𝑖𝑗 donde se resume una parte de las propiedades antes mencionadas.. Fig. 1.2 Diagrama de tiempos de una operación. 7.

(20) Capítulo 1: Problemas de secuenciación de tareas. 1.3. Clasificación de los problemas de secuenciación Los problemas de secuenciación pueden clasificarse teniendo en cuenta el ambiente de las máquinas, las características de los trabajos y la función objetivo. Esta clasificación se conoce comúnmente como || (Graham et al., 1979), donde  representa el ambiente de las máquinas,  las características de los trabajos y  el criterio a optimizar. 1.3.1. Clasificación atendiendo al ambiente de las máquinas Según el ambiente de las máquinas el escenario más simple es en el que se cuenta con un solo recurso, pues los trabajos tienen una sola operación a ser procesada y solo existe una máquina que pueda ejecutarla. Cuando existen múltiples máquinas el entorno se torna más complicado, ya que pueden ser idénticas o pueden diferir en velocidad. Los posibles ambientes se resumen de la siguiente forma: -. Máquinas Paralelas Idénticas: Procesan los trabajos a la misma velocidad.. -. Máquinas Paralelas Diferentes: El tiempo de procesamiento depende de la máquina.. -. Máquinas Paralelas no relacionadas: El tiempo de procesamiento depende de la máquina y del trabajo (Martínez Jiménez, 2012).. 1.3.2. Clasificación de acuerdo a las características de los trabajos Cada problema de secuenciación posee un conjunto de características de sus trabajos, las mismas pueden ocurrir en cualquier combinación. Las siguientes son algunas de las características más comunes: -. Preempción: se refiere a ambientes donde el procesamiento de un trabajo puede ser interrumpido por un tiempo y continuar más tarde (quizás en otra máquina).. -. Restricciones de precedencia: Algunos trabajos no pueden comenzar hasta que otros hayan sido terminados.. -. Fechas de liberación: Un trabajo no puede comenzar a procesarse antes de su fecha de liberación.. -. Fechas de terminación: Fecha en que se espera que un trabajo haya sido finalizado.. 8.

(21) Capítulo 1: Problemas de secuenciación de tareas. -. Tiempo de preparación: Pueden existir tiempos de preparación entre la ejecución de un trabajo y otro, es decir, que la máquina necesita prepararse para procesar un trabajo distinto (Martínez Jiménez, 2012).. 1.3.3. Clasificación según la función objetivo Las funciones objetivo más comúnmente utilizadas son las siguientes: - Flowtime: Suma de los tiempos de completamiento de los trabajos ∑𝑗 𝐶𝑗 . - Makespan: máximo tiempo de completamiento, es equivalente al tiempo en que el último trabajo abandona el sistema (también conocido como Cmax). - Lateness: diferencia entre la fecha de terminación planificada y la fecha de terminación real. Esta medida puede ser positiva (tardiness) o negativa (earliness). 𝐿𝑗 = 𝐶𝑗 − 𝑑𝑗 . La tardanza (tardiness) mide la diferencia si el trabajo se retrasa, de otra forma su valor es cero, por otra parte la anticipación (earliness) mide la diferencia si el trabajo se termina temprano, de otra forma su valor también es cero. -. Anticipación: ∑𝑛𝑗=1 𝐸𝑗 , donde 𝐸𝑗 = max⁡(𝑑𝑗 − 𝐶𝑗 , 0). -. Tardanza: ∑𝑛𝑗=1 𝑇𝑗 , donde 𝑇𝑗 = max(𝐶𝑗 − 𝑑𝑗 , 0) = max(𝐿𝑗 , 0). - Earliness-Tardiness: Esta medida ha sido el centro de atención de algunas investigaciones donde se desea que los trabajos terminen cerca de sus fechas de vencimiento ∑𝑛𝑗=1 𝐸𝑗 + ∑𝑛𝑗=1 𝑇𝑗 . - La tardanza total pesada: Similar a la tardanza pero se tiene en cuenta los pesos de los trabajos ∑𝑗 𝑤𝑗 𝑇𝑗 . 1.4. Tipos de soluciones Según lo reportado en la literatura, cualquier solución factible puede categorizarse en sinretardo, semi-activa o activa. Las soluciones sin-retardo son aquellas en las que ningún recurso se mantiene inactivo si hay al menos una operación que pueda ser procesada. Una solución se denomina semi-activa si la única opción para que una operación comience antes es cambiar el orden de procesamiento en un recurso. Finalmente, una solución se denomina activa si no es posible construir otra solución a través de cambios en el orden de procesamiento en los recursos, con al menos una operación terminando más temprano y ninguna terminando más tarde. 9.

(22) Capítulo 1: Problemas de secuenciación de tareas. El siguiente ejemplo tomado de (Martínez Jiménez, 2012) muestra las diferencias entre las tres definiciones y tres posibles soluciones a una misma instancia de secuenciación. Ejemplo 1: Asuma que se está solucionando un problema de secuenciación con dos trabajos y dos recursos. Cada trabajo tiene dos operaciones y la información acerca de cuál máquina las puede ejecutar está resumida en la siguiente tabla: Tabla 1.1 Instancia de secuenciación con 2 recursos y 2 trabajos. Trabajo. Op1. Op2. 1. M2 , 2. M1 , 1. 2. M1 , 2. M2 , 1. Fig. 1.3 Tres soluciones factibles diferentes para la instancia presentada en la tabla 1.1. Al analizar las posibles soluciones presentadas en la figura 1.3, se puede ver que la solución 1 (de izquierda a derecha) es una secuenciación factible, porque las restricciones de orden del problema son satisfechas, pero no pertenece a ninguna de las categorías descritas anteriormente. Al fijarse en la máquina M2 se verá que permanece inactiva mientras hay operaciones que puede ejecutar (por ejemplo desde el tiempo 3 hasta el 4), lo que quiere decir que no es una solución sin retardo. Tampoco es una secuenciación semi-activa, pues también se puede realizar un desplazamiento hacia la izquierda limitado1 en la primera operación de J1. Esta operación se ejecuta en M2 en el tiempo 4, cuando podría iniciarse su procesamiento en el tiempo 3. Si por el contrario se realiza un desplazamiento a la izquierda de un tiempo se obtiene la solución 2 (al centro), en este caso la secuenciación es semi-activa.. 1. Se entiende como desplazamiento a la izquierda limitado el movimiento de cada operación a la izquierda, hasta que queda bloqueado ya sea por la operación precedente en esa máquina o por la operación precedente de ese trabajo.. 10.

(23) Capítulo 1: Problemas de secuenciación de tareas. Por otra parte ni la solución 1 ni la 2 son activos, porque se puede realizar un desplazamiento hacia la izquierda en ambos casos en la primera operación de J1. Si se realiza esto, entonces la segunda operación de J1 podría ser desplazada a la izquierda, dando como resultado la solución 3 (a la derecha), que es una secuencia activa y la única secuenciación sin-retardo en el ejemplo. 1.5. Tipos de problemas Cuando un trabajo tiene un número fijo de operaciones que requieren diferentes máquinas se dice que se está en presencia de un problema tipo ‘shop’, y de acuerdo a las restricciones que el mismo presente se puede clasificar en: -. Open Shop: Existen ‘m’ máquinas y cada trabajo tiene que ser procesado en cada una de ellas. No existen restricciones de orden, lo que implica que cada trabajo puede pasar por las máquinas siguiendo rutas distintas.. -. Job Shop: Los trabajos pasan por cada máquina sólo una vez, sí existen restricciones de orden, aunque el orden no es el mismo para todos los trabajos.. -. Flow Shop: Todos los trabajos pasan por todas las máquinas en el mismo orden.. -. Job Shop Flexible: Es una generalización del Job Shop y el ambiente de máquinas no relacionadas. Cada operación puede ser procesada por cualquier máquina de un conjunto determinado, y dichas máquinas pueden diferir en velocidad.. -. Flow Shop Híbrido: Extensión del Flow Shop donde las máquinas tienen tiempos de preparación y se produce en lotes (más de un trabajo a la vez) (Martínez Jiménez, 2012).. En esta investigación se abordarán específicamente los problemas de tipo Job Shop, en los que un conjunto de trabajos tiene que ser procesado por un conjunto de máquinas con el objetivo de encontrar la mejor secuenciación, es decir una asignación de operaciones a intervalos de tiempo en las máquinas que tiene la duración mínima requerida para completar todos los trabajos. Para el caso de Job Shop el objetivo es minimizar el tiempo de completamiento de todos los trabajos, conocido en la literatura como makespan. El número total de soluciones posibles para un problema con n trabajos y m máquinas es m(n!). En este caso los métodos exactos fallan a la hora de obtener las soluciones óptimas en un tiempo razonable, es por eso 11.

(24) Capítulo 1: Problemas de secuenciación de tareas. que se debe centrar la atención en encontrar métodos que puedan proporcionar soluciones satisfactorias aunque no necesariamente sean óptimas. 1.6. Incertidumbre y robustez en secuenciación En ambientes industriales de la vida real la secuenciación no se puede pensar como un problema donde se tiene toda la información de antemano y que esta no esté sujeta a cambios, por ejemplo pueden estar sujetos a una incertidumbre constante en su entorno, donde la probabilidad de que una secuencia de tareas sea ejecutada exactamente como se planificó es muy baja (Martínez Jiménez, 2012). Es por ello que se resumen en este epígrafe las fuentes más comunes de incertidumbre y se estudian diferentes enfoques para lidiar con las mismas. Estos enfoques pueden ser clasificados como preventivo o reactivo, además se define el concepto de robustez así como distintas formas de medir cuán robusta es una solución. 1.6.1. Incertidumbre Durante el proceso de secuenciación pueden ocurrir interrupciones, por ejemplo, las máquinas se pueden descomponer, las operaciones pueden tardar más de lo esperado, nuevos pedidos pueden llegar al sistema, la prioridad de algunos pedidos pueden cambiar, entre otras. Todas estas alteraciones hacen que la secuenciación original falle, causando retrasos en la entrega de los productos (las fechas de terminación pudieran violarse), incrementando el tiempo de inactividad de las máquinas y del personal, entre otras consecuencias. Es por ello que en ambientes de trabajo reales puede no ser útil esforzarse en producir soluciones óptimas, ya que la optimalidad solo se consigue si la solución puede ejecutarse como estaba previsto. Por otra parte, como se indica en (Policella, 2005) una solución sub-óptima que incorpore cierta flexibilidad para lidiar con eventos inesperados puede proveer características útiles para la ejecución. De ahí que la eficiencia de las técnicas de secuenciación empleadas dependerá del grado de incertidumbre de la información brindada al inicio. La figura 1.4 muestra una representación gráfica de la cadena de suministros con los que se opera en un entorno de secuenciación.. 12.

(25) Capítulo 1: Problemas de secuenciación de tareas. Fig. 1.4 Entorno de secuenciación, tomado de (Gao, 1996). La entrada de esta secuencia está compuesta de un conjunto de demandas o pedidos de clientes que pueden ser tanto internos como externos, estas exigencias son enviadas al planificador el que elabora un horario o programación para la ejecución en la planta de producción. La planta utiliza materias primas que pueden ser producidas internamente o también puede recibirse una parte de ellas de proveedores externos, así se obtienen los productos finales que son almacenados en un almacén hasta que se entregan a los clientes que los solicitaron (Gao, 1996). Uno de los principales problemas existentes en la secuenciación de tareas es que los horarios o programas que son buenos en la teoría a menudo no funcionan bien en la práctica, debido a la incertidumbre que se ha mencionado anteriormente en el entorno. En la búsqueda de soluciones óptimas se trata que las máquinas estén trabajando constantemente y que las operaciones se ejecuten tan pronto como sea posible con el fin de cumplir con las fechas de entrega y minimizar los objetivos, como el makespan o la tardanza. En la mayoría de las soluciones se obtienen horarios cuyo tiempo de completamiento es mínimo, estas soluciones se dice que son buenas en la práctica, siempre y cuando los acontecimientos inesperados no ocurran. Es importante señalar que a pesar de que se considera que la presencia de espacios de inactividad generalmente no es factible cuando se construye la 13.

(26) Capítulo 1: Problemas de secuenciación de tareas. solución, es buena en el rendimiento, ya que es lo que evita que los retrasos se propaguen (Cohn, 2007). Algunas de las fuentes más comunes de incertidumbre a nivel operativo son: -. Averías de las máquinas;. -. La incertidumbre en los tiempos de procesamiento de las actividades;. -. Llegada inesperada de nuevos pedidos, algunos de ellos de alta prioridad;. -. La cancelación o modificación de las órdenes existentes;. -. Modificación de la liberación y / o fechas de vencimiento.. Esta investigación se centra en las dos primeras, las averías de las máquinas y la incertidumbre en los tiempos de procesamiento de las actividades. Una manera de hacer frente a estas perturbaciones es mediante la generación de horarios robustos (Davenport et al., 2001), es decir, obtener horarios con la capacidad de satisfacer los requisitos de rendimiento en un entorno incierto (Le Pape, 1991). 1.6.2. Robustez En muchos procesos de decisión es común que se desee obtener soluciones con cierto nivel de robustez en aras de mantener la factibilidad en ambientes con datos incompletos o imprecisos. Los horarios deben ser capaces de tolerar cierto grado de incertidumbre durante su ejecución, es decir, deben absorber las variaciones dinámicas del problema. La robustez de una secuenciación es una manera de caracterizar su rendimiento. En (Billaut et al., 2008), un programa se considera robusto si su rendimiento es lo suficientemente insensible a la incertidumbre de los datos. Otra definición de horario robusto se propone en (Leon et al., 1994), en este caso, se define como una secuencia que es insensible a un conjunto de imprevistos que ocasionan disturbios dada una política de control asumida. En otras palabras, la programación robusta trata de proteger a los horarios de los eventos estocásticos. El desarrollo de la optimización robusta fue iniciado por (Soyster, 1973). Este enfoque ha sido estudiado y extendido ampliamente, ya que se consideró demasiado conservador, en el sentido de que produce soluciones que pierden una parte demasiado grande de optimalidad para el problema nominal con el fin de asegurar la solidez (Bertsimas and Sim, 2004). 14.

(27) Capítulo 1: Problemas de secuenciación de tareas. Después de este trabajo inicial se propusieron algunos otros modelos, por ejemplo (Ben-Tal and Nemirovski, 2000), (Bertsimas and Sim, 2004) y (Lui Cheng, 2008). En todos ellos, la principal preocupación es cómo hacer que los horarios sean más robustos sin perder demasiado en optimalidad. Una propiedad importante como la robustez es fácil de definir, pero compleja de medir de forma cuantitativa, en (Sabuncuoglu and Goren, 2009) los autores presentan un estudio detallado sobre el tema, el cual muestra que los distintos enfoques se centran en distintos objetivos y por tanto, la forma de medir la robustez no es siempre la misma. Las formas más comunes de medir la robustez de acuerdo con la literatura son las siguientes: -. desviación de la secuenciación original;. -. el costo real de la ejecución de la secuenciación;. -. estabilidad: relacionado con el criterio de desempeño;. -. número de cambios requeridos para arreglar la secuenciación.. Se propusieron las dos primeras medidas en (Gao, 1996), según el autor , la desviación de la programación original se puede calcular mediante el análisis de la diferencia entre el makespan planificado y el makespan real . En el segundo caso, los costos pueden estar asociados, por ejemplo, a llegadas tardías, lo que significa que hay una penalización por unidad de tiempo programado sobre la fecha de culminación o los costos podrían estar asociados a la ociosidad de los recursos, lo que significa que hay una penalización por cada unidad de tiempo que el recurso se mantuvo inactivo. En el caso de la estabilidad (tercera métrica), se puede decir que es muy similar al primer indicador. De acuerdo con su definición en (Billaut et al., 2008), la estabilidad es una medida de la diferencia en la secuencia entre los dos programas, que en otras palabras es cómo se desviaba el horario real del original. Para la última métrica , que se introdujo en (Gomes, 2000), la intuición detrás de solidez es la siguiente: dado un conjunto C de los cambios en la formulación inicial de la instancia del problema, una solución A es más robusta que la solución B con lo que respecta al conjunto C si el número de cambios necesarios para fijar la solución A es menor que el número de cambios necesarios para fijar la solución B. 15.

(28) Capítulo 1: Problemas de secuenciación de tareas. Existen diferentes enfoques que se pueden utilizar con el fin de hacer frente a la incertidumbre y la solidez en la programación, ya sea la búsqueda de soluciones que se adaptan dinámicamente a los cambios o incorporando los conocimientos disponibles sobre los posibles cambios en la solución (Herroelen and Leus, 2005). 1.6.3. Métodos proactivos y métodos reactivos De acuerdo con la literatura, hay dos maneras de lidiar con la incertidumbre en entornos de programación, utilizando enfoques proactivos (también llamados predictivos) o enfoques reactivos. El objetivo de la programación proactiva es tomar en cuenta las posibles eventualidades al construir la solución, esto permite que la secuenciación sea más robusta, pues tiene en cuenta conocimiento estadístico sobre la incertidumbre (Davenport et al., 2001). Por otro lado, los métodos reactivos reoptimizan una solución cuando ocurre un evento inesperado, por tanto, las decisiones se toman en tiempo real y se basan en información actual sobre el sistema. Estos enfoques se utilizan cuando el nivel de incertidumbre es significante o cuando los datos no están disponibles en tiempo, lo cual implica que no es posible calcular una solución de forma predictiva. La programación proactiva también se ha definido como las técnicas que tratan de producir una secuencia que es robusta y flexible a los eventos que ocurren en tiempo de ejecución (Beck and Wilson, 2007). La utilidad de este tipo de enfoque depende de si la incertidumbre se puede cuantificar de alguna manera (como saber el tiempo medio entre fallos de las máquinas, etc.). Si la información está disponible, pueden ser utilizadas las técnicas proactivas. Si por el contrario, el grado de incertidumbre es muy alto, se necesita un enfoque más reactivo. La programación reactiva implica revisar o reoptimizar un horario cuando se produce un suceso inesperado. Enfoques completamente reactivos se basan en la información puesta al día sobre el estado del sistema (Davenport and Beck, 2000). Las decisiones se toman en tiempo real, basado en las reglas de secuenciación prioritarias. Estos enfoques se utilizan cuando el nivel de perturbaciones es siempre significativo o cuando los datos se conocen muy tarde, por lo que el cálculo de los horarios de predicción resulta imposible (Aloulou and Portmann, 2005). La figura 1.5 muestra una representación gráfica de las propiedades de ambos tipos de enfoques. 16.

(29) Capítulo 1: Problemas de secuenciación de tareas. Fig. 1.5 Secuenciación proactiva vs reactiva. En ocasiones, ambos puntos de vista se combinan y la combinación se denomina enfoques predictivos reactivos. En este caso se genera un horario predictivo sin tener en cuenta las perturbaciones posibles. Luego se utiliza un algoritmo reactivo para mantener la viabilidad de la programación y/o mejorar sus actuaciones, ver por ejemplo (Church and Uzsoy, 1992), (Vieira et al., 2003) y (Aloulou and Portmann, 2005). 1.6.4. Métodos proactivos Esta investigación centra su atención en los métodos proactivos, como ya se había definido anteriormente estos métodos tratan de generar soluciones robustas que sean flexibles a eventos “inesperados” que ocurren en tiempo de ejecución. Para obtener horarios robustos, un acercamiento intuitivo consiste en añadirle alguna forma de redundancia a la solución durante el proceso de planificación. La figura 1.6 muestra un ejemplo tomado de (Martínez Jiménez, 2012), de dos soluciones diferentes para el mismo problema de secuenciación. El horario a) es el ejemplo clásico de un horario sin-retardo, donde el objetivo es optimizar la utilización de recursos lo que se logra cuando cada actividad empieza tan pronto como su predecesor termina. Por otra parte, el horario b) presenta algunos intervalos de inactividad entre la ejecución de actividades diferentes. Por ejemplo, la actividad ‘b’ no empieza inmediatamente después que la actividad ‘a’ se termina. Este acercamiento permite tolerar algunos cambios en el problema original como el retraso en la tramitación de una actividad y las averías en las máquinas. Al mismo tiempo, introduciendo redundancia la utilización de recursos se reduce, pues las funciones objetivos como minimizar el makespan o la tardanza también se ven afectadas. Es por ello que, la aspiración principal de los. 17.

(30) Capítulo 1: Problemas de secuenciación de tareas. acercamientos basados en redundancias es averiguar cuándo se necesitará la redundancia y cómo tiene que ser distribuida sobre toda la solución.. Fig. 1.6 Incrementando robustez pero añadiendo redundancia. El horario b) es considerado más robusto que el a). La investigación centra su atención en las técnicas que se ocupan de la incertidumbre agregando de alguna forma redundancia en la secuenciación (típicamente tiempo adicional). Estas técnicas se conocen como métodos basados en tiempos de inactividad y se analizarán en el siguiente epígrafe. 1.6.5. Métodos basados en tiempos de inactividad La idea principal de los métodos basados en tiempos de inactividad es adicionar a las actividades un tiempo extra de ejecución de forma tal que cierto nivel de incertidumbre pueda ser absorbido sin resecuenciar. Para lograr esto se basan en el conocimiento sobre las máquinas, por ejemplo, cuan frecuente se rompen y cuánto tiempo permanecen rotas. Algunas de las técnicas de los métodos basados en tiempos de inactividad son la protección temporal, la ventana de tiempos de inactividad y la ventana de tiempos de inactividad enfocada. De las antes mencionadas la más destacada es la conocida como protección temporal (Davenport et al., 2001), en la cual los recursos que tienen probabilidad de romperse (según las estadísticas acumuladas) se definen como ‘rompibles’ y la duración de las actividades secuenciadas en dichos recursos se extiende. Luego se resuelve el problema de secuenciación con el tiempo extendido haciendo uso de cualquier técnica clásica. El ejemplo que se muestra en la figura 1.7, tomada de (Davenport et al., 2001), presenta dos actividades, A y B, que son puestas en secuencia con un recurso rompible. En la figura la parte blanca representa el tiempo original de procesamiento de las actividades mientras que la parte gris representa el tiempo extendido sumado por la protección temporal. Si el recurso se avería 18.

(31) Capítulo 1: Problemas de secuenciación de tareas. mientras se ejecuta la actividad A, el tiempo extra agregado o parte del mismo puede utilizarse para tratar de resolver la anomalía. Si el tiempo no sobrepasa la protección disponible entonces el resto de la secuenciación quedará de acuerdo al plan. Si dura más de lo que se planificó, entonces será necesario algún ajuste para que se ejecuten el resto de las actividades (reprogramando, desplazando a la derecha, etc.). Si no hay anomalías mientras la actividad A es ejecutada entonces la actividad B puede iniciarse más temprano, lo que quiere decir que el período de inactividad previsto por la protección temporal para la actividad A será usado por la actividad B.. Fig. 1.7 Ejemplo de dos operaciones consecutivas que son ejecutadas con un recurso rompible. Un punto importante a tener en cuenta cuando se utiliza este método (o cualquier otro método basado en inactividad) es decidir la cantidad de tiempo extra a adicionar. Mucha protección proporcionará una solución pobre en términos de optimalidad, pero muy robusta. Poca protección resultará en una solución pobre en términos de ejecución si ocurriera un evento inesperado. El método presentado en (Gao, 1996) prolonga el tiempo de cada actividad que cuenta con un recurso rompible de la manera siguiente: 𝑝𝑖𝑗 𝑒𝑥𝑡 = 𝑝𝑖𝑗 +. 𝑝𝑖𝑗 𝐹. ×𝐷. (1.1). Donde 𝑝𝑖𝑗 es el tiempo de procesamiento original de la actividad, 𝐹 representa el tiempo esperado entre las fallas de las máquinas y 𝐷 es la duración de la avería o la interrupción. 𝑝𝑖𝑗 𝑒𝑥𝑡 es el tiempo de procesamiento extendido, añadiéndole el tiempo de inactividad total esperado a la duración del procesamiento ininterrumpido. esperadas durante el procesamiento de una actividad.. 𝑝𝑖𝑗 𝐹. 𝑝𝑖𝑗 𝐹. da el número de anomalías. × 𝐷 representa la duración de la. extensión causada por la anomalía de la máquina. 19.

(32) Capítulo 1: Problemas de secuenciación de tareas. La figura 1.8 muestra dos secuenciaciones, encima se muestra un horario sin retraso, donde todas las operaciones son ejecutadas tan pronto como los recursos se hacen disponibles. En este caso el recurso responsable de la ejecución de las operaciones a, b y d es considerado como rompible, lo que quiere decir que estas tres operaciones estarán ‘protegidas’, por lo que recibirán un tiempo de ejecución adicional. Es importante recordar que si las anomalías no ocurren, o si ellas ocurren, pero toman menos tiempo del añadido, las operaciones que están programadas después de una operación ‘protegida’ pueden iniciar su procesamiento más temprano.. Fig. 1.8 Ejemplo de una secuenciación donde un recurso rompible tiene tres operaciones programadas.. Otra de las técnicas conocida es la ventana de tiempos de inactividad. Al analizar la forma en que la técnica de Protección Temporal añade los tiempos de inactividad, se podrá notar que hay situaciones donde no se logrará ‘compartir’ esos períodos de inactividad entre las actividades, aunque no sucedan anomalías. Por ejemplo, el entorno mostrado en la figura 1.7 será extendido en la figura 1.9 agregando una tercera operación C, que comienza su ejecución en un recurso no rompible, lo que quiere decir que no tiene tiempo extra asociado. Según el orden de las restricciones la actividad B debe ser ejecutada después de que la actividad C termine, que quiere decir que el menor tiempo de arranque de la actividad B es el tiempo de fin de C. Con el fin de evitar dichas situaciones, donde el tiempo de inactividad añadido no puede ser utilizado por las operaciones que suceden, se propuso el enfoque de Ventana de Tiempos de Inactividad (TWS por sus siglas en inglés) en (Davenport et al., 2001). En este enfoque los autores cambian la forma de agregarle el período de inactividad a las operaciones a fin de que se aseguren de que el horario tiene suficiente tiempo de inactividad para cada actividad. 20.

(33) Capítulo 1: Problemas de secuenciación de tareas. Fig. 1.9 Ejemplo en el que el tiempo de inactividad añadido por el método de protección temporal no puede ser utilizado por la siguiente actividad en la misma máquina, debido a las limitaciones de los pedidos. Es importante mencionar que la inactividad necesaria para una actividad bajo TWS es considerablemente más larga que la extensión de la duración de la protección temporal. Más específicamente, la cantidad de inactividad en cada actividad es igual a la suma de las duraciones de todas las averías que se esperan en el recurso R , esto es principalmente debido al hecho de que los autores esperan el período de inactividad de todas las actividades en cada recurso para ser compartidos (Davenport et al., 2001). La ecuación 1.2 muestra cómo se calcula la inactividad con este enfoque. En esta ecuación 𝑝𝑖𝑗 representa la duración de la actividad, 𝜇𝑡𝑏𝑓 (𝑅) es el tiempo medio entre fallos sobre el recurso R y 𝜇𝑑𝑡 (𝑅) representa la media del tiempo de inactividad (duración de la anomalía). El conjunto de actividades que se pueden ejecutar en el recurso R está dada por⁡𝑎𝑐𝑡𝑠𝑅 . 𝑠𝑙𝑎𝑐𝑘𝐴 ≥. ∑𝐵∈𝑎𝑐𝑡𝑠𝑅 𝑝𝑖𝑗 𝜇𝑡𝑏𝑓 (𝑅). × 𝜇𝑑𝑡 (𝑅). (1.2). La figura 1.10 muestra cómo el método TWS añade tiempo de ejecución adicional en cada operación, suponiendo que la inactividad de todas las actividades sobre cada recurso será compartida. En resumen, al usar protección temporal, el tiempo de inactividad esperado de cada recurso está dividido entre las diferentes operaciones y los tiempos de inactividad se agregan basados en este valor. Al utilizar a TWS, el tiempo de inactividad es igual a la suma de las duraciones de todas las irregularidades esperadas en el recurso R, porque el período de inactividad está previsto para ser compartido.. 21.

(34) Capítulo 1: Problemas de secuenciación de tareas. Fig. 1.10 Adición de tiempos de inactividad por el método de Ventanas de Tiempos de Inactividad.. Otra de las técnicas mencionadas es la Ventana de Tiempos de Inactividad Enfocada (FTWS por sus siglas en inglés), la cual fue propuesta también en (Davenport et al., 2001). En este enfoque, la ubicación de las actividades en el horizonte de secuenciación es tomada en consideración para decidir si se necesitará algún tiempo de inactividad. Los autores usan estadísticas de la incertidumbre para enfocar el período de inactividad en partes de la secuenciación que tienen mayor probabilidad de necesitarla con el objetivo de ocuparse de un evento inesperado. Por ejemplo, considerando el escenario en el que una nueva máquina puede llegar al sistema, en este caso, no tiene sentido hacer la programación más sólida al principio, ya que esta máquina es nueva y podría tomar algún tiempo antes de que se pudiera romper. La inactividad para el conjunto de actividades se calcula en función de la probabilidad de que se produzca una avería antes o durante su ejecución. Lo que significa que la decisión sobre si se debe agregar inactividad o no se basa en distribuciones conocidas. La figura 1.11 extiende el ejemplo mostrado en la figura 1.8, considerando el uso de una máquina recién comprada. En este caso se agrega inactividad para las operaciones que se han programado en la máquina después de un período de tiempo específico, por ejemplo, la operación c no recibe el tiempo de ejecución adicional, ya que es la primera operación que se ejecuta por la nueva máquina, y se supone que no debe romperse tan rápidamente.. 22.

(35) Capítulo 1: Problemas de secuenciación de tareas. Fig. 1.11 Adición de tiempos de inactividad con el método de Ventana de Tiempos de Inactividad Enfocado.. 1.6.6. Otro enfoque de las técnicas basadas en tiempo de inactividad En el epígrafe anterior se realizó un análisis de las principales técnicas basadas en tiempos de inactividad lo que permite concluir que todos estos métodos basan su comportamiento en la información que reciben sobre la incertidumbre, esto a su vez tiene como desventaja que si algo ocurre en una máquina donde no se esperan averías el sistema no será capaz de solucionarlo. Retomando el ejemplo de la máquina recién comprada, es natural que no se piense en ella como un recurso rompible. Si por el contrario la máquina falla el sistema no estará preparado para hacerle frente a las perturbaciones pues resulta una situación difícil de predecir. Pero, ¿si se construyen programas más robustos sin tener en cuenta como la única fuente de información la probabilidad de las distribuciones de los eventos inesperados? En (Martínez Jiménez, 2012) se proponen las ideas iniciales de un enfoque basado en tiempos de inactividad que no depende de las distribuciones de probabilidad como la única fuente de información y es el que será analizado en la presente investigación. Funciona mediante el análisis de lo que se denomina ‘criticidad’ de las máquinas y/o los puestos de trabajo y el objetivo principal es añadir tiempos de inactividad en las partes de la programación que se consideran críticas, o que más probablemente necesiten tiempo de ejecución adicional. Este enfoque será tratado con más detalle en el siguiente capítulo. 1.7. Conclusiones parciales En este capítulo se presentaron los diferentes problemas de secuenciación que serán tratados en esta investigación haciendo énfasis en sus características, sus clasificaciones así como los tipos de soluciones y de problemas.. 23.

(36) Capítulo 1: Problemas de secuenciación de tareas. En una segunda parte del capítulo se exponen algunas de las fuentes más comunes de incertidumbre en la programación, se define el concepto de robustez ampliado por diferentes autores y algunos de los métodos que se pueden utilizar para construir programas más robustos, centrando la atención en los enfoques proactivos, principalmente las técnicas basadas en tiempos de inactividad pues el método que se propondrá en el siguiente capítulo se basa en esta idea. Estas técnicas basadas en tiempos de inactividad funcionan mediante la adición de tiempo de ejecución adicional para las operaciones con el fin de absorber un cierto nivel de incertidumbre sin tener que reprogramar pero las mismas solo tienen en cuenta como fuente de información la probabilidad de las distribuciones de los eventos inesperados.. 24.

(37) Capítulo 2: Método basado en tiempos de inactividad utilizando la criticidad de los recursos. CAPÍTULO 2. MÉTODO BASADO EN TIEMPOS DE INACTIVIDAD UTILIZANDO LA CRITICIDAD DE LOS RECURSOS Con el fin de abordar los problemas de incertidumbre que fueron descritos en el capítulo anterior, la investigación referida a este capítulo se dividirá en tres momentos fundamentales. En un primer momento se describirá el proceso de obtención de soluciones para los problemas de secuenciación usando Aprendizaje Reforzado y Sistemas Multi-Agente descrito en (Martínez Jiménez, 2012), por lo que se introducen los conceptos fundamentales así como la solución propuesta. En un segundo momento se detallará el proceso de creación de nuevas instancias las que se pueden dividir para su explicación en dos partes, una primera parte que se refiere a los datos de los trabajos y otra relacionada con las perturbaciones que se añaden a las máquinas. En la tercera parte del capítulo se introduce un nuevo enfoque proactivo apoyado en la idea de las técnicas basadas en tiempos de inactividad que se presentaron en el capítulo 1. Este enfoque se centra en la adición de los tiempos de inactividad en las partes críticas de la programación, teniendo en cuenta la criticidad de las máquinas y de los puestos de trabajo, pero tratando de no aumentar demasiado el makespan. También permite al usuario decidir sobre el nivel de robustez a incluir en el proceso de construcción de la secuenciación. 2.1 Sistemas Multi-Agente y Aprendizaje Reforzado El aprendizaje denota cambios en un sistema que lo hacen capaz de realizar la misma tarea o tareas de forma más eficiente y más efectiva la próxima vez (Simon and Lea, 1973). El Aprendizaje Reforzado es un framework muy popular para el diseño de agentes que interactúan con su ambiente en aras de aprender a resolver una tarea específica a través de esas interacciones repetidas. 2.1.1 Agentes Inteligentes Un agente es un sistema computacional situado en algún ambiente, que es capaz de actuar de manera autónoma y flexible en dicho ambiente en aras de cumplir con su objetivo (Jennings et al., 1998). Si se puede garantizar que un ambiente específico es fijo, entonces es relativamente fácil diseñar un agente para operar en él. Pero el mundo real es dinámico, la información 25.

(38) Capítulo 2: Método basado en tiempos de inactividad utilizando la criticidad de los recursos. usualmente no está completa y es por esto que la posibilidad de fallo debe tenerse en cuenta. Un sistema reactivo es aquel que mantiene una interacción constante con su ambiente y responde a los cambios que ocurren en él de forma tal que la respuesta aún sea útil. Usualmente lo deseado es que los agentes sean reactivos, pero también que trabajen en función de objetivos a largo plazo, por tanto, es importante mantener un buen balance entre proactividad y reactividad. Sin embargo, algunas metas sólo pueden ser alcanzadas a través de la cooperación con otros agentes y es aquí donde la habilidad social entra a jugar un papel importante. Los agentes deben ser capaces de interactuar con otros agentes situados en el mismo ambiente en aras de cumplir con su objetivo. Para poder aprender de la experiencia los agentes pueden ser entrenados, por ejemplo, a través del aprendizaje supervisado, donde se le brindan ejemplos de pares estado-acción, junto con una indicación que dice si la acción fue correcta o incorrecta. El propósito en el aprendizaje supervisado es inducir una política general a partir de los ejemplos de entrenamiento, la cual es suficientemente general para lidiar con ejemplos no vistos. De este modo, el aprendizaje supervisado requiere de un ‘profesor’ que pueda proveer ejemplos correctamente etiquetados. Por su parte, el aprendizaje reforzado puede ser aplicado a casos donde el conocimiento no está disponible o es difícil de obtener (Moriarty et al., 1999). No requiere conocimiento previo sobre decisiones correctas o incorrectas, por consiguiente, el agente tiene que explorar activamente su ambiente para observar los efectos de sus acciones, donde por cada acción que tome recibe una señal numérica indicando cuán buena fue. Esta interacción ‘prueba y error’ con el ambiente es más apropiada para el tipo de problema que se resuelve en este trabajo. 2.1.2 Aprendizaje Reforzado El Aprendizaje Reforzado, como se menciona en (Kaelbling et al., 1996), se remonta a los momentos iniciales de la cibernética y los trabajos en estadística, psicología, neurociencia y ciencias de la computación. Durante las últimas décadas también ha atraído el interés de la comunidad de inteligencia artificial. Aprendizaje Reforzado es aprender qué hacer (cómo asociar situaciones con acciones) de forma tal que se maximice una señal numérica de recompensa. Al aprendiz no se le dice qué acciones tomar, sino que debe descubrir qué acciones arrojan la mayor recompensa seleccionándolas. En los casos más interesantes las 26.

(39) Capítulo 2: Método basado en tiempos de inactividad utilizando la criticidad de los recursos. acciones no sólo afectan la recompensa inmediata sino también las situaciones siguientes y por tanto las recompensas futuras. Estas dos características, búsqueda a ‘prueba y error’ y recompensa retardada son dos de las características más importantes que distinguen el aprendizaje reforzado. En el modelo estándar del aprendizaje reforzado un agente está conectado con su ambiente vía percepción y acción, lo que se muestra en la figura 2.1, en cada interacción el agente percibe el estado actual ‘s’ del ambiente y selecciona una acción ‘a’ para cambiar dicho estado. Esta transición genera una señal ‘r’ que es recibida por el agente, cuya tarea es aprender una política de selección de acciones en cada estado para recibir la mayor recompensa acumulada a largo plazo (Zhang, 1996).. Fig. 2.1 Modelo estándar del aprendizaje reforzado. 2.1.3 Q-Learning Un algoritmo muy conocido dentro del aprendizaje reforzado es el Q-Learning (QL), el cual se basa en aprender una función acción-valor que brinda la utilidad esperada de tomar una acción determinada en un estado específico. El centro del algoritmo es una simple actualización de valores, cada par (s,a) tiene un Q-valor asociado, cuando la acción ‘a’ es seleccionada mientras el agente está en el estado ‘s’, el Q-valor para ese par estado-acción se actualiza basado en la recompensa recibida por el agente al tomar la acción. También se tiene en cuenta el mejor Q-valor para el próximo estado ‘s’, la regla de actualización completa es la siguiente: 𝑄(𝑠, 𝑎) = 𝑄(𝑠, 𝑎) + 𝛼[𝑟 + 𝛾⁡𝑚𝑎𝑥𝑎′ 𝑄(𝑠′, 𝑎′) − 𝑄(𝑠, 𝑎)]. (2.1). En esta expresión,   [0; 1] representa la velocidad del aprendizaje y r la recompensa o penalización resultante de ejecutar la acción a en el estado s. La velocidad de aprendizaje  27.

Figure

Fig. 1.1 Diferentes factores que pueden influenciar un problema de secuenciación, tomado de (Martínez Jiménez,  2012)
Fig.  1.2 Diagrama de tiempos de una operación
Tabla 1.1 Instancia de secuenciación con 2 recursos y 2 trabajos
Fig.  1.4 Entorno de secuenciación, tomado de (Gao, 1996)
+7

Referencias

Documento similar