La programación de flujo de trabajo es un problema de optimización en ciencias de la computación e investigación operativa . Es una variante de la programación óptima de trabajos . En un problema general de programación de trabajos, se nos dan n trabajos J 1 , J 2 , ..., J n con tiempos de procesamiento variables, que deben programarse en m máquinas con potencia de procesamiento variable, mientras se intenta minimizar el tiempo de finalización (makespan ), es decir, la duración total de la programación (cuando todos los trabajos han terminado de procesarse). En la variante específica conocida como programación de flujo de trabajo , cada trabajo contiene exactamente m operaciones. La i -ésima operación del trabajo debe ejecutarse en la i -ésima máquina. Ninguna máquina puede realizar más de una operación simultáneamente. Para cada operación de cada trabajo, se especifica el tiempo de ejecución.
La programación de flujo de producción es un caso especial de programación de talleres de producción donde existe un orden estricto para todas las operaciones que se realizan en todos los trabajos. Este tipo de programación puede aplicarse tanto a instalaciones de producción como a diseños informáticos . Un tipo especial de problema de programación de flujo de producción es el problema de programación de flujo de producción por permutación, en el que el orden de procesamiento de los trabajos en los recursos es el mismo para cada paso de procesamiento subsiguiente.
En la notación estándar de tres campos para problemas de programación óptima de trabajos , la variante de taller de flujo se denota por F en el primer campo. Por ejemplo, el problema denotado por " F3||" es un problema de taller de flujo con 3 máquinas y tiempos de procesamiento unitarios, donde el objetivo es minimizar el tiempo máximo de finalización.
Definición formal
Hay m máquinas y n trabajos. Cada trabajo contiene exactamente m operaciones. La i -ésima operación del trabajo debe ejecutarse en la i -ésima máquina. Ninguna máquina puede realizar más de una operación simultáneamente. Para cada operación de cada trabajo, se especifica un tiempo de ejecución.
Las operaciones dentro de un mismo trabajo deben ejecutarse en el orden especificado. La primera operación se ejecuta en la primera máquina, luego (una vez finalizada la primera) la segunda en la segunda máquina, y así sucesivamente hasta la m -ésima operación. Sin embargo, los trabajos pueden ejecutarse en cualquier orden. El problema consiste en determinar la disposición óptima, es decir, aquella que minimiza el tiempo total de ejecución del trabajo.
Mediciones del rendimiento de la secuenciación (γ)
El problema de secuenciación puede plantearse como la determinación de una secuencia S tal que se optimicen uno o varios objetivos de secuenciación.
- Tiempo de flujo (promedio),
- Tiempo de finalización, C máx.
- (Promedio) Tardanza,
- ....
En Malakooti (2013) se puede encontrar una discusión detallada sobre la medición del desempeño . [ 1 ]
Complejidad de la programación de talleres de flujo
Como lo presentan Garey et al. (1976), [ 2 ] la mayoría de las extensiones de los problemas de programación de talleres de flujo son NP-difíciles y pocas de ellas pueden resolverse de manera óptima en O(nlogn); por ejemplo, F2|prmu|C max puede resolverse de manera óptima utilizando la regla de Johnson . [ 3 ]
Taillard proporciona problemas de referencia sustanciales para la programación de talleres de flujo, talleres abiertos y talleres de trabajo. [ 4 ]
Métodos de solución
Los métodos propuestos para resolver problemas de programación de talleres de flujo se pueden clasificar como algoritmos exactos, como el método de ramificación y acotación , y algoritmos heurísticos , como el algoritmo genético .
Minimizar el tiempo de finalización, C max
F2|prmu|C max y F3|prmu|C max se pueden resolver de forma óptima utilizando la regla de Johnson [ 3 ] pero para el caso general no hay ningún algoritmo que garantice la optimalidad de la solución.
El taller de flujo contiene n trabajos disponibles simultáneamente en el tiempo cero, los cuales deben ser procesados por dos máquinas dispuestas en serie con almacenamiento ilimitado entre ellas. El tiempo de procesamiento de todos los trabajos se conoce con certeza. Se requiere programar n trabajos en las máquinas para minimizar el tiempo total de producción. La regla de Johnson para la programación de trabajos en un taller de flujo de dos máquinas se presenta a continuación.
En una planificación óptima, la tarea i precede a la tarea j si min{p 1i ,p 2j } < min{p 1j ,p 2i } . Donde p 1i es el tiempo de procesamiento de la tarea i en la máquina 1 y p 2i es el tiempo de procesamiento de la tarea i en la máquina 2. De manera similar, p 1j y p 2j son los tiempos de procesamiento de la tarea j en la máquina 1 y la máquina 2, respectivamente.
Para el algoritmo de Johnson:
- Sea p 1j el tiempo de procesamiento del trabajo j en la máquina 1.
- y p 2j el tiempo de procesamiento del trabajo j en la máquina 2
El algoritmo de Johnson:
- Formulario conjunto1 que contiene todos los trabajos con p 1j < p 2j
- El conjunto de formación 2 contiene todos los trabajos con p 1j > p 2j ; los trabajos con p 1j = p 2j pueden colocarse en cualquiera de los dos conjuntos.
- Forme la secuencia de la siguiente manera:
- (i) El trabajo en el conjunto1 va primero en la secuencia y van en orden creciente de p 1j (SPT)
- (ii) Los trabajos del conjunto 2 siguen en orden decreciente de p 2j (LPT). Los empates se resuelven arbitrariamente.
Este tipo de programa se denomina programa SPT(1)–LPT(2).
Malakooti (2013) ofrece una discusión detallada de los métodos de solución disponibles . [ 1 ]
Véase también
Referencias
- 1 2 Malakooti, B (2013). Sistemas de operaciones y producción con objetivos múltiples. John Wiley & Sons. ISBN 978-1-118-58537-5.
- ↑ Garey, MR; Johnson, DS; Sethi, Ravi (1976). "La complejidad de la programación de talleres de flujo y talleres de trabajo". Matemáticas de la Investigación Operativa . 1 (2): 117– 129. doi : 10.1287/moor.1.2.117 .
- 1 2 Johnson, SM (1954). "Programas de producción óptimos de dos y tres etapas con tiempos de preparación incluidos". Naval Research Logistics Quarterly . 1 (1): 61– 68. doi : 10.1002/nav.3800010110 .
- ↑ Taillard, E. (enero de 1993). "Benchmarks for basic scheduling problems" . European Journal of Operational Research . 64 (2): 278– 285. doi : 10.1016/0377-2217(93)90182-M .
- Programación óptima
- Tecnología de flujo de trabajo
- Gestión de ingeniería