Articulo de referencia

Programación de talleres

La programación de talleres , el problema de programación de talleres ( JSP ) o problema de programación de talleres ( JSSP ) es un problema de optimización en ciencias de la co...

La programación de talleres , el problema de programación de talleres ( JSP ) o problema de programación de talleres ( JSSP ) 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 talleres , cada trabajo consta de un conjunto de operaciones O 1 , O 2 , ..., O n que deben procesarse en un orden específico (conocido como restricciones de precedencia ). Cada operación tiene una máquina específica en la que debe procesarse y solo una operación de un trabajo puede procesarse a la vez. Una práctica habitual es el taller de trabajo flexible , donde cada operación se puede procesar en cualquier máquina de un conjunto determinado (las máquinas de cada conjunto son idénticas).      

El nombre proviene originalmente de la programación de trabajos en un taller , pero el tema tiene amplias aplicaciones más allá de ese tipo de instancia. Es un problema de optimización combinatoria bien conocido y fue el primero en someterse a un análisis competitivo , introducido por Graham en 1966. [ 1 ] Las mejores instancias del problema para un modelo básico con un objetivo de tiempo de finalización se deben a Taillard. [ 2 ]

En la notación estándar de tres campos para problemas de programación óptima de trabajos , la variante de taller de trabajo se denota por J en el primer campo. Por ejemplo, el problema denotado por "J3|pagij|domáximo{\displaystyle J_{3}|p_{ij}|C_{\max }}" es un problema de taller de 3 máquinas con tiempos de procesamiento unitarios, donde el objetivo es minimizar el tiempo máximo de finalización.

Variaciones del problema

Existen muchas variantes del problema, entre ellas las siguientes:

  • Las máquinas pueden tener duplicados (taller de trabajo flexible con máquinas duplicadas) o pertenecer a grupos de máquinas idénticas (taller de trabajo flexible). [ 3 ]
  • Las máquinas pueden requerir un cierto intervalo entre trabajos o no tener tiempo de inactividad.
  • Las máquinas pueden tener configuraciones que dependen de la secuencia.
  • La función objetivo puede consistir en minimizar el tiempo de finalización, la norma Lp , la tardanza, la tardanza máxima , etc. También puede tratarse de un problema de optimización multiobjetivo.
  • Ciertos trabajos deben completarse antes de que otros puedan comenzar (ver flujo de trabajo ), y los objetivos pueden implicar múltiples criterios. [ 4 ]
  • Un conjunto de tareas puede estar relacionado con un conjunto diferente de máquinas.
  • Tiempos de procesamiento deterministas (fijos) o tiempos de procesamiento probabilísticos.

NP-dureza

Dado que el problema del viajante es NP-difícil , el problema del taller con configuración dependiente de la secuencia también es NP-difícil, ya que el TSP es un caso especial del JSP con un solo trabajo (el vendedor en el TSP) y las máquinas (las ciudades en el TSP). [ 5 ]

Representación del problema

El grafo disyuntivo [ 6 ] es uno de los modelos populares utilizados para describir las instancias del problema de programación de talleres. [ 7 ]

El problema se puede plantear matemáticamente de la siguiente manera:

DejarMETRO={METRO1,METRO2,,METROmetro}{\displaystyle M=\{M_{1},M_{2},\dots ,M_{m}\}}yJ={J1,J2,,Jnorte}{\displaystyle J=\{J_{1},J_{2},\dots,J_{n}\}}sean dos conjuntos finitos . Debido a los orígenes industriales del problema,METROi{\displaystyle \displaystyle M_ {i}}se llaman máquinas y laJj{\displaystyle \displaystyle J_ {j}}se llaman trabajos .

Dejar incógnita{\displaystyle \displaystyle \ {\mathcal {X}}}denota el conjunto de todas las asignaciones secuenciales de trabajos a máquinas, de modo que cada trabajo es realizado por cada máquina exactamente una vez; elementosincógnitaincógnita{\displaystyle x\in {\mathcal {X}}}puede escribirse comonorte×metro{\displaystyle n\times m}matrices, en qué columnai{\displaystyle \displaystyle i}enumera los trabajos que la máquinaMETROi{\displaystyle \displaystyle M_ {i}}servirá, en orden. Por ejemplo, la matriz

incógnita=(122331){\displaystyle x={\begin{pmatrix}1&2\\2&3\\3&1\end{pmatrix}}}

significa que la máquinaMETRO1{\displaystyle \displaystyle M_ {1}}hará los tres trabajosJ1,J2,J3{\ Displaystyle \ Displaystyle J_ {1}, J_ {2}, J_ {3}}en el ordenJ1,J2,J3{\ Displaystyle \ Displaystyle J_ {1}, J_ {2}, J_ {3}}, mientras que la máquinaMETRO2{\displaystyle \displaystyle M_ {2}}realizarán los trabajos en el ordenJ2,J3,J1{\ Displaystyle \ Displaystyle J_ {2}, J_ {3}, J_ {1}}.

Supongamos también que existe alguna función de coste.do:incógnita[0,+]{\displaystyle C:{\mathcal {X}}\to [0,+\infty ]}La función de coste puede interpretarse como un "tiempo total de procesamiento" y puede tener alguna expresión en términos de tiempos.doij:METRO×J[0,+]{\displaystyle C_{ij}:M\times J\to [0,+\infty ]}, el costo/tiempo para la máquinaMETROi{\displaystyle \displaystyle M_{i}}hacer trabajoJj{\displaystyle \displaystyle J_{j}}.

El problema del taller de trabajo consiste en encontrar una asignación de trabajos.incógnitaincógnita{\displaystyle x\in {\mathcal {X}}}de tal manera quedo(incógnita){\displaystyle \displaystyle C(x)}es un mínimo, es decir, no hayyincógnita{\displaystyle y\in {\mathcal {X}}}de tal manera quedo(incógnita)>do(y){\displaystyle \displaystyle C(x)>C(y)}.

Eficiencia de la programación

La eficiencia de la programación se puede definir para una programación mediante la relación entre el tiempo total de inactividad de la máquina y el tiempo total de procesamiento, como se muestra a continuación:

do=1+ilij,kpagjk=do.metroj,kpagjk{\displaystyle C'=1+{\sum _{i}l_{i} \over \sum _{j,k}p_{jk}}={C.m \over \sum _{j,k}p_{jk}}}

Dóndeli{\displaystyle l_{i}}representa el tiempo de inactividad de la máquina i , C es el tiempo de finalización y m es el número de máquinas. Esta formulación normaliza el tiempo de finalización por el número de máquinas y el tiempo total de procesamiento, lo que permite comparar la utilización de recursos entre instancias de programación de talleres (JSP) de diferentes tamaños. [ 8 ]

El problema del costo infinito

Uno de los primeros problemas que deben abordarse en el JSP es que muchas soluciones propuestas tienen un costo infinito: es decir, existeincógnitaincógnita{\displaystyle x_{\infty }\in {\mathcal {X}}}de tal manera quedo(incógnita)=+{\displaystyle C(x_{\infty })=+\infty }De hecho, es bastante sencillo inventar ejemplos de tales cosas.incógnita{\displaystyle x_{\infty }}garantizando que dos máquinas entren en un punto muerto , de modo que cada una espere la salida del siguiente paso de la otra.

Resultados importantes

Graham introdujo el algoritmo de planificación List en 1966, que es (2 − 1/m)-competitivo, donde m es el número de máquinas. [ 1 ] Posteriormente se demostró que era el algoritmo óptimo en línea para dos y tres máquinas. El algoritmo Coffman-Graham (1972) para trabajos de longitud uniforme también es óptimo para dos máquinas y (2 − 2/m)-competitivo. [ 9 ] [ 10 ]

En 1992, Bartal, Fiat, Karloff y Vohra presentaron un algoritmo con una competitividad de 1,986, [ 11 ] seguido por un algoritmo con una competitividad de 1,945 por Karger, Philips y Torng en 1994. [ 12 ] Ese mismo año, Albers introdujo un algoritmo diferente con una competitividad de 1,923. [ 13 ] El mejor resultado conocido es el de Fleischer y Wahl, que alcanzó una relación competitiva de 1,9201. [ 14 ]

Albers también estableció un límite inferior de 1,852. [ 15 ] Las instancias de Taillard juegan un papel clave en el desarrollo de la programación de talleres con un objetivo de tiempo de finalización.

En 1976, Garey demostró que este problema es NP-completo para m > 2, lo que significa que no se puede calcular ninguna solución óptima en tiempo polinomial a menos que P=NP . [ 16 ]

En 2011, Xin Chen et al. proporcionaron algoritmos óptimos para la planificación en línea en dos máquinas relacionadas, mejorando los resultados anteriores. [ 17 ] [ 18 ]

Minimización del tiempo de finalización sin conexión

empleos atómicos

La forma más simple del problema de minimización del tiempo de finalización fuera de línea se refiere a tareas atómicas, es decir, tareas que no se subdividen en múltiples operaciones. Equivale a empaquetar varios artículos de diferentes tamaños en un número fijo de contenedores, de manera que el tamaño máximo de contenedor necesario sea el menor posible. (Si, en cambio, se busca minimizar el número de contenedores y el tamaño de cada uno es fijo, el problema se convierte en otro, conocido como el problema de empaquetamiento de contenedores ).

Dorit S. Hochbaum y David Shmoys presentaron en 1987 un esquema de aproximación en tiempo polinomial que encuentra una solución aproximada al problema de minimización del tiempo de finalización fuera de línea con trabajos atómicos a cualquier grado de precisión deseado. [ 19 ]

Trabajos que constan de múltiples operaciones

La forma básica del problema de programar trabajos con múltiples (M) operaciones, en M máquinas, de manera que todas las primeras operaciones deben realizarse en la primera máquina, todas las segundas operaciones en la segunda, etc., y ningún trabajo puede realizarse en paralelo, se conoce como el problema de programación de talleres de flujo . Existen varios algoritmos, incluidos los algoritmos genéticos . [ 20 ]

El algoritmo de Johnson

Se puede utilizar un algoritmo heurístico de SM Johnson para resolver el caso de un problema de N trabajos en 2 máquinas cuando todos los trabajos deben procesarse en el mismo orden. [ 21 ] Los pasos del algoritmo son los siguientes:

El trabajo P i tiene dos operaciones, de duración P i1 , P i2 , que se realizarán en la máquina M1, M2 en esa secuencia.

  • Paso 1. Lista A = { 1, 2, …, N }, Lista L1 = {}, Lista L2 = {}.
  • Paso 2. De entre todas las duraciones de operación disponibles, seleccione la mínima.

Si el mínimo pertenece a P k1 ,

Eliminar K de la lista A; agregar K al final de la lista L1.

Si el mínimo pertenece a P k2 ,

Eliminar K de la lista A; agregar K al principio de la lista L2.

  • Paso 3. Repita el Paso 2 hasta que la Lista A esté vacía.
  • Paso 4. Unir la Lista L1 y la Lista L2. Esta es la secuencia óptima.

El método de Johnson solo funciona de forma óptima para dos máquinas. Sin embargo, dado que es óptimo y fácil de calcular, algunos investigadores han intentado adaptarlo para M máquinas ( M  >  2).

La idea es la siguiente: Imaginemos que cada trabajo requiere m operaciones en secuencia, en M1, M2… Mm. Combinamos las primeras m /2 máquinas en un centro de mecanizado (imaginario), MC1, y las máquinas restantes en un centro de mecanizado MC2. Entonces, el tiempo total de procesamiento para un trabajo P en MC1 es igual a la suma de los tiempos de operación en las primeras m /2 máquinas, y el tiempo de procesamiento para un trabajo P en MC2 es igual a la suma de los tiempos de operación en las últimas m /2 máquinas.

De este modo, hemos reducido el problema de las m máquinas a un problema de programación de dos centros de mecanizado. Podemos resolverlo utilizando el método de Johnson.

Predicción de tiempo de finalización

El aprendizaje automático se ha utilizado recientemente para predecir el tiempo de finalización óptimo de una instancia JSP sin generar realmente la programación óptima. [ 8 ] Los resultados preliminares muestran una precisión de alrededor del 80 % en la clasificación de pequeñas instancias JSP generadas aleatoriamente según la eficiencia de programación óptima mediante aprendizaje supervisado.

Ejemplo

Aquí se muestra un ejemplo de un problema de programación de talleres formulado en AMPL como un problema de programación entera mixta con restricciones indicadoras:

parámetro N_JOBS ; parámetro N_MACHINES ;establecer JOBS ordenados = 1 .. N_JOBS ; establecer MACHINES ordenados = 1 .. N_MACHINES ;param ProcessingTime { JOBS , MACHINES } > 0 ;param TiempoAcumulado { i en TRABAJOS , j en MÁQUINAS } = suma { jj en MÁQUINAS : ord ( jj ) <= ord ( j )} TiempoProcesamiento [ i , jj ];param TimeOffset { i1 en JOBS , i2 en JOBS : i1 <> i2 } = max { j en MACHINES } ( CumulativeTime [ i1 , j ] - CumulativeTime [ i2 , j ] + ProcessingTime [ i2 , j ]);final var >= 0 ; var inicio { TRABAJOS } >= 0 ; var precede a { i1 en TRABAJOS , i2 en TRABAJOS : ord ( i1 ) < ord ( i2 )} binario ;minimizar makestan : fin ;sujeto a makespan_def { i en JOBS }: fin >= inicio [ i ] + suma { j en MACHINES } ProcessingTime [ i , j ];sujeto a no12_conflict { i1 en JOBS , i2 en JOBS : ord ( i1 ) < ord ( i2 )}: precede [ i1 , i2 ] ==> start [ i2 ] >= start [ i1 ] + TimeOffset [ i1 , i2 ];sujeto a no21_conflict { i1 en JOBS , i2 en JOBS : ord ( i1 ) < ord ( i2 )}: ! precede a [ i1 , i2 ] ==> start [ i1 ] >= start [ i2 ] + TimeOffset [ i2 , i1 ];datos ;param N_JOBS : = 4 ; param N_MACHINES : = 4 ;param ProcessingTime : 1 2 3 4 : = 1 5 4 2 1 2 8 3 6 2 3 9 7 2 3 4 3 1 5 8 ;

Véase también

Referencias

  1. 1 2 Graham, R. (1966). "Límites para ciertas anomalías de multiprocesamiento" (PDF) . Bell System Technical Journal . 45 (9): 1563– 1581. doi : 10.1002/j.1538-7305.1966.tb01709.x .
  2. "Instancias de Taillard" . mistic.heig-vd.ch . Consultado el 17 de marzo de 2025 .
  3. Maccarthy (1993). "Abordando la brecha en la investigación sobre programación: una revisión de los métodos de optimización y heurísticos en la programación de la producción".
  4. Malakooti, ​​B (2013). Sistemas de operaciones y producción con objetivos múltiples . John Wiley & Sons. ISBN 978-1-118-58537-5.
  5. Sharma, P. (marzo de 2016). "Una revisión sobre la programación de talleres con tiempos de preparación". Actas de la Institución de Ingenieros Mecánicos, Parte B: Revista de Fabricación de Ingeniería . 230 (3): 517– 533. doi : 10.1177/0954405414560617 . ISSN 0954-4054 . 
  6. ^ B. Roy, B. Sussmann, Les problèmes d'ordonnancement avec constraintes disjonctives, SEMA, Nota DS, n.º 9, París, 1964.
  7. Błażewicz, Jacek (diciembre de 2000). "La representación de la máquina gráfica disyuntiva del problema de programación de talleres". European Journal of Operational Research . 127 (2): 317– 331. doi : 10.1016/S0377-2217(99)00486-5 . ISSN 0377-2217 . 
  8. 1 2 Mirshekarian, Sadegh; Šormaz, Dušan N. (9 de junio de 2016). "Correlación de las características del problema de programación de talleres con la eficiencia de la programación" (PDF) . Expert Systems with Applications . 62 : 131–147 . doi : 10.1016/j.eswa.2016.06.014 . Archivado del original el 17 de abril de 2018.
  9. Coffman, EG Jr .; Graham, RL (1972), "Planificación óptima para sistemas de dos procesadores" (PDF) , Acta Informatica , 1 (3): 200–213 , doi : 10.1007/bf00288685 , MR 0334913 , S2CID 40603807  .
  10. Lam, Shui; Sethi, Ravi (1977), "Análisis del peor caso de dos algoritmos de planificación", SIAM Journal on Computing , 6 (3): 518–536 , doi : 10.1137/0206037 , MR 0496614 .
  11. Bartal, Y.; A. Fiat; H. Karloff; R. Vohra (1992). "Nuevos algoritmos para un antiguo problema de planificación". Actas del 24.º Simposio ACM sobre Teoría de la Computación. págs. 51–58 . doi : 10.1145/129712.129718 . 
  12. Karger, D .; S. Phillips; E. Torng (1994). "Un mejor algoritmo para un antiguo problema de programación" . Actas del Quinto Simposio ACM sobre Algoritmos Discretos.
  13. Albers, Susanne ; Torben Hagerup (1992). "Mejora de la ordenación paralela de enteros sin escritura concurrente" . Actas del tercer simposio anual ACM-SIAM sobre algoritmos discretos . Archivo del simposio sobre algoritmos discretos. págs. 463–472 . 
  14. Fleischer, Rudolf (2000). Algoritmos – ESA 2000. Berlín/Heidelberg: Springer. págs. 202–210 . doi : 10.1007/3-540-45253-2_19 . ISBN  978-3-540-41004-1.
  15. Albers, Susanne (1999). "Mejores límites para la programación en línea". SIAM Journal on Computing . 29 (2): 459– 473. CiteSeerX 10.1.1.685.8756 . doi : 10.1137/S0097539797324874 . 
  16. 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 . JSTOR 3689278 . 
  17. ^ Chen, Xin; Lan, Yan; Benkő, Atila; Dósa, György; Han, Xin (2011). " Algoritmos óptimos para programación online con reordenamiento acotado al final " . Informática Teórica . 412 (45): 6269– 6278. doi : 10.1016/j.tcs.2011.07.014 .
  18. Liu, M.; Xu, Y.; Chu, C.; Zheng, F. (2009). "Programación en línea en dos máquinas uniformes para minimizar el tiempo de finalización" . Theoret. Comput. Sci . 410 ( 21–23 ): 2099–2109 . doi : 10.1016/j.tcs.2009.01.007 .
  19. Hochbaum, Dorit ; Shmoys, David (1987). "Uso de algoritmos de aproximación dual para problemas de programación: resultados teóricos y prácticos" (PDF) . Journal of the ACM . 34 (1): 144–162 . CiteSeerX 10.1.1.125.5753 . doi : 10.1145/7531.7535 . S2CID 9739129 .  
  20. Khuri, Sami; Miryala, Sowmya Rao (1999). "Algoritmos genéticos para resolver problemas de programación de talleres abiertos". Actas de la 9.ª Conferencia Portuguesa sobre Inteligencia Artificial: Avances en Inteligencia Artificial . Londres: Springer Verlag . CiteSeerX 10.1.1.29.4699 . 
  21. SM Johnson, Programas de producción óptimos de dos y tres etapas con tiempos de preparación incluidos, Naval Res. Log. Quart. I(1954)61-68.
  • Directorio de metodologías, sistemas y software para la optimización dinámica de la Universidad de Viena .
  • instancias de Taillard
  • Brucker P. Algoritmos de programación . Heidelberg, Springer. Quinta ed. ISBN 978-3-540-24804-0