Está en la página 1de 66

Capítulo 7

Talleres de Trabajo (determinista)

7.1 Programación y disyuntiva-and-bound Branch . . . 183


7.2 El desplazamiento Cuello de botella heurístico y la makespan 193
7.3 El desplazamiento de Cuello de Botella heurístico y el total
La tardanza ponderada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.4 Programación con restricciones y el makespan . . . . . . . . 207
7.5 Discusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Este capítulo trata de los modelos múltiples de operación que son diferentes de
los modelos de tienda flujo discutidos en el capítulo anterior. En un modelo de
tienda de flujo de todos los puestos de trabajo siguen la misma ruta. Cuando las
rutas son fijos, pero no necesariamente el mismo para cada trabajo, el modelo
se llama una tienda de trabajo. Si un trabajo en una tienda de trabajo tiene que
visitar ciertas máquinas más de una vez, se dice que el trabajo para recircular.
La recirculación es un fenómeno común en el mundo real. Por ejemplo, en la
fabricación de semiconductores tienen empleos para recircular varias veces
antes de completar todo su procesamiento.
La primera sección se centra en las representaciones y las formulaciones del
problema clásico taller de trabajo con el objetivo makespan y sin recirculación.
También se describe un procedimiento rama-y-bound que está diseñado para
encontrar la solución óptima. La segunda sección describe una heurística
popular para los talleres de trabajo con el objetivo makespan y sin
recirculación. Esta heurística se refiere típicamente como el desplazamiento de
heurística cuello de botella. La tercera sección se centra en una versión más
elaborada de la heurística de cuello de botella desplazamiento que está
diseñado específicamente para el objetivo total de la tardanza ponderada. La
cuarta sección se describe una aplicación de un procedimiento de programación
con restricciones para la minimización del makespan. La última sección se
analizan las posibles extensiones.
7.1 Disjunctive Programming and Branch-and-Bound 184

7.1 Programación Disyuntivo y-y-Bound Branch


Considere J2 || Cmax. Hay dos máquinas y puestos de trabajo n. Algunos
trabajos tienen que ser procesados primero en la máquina 1 y luego en la
máquina 2, mientras que los trabajos restantes

© Springer Science + Business Media, LLC 2016 183


ML Pinedo, programación, DOI 10.1007 / 978-3-319-26580-3 7
tienen que ser procesados primero en la máquina 2 y luego en la máquina 1. El
tiempo de procesamiento de trabajo j en la máquina 1 (2) es P1J (p2j). El
objetivo es minimizar el makespan.
Este problema puede ser reducido a F2 || Cmáx de la siguiente manera. Let
J1,2 denotar el conjunto de trabajos que tienen que ser procesados por primera
vez en la máquina 1, y J2,1 el conjunto de trabajos que tienen que ser
procesados por primera vez en la máquina 2. Tener en cuenta que cuando un
trabajo desde J1,2 ha completado su procesamiento en la máquina 1,
posponiendo su procesamiento en la máquina 2 no afecta a la makespan
siempre que la máquina 2 se mantiene ocupado. Lo mismo puede decirse de un
trabajo desde J2,1; Si un trabajo se ha completado el proceso en la máquina 2,
posponiendo su procesamiento en la máquina 1 (siempre y cuando la máquina
1 se mantiene ocupado) no afecta a la makespan. Por lo tanto un trabajo desde
J1,2 tiene en la máquina 1 una prioridad mayor que cualquier trabajo de J2,1,
mientras que un trabajo desde J2,1 tiene en la máquina 2 una prioridad mayor
que cualquier trabajo de J1,2. Queda por determinar en qué puestos de trabajo
de secuencia en J1,2 pasan por la máquina 1 y el empleo en J2, 1 Ir a través de la
máquina 2. La primera de estas dos secuencias se puede determinar
considerando J1,2 como un F2 || problema Cmax con la máquina 1 configurar
primera y la máquina 2 configurado segunda y la segunda secuencia puede ser
determinada considerando J2,1 como otro F2 || problema Cmax con la máquina
2 configurado primera y la máquina 1 segundo. Esto conduce a SPT (1) -LPT (2)
secuencias para cada uno de los dos conjuntos, con prioridades entre conjuntos
como se especifica anteriormente.
Este problema de dos máquinas es uno de los pocos problemas taller de
trabajo de programación para el que un algoritmo de tiempo polinomial se
puede encontrar. Los otros pocos problemas taller de trabajo de programación
para los que se pueden obtener algoritmos de tiempo polinómico por lo general
requieren que todos los tiempos de procesamiento a ser 0 o 1.
El resto de esta sección está dedicada a la Jm || problema Cmax con tiempos
de procesamiento arbitrarias y no de recirculación.
La minimización del makespan en un taller de trabajo sin recirculación, Jm ||
Cmax, se puede representar en una forma muy agradable por un grafo
disyuntivo. Considere un gráfico G dirigida con un conjunto de nodos N y dos
juegos de arcos A y B. Los nodos N corresponden a todas las operaciones (i, j)
que deben ser realizadas en los puestos de trabajo n. El conjuntivo llamada
7.1 Disjunctive Programming and Branch-and-Bound 185

(sólido) arcos A representan las rutas de los puestos de trabajo. Si el arco (i, j) →
(k, j) es parte de A, entonces trabajo j tiene que ser procesado en la máquina i
antes de que se procesa en la máquina de k, es decir, la operación (i, j)
funcionamiento precede (k, j ). Dos operaciones que pertenecen a dos puestos
de trabajo diferentes y que tienen que ser procesados en la misma máquina
están conectados entre sí por dos llamados arcos disyuntivos (roto) que van en
direcciones opuestas. Los arcos B forma m camarillas disyuntivos de arcos
dobles, una clique para cada máquina. (A clique es un término en la teoría de
grafos que se refiere a un gráfico en el que cualquiera de los dos nodos están
conectados el uno al otro; en este caso, cada conexión dentro de un clique
consiste en un par de arcos disyuntivos.) Todas las operaciones (nodos) en el
misma camarilla tiene que ser hecho en la misma máquina. Todos los arcos que
emanan de un nodo, conjuntiva, así como disyuntivo, tienen como longitud el
tiempo de procesamiento de la operación que está representada por ese nodo.
Además hay una fuente de U y un disipador de V, que son nodos ficticios. El
nodo de origen U tiene arcos n conjuntivas que emanan de las primeras
operaciones de los puestos de trabajo n y el nodo receptor V ha próximos arcos
n conjuntivas ) Todas las operaciones (nodos) en la misma camarilla tienen que
ser hechas en la misma máquina. Todos los arcos que emanan de un nodo,
conjuntiva, así como disyuntivo, tienen como longitud el tiempo de
procesamiento de la operación que está representada por ese nodo. Además
hay una fuente de U y un disipador de V, que son nodos ficticios. El nodo de
origen U tiene arcos n conjuntivas que emanan de las primeras operaciones de
los puestos de trabajo n y el nodo receptor V ha próximos arcos n conjuntivas )
Todas las operaciones (nodos) en la misma camarilla tienen que ser hechas en
la misma máquina. Todos los arcos que emanan de un nodo, conjuntiva, así
como disyuntivo, tienen como longitud el tiempo de procesamiento de la
operación que está representada por ese nodo. Además hay una fuente de U y
un disipador de V, que son nodos ficticios. El nodo de origen U tiene arcos n
conjuntivas que emanan de las primeras operaciones de los puestos de trabajo
n y el nodo receptor V ha próximos arcos n conjuntivas

2 2 2 3
43
0 42 43

Fig. 7.1 grafo dirigido para el taller de trabajo con makespan como objetivo

desde todas las últimas operaciones. Los arcos emanan de la fuente tienen
longitud cero (véase la figura7.1). Este gráfico se denota por G = (N, A, B).
7.1 Disjunctive Programming and Branch-and-Bound 186

Un horario factible corresponde a una selección de un arco disyuntiva de


cada par de tal manera que el gráfico dirigido resultante es acíclico. Esto implica
que una selección de arcos disyuntivos de una pandilla tiene que ser acíclica.
Tal selección determina la secuencia en la que las operaciones se deben realizar
en esa máquina. Que una selección a partir de una pandilla tiene que ser acíclico
pueden argumentó de la siguiente manera: Si hubiera un ciclo dentro de una
camarilla, una secuencia posible de las operaciones en la máquina
correspondiente no hubiera sido posible. Puede que no sea inmediatamente
obvio por qué no debería haber ningún ciclo formado por arcos conjuntivos y
disyuntivos arcos de diferentes camarillas. Sin embargo, tales ciclo de un
correspondería también a una situación que no es factible. Por ejemplo, sea (h,
j) y (i, j) denota dos operaciones consecutivas que pertenecen a trabajo j y dejar
que (i, k) y (h, k) denotan dos operaciones consecutivas que pertenecen a k
trabajo. Si en virtud de una operación de programación dado (i, j)
funcionamiento precede (i, k) en la máquina i y operación operación (h, k)
precede (h, j) en la máquina h, entonces la gráfica contiene un ciclo con cuatro
arcos, dos arcos conjuntivos y disyuntivos dos arcos de diferentes camarillas.
Planificar una tal es físicamente imposible. Resumiendo, si D representa el
subconjunto de los arcos disyuntivos seleccionados y el gráfico G (D) está
definida por el conjunto de arcos conjuntivos y el subconjunto D, corresponde
entonces D a un horario factible si y sólo si G (D) no contiene dirigidos ciclos.
dos arcos conjuntivos y disyuntivos dos arcos de diferentes camarillas.
Planificar una tal es físicamente imposible. Resumiendo, si D representa el
subconjunto de los arcos disyuntivos seleccionados y el gráfico G (D) está
definida por el conjunto de arcos conjuntivos y el subconjunto D, corresponde
entonces D a un horario factible si y sólo si G (D) no contiene dirigidos ciclos.
dos arcos conjuntivos y disyuntivos dos arcos de diferentes camarillas.
Planificar una tal es físicamente imposible. Resumiendo, si D representa el
subconjunto de los arcos disyuntivos seleccionados y el gráfico G (D) está
definida por el conjunto de arcos conjuntivos y el subconjunto D, corresponde
entonces D a un horario factible si y sólo si G (D) no contiene dirigidos ciclos.
El makespan de un horario factible es determinado por el camino más largo
en G (D) de la fuente de U al fregadero V. Este camino más largo se compone de
un conjunto de operaciones de las cuales las primeras aperturas en el tiempo 0
y los últimos acabados en el momento de la makespan. Cada operación en este
camino es seguido inmediatamente por cualquiera de la siguiente operación en
la misma máquina o en la siguiente operación del mismo trabajo en otra
máquina. El problema de minimizar la makespan se reduce a encontrar una
selección de arcos disyuntivos que minimiza la longitud de la trayectoria más
larga (es decir, la ruta crítica).
Hay varias formulaciones de programación matemática para el taller de
trabajo sin recirculación, incluyendo una serie de formulaciones de
programación entera. Sin embargo, la formulación utilizada con mayor
frecuencia es la llamada formulación de programación disyuntiva (véase
también el apéndiceUNA). Esta formulación de programación disyuntiva está
7.1 Disjunctive Programming and Branch-and-Bound 187

estrechamente relacionado con la representación gráfica disyuntiva de la tienda


de trabajo.
Para presentar la formulación de programación disyuntiva, dejar que la
variable yij denotan el tiempo de inicio de la operación (i, j). Recordemos que
establece N denota el conjunto de todas las operaciones (i, j), y el conjunto A el
conjunto de todas las restricciones de enrutamiento (i, j) → (k, j) que requieren
trabajo j para ser procesado en la máquina i antes de que se procesa en la
máquina k. El siguiente programa matemático minimiza el makespan.
minimizar la Cmáx
sujeto a

YKJ- yij ≥ pij para todos (i, j) → (k, j) ∈ A


domax - yij ≥ pij para todos (i, j) ∈ N

yij- Yil ≥ pil o Yil- yij ≥ pij para todos (i, l) y (i, j), yo = 1, ..., m
yij≥ 0 para todos (i, j) ∈ N

En esta formulación, el primer conjunto de restricciones a asegurar que la


operación (k, j) no puede comenzar antes de la operación (i, j) se ha
completado. El tercer conjunto de restricciones se llaman las restricciones
disyuntivas; se aseguran de que existe algún orden entre las operaciones de los
diferentes puestos de trabajo que tienen que ser procesados en la misma
máquina. Debido a estas limitaciones de esta formulación se conoce como una
formulación de programación disyuntiva.

Ejemplo 7.1.1 (Programación Disyuntivo formulación). Consideremos el siguiente


ejemplo con cuatro máquinas y tres puestos de trabajo. La ruta, es decir, la
secuencia de la máquina, así como los tiempos de procesamiento se dan en la
siguiente tabla.

secuencia de la máquina empleos tiempos de procesamiento


1 1,2,3 pags11 = 10, pags21 = 8, pags31 = 4
2 2,1,4,3 pags22 = 8, pags12 = 3, pags42 = 5, pags32 = 6
3 1,2,4 pags13 = 4, pags23 = 7, pags43 = 3
El objetivo consiste en la única variable Cmáx. El primer conjunto de
restricciones consta de siete limitaciones: dos para el trabajo 1, tres para la
tarea 2, y dos para el trabajo 3. Por ejemplo, uno de estos es
y21 - y11 ≥ 10 (= P11).

El segundo grupo está formado por diez limitaciones, uno para cada operación.
Un ejemplo es

domax - y11 ≥ 10 (= P11).


7.1 Disjunctive Programming and Branch-and-Bound 188

El conjunto de restricciones disyuntivos contiene ocho restricciones: tres cada


uno para máquinas 1 y 2 y uno de cada de las máquinas 3 y 4 (hay tres
operaciones a realizar en las máquinas 1 y 2 y dos operaciones en las máquinas
3 y 4).
Un ejemplo de una restricción disyuntiva es
y11 - Y12 ≥ 3 (= p12) o y12 - y11 ≥ 10 (= P11).

El último conjunto incluye restricciones de no negatividad diez, uno por cada


hora de inicio. ||

Que un problema de programación puede ser formulado como un programa


disyuntiva no implica que no existe un procedimiento de solución estándar
disponible que funcione satisfactoriamente. La minimización del makespan en
un taller de trabajo es un problema y procedimientos de solución muy duros
están basados en la enumeración o en la heurística.
Para obtener soluciones óptimas se requieren métodos de ramificación y de
ruedas. La ramificación, así como los procedimientos de delimitación que son
aplicables a este problema suelen ser de un diseño especial. Con el fin de
describir uno de los procedimientos de ramificación se considera una clase
específica de horarios.

Definición 7.1.2 (Horario activo). Un programa viable se llama activa si no


puede ser alterado de ninguna manera que alguna operación se ha completado
antes y ninguna otra operación se completa más tarde.
Un horario de ser activo implica que cuando un trabajo llega a una máquina,
este trabajo se procesa en la secuencia prescrita tan pronto como sea posible.
Un calendario activo no puede tener ningún periodo de inactividad en el que la
operación de un trabajo en espera podría encajar.
De la definición se deduce que un calendario activo tiene la propiedad de que
es imposible reducir el makespan sin aumentar el tiempo de inicio de alguna
operación. Por supuesto, hay muchos diferentes programas activos. Se puede
demostrar que existe entre todos los horarios posibles un calendario activo que
reduce al mínimo el makespan.
Un esquema de ramificación que se utiliza a menudo se basa en la generación
de todos los programas activos. Todos estos horarios activos pueden ser
generados por un algoritmo simple. En este algoritmo Ω denota el conjunto de
todas las operaciones de la que todos los predecesores ya han sido
programadas (es decir, el conjunto de todas las operaciones programables) y Rij
la hora de inicio más temprana posible de la operación (i, j) en Ω. El conjunto Ω
es un subconjunto del conjunto Ω.
Algoritmo 7.1.3 (Generación de todas las programaciones activas).
Paso 1. (Condición inicial)
7.1 Disjunctive Programming and Branch-and-Bound 189

Let Ω contiene la primera operación de cada


puesto de trabajo; dejar que rij= 0, para todos (i,
j) ∈ Ω.

Paso 2. (Selección de la máquina)


Calcular para el horario parcial actual

t
y dejar i* denotarla máquina en la que se consigue el mínimo.
Paso 3. (ramificación)
Let Ω designar el conjunto de todas las operaciones (I *, j) en la máquina i * de
tal manera que

Rhode Island*j <t(Ω).

Para cada operación en Ω considerar un (extendido) horario parcial


con esa operación como la siguiente en la máquina i *.
Para cada uno de tales horario parcial (extendido) eliminar la operación de Ω,
incluir su inmediato seguidor en Ω y volver al paso 2.
||

Algoritmo 7.1.3 es la base para el proceso de ramificación. Paso 3 realiza la


ramificación desde el nodo que se caracteriza por el horario parcial dada; el
número de ramas es igual al número de las operaciones en Ω. Con este
algoritmo se puede generar todo el árbol y los nodos en la parte inferior de la
corresponden árbol para todos los horarios activos.
Así que un nodo de V en los corresponde árbol a un horario parcial y el
horario parcial se caracteriza por una selección de arcos disyuntivos que
corresponde al orden en que se han programado todos los predecesores de un
conjunto dado Ω. Una rama de V corresponde nodo a la selección de una
operación (i *, j) ∈ Ω como el siguiente para ir en la máquina i *. Los arcos
disyuntivos (i *, j) → (i *, k) a continuación, tienen que ser añadido a la máquina
i * para todas las operaciones (i *, k) todavía que ser programadas en la
máquina i *. Esto implica que el nodo recién creado en el nivel inferior, por
ejemplo nodo V, que corresponde a un horario parcial con sólo una operación
más en su lugar, contiene varios arcos disyuntivos adicionales que ahora se
seleccionan (véase la figura7.2). Sea D denota el conjunto de arcos disyuntivos
seleccionados en el nodo de nueva creación. Refiérase a la gráfica que incluye
todos los arcos conjuntivos y D conjunto como gráfico G (D). El número de
ramas que brotan de nodo V es igual al número de las operaciones en Ω.
7.1 Disjunctive Programming and Branch-and-Bound 190

Para encontrar un límite inferior para el makespan en el nodo V, considere


gráfico G (D). La longitud de la ruta crítica en este gráfico ya resulta en un límite
inferior para el makespan en el nodo V. Call este LB límite inferior (V). Mejor
(más altos) límites inferiores para este nodo se pueden obtener como sigue.
Considero máquina i y suponer que todas las otras máquinas se permite a
proceso, en cualquier punto en el tiempo, varias operaciones al mismo tiempo
(ya que no todos los arcos disyuntivos se han seleccionado todavía en G (D),
puede ser el caso de que, en algunos puntos de tiempo, múltiples operaciones
requieren un procesamiento en la misma máquina al mismo tiempo). Sin
embargo, la máquina i debe procesar sus operaciones una tras otra. En primer
lugar, calcular los tiempos de inicio más temprana posible rij de todas las
operaciones (i, j) en la máquina i; es decir, determinar en el gráfico G (D) la
longitud de la trayectoria más larga desde la fuente al nodo (i, j). En segundo
lugar, para cada operación (i, j) en la máquina i, calcular la cantidad mínima de
tiempo necesaria entre la finalización de la operación (i, j) y el LB límite inferior

V V

(V), mediante la determinación de la trayectoria más larga desde el nodo (i, j)


para el lavabo en G (D). Esta cantidad de tiempo,
selección de (yo*, j) ' = {(yo*, j) (yo*, l)}
Todos los arcos selección de (yo*, l)
disyuntivos Todos los arcos
(yo*, j) → (yo*, k), Para disyuntivos
todas las operaciones (yo*, l) → (yo*, k), Para
(yo*, k) Aún no se ha todas las operaciones
programado, (yo*, k) Aún no se ha
se añaden. programado, se añaden.
Fig. 7.2 La ramificación del árbol de la rama-y-bound enfoque

para la operación (i, j), es decir, dij es igual a LB (V) menos la longitud de la

trayectoria más larga desde el nodo (i, j) al fregadero más pij.

Consideremos ahora el problema de la secuenciación de las operaciones en la


máquina i como un solo problema de la máquina con los trabajos que llegan a
diferentes fechas de lanzamiento, no hay cambios de contexto permitidos y el
máximo de lo avanzado que el objetivo que se reduce al mínimo, es decir, 1 | RJ |
7.1 Disjunctive Programming and Branch-and-Bound 191

Lmax (ver Sección3.2). A pesar de que este problema es fuertemente NP-difícil,


hay algoritmos relativamente efectivas que generen buenas soluciones. La
secuencia óptima obtenida para este problema implica una selección de arcos
disyuntivos que se pueden agregar (temporalmente) a D. Esto entonces puede
conducir a una ruta crítica ya en general en el gráfico, un makespan más grande
y una mejor (más alto) el límite inferior para el nodo V. en el nodo V esto se
puede hacer para cada una de las m máquinas separado. El mayor makespan
obtenido de esta manera se puede utilizar como un límite inferior en el nodo V.
Por supuesto, los arcos disyuntivos temporales insertados para obtener el
límite inferior se eliminan tan pronto como el mejor límite inferior se
determina.
Aunque parece algo de una carga de tener que resolver problemas de
programación m fuertemente NP-duro con el fin de obtener una cota inferior
para otro problema fuertemente NP-difícil, este tipo de procedimiento de
delimitación se ha comportado razonablemente bien en experimentos
computacionales.

Ejemplo 7.1.4 (Solicitud de Branch-and-Bound). Considere el ejemplo descrito en


el Ejemplo 7.1.1. El gráfico inicial contiene sólo arcos conjuntivos y se
representa en la figura7.3.una. El makespan correspondiente a este gráfico es
22. Aplicando el procedimiento de rama-y-bound a esta instancia resultados en
la siguiente rama-y-bound árbol.
7.1 Disjunctive Programming and Branch-and-Bound 192

Fig. 7.3 gráficos de precedencia en el nivel 1 en el Ejemplo 7.1.4

Nivel 1: aplicando el algoritmo 7.1.3 rendimientos

Ω = {(1,1), (2,2), (1,3)}, t (Ω) = min

(0 + 10,0 + 8,0 + 4) = 4, i * = 1,

Así que hay dos nodos de interés a escala 1, uno correspondiente a la operación
(1,1) que se procesan primero en la máquina 1 y el otro a la operación (1,3) que
se procesan primero en la máquina 1.
Si la operación (1,1) está prevista en primer lugar, a continuación, los dos
arcos disyuntivos representan en la Figura7.3.B se añaden a la gráfica. El nodo
se caracteriza por los dos arcos disyuntivos

(1,1) → (1,2), (1,1)

→ (1,3).

La adición de estos dos arcos disyuntivos aumenta inmediatamente el límite


inferior en el makespan a 24. Con el fin de mejorar este límite inferior puede
generar para la máquina 1 una instancia de 1 | RJ | Lmax. La fecha de
lanzamiento de trabajo j en este problema de la máquina solo está determinada
por la trayectoria más larga desde la fuente de U a nodo (1, j) en la figura7.3.si.
La fecha de vencimiento de trabajo j se calcula mediante la búsqueda de la
trayectoria más larga desde el nodo (1, j) al fregadero, restando P1J de la
longitud de este camino más largo, y restando el valor resultante de 24. Estos
cálculos llevan a la siguiente máquina sola problema para la máquina 1.

trabajos 1 2 3

pags1j 10 3 4
r1j 0 10
10
re1j 10 13
14
La secuencia que minimiza Lmax es 1,2,3 con Lmax = 3. Esto implica que un
límite inferior para el makespan en el nodo correspondiente es 24 + 3 = 27. Una
7.1 Disjunctive Programming and Branch-and-Bound 193

instancia de 1 | RJ | Lmax correspondiente a la máquina 2 se puede generar de


la misma manera. Las fechas de lanzamiento y fechas de vencimiento también
se deducen de la figura7.3.b (suponiendo una makespan de 24), y son como
sigue.

trabajos 1 2 3

pags2j 8 8 7
r2j 10 0 14
re2j 20 10
21
La secuencia óptima es 2,1,3 con Lmax = 4. Esto produce una mejor límite
inferior para la makespan en el nodo que corresponde a un funcionamiento
(1,1) están programando primero, es decir, 24 + 4 = 28. máquinas Análisis de 3
y 4 de la misma manera no cede una inferior mejor unido.
El segundo nodo en el nivel 1 corresponde a la operación (1,3) está prevista
primero. Si (1,3) está programada para ir primero, dos arcos disyuntivos
diferentes se añaden a la gráfica original, produciendo un límite inferior de 26.
La instancia asociada del problema máximo retraso para la máquina 1 tiene una
secuencia óptima 3,1,2 con Lmax = 2. esto implica que el límite inferior para la
makespan en este nodo, que corresponde a la operación (1,3) programado
primera, está también es igual a 28. máquinas Análisis de 2, 3, y 4 no da como
resultado una mejor inferior Unido.
El siguiente paso es para ramificar desde el nodo (1,1) en el nivel 1 y generar
los No hay arcos disyuntivos nodos
en el Figura 7.3a

, ,
Nivel 1 programado
LB = 28 por LB = 28 por
la máquina 1
primera la máquina 1
primera

, 1) programado primero
en la máquina 1
, 2) prevista primero
en la máquina 2

siguiente nivel.
nivel 0
7.1 Disjunctive Programming and Branch-and-Bound 194

Nivel 2
LB = 28

Fig. 7.4 La ramificación del árbol en el Ejemplo 7.1.4

Nivel 2: aplicando el algoritmo 7.1.3 rendimientos ahora

Ω = {(2,2), (2,1), (1,3)}, t (Ω) = min


(0 + 8,10 + 8,10 + 4) = 8, i * = 2,

.
Hay un nodo de interés en esta parte del Nivel 2, el nodo correspondiente a la
operación (2,2) que se procesa primero en la máquina 2 (véase la figura7.4).
Dos arcos disyuntivos se añaden a la gráfica, es decir, (2,2) → (2,1) y (2,2) →
(2,3). Así que este nodo se caracteriza por un total de cuatro arcos disyuntivos:

(1,1) → (1,2),

(1,1) → (1,3),

(2,2) → (2,1), (2,2)

→ (2,3).

Esto conduce a una instancia de 1 | RJ | Lmax para la máquina 1 con las


siguientes fechas de lanzamiento y fechas de vencimiento (suponiendo una
makespan de 28).
trabajos 1 2 3

pags1j 10 3 4
r1j 0 10
10
re1j 14 17
18
7.2 The Shifting Bottleneck Heuristic and the Makespan 195

1 3 2

2 1 3

1 2

0 10 30

Fig. 7.5 diagrama de Gantt para J4 || Cmax(Ejemplo 7.1.4)

La secuencia de trabajo óptima es 1,3,2 y Lmax = 0. Esto implica que el límite


inferior para la makespan en el nodo correspondiente es de 28 + 0 = 28.
máquinas Análisis de 2, 3, y 4 de la misma manera no aumenta el límite inferior.
Continuando con los resultados del procedimiento de derivación y enlazado
en las siguientes secuencias de trabajo para las cuatro máquinas.

secuencia de trabajo de la máquina


1 1,3,2 (o 1,2,3)
2 2,1,3
3 1,2
4 2,3

El makespan bajo este programa óptimo es 28 (véase la figura 7.5). ||

El enfoque descrito anteriormente se basa en la enumeración completa y está


garantizado para dar lugar a una programación óptima. Sin embargo, con un
gran número de máquinas y un gran número de puestos de trabajo el tiempo de
cálculo es prohibitivo. Ya con 20 máquinas y 20 puestos de trabajo, es difícil
encontrar un mejor esquema.
Por tanto, es necesario desarrollar la heurística que conducen a
razonablemente buenos horarios en un tiempo razonablemente corto. La
siguiente sección describe una heurística muy conocido con una excelente
trayectoria.
7.2 The Shifting Bottleneck Heuristic and the Makespan 196

7.2 El desplazamiento Cuello de botella heurístico y la


makespan
Uno de los procedimientos heurísticos exitosas desarrolladas para Jm || Cmax

es el desplazamiento de heurística cuello de botella.

En el siguiente resumen del desplazamiento de Cuello de Botella heurística M


denota el conjunto de todas las máquinas m. En la descripción de una iteración
de la heurística se supone que en iteraciones anteriores una selección de arcos
disyuntivos ya ha sido fijado para un subconjunto M0 de máquinas. Así que para
cada una de las máquinas en M0 ya se ha determinado una secuencia de
operaciones.
Se determina de iteración que la máquina en M - M0 tiene que ser incluido en
el conjunto próximo M0. La secuencia en la que las operaciones de esta máquina
tienen que ser procesados también se genera en esta iteración. Con el fin de
seleccionar la máquina para ser incluido próximo en M0, se hace un intento
para determinar que una de las máquinas todavía para ser programados
causaría en un sentido u otro la interrupción severa. Para determinar esto, el
gráfico dirigido original es modificado mediante la supresión de todos los arcos
disyuntivos de las máquinas todavía que ser programadas (es decir, las
máquinas en conjunto M - M0) y manteniendo sólo los arcos disyuntivos
pertinentes de las máquinas en conjunto M0 (uno de cada par). Llame a este
gráfica G. Eliminación de todos los arcos disyuntivos de una máquina específica
implica que todas las operaciones en esta máquina, que originalmente se
suponía que hacer en esta máquina, uno tras otro, Ahora puede ser hecho en
paralelo (como si la máquina tiene capacidad infinita, o de manera equivalente,
cada una de estas operaciones tiene la máquina por sí mismo). La gráfica G tiene
uno o más críticos caminos que determinan la makespan correspondiente.
Llame a este makespan
domax (M0).
Supongamos que la operación (i, j), i ∈ {M - M0}, tiene que ser procesado en
una ventana de tiempo de que la fecha de lanzamiento y fecha de vencimiento
son determinadas por los caminos críticos (más largo) en G, es decir, la fecha de
lanzamiento es igual a la trayectoria más larga de G de la fuente de U al nodo (i,
j) y la fecha de vencimiento es igual a Cmax (M0), menos el camino más largo
desde el nodo (i, j) en el fregadero, más pij. Considere cada una de las máquinas
en M -M0 como independiente 1 | RJ | Lmax problema. Como se indica en la
sección anterior de este problema es fuertemente NP-difícil, pero se han
desarrollado procedimientos que llevan a cabo razonablemente bien. El mínimo
7.2 The Shifting Bottleneck Heuristic and the Makespan 197

Lmax del problema de la máquina única que corresponde a la máquina i se


denota por Lmax (i) y es una medida de la criticidad de la máquina i.
Después de resolver todos estos problemas de las máquinas individuales, se
elige la máquina con la mayor tardanza máxima. Entre las máquinas restantes,
esta máquina es en un sentido más crítico o el “cuello de botella” y por lo tanto
el que se incluirán en el próximo M0. Etiquetar esta máquina k, llame a su
máximo retraso Lmax (k) y programar de acuerdo a la solución óptima obtenida
para el problema de la máquina único asociado con esta máquina. Si los arcos
disyuntivos que especifican la secuencia de operaciones en la máquina k se
insertan en el gráfico G, entonces el makespan de la Lista de corriente aumenta
parciales por al menos Lmax (k), que es,

domax (M0 ∪ k) ≥ Cmax (M0) + Lmax (k).

Antes de iniciar la siguiente iteración y la determinación de la siguiente


máquina para ser programado, un paso adicional se tiene que hacer dentro de la
iteración actual. En este paso adicional de todas las máquinas de la serie
original M0 se resequenced con el fin de ver si el makespan puede reducirse. Es
decir, una máquina, por ejemplo máquina l, se saca del conjunto M0 y un gráfico
G se construye mediante la modificación de gráfico G a través de la inclusión de
los arcos disyuntivos que especifican la secuencia de operaciones en la máquina
de k y la exclusión de los arcos disyuntivos asociado con la máquina de l.
Máquina l se resequenced resolviendo el correspondiente 1 | RJ | Lmax
problema con el lanzamiento y las fechas de vencimiento determinado por los
caminos críticos en el gráfico G. Resecuenciación cada una de las máquinas en el
conjunto original M0 completa la iteración.
En la siguiente iteración de todo el procedimiento se repite y se añade otra
máquina para el conjunto actual M0 ∪ k.
La heurística cuello de botella desplazamiento se puede resumir de la
siguiente manera.

Algoritmo 7.2.1 (Desplazamiento de Cuello de Botella


heurístico). Paso 1. (condiciones iniciales)
conjunto M0 = ∅.
Gráfico G es la gráfica con todos los arcos conjuntivos y no hay arcos
disyuntivos. El conjunto Cmáx(M0) igual a la trayectoria más larga en el gráfico
G.
Paso 2. (Análisis de las máquinas todavía a ser programadas)
Hacer por cada máquina i en el conjunto M - M0 lo siguiente:

generar una instancia de 1 | RJ | Lmax


7.2 The Shifting Bottleneck Heuristic and the Makespan 198

(Con la fecha de lanzamiento de la operación (I, j) determinada por la


trayectoria más larga en el gráfico G desde el nodo fuente al nodo T (i, j);
y la fecha de vencimiento de la operación (i, j) determinado por Cmax
(M0) menos la trayectoria más larga en el gráfico G desde el nodo (i, j)
en el fregadero, más pij).
Minimizar el Lmáx en cada uno de estos subproblemas máquinas
individuales. Sea Lmáx(I) denota el mínimo Lmax en el subproblema
correspondiente a la máquina i.
Paso 3. (selección de cuello de botella y secuenciación)
Dejar

L
máquina de secuencia k de acuerdo con la secuencia
obtenida en el Paso 2 para esa máquina.
Insertar todos los correspondientes arcos disyuntivos en el
gráfico G. Insertar máquina k en M0.
Paso 4. (resecuenciación de todas las máquinas programadas anteriormente)
Hacer para cada máquina i ∈ {M0 - k} la siguiente:
eliminar de G los arcos disyuntivos correspondientes a máquina i;
formular un único subproblema máquina para la máquina i con
fechas de lanzamiento y fechas de vencimiento de las operaciones
determinadas por más largos cálculos de ruta en G.
Encuentra la secuencia que minimice Lmáx(I) y el
inserto de los correspondientes arcos disyuntivos en
el gráfico G.
Paso 5. (criterio de parada)
Si M0 = M luego STOP, de lo contrario ir al paso 2. ||

La estructura de los cuellos de botella, cambiará shows heurísticos la


relación entre el concepto cuello de botella y los conceptos más combinatorias
como ruta crítica (la más larga) y máximo retraso. Un camino crítico indica la
ubicación y el momento de un cuello de botella. La tardanza máxima da una
indicación de la cantidad en que los aumentos makespan Si se añade una
máquina para el conjunto de máquinas ya programados.
El resto de esta sección contiene dos ejemplos que ilustran el uso de la
heurística de cuello de botella cambio.

Ejemplo 7.2.2 (Solicitud de Cambio de Cuello de Botella heurístico). Considere el


ejemplo con cuatro máquinas y tres puestos de trabajo descrito en los ejemplos
7.2 The Shifting Bottleneck Heuristic and the Makespan 199

7.1.1 y 7.1.4. Las rutas de los puestos de trabajo, es decir, las secuencias de la
máquina, y los tiempos de procesamiento se dan en la siguiente tabla:

secuencia de la máquina empleos tiempos de procesamiento


1 1,2,3 pags11 = 10, pags21 = 8, pags31 = 4
2 2,1,4,3 pags22 = 8, pags12 = 3, pags42 = 5, pags32 = 6
3 1,2,4 pags13 = 4, pags23 = 7, pags43 = 3
La iteración 1: Inicialmente, establecer M0 está vacía y el gráfico G contiene sólo
arcos conjuntivos y no hay arcos disyuntivos. La ruta crítica y la Cmax
makespan (∅) pueden determinarse fácilmente: este makespan es igual al
tiempo de procesamiento total máxima requerida para cualquier trabajo. El
máximo de 22 se consigue en este caso por los dos trabajos 1 y 2. Para
determinar qué máquina para programar primero, cada máquina se considera
como un 1 | RJ | problema Lmax con las fechas de lanzamiento y fechas de
vencimiento determinados por los caminos más largos en G (suponiendo una
makespan de 22).
Los datos para el 1 | RJ | Lmax problema correspondiente a la máquina 1 se
presentan en la tabla siguiente.
trabajos 1 2 3

pags1j 10 3 4
r1j
080
re1j
10 11
12
La secuencia óptima resulta ser 1,2,3 con Lmax (1) = 5.
10 8
1 1 2 1 3 1
0 10 4

0 8 3 5 6
2 2 1 2 4 2 3 2

3
0 3
4 7
1 3 2 3 4 3

Fig. 7.6 La iteración 1 de cambiar heurística cuello de botella (Ejemplo 7.2.2)


7.2 The Shifting Bottleneck Heuristic and the Makespan 200

Los datos para el subproblema con respecto a la máquina 2 son:


trabajos 1 2 3

pags2j 88 7
r2j 10 0 4
re2j18 8
19
La secuencia óptima para este problema es 2,3,1 con Lmax (2) = 5. Del mismo
modo, se puede demostrar que
Lmáx(3) = 4
y
Lmáx(4) = 0.

De esto se deduce que, o bien la máquina 1 o de la máquina 2 se puede


considerar un cuello de botella. Romper el empate de manera arbitraria, se
selecciona la máquina 1 para ser incluido en M0. El gráfico G se obtiene
mediante la fijación de los arcos disyuntivos correspondientes a la secuencia de
los puestos de trabajo en la máquina 1 (véase la figura7.6). Está claro que

domáx({1}) = Cmax (∅) + Lmax (1) = 22 + 5 = 27.

Iteración 2: Dado que el makespan correspondiente a G es 27, los caminos


críticos en el gráfico se puede determinar. Las tres máquinas restantes tienen
que ser analizados por separado como 1 | RJ | Lmax problemas. Los datos para
la instancia relativa a máquina 2 son:
trabajos 1 2 3

pags2j 8 8 7
r2j 10 0 17
re2j23 10
24
El calendario óptimo es 2,1,3 y la Lmax resultante (2) = 1. Los datos para el
ejemplo correspondiente a la máquina 3 son:

trabajos 1 2

pags3j 4 6
r3j 18
18
re3j 27
27
7.2 The Shifting Bottleneck Heuristic and the Makespan 201

Ambas secuencias son óptimas y Lmax (3) = 1. La máquina 4 puede ser


analizado de la misma manera y el Lmax resultante (4) = 0. Una vez más, hay un
empate y la máquina 2 se selecciona para ser incluido en M0. Así M0 = {1,2} y

domáx({1,2}) = Cmax ({1}) + Lmax (2) = 27 + 1 = 28.

Los arcos disyuntivos correspondientes a la secuencia de trabajo en la máquina


2 se añaden a G y se obtiene el gráfico G. En este punto, todavía como una parte
de la iteración 2, se puede hacer un intento de disminuir Cmax ({1,2}) por
resecuenciación máquina 1. Se puede comprobar que resecuenciación máquina
1 no da ninguna mejora.

La iteración 3: La ruta crítica en G puede ser determinada y máquinas 3 y 4


permanecen para ser analizadas. Estos dos problemas resultan ser muy simple
con tanto tener una tardanza máxima cero. Ninguno de los dos máquinas
constituye un cuello de botella en modo alguno.
El horario final se determina por las siguientes secuencias de trabajo en las
cuatro máquinas: Secuencia de trabajo 1,2,3 en la máquina 1; secuencia de
trabajo 2,1,3 en la máquina 2; secuencia de trabajo 2,1 en la máquina 3, y la
secuencia de trabajo de 2,3 en la máquina 4. El makespan es 28. ||

La aplicación de la técnica de cuello de botella desplazamiento en la práctica


a menudo tiende a ser más complicada que la heurística ha descrito
anteriormente. El procedimiento de solución para el subproblema sola máquina
debe hacer frente a algunas complicaciones adicionales.
El problema tardanza sola máquina máxima que tiene que ser resuelto en
varias ocasiones dentro de cada iteración de la heurística puede ser a veces un
poco diferente y más complicado que el 1 | RJ | Lmax problema descrito en el
capítulo3 (Que es también el problema se utiliza para la determinación de los
límites inferiores en la sección anterior). En el problema de la máquina única
que tiene que ser resuelto en la heurística de cuello de botella cambiante, las
operaciones en una máquina dada pueden tener que ser sujetos a un tipo
especial de restricciones de precedencia. Puede ser el caso de que una
operación que tiene que ser procesado en una máquina en particular sólo
pueden ser procesados en esa máquina después de ciertas otras operaciones
han completado su procesamiento en esa máquina. Estas restricciones de
precedencia pueden ser impuestas por las secuencias de las operaciones en las
máquinas que ya han sido programados en iteraciones anteriores.
Incluso puede ser el caso de que dos operaciones que están sujetas a tales
limitaciones no sólo tienen que ser procesados en el orden dado, también
7.2 The Shifting Bottleneck Heuristic and the Makespan 202

pueden tienen que ser procesados una cantidad dada de tiempo separados el
uno del otro. Esto es, de entre el procesamiento de dos operaciones que están
sujetas a estas restricciones de precedencia una cantidad mínima determinada
de tiempo (es decir, un retardo) puede tener que transcurra.
Las longitudes de los retardos también se determinan por las secuencias de
las operaciones en las máquinas ya programados. Por tanto, estas restricciones
de precedencia se denominan restricciones de precedencia retraso.
El siguiente ejemplo ilustra la posible necesidad de restricciones de
precedencia retraso en el subproblema sola máquina. Sin estas limitaciones la
heurística de cuello de botella desplazamiento puede terminar en una situación
en la que hay un ciclo en el gráfico disyuntiva y el horario correspondiente no es
factible. El siguiente ejemplo ilustra cómo las secuencias en las máquinas ya
programadas (máquinas en M0) imponen restricciones en las máquinas todavía
para ser programado (máquinas en M-M0).

Ejemplo 7.2.3 (Delayed restricciones de precedencia). Considere el siguiente


ejemplo.

empleos tiempos de procesamiento de secuencia de la máquina


1 1,2 pags11 = 1,pags21 = 1
2 2,1 pags22 = 1,pags12 = 1
3 3 pags33 = 4
4 3 pags34 = 4
Aplicando el desplazamiento de cuello de botella resultados heurísticos en
los siguientes tres iteraciones.
La iteración 1: La primera iteración consiste en la optimización de los tres
subproblemas. Los datos para las tres subproblemas asociados con las
máquinas 1, 2, y 3 se tabulan a continuación.

trab 12 trab 12 trab 12


ajos ajos ajos
pags1j1 1 pags2j1 1 pags3j4
R1j D1J 0 1 R2j d2j 1 0 r3j d3j 4

34 43 0
0
4
4
7.2 The Shifting Bottleneck Heuristic and the Makespan 203

Las soluciones óptimas para máquinas 1 y 2 tienen Lmax ≤ 0, mientras que


para la máquina 3 tiene Lmax = 4. Así máquina 3 está prevista primero y el arco
se inserta (3,4) → (3,3).

Iteración 2: El nuevo conjunto de subproblemas están asociados con las


máquinas 1 y 2.
1 1
1 1 2 1 1 1 2 1
1
1 1
2 2 1 2 1 2 2 1 2 1
1 1
4 4
3 3 3 3
4 4

3 4 3 4

Fig. 7.7 Aplicación de desplazamiento heurística cuello de botella en el Ejemplo 7.2.3

trabajos 1 trabajos 1
2 2
1 1
1 pags1j
pags2j 1
0 r1j
r2j 1
1 0
re1j 7 re2j 8
8 7
Las soluciones óptimas para máquinas 1 y 2 ambos tienen Lmax = -6, por lo

que seleccionar arbitrariamente máquina 1 para ser programada siguiente.

Arco (1,2) → (1,1) se inserta (véase la figura7.7.una).

La iteración 3: Una subproblema permanece, y se asocia con la máquina 2.


trabajos 1
2
1
pags2j 1
r2j 3
7.2 The Shifting Bottleneck Heuristic and the Makespan 204

0
re2j 8
5
Cualquier horario para la máquina 2, se obtiene una Lmax ≤ 0. Si se

seleccionaría un horario arbitrariamente y de arco (2,1) → (2,2) se insertaría, a

continuación, un ciclo se crea en el gráfico, y el calendario general no es factible

(ver figura 7.7.si).

Esta situación podría haberse evitado mediante la imposición de


restricciones de precedencia retraso. Después de máquina de programación 1
(en la iteración 2) hay un camino a partir de (2,2) a (2,1) con una longitud de 3.
Después de la iteración 2 que se ha completado una restricción de precedencia
retardada puede ser generado para iteraciones posteriores. Operación (2,2) la
operación debe preceder (2,1) y, además, tiene que haber un retraso de 2
unidades de tiempo en entre la finalización de la operación (2,2) y el inicio de la
operación (2,1). Con esta restricción de iteración 3 genera una secuencia para la
máquina 2 que se traduce en una programación factible. ||
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 205

Una amplia investigación numérica ha demostrado que el desplazamiento de


heurística cuello de botella es extremadamente eficaz. Cuando se aplica a un
problema de prueba estándar con 10 máquinas y 10 puestos de trabajo que se
habían quedado sin resolver durante más de 20 años, la heurística obtuvo una
muy buena solución muy rápida. Esta solución resultó ser óptima después de un
procedimiento rama-y-bound encontró el mismo resultado y verificado su
optimalidad. El enfoque de la rama-y-bound, en contraste con la heurística,
necesita muchas horas de tiempo de CPU. La desventaja de la heurística es, por
supuesto, que no hay ninguna garantía de que la solución que llega es óptima.
El desplazamiento heurística Cuello de botella puede ser adaptado con el fin
de ser aplicado a los modelos más general que el modelo de taller de trabajo
considerado anteriormente, es decir, se puede aplicar también a los talleres de
trabajo flexibles con recirculación.

7.3 El desplazamiento de Cuello de Botella heurístico y la


tardanza total ponderada
En esta sección se describe un método para Jm || wjTj que combina una variante

de la heurística de cuello de botella desplazamiento discutido en la sección

anterior con una regla de prioridad llama la aparente Costo tardanza primero

(ATC) regla.

La representación gráfica disyuntiva para || jm || wjTj es diferente de la de


Jm Cmáx. En el problema makespan sólo el tiempo de finalización de la última
tarea de dejar el sistema es de importancia. Existe por lo tanto un lavabo
individual en el gráfico disyuntiva. En el problema de la tardanza ponderada
total de los tiempos de ejecución de todos los trabajos n son de importancia. En
lugar de un solo fregadero, ahora hay n sumideros, es decir, V1, ..., Vn (véase la
figura7.8). La longitud del camino más largo desde la fuente de U para el
fregadero Vk representa el tiempo de finalización de k trabajo.
El enfoque se puede describir como sigue. Las máquinas están programadas
de nuevo uno a la vez. En el inicio de una determinada iteración todo listo
machinesin M0 ya tienen
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 206

1 1 2 1 3 1 1

3 2 1 2 2 2 2

3 3 2 3 1 3 3

Fig. 7.8 grafo dirigido para el taller de trabajo con el objetivo total de la tardanza ponderada

sido programada (es decir, todos los arcos disyuntivos se han seleccionado para
estas máquinas) y en esta iteración se tiene que decidir qué máquina debe ser
programado siguiente y cómo debe ser programado. Cada una de las máquinas
restantes tiene que ser analizado por separado y para cada una de estas
máquinas una medida de la criticidad tiene que ser calculada. Los pasos para
hacer dentro de una iteración se pueden describir como sigue.
En la representación gráfica disyuntiva todos los arcos disyuntivos
pertenecientes a las máquinas todavía para ser programados se eliminan y
todos los arcos disyuntivos seleccionados para las máquinas ya programados
(SET M0) se mantienen en su lugar. Dado este grafo dirigido, los tiempos de
finalización de todos los trabajos n se pueden calcular fácilmente. Let Ck
denotan el tiempo de finalización de k trabajo. Consideremos ahora una
máquina i que todavía tiene que ser programada (máquina i es un elemento del
conjunto M - M0). Para evitar un aumento en el Ck tiempo de finalización, la
operación (i, j), j = 1, ..., n, debe ser completado en la máquina i por algunos dkij
fecha de vencimiento local. Si no hay caminos desde el nodo (i, j) al fregadero
correspondiente a k trabajo, es decir, Vk, entonces la fecha dkij debido local es
infinito. Si hay uno o más caminos de nodo (i, j) para Vk, con ser el camino más
largo de la longitud L ((i, j), Vk), entonces la fecha de vencimiento local es

dkij= Max (Ck, dk) - L ((i, j), Vk) + pij.


7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 207

Si se completa la operación (i, j) después de su fecha de vencimiento dkij local,


es decir, Cij> dkij, a continuación, la tardanza de trabajo k aumenta por al
menos Cij-dkij. Let tijk denotan max (Cij-dkij, 0), que representa la lentitud de la
operación (i, j) con respecto a la fecha de vencimiento de k trabajo. Debido a la
operación (i, j) puede causar un retraso en la realización de uno cualquiera de
los puestos de trabajo n, uno puede asumir que la operación (i, j) está sujeto a n
fechas de vencimiento locales. Esto implica que la operación (i, j) está sujeto a
un hij función de costo lineal por tramos (véase la figura7.9), Que se define
como
norte

hij(Cij) = wkTijk.

k= 1

Así, una medida cruda de la criticidad se puede obtener para la máquina i


mediante la resolución de un solo problema de la máquina con cada operación
sujeto a una función de costo lineal a nivel de pieza, es decir, 1 || hj (Cj), donde
hj es una función de coste lineal a nivel de pieza correspondiente al trabajo j. Al
igual que en el apartado anterior, las operaciones pueden estar sujetos a
restricciones de precedencia retardadas para asegurar la viabilidad.
Este único subproblema máquina es una generalización de la 1 || || wjTj
problema (véase el capítulo3). Una heurística conocida por 1 wjTj es la llamada
regla aparente tardanza Costo (ATC). Esta heurística ATC es una regla de
secuenciación compuesto que combina la regla WSPT y el llamado mínimo Slack
primera regla (MS) (bajo las MS gobiernan la holgura de trabajo j en el tiempo t,
max (dj-pj-t, 0), se calcula y se programa el trabajo con la holgura mínima). Bajo
el ATC trabajos de reglas se programan uno a la vez; es decir, cada vez que la
máquina quede libre un índice de clasificación se calcula para cada puesto de
trabajo restante. El trabajo con el índice más alto rango a continuación, se
selecciona para ser procesado siguiente. Este índice es la clasificación
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 208

Fig. 7.9 función de coste hijde operación (i, j) En una sola máquina subproblema

una función del tiempo t en el que la máquina se convirtió en gratuita, así como
de la PJ, el WJ y el DJ de los trabajos restantes. El índice se define como

ij(T) = WJExp - max (dj - pj - t, 0), pj kp¯

donde K es un parámetro de escala, que se puede determinar empíricamente, y


P es el promedio de los tiempos de procesamiento de los puestos de trabajo
restantes. La regla ATC se discute en detalle en el capítulo14.
La pieza-sabia hij función lineal y convexa en la subproblema 1 || hj (Cj) puede
ser considerada como una suma de funciones de penalización lineales, para
cada uno de los que un índice de prioridad ATC puede ser calculado. Uno puede
pensar en varias funciones compuestas índice de prioridad para esta función de
costo más complicado. A razonablemente eficaces uno asigna a la operación (i,
j) el valor de prioridad

norte sem k- pij + (rij - t)) +


(dij
IIJ(T) = exp ,
pij - kp¯
k= 1

donde t es el tiempo más temprano en el que la máquina i se puede utilizar, K es


un parámetro de escala, y P es la parte entera de la longitud media de las
operaciones que se procesa en la máquina i. Esta regla de secuenciación
compuesto produce una razonablemente buena programación para la máquina
i.
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 209

Una medida de la criticidad de la máquina i ahora se puede calcular en un


número de maneras. Por ejemplo, considere las soluciones de todos los
subproblemas máquinas individuales y ajustar la medida de la criticidad de una
máquina igual al valor correspondiente de la función objetivo. Sin embargo, hay
métodos más complicados y más eficaces para medir la criticidad de la
máquina. Por ejemplo, eligiendo los arcos disyuntivos implícitos en la
programación para la máquina i, se puede calcular fácilmente en el nuevo
gráfico disyuntiva los nuevos (generales) tiempos de finalización de todos los
puestos de trabajo n, decir Ck. Claramente, Ck ≥ Ck. La contribución de k trabajo
a la medida de la criticidad de la máquina i se calcula de la siguiente manera. Si
Ck> dk, entonces la contribución de k trabajo a la medida de la criticidad de la
máquina i es sem (Ck - Ck). Sin embargo, si Ck <dk, a continuación, la
retribución debida a un aumento de la finalización de k trabajo es más difícil de
estimar. Esta penalización sería entonces una función de Ck, Ck, y dk. Varias
funciones se han experimentado con y parecen ser prometedores.
Una de tales funciones es

sem(Ck - Ck) exp - (dk - Ck) +,

K
donde K es un parámetro de escala. Sumando sobre todos los puestos de
trabajo, es decir,
norte +

- Ck) exp - (dk - Ck),

sem(Ck
K
k= 1

proporciona una medida de la criticidad para la máquina i. Esta última


expresión juega un papel que es similar a la de Lmax (i) en el paso 2 del
algoritmo7.2.1. Después de que las medidas de criticidad de todas las máquinas
de M - M0 se han computado, la máquina con la medida más alta se selecciona
como el siguiente para ser incluidos en el conjunto M0.
Sin embargo, este proceso aún no se completa una iteración. El enfoque de
cuello de botella desplazamiento original, tal como se describe en el
algoritmo7.2.1, Sugiere que la reprogramación de todas las máquinas en el
conjunto original M0 es ventajosa. Esta reprogramación puede generar
distintos y mejores horarios. Después de este paso ha sido completado, todo el
proceso se repite y la siguiente iteración se inicia.
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 210

Ejemplo 7.3.1 (Desplazamiento de cuello de botella y total ponderado tardanza).


Considere el ejemplo con tres máquinas y tres puestos de trabajo representadas
en la figura 7.8.
WJ RJ DJ secuencia de la máquina tiempos de
trabajo procesamiento
1 1 5 24 1,2,3 pags11 = 5, p21 = 10,
p31 = 4
2 2 0 18 3,1,2 pags32 = 4, p12 = 5, p22 = 6
3 2 0 dieciséis 3,2,1 pags33 = 5, p23 = 3, p13 = 7
El gráfico inicial se representa en la figura 7.10.una.
La iteración 1: La primera iteración requiere la optimización de los tres
subproblemas, uno para cada máquina en el taller de trabajo. Los datos de estos
tres subproblemas, correspondiente a las máquinas 1, 2, y 3, se tabulan a
continuación.
trabajos 1 2 3

5 5 7
pags1j
r1j 5 4 8

re11j, d21j, d31j 10, - ,- - 12, - -, - ,dieciséis


trabajos 1 2 3

10 6 3
pags2j
r2j 10 9 5

re12j, d22j, d32j 20, - ,- - 18, - -, - ,9


trabajos 1 2 3

4 4 5
pags3j
r3j 20 0 0

re13j, d23j, d33j 24, - ,- -, 7, - -, - ,6


La entrada “-” indica que la correspondiente fecha dkij debido es infinita, es
decir, no hay camino de la operación (i, j) al fregadero correspondiente a k
trabajo. Los subproblemas se resuelven utilizando una regla de secuenciación
que se basa en el índice de prioridad Iij (t) para la operación (i, j), donde t es el
tiempo más temprano en el que la máquina i se puede utilizar. Ajuste el
parámetro de escala K igual a 0,1.
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 211

Fig. 7.10 grafos dirigidos en Ejemplo 7.3.1


Puesto que ninguna operación se ha programado aún, los índices de
prioridad para las operaciones asignadas a la máquina 1 son (suponiendo que t
= 4 y P = 5) I11 (4) = 1,23 × 10-6, I12 (4) = 3,3 × 10- 7 y I13 (4) = 1,46 × 10-12.
La operación con la prioridad más alta, es decir, la operación (1,1), se pone en la
primera posición y los índices restantes se vuelven a calcular con el fin de
determinar qué operación debe ser programada siguiente. Las soluciones
obtenidas para estos tres subproblemas son:
i secuencia valor
máquina
1 (1,1), (1,2), 18
(1,3)
2 (2,3), (2,1), dieciséis
(2,2)
3 (3,3), (3,2), 4
(3,1)
7.3 The Shifting Bottleneck Heuristic and the Total Weighted Tardiness 212

Dado que la solución de subproblema 1 tiene el valor más alto, máquina de


horario 1 mediante la inserción de los arcos disyuntivos (1,1) → (1,2) y (1,2) →
(1,3), como se muestra en la figura7.10.si.
Iteración 2: Los datos para los nuevos subproblemas, correspondiente a las
máquinas 2 y 3, se tabulan a continuación.
trabajos 1 2 3

10 6 3
pags2j
r2j 10 15 5

re12j, d22j, d32j 20, - ,- - 21, - -, - ,15


trabajos 1 2 3

4 4 5
pags3j
r3j 20 0 0

re13j, d23j, d33j 24, - ,- -, 10,10 -, - ,12


En esta operación de iteración (3,2) tiene dos fechas de vencimiento porque hay
una (dirigida) camino desde el nodo (3,2) para V2 y V3. Esto hace que su índice
igual a

yo32(0) = 1,53 × 10-7 + 1,53 × 10-7 = 3,06 × 10-7,

desde t = 0 y p = 4. Las soluciones obtenidas para los dos subproblemas son:


i máquina secuencia valor
2 (2,3), (2,1), (2,2) 10
3 (3,2), (3,3), (3,1) 0
La solución para subproblema 2 tiene el valor más alto (10). Horario máquina 2
mediante la inserción de los arcos disyuntivos (2,3) → (2,1) y (2,1) → (2,2) como
se muestra en la figura7.10.do.
7.4 Constraint Programming and the Makespan 213

1, 1 1, 2 1, 3

La máquina 1
2, 3 2, 1 2, 2

máquina 2
3, 3 3, 2 3, 1

máquina 3

0 5 10 15 20 25

Fig. 7.11 horario final en el Ejemplo 7.3.1

La iteración 3: El único subproblema que queda es el uno para máquina 3.


trabajos 1 2 3

4 4 5
pags3j
r3j 20 0 0

re13j, d23j, d33j 24, - ,- -, 15,10 7,7,12


Su solución óptima es (3,3), (3,2), (3,1) con un valor igual a cero, por lo que los
arcos de inserción (3,3) → (3,2) y (3,2) → ( 3,1), como se muestra en la
figura7.10.re. La solución final se representa en la figura7.11, La función
objetivo igual a
3

wjTj= 1 x (24 - 24) + + 2 × (26 - 18) + + 2 × (22 - 16) + = 28.

j= 1

Sucede que en este caso la heurística no produce una solución óptima. La


solución óptima con un valor de 18 puede obtenerse con las versiones más
elaboradas de esta heurística. Estas versiones hacen uso de técnicas, así como
reoptimization máquina (similar dar marcha atrás a la Etapa 4 en el
algoritmo7.2.1). ||

7.4 Programación con restricciones y la makespan


programación con restricciones es una técnica que se originó en la comunidad
de Inteligencia Artificial (IA). En los últimos años, a menudo se ha
7.4 Constraint Programming and the Makespan 214

implementado en combinación con las técnicas de investigación de operaciones


(OR) con el fin de mejorar su eficacia.
programación con restricciones, de acuerdo con su diseño original, sólo se
trata de encontrar una solución buena que es factible y que satisfaga todas las
restricciones dadas (que pueden incluir diferentes fechas de lanzamiento y
fechas de entrega de trabajos). Las soluciones obtenidas no necesariamente
puede minimizar la función objetivo. Sin embargo, es posible incrustar una
técnica de programación con restricciones en un marco que está diseñado para
minimizar cualquier fecha de vencimiento relacionados con la función objetivo.
programación con restricciones aplica a Jm || Cmax funciona de la siguiente
manera. Supongamos que en un taller de trabajo un horario tiene que ser
encontrado con una Cmax makespan que es menor o igual a un plazo
determinado d. El algoritmo de satisfacción de restricciones tiene que producir
para cada máquina una secuencia de operaciones de tal manera que el
calendario general tiene un makespan menor que o igual a D.
Antes de que el procedimiento en sí se inicia, una etapa de inicialización se
tiene que hacer. Para cada operación se realiza un cálculo para determinar su
hora más temprana posible de partida y la última hora de finalización posible
en la máquina en cuestión. Después de todas las ventanas de tiempo se han
calculado, las ventanas de tiempo de todas las operaciones en cada máquina se
comparan entre sí. Cuando las ventanas de tiempo de dos operaciones en
cualquier máquina no se superponen, una relación de precedencia entre las dos
operaciones se puede imponer; en cualquier horario factible, la operación con la
ventana de tiempo anterior debe preceder a la operación con la ventana de
tiempo más tarde. En realidad, una relación de precedencia puede inferir
incluso cuando las ventanas de tiempo se superponen. Deje Sij (Sij) denotan la
primera (última) tiempo posible incorporación en la operación (i, j) y Cij (Cij) la
primera (última) tiempo posible finalización de la operación (i, j) en el actual
conjunto de restricciones de precedencia. Tenga en cuenta que la hora de inicio
más temprana posible de la operación (i, j), es decir, Sij, puede considerarse
como una fecha de lanzamiento local de la operación y puede ser denotado por
rij, mientras que la última hora de finalización posible, es decir, Cij, puede ser
considerada una fecha de vencimiento locales denota por dij. Definir la holgura
entre el procesamiento de operaciones (i, j) y (i, k) en la máquina i como

σ(I, j) → (i, k) = Sik - Cij

o
σ(I, j) → (i, k) = Cik - Sij - pij - PIK

o
σ(I, j) → (i, k) = dik - rij - pij - PIK.
7.4 Constraint Programming and the Makespan 215

Si
σ(I, j) → (i, k) <0

a continuación, no existe, en el marco del conjunto actual de restricciones de


precedencia, un horario factible en el que la operación (i, j) funcionamiento
precede (i, k) en la máquina i; por lo que una relación de precedencia se puede
imponer que requiere la operación (i, k) aparezca antes de la operación (i, j). En
la etapa de inicialización del procedimiento de todos los pares de ventanas de
tiempo se comparan entre sí y todas las relaciones de precedencia implícitas se
insertan en el gráfico disyuntiva. Debido a estas restricciones de precedencia
adicionales de las ventanas de tiempo de cada una de las operaciones se puede
ajustar (reducido) de nuevo, es decir, esto implica un recálculo de la fecha de
lanzamiento y la fecha de vencimiento de cada operación.
de satisfacción de restricciones técnicas, en general, se basan en la
propagación de restricciones. Una técnica de satisfacción de restricciones
típicamente intentos, en cada paso, para insertar nuevas restricciones de
precedencia (arcos disyuntivos) que están implicados por las restricciones de
precedencia insertados antes y por las restricciones originales del problema.
Con las nuevas restricciones de precedencia en lugar de la técnica recalcula las
ventanas de tiempo de todas las operaciones. Para cada par de operaciones que
tienen que ser procesados en la misma máquina que tiene que ser verificado
que uno de los cuatro casos siguientes se aplica.

Caso 1:
Si σ(I, j) → (i, k) ≥ 0 y σ (i, k) → (i, j) <0, entonces la restricción de precedencia (i, j) → (i, k)
tiene que ser impuesta.

Caso 2:
Si σ(I, k) → (i, j) ≥ 0 y σ (i, j) → (i, k) <0, entonces la restricción de precedencia (i, k) → (i, j)
tiene que ser impuesta.

Caso 3:
Si σ(I, j) → (i, k) <0 y σ (i, k) → (i, j) <0,
entonces no hay horario que satisface las restricciones de precedencia ya
en su lugar.

Caso 4:
Si σ(I, j) → (i, k) ≥ 0 y σ (i, k) → (i, j) ≥ 0, entonces o bien ordenando entre las dos
operaciones es todavía posible.
7.4 Constraint Programming and the Makespan 216

En uno de los pasos del algoritmo que se describen en esta sección un par de
operaciones tiene que ser seleccionado que satisface el caso 4, es decir, ya sea
de pedido entre las operaciones es todavía posible. En este paso del algoritmo
de muchos pares de operaciones pueden todavía satisfacen Caso 4. Si hay más
de un par de operaciones que satisface la caja 4, a continuación, una heurística
control de búsqueda tiene que ser aplicado. La selección de un par se basa en la
flexibilidad de secuenciación que este par todavía proporciona. Se selecciona el
par con la flexibilidad más bajo. El razonamiento detrás de este enfoque es
sencillo. Si un par con baja flexibilidad no está prevista desde el principio en el
proceso, entonces puede ser el caso de que más tarde en el proceso de este par
no se puede programar en absoluto. Así que tiene sentido para dar prioridad a
los pares con una baja flexibilidad y posponer pares con una alta flexibilidad.
Claramente, la flexibilidad depende de las cantidades de holgura bajo los dos
ordenamientos. Una simple estimación de la flexibilidad secuenciación de un
par de operaciones, φ ((i, j) (i, k)), es el mínimo de los dos pantalones, es decir,

φ((I, j) (i, k)) = min (σ (i, j) → (i, k), σ (i, k) → (i, j)).

Sin embargo, basándose en este mínimo puede llevar a problemas. Por ejemplo,
supongamos que un par de operaciones tiene valores de holgura 3 y 100,
mientras que otro par tiene valores de holgura 4 y 4. En este caso, puede haber
sólo posibilidades limitadas para la programación de la segunda pareja y
posponer una decisión con respecto a la segunda pareja bien puede eliminarlas.
Un pedido factible con respecto a la primera pareja en realidad no puede estar
en peligro. En lugar de utilizar φ ((i, j) (i, k)), la siguiente medida de flexibilidad
secuenciación ha demostrado ser más eficaz:

φ((I, j) (i, k)) = min (σ (i, j) → (i, k), σ (i, k) → (i, j)) × max (σ (i, j) → (i, k), σ (i, k)
→ (i, j)).

Así que si el máximo es grande, entonces la flexibilidad de un par de


operaciones aumenta y la urgencia a fin de que el par disminuye. Después de
que el par de operaciones con el más bajo φ secuenciación flexibilidad ((i, j) (i,
k)) ha sido seleccionado, la restricción de precedencia que conserva la mayor
flexibilidad se impone, es decir, si

σ(I, j) → (i, k) ≥ σ (i, k) → (i, j)

operación (i, j) funcionamiento debe preceder a (i, k).


En uno de los pasos del algoritmo También puede suceder que un par de
operaciones satisface Caso 3. Cuando este es el caso, el programa parcial que
está en construcción no puede ser completada y el algoritmo tiene que dar
marcha atrás. Vuelta atrás típicamente implica que una o más de las decisiones
7.4 Constraint Programming and the Makespan 217

de pedidos realizados en iteraciones anteriores tiene que ser anulado (es decir,
restricciones de precedencia que se habían impuesto anteriormente tienen que
ser retirados). O bien, puede implicar que no existe una solución factible para el
problema en la forma en que ha sido presentado y formulado y que algunas de
las limitaciones originales del problema tiene que estar relajado.
El procedimiento de búsqueda heurística restricción guiada se puede
resumir de la siguiente manera.

Algoritmo 7.4.1 (Restricción guiada heurístico de búsqueda).


Paso 1.
Calcular para cada par no ordenado de las operaciones
σ(I, j) → (i, k) y σ (i, k) → (i, j).

Paso 2.
Comprobar las condiciones de dominancia y clasificar las decisiones de
ordenación restantes.
Si cualquier decisión de pedido es una de Caso 1 Caso 2 o vaya al paso
3. Si cualquier decisión de ordenar es el caso 3, a continuación, dar
marcha atrás; de lo contrario ir al paso 4.
Paso 3.
Inserte una nueva restricción de precedencia y vaya al paso 1.
Etapa 4.
La falta de resolución de pedido es de Caso 4, a continuación, se encuentra una
solución. DETENER. De lo contrario, vaya al paso 5.
Paso 5.
Calcular φ((I, j) (i, k)) para cada par de operaciones todavía no clasificadas.
Seleccione el par con el mínimo de φ((I, j) (i, k)).
Si σ(I, j)→ (i, k) ≥ σ (i, k) → (i, j), entonces la operación (i, k) debe seguir la operación (i, j); de lo contrario la
operación (i, j) debe seguir la operación (i, k). Vaya al paso 3.

||
Con el fin de aplicar la restricción guiado procedimiento de búsqueda
heurística para Jm || Cmax, tiene que ser incorporado en el siguiente marco. En
primer lugar, un límite superior y una du dl límite inferior que encontrar para el
makespan.

Algoritmo 7.4.2 (Marco para la restricción guiada


heurístico de búsqueda). Paso 1.
conjunto d = (Dl + du) / 2.
aplicar el algoritmo 7.4.1.
7.4 Constraint Programming and the Makespan 218

Paso 2.
Si Cmáx <D, conjunto du= D.
Si Cmáx> d, conjunto dl =
d.
Paso 3.
Si du- dl> 1 volver al paso 1.
De otro modo STOP.
||
El siguiente ejemplo ilustra el uso de la técnica de satisfacción de
restricciones.
Ejemplo 7.4.3 (Aplicación de Programación con restricciones a la Tienda de
empleo). Considere la instancia del problema taller de trabajo descrito en el
Ejemplo 7.1.1.

secuencia de la máquina empleos tiempos de procesamiento


1 1,2,3 pags11 = 10, pags21 = 8, pags31 = 4
2 2,1,4,3 pags22 = 8, pags12 = 3, pags42 = 5, pags32 = 6
3 1,2,4 pags13 = 4, pags23 = 7, pags43 = 3
Considere una fecha de vencimiento d = 32 por cuando todos los trabajos
tienen que ser completados. Consideremos de nuevo el gráfico disyuntiva pero
no tener en cuenta todos los arcos disyuntivos (véase la figura7.12). Al hacer
todos los cálculos camino más largo, las fechas de lanzamiento locales y fechas
de vencimiento locales para todas las operaciones se pueden establecer (véase
la tabla7.1(una)).
Teniendo en cuenta estas ventanas de tiempo para todas las operaciones,
tiene que verificar si estas limitaciones ya implican ningún restricciones de
precedencia adicionales. Consideremos, por ejemplo, el par de operaciones
(2,2) y (2,3), que ambos tienen que ir en la máquina 2. Cálculo de los
rendimientos de holgura

σ(2,3) → (2,2) = d22 - r23 - p22 - p23


= 18-4 - 8 - 7

= -1,
7.4 Constraint Programming and the Makespan 219

10 8
1 1 2 1 3 1
0 4

0 8 3 5 6
2 2 1 2 4 2 3 2

0
3
4 7
1 3 2 3 4 3

Fig. 7.12 grafo disyuntivo sin arcos disyuntivos

lo que implica que el orden (2,3) → (2,2) no es factible. Por lo que el arco

disyuntiva (2,2) → (2,3) tiene que ser insertado. De la misma manera, se puede

demostrar que los arcos disyuntivos (2,2) → (2,1) y (1,1) → (1,2) tienen que ser

insertado también.

Estas restricciones de precedencia adicionales requieren una actualización


de las fechas de publicación y fechas de vencimiento de todas las operaciones.
La liberación ajustado y fechas de vencimiento se presentan en la Tabla7.1(si).
Estas fechas de lanzamiento y debido actualizados no implican restricciones
de precedencia adicionales. El paso por paso 5 del algoritmo requiere el cálculo
de la φ factor de ((i, j) (i, k)) para cada par no ordenado de las operaciones en
cada máquina (véase la tabla7.1(do)).
El par con la menor flexibilidad es (3,1) (3,2). Dado que los pantalones son tales
que

σ(3,2) → (3,1) = σ (3,1) → (3,2) = 4,

ya sea restricción de precedencia puede ser insertado. Supongamos que la


restricción de precedencia se inserta (3,2) → (3,1). Esta restricción de
precedencia provoca cambios importantes en las ventanas de tiempo durante el
cual las operaciones tienen que ser procesados (véase la tabla7.2(una)).
Sin embargo, este nuevo conjunto de ventanas de tiempo impone una
restricción de precedencia adicional, a saber (4,2) → (4,3). Esta nueva
restricción de precedencia provoca cambios en las fechas de publicación y
fechas de vencimiento de las operaciones que se muestran en la Tabla7.2(si).
Estas fechas de lanzamiento y debido actualizados no implican restricciones
de precedencia adicionales. Paso 5 del algoritmo ahora calcula para cada par no
7.4 Constraint Programming and the Makespan 220

ordenado de las operaciones en cada máquina el φ factor de ((i, j) (i, k)) (véase
la tabla7.2(do)).
El par con la menor flexibilidad es (1,1) (1,3) y la restricción de precedencia
(1,1) → (1,3) tiene que ser insertado.
Inserción de esta última restricción de precedencia hace cumplir uno más
restricción, a saber, (2,1) → (2,3). Ahora solamente un par no ordenado de
restos de operaciones, a saber, par (1,3) (1,2). Estas dos operaciones se pueden
pedir en cualquier manera sin violar ninguna fecha de vencimiento. Un pedido
factible es (1,3) → (1,2). El programa resultante con un makespan de 32 se
representa en la figura7.13. Este horario se encuentra con la fecha de
vencimiento fijada inicialmente, pero no es óptima.
(una) (si)

dij operaciones rij dij operaciones rij

(1,1) 0 20 (1,1) 0 18
(2,1) 10 28 (2,1) 10 28
(3,1) 18 32 (3,1) 18 32
(2,2) 0 18 (2,2) 0 18
(1,2) 8 21 (1,2) 10 21
(4,2) 11 26 (4,2) 13 26
(3,2) 16 32 (3,2) 18 32
(1,3) 0 22 (1,3) 0 22
(2,3) 4 29 (2,3) 8 29
(4,3) 11 32 (4,3) 15 32

(1,1) (1,3) √√√√√4 ××××× 8 = 5,65

(1,2) (1,3) 5 14 = 8.36 (2,1)


(2,3) 4 5 = 4.47
(3,1) (3,2) 4 4 = 4.00
(4,2) (4,3) 3 11 = 5.74

Tabla 7.1 (A) la movilización local y las fechas de vencimiento. (B) la liberación local y las
fechas de vencimiento después de la actualización. (C) Computingφ((i, j) (i, k)).
7.4 Constraint Programming and the Makespan 221

Cuando el par (3,1) (3,2) tuvo que ser ordenado la primera vez, que podría
haber sido ordenada en cualquier dirección debido a que los dos valores de
holgura eran iguales. Supongamos que en ese punto se seleccionó el orden
opuesto, es decir, (3,1) → (3,2). El reinicio del proceso en ese punto se obtiene
la liberación y fechas de vencimiento se muestra en la Tabla7.3(una).
Estos liberación y fechas de vencimiento hacer cumplir una restricción de
precedencia sobre el par de operaciones (2,1) (2,3) y la restricción es (2,1) →
(2,3). Esta restricción adicional cambia las fechas de publicación y fechas de
vencimiento (véase la tabla7.3(si)).
Estas nuevas fechas de lanzamiento y fechas de vencimiento tienen un efecto
en el par (4,2) (4,3) y el arco (4,2) → (4,3) tiene que ser incluido. Este arco
adicional no causa ningún cambio adicional en la liberación y fechas de
vencimiento. En este punto sólo dos pares de operaciones permanecen sin
ordenar, a saber, el par (1,1) (1,3) y el par (1,2) (1,3) (véase la tabla7.3(do)).
(una) (si)

dij operaciones rij dij operaciones rij

(1,1) 0 14 (1,1) 0 14
(2,1) 10 28 (2,1) 10 28
(3,1) 24 32 (3,1) 24 32
(2,2) 0 14 (2,2) 0 14
(1,2) 10 17 (1,2) 10 17
(4,2) 13 22 (4,2) 13 22
(3,2) 18 28 (3,2) 18 28
(1,3) 0 22 (1,3) 0 22
(2,3) 8 29 (2,3) 8 29
(4,3) 15 32 (4,3) 18 32

(1,1) (1,3) √√√0 ××× 8 = 0,00

(1,2) (1,3) 5 10 = 7.07 (2,1)


(2,3) 4 5 = 4.47

Tabla 7.2 (A) la movilización local y las fechas de vencimiento. (B) la liberación local y las
fechas de vencimiento después de la actualización. (C) Computingφ((i, j) (i, k)).
7.4 Constraint Programming and the Makespan 222

Así el par (1,1) (1,3) es más crítico y tiene que ser ordenado (1,1) → (1,3).
Resulta que el último par a ser ordenado, (1,2) (1,3), pueden ser ordenados de
cualquier manera.
El programa resultante resulta ser óptima y tiene una makespan de 28. ||

Como se dijo antes, la satisfacción de restricciones no sólo es adecuado para


la minimización de makespan. También se puede aplicar a los problemas con
los objetivos debido relacionados con la fecha y con cada trabajo tiene su propia
fecha de lanzamiento.

7.5 Discussion
The disjunctive graph formulation for Jm || Cmax extends to Jm | rcrc | Cmax.
The set of disjunctive arcs for a machine may now not be a clique. If two
operations of the same job have to be performed on the same machine, a
precedence relationship is given. These two operations are not connected by a
pair of disjunctive arcs, since they are already connected by conjunctive arcs.
223
7.5 Discussion

1 1 1 3 1 2

2 2 1 2 3

3 2 3 1

4, 2 4, 3

0 10 20 30 t

Fig. 7.13 Final schedule in Example 7.4.3


(a) (b)

operations rij dij operations rij dij

(1,1) 0 14 (1,1) 0 14
(2,1) 10 22 (2,1) 10 22
(3,1) 18 26 (3,1) 18 26
(2,2) 0 18 (2,2) 0 18
(1,2) 10 21 (1,2) 10 21
(4,2) 13 26 (4,2) 13 26
(3,2) 18 32 (3,2) 22 32
(1,3) 0 22 (1,3) 0 22
(2,3) 8 29 (2,3) 18 29
(4,3) 15 32 (4,3) 25 32

(1,1)(1,3) √√0×× 8 = 0.00

(1,2)(1,3) 5 14 = 8.36
224
Table 7.3 (a) Local release and due dates. (b) Local release and due dates after update. (c)
Computing φ((i,j)(i,k)).

The branch-and-bound approach described in Section 7.1 still applies. However,


the bounding mechanism is now not based on the solution of a 1 | rj | Lmax
problem, but rather on the solution of a 1 | rj,prec | Lmax problem. The
precedence constraints are the routing constraints on the different operations
of the same job to be processed on the machine.
In the same way that a flow shop can be generalized into a flexible flow shop,
a job shop can be generalized into a flexible job shop. The fact that the flexible
flow shop allows for few structural results gives already an indication that it is
hard to obtain results for the flexible job shop. Even the proportionate cases,
i.e., pij = pj for all i, are hard to analyze.
The Shifting Bottleneck heuristic can be adapted in such a way that it can be
applied to more general models than Jm || Cmax. These more general models
include recirculation as well as multiple machines at every stage. One such
variation of the Shifting Bottleneck heuristic is based on decomposition
principles. This variation is especially suitable for the scheduling of flexible job
shops. The following five-phase approach can be applied to flexible job shops.

Phase 1: The shop is divided into a number of workcenters that have to be


scheduled. A workcenter may consist of a single machine or a bank of machines
in parallel.
Phase 2: The entire job shop is represented through a disjunctive graph.
Phase 3: A performance measure is computed in order to rank the
workcenters in order of criticality. The schedule of the most critical workcenter,
among the workcenters of which the sequences still have to be determined, is
fixed.
Phase 4: The disjunctive graph representation is used to capture the
interactions between the workcenters already scheduled and those not yet
scheduled.
Phase 5: Those workcenters that already have been sequenced are
rescheduled using the new information obtained in Phase 4. If all workcenters
have been scheduled, stop. Otherwise go to Phase 3.

The subproblem now becomes a non-preemptive parallel machine


scheduling problem with the jobs subject to different release dates and the
maximum lateness as objective. A significant amount of computational research
has been done on this parallel machine problem.
225
This chapter describes an application of constraint programming to
minimize the makespan in job shops. A fair amount of research and
development has been done in recent years with regard to constraint
programming techniques. These techniques have now also been used for
minimizing the total weighted tardiness in job shops.
This chapter has not shown the use of local search in job shop scheduling. An
enormous amount of work has been done on this front. Chapter 14 discusses
the applications of local search to job shops.
Exercises

It is clear from this chapter that there are a number of completely different
techniques for dealing with job shops, namely disjunctive programming,
shifting bottleneck, constraint programming and also local search techniques.
Future research on job shop scheduling may focus on the development of
hybrid techniques incorporating two or more of these techniques in a single
framework that can be adapted easily to any given job shop instance.

Exercises (Computational)
7.1. Consider the following heuristic for Jm || Cmax. Each time a machine is
freed, select the job (among the ones immediately available for processing on
the machine) with the largest total remaining processing (including the
processing on the machine freed). If at any point in time more than one
machine is freed, consider first the machine with the largest remaining
workload. Apply this heuristic to the instance in Example 7.1.1.

7.2. Consider the following instance of Jm || Cmax.


jobs machine sequence processing times
1 1,2,3 p11 = 9, p21 = 8, p31 = 4
2 1,2,4 p12 = 5, p22 = 6, p42 = 3
3 3,1,2 p33 = 10, p13 = 4, p23 = 9
Give the disjunctive programming formulation of this instance.

7.3. Consider the following instance of the Jm || Cmax problem.


jobs machine sequence processing times

1 1,2,3,4 p11 = 9, p21 = 8, p31 = 4, p41 = 4


2 1,2,4,3 p12 = 5, p22 = 6, p42 = 3, p32 = 6
3 3,1,2,4 p33 = 10, p13 = 4, p23 = 9, p43 = 2
Give the disjunctive programming formulation of this instance.

7.4. Apply the heuristic described in Exercise 7.1 to the instance in Exercise 7.3.
226
7.5. Consider the instance in Exercise 7.2.
(a) Apply the Shifting Bottleneck heuristic to this instance (doing the
computation by hand).
(b) Compare your result with the result of the shifting bottleneck routinein
the LEKIN system.
7.6. Consider again the instance in Exercise 7.2.
(a) Apply the branch-and-bound algorithm to this instance of job
shopproblem.
(b) Compare your result with the result of the local search routine in
theLEKIN system.

7.7. Consider the following instance of the two-machine flow shop with the
makespan as objective (i.e., an instance of F2 || Cmax, which is a special case of
J2 || Cmax).

jobs 1 2 3 4 5 6 7 8 9 10 11 p1j
3 6 4 3 4 2 7 5 5 6 12 p2j 4 5 5 2
336647 2

(a) Apply the heuristic described in Exercise 7.1 to this two-machine flow
shop.
(b) Apply the shifting bottleneck heuristic to this two-machine flow shop.
(c) Construct a schedule using Johnson’s rule (see Chapter 6).
(d) Compare the schedules found under (a), (b), and (c).

7.8. Consider the instance of the job shop with the total weighted tardiness
objective described in Example 7.3.1. Apply the Shifting Bottleneck
heuristic again, but now use as scaling parameter K = 5. Compare the
resulting schedule with the schedule obtained in Example 7.3.1.

7.9. Consider the following instance of Jm || wjTj.

job wj rj dj machine sequence processing times


1 1 3 23 1,2,3 p11 = 4, p21 = 9, p31 = 5
2 2 2 17 3,1,2 p32 = 4, p12 = 5, p22 = 5
3 2 0 15 3,2,1 p33 = 6, p23 = 4, p13 = 6
(a) Apply the Shifting Bottleneck heuristic for the total weighted tardiness.
(b) Compare your result with the result of the shifting bottleneck routinein
the LEKIN system.
227
(c) Compare your result with the result of the local search routine in
theLEKIN system.

7.10. Consider the following instance of F2 || wjTj.


jobs 1 2 3 4 5

p1j 12 4 6 8 2
p2j 10 5 4 6 3
dj 12 32 21 14 28
wj 3 2 4 3 2
Apply the shifting bottleneck heuristic to minimize the total weighted tardiness.
Comments and References

Exercises (Theory)
7.11. Design a branching scheme for a branch-and-bound approach that is
based on the insertion of disjunctive arcs. The root node of the tree corresponds
to a disjunctive graph without any disjunctive arcs. Each node in the branching
tree corresponds to a particular selection of a subset of the disjunctive arcs.
That is, for any particular node in the tree a subset of the disjunctive arcs has
been fixed in certain directions, while the remaining set of disjunctive arcs has
not been fixed yet. From every node there are two arcs emanating to two nodes
at the next level. One of the two nodes at the next level corresponds to an
additional disjunctive arc being fixed in a given direction while the other node
corresponds to the reverse arc being selected. Develop an algorithm that
generates the nodes of such a branching tree and show that your algorithm
generates every possible schedule.
7.12. Determine an upper and a lower bound for the makespan in an m machine
job shop when preemptions are not allowed. The processing time of job j on
machine i is pij (i.e., no restrictions on the processing times).

7.13. Show that when preemptions are allowed there always exists an optimal
schedule for the job shop that is non-delay.

7.14. Consider J2 | rcrc,pij = 1 | Cmax. Each job has to be processed a number of


times on each one of the two machines. A job always has to alternate between
the two machines, i.e., after a job has completed one operation on one of the
machines it has to go to the other machine for the next operation. The
processing time of each operation is 1. Determine the schedule that minimizes
the makespan and prove its optimality.
228
Comments and References
Job shop scheduling has received an enormous amount of attention in the
research literature as well as in books.
The algorithm for minimizing the makespan in a two-machine job shop
without recirculation is due to Jackson (1956) and the disjunctive programming
formulation described in Section 7.1 is from Roy and Sussmann (1964).
Branch-and-bound techniques have often been applied in order to minimize
the makespan in job shops; see, for example, Lomnicki (1965), Brown and
Lomnicki (1966), Barker and McMahon (1985), Carlier and Pinson (1989),
Applegate and Cook (1991), Hoitomt, Luh, and Pattipati (1993), Brucker,
Jurisch, and Sievers (1994) and Brucker, Jurisch, and Kra¨mer (1994). For an
overview of branch-and-bound techniques applied to the job shop problem, see
Pinson (1995). Some of the branching schemes of these branch-and-bound
approaches are based on the generation of active schedules (the concept of an
active schedule was first introduced by Giffler and Thompson (1960)), while
other branching schemes are based on the directions of the disjunctive arcs to
be selected.
The famous shifting bottleneck heuristic is due to Adams, Balas, and
Zawack1988 (1988). Their algorithm makes use of a single machine scheduling
algorithm developed by Carlier (1982). Earlier work on this particular single
machine subproblem was done by McMahon and Florian (1975). Nowicki and
Zdrzalka (1986), Dauz`ere-P´er`es and Lasserre (1993, 1994) and Balas,
Lenstra, and Vazacopoulos (1995) all developed more refined versions of the
Carlier algorithm. The monograph by Ovacik and Uzsoy (1997) presents an
excellent treatise of the application of decomposition methods and shifting
bottleneck techniques to large scale job shops with various objectives, e.g., the
makespan and the maximum lateness. This monograph is based on a number of
papers by the authors; see, for example, Uzsoy (1993) for the application of
decomposition methods to flexible job shops.
Job shops with the total weighted tardiness as objective have been the focus
of a number of studies. Vepsalainen and Morton (1987) developed heuristics
based on priority rules. Singer and Pinedo (1998) developed a branch-and-
bound approach and Pinedo and Singer (1999) developed the shifting
bottleneck approach described in Section 7.3.
For some basic examples of constraint programming applications to job
shops, see the books by Baptiste, Le Pape, and Nuijten (2001) and Van
Hentenryck and Michel (2005). For an application of constraint programming
for minimizing the total weighted tardiness, see Van Hentenryck and Michel
(2004).
In addition to the procedures discussed in this chapter, job shop problems
have also been tackled with local search procedures; see, for example, Matsuo,
Suh, and Sullivan (1988), Dell’Amico and Trubian (1991), Della Croce, Tadei,
and Volta (1992), Storer, Wu, and Vaccari (1992), Nowicki and Smutnicki
229
(1996), and Kreipl (2000). Examples of such local search procedures are
presented in Chapter 14.
For a broader view of the job shop scheduling problem, see Wein and
Chevelier (1992). For an interesting special case of the job shop, i.e., a flow shop
with reentry, see Graves, Meal, Stefek, and Zeghmi (1983).
230

Chapter 8

Open Shops (Deterministic)

8.1 The Makespan without Preemptions . . . . . . . . . . . . . . . 221


8.2 The Makespan with Preemptions . . . . . . . . . . . . . . . . . . 225
8.3 The Maximum Lateness without Preemptions. . . . . . . 228 8.4 The Maximum Lateness
with Preemptions . . . . . . . . . 232
8.5 The Number of Tardy Jobs . . . . . . . . . . . . . . . . . . . . . . . 237
8.6 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

This chapter deals with multi-operation models that are different from the job shop models considered
in the previous chapter. In a job shop each job has a fixed route that is predetermined. In practice, it
often occurs that the route of the job is immaterial and up to the scheduler to decide. When the routes
of the jobs are open, the model is referred to as an open shop.
The first section covers non-preemptive open shop models with the makespan as objective. The
second section deals with preemptive open shop models with the makespan as objective. The third and
fourth section focus on nonpreemptive and preemptive models with the maximum lateness as
objective. The fifth section considers non-preemptive models with the number of tardy jobs as
objective.

8.1 The Makespan without Preemptions


Consider O2 || Cmax; that is, there are two machines and n jobs. Job j may be processed first on
machine 1 and then on machine 2 or vice versa; the decisionmaker may determine the routes. The
makespan has to be minimized. It is clear that
n n

Cmax ≥ max p2j,

since the makespan cannot be less than the workload on either machine. One would typically expect
the makespan to be equal to the RHS of the inequality;

© Springer Science+Business Media, LLC 2016 221


M.L. Pinedo, Scheduling, DOI 10.1007/978-3-319-26580-3 8
a
231

1 4 2 3

2 1 3 4

1 4 2 3

2 1 3 4

Fig. 8.1 Idle periods in two-machine open shops: (a) idle period causes unnecessary increase in makespan (b) idle
period does not cause an unnecessary increase in makespan

only in very special cases, one would expect the makespan to be larger than the RHS. It is worthwhile to
investigate the special cases where the makespan is strictly greater than the maximum of the two
workloads.
This section considers only non-delay schedules. That is, if there is a job waiting for processing when
a machine is free, then that machine is not allowed to remain idle. It immediately follows that an idle
period can occur on a machine if and only if one job remains to be processed on that machine and,
when that machine is available, this last job is just then being processed on the other machine. It can be
shown that at most one such idle period can occur on at most one of the two machines (see Figure 8.1).
Such an idle period may cause an unnecessary increase in the makespan; if this last job turns out to be
the very last job to complete all its processing, then the idle period does cause an increase in the
makespan (see Figure 8.1.a). If this last job, after having completed its processing on the machine that
was idle, is not the very last job to leave the system, then the makespan is still equal to the maximum of
the two workloads (see Figure 8.1.b).
Consider the following rule: whenever a machine is freed, start processing among the jobs that have
not yet received processing on either machine the one with the longest processing time on the other
machine. This rule is in what follows referred to as the Longest Alternate Processing Time first (LAPT)
rule. At time zero, when both machines are idle, it may occur that the same job qualifies to be first on
both machines. If that is the case, then it does not matter on which machine this job is processed first.
According to this LAPT rule, whenever a machine is freed, jobs that already have completed their
processing on the other machine have the lowest, that is, zero, priority on the machine just freed. There
is therefore no distinction between the priorities of two jobs that both already have been processed on
the other machine.
8.1 The Makespan without Preemptions

Theorem 8.1.1. The LAPT rule results in an optimal schedule for O2 || Cmax with makespan
n n

Cmax = max p2j .

Proof. Actually, a more general (and less restrictive) scheduling rule already guarantees a minimum
makespan. This more general rule may result in many different schedules that are all optimal. This
class of optimal schedules includes the LAPT schedule. This general rule also assumes that unforced
idleness is not allowed.
Assume, without loss of generality, that the longest processing time among the 2n processing times
belongs to operation (1,k), that is,
232

pij≤ p1k, i = 1,2, j = 1,...,n.

The more general rule can be described as follows. If operation (1,k) is the longest operation, then
job k must be started at time 0 on machine 2. After job k has completed its processing on machine 2, its
operation (1,k) has the lowest possible priority with regard to processing on machine 1. Since its
priority is then at all times lower than the priority of any other operation available for processing on
machine 1, the processing of operation (1,k) will be postponed as much as possible. It can only be
processed on machine 1 if no other job is available for processing on machine 1 (this can happen either
if it is the last operation to be done on machine 1 or if it is the second last operation and the last
operation is not available because it is just then being processed on machine 2). The 2(n − 1)
operations of the remaining n − 1 jobs can be processed on the two machines in any order; however,
unforced idleness is not allowed.
That this rule results in a schedule with a minimum makespan can be shown as follows. If the
resulting schedule has no idle period on either machine, then, of course, it is optimal. However, an idle
period may occur either on machine 1 or on machine 2. So two cases have to be considered.
Case 1: Suppose an idle period occurs on machine 2. If this is the case, then only one more operation
needs processing on machine 2 but this operation still has to complete its processing on machine 1.
Assume this operation belongs to job l. When job l starts on machine 2, job k starts on machine 1 and
p1k > p2l. So the makespan is determined by the completion of job k on machine 1 and no idle period
has occurred on machine 1. So the schedule is optimal.
Case 2: Suppose an idle period occurs on machine 1. An idle period on machine 1 can occur only
when machine 1 is freed after completing all its operations with the exception of operation (1,k) and
operation (2,k) of job k is at that point still being processed on machine 2. In this case, the makespan is
equal to p2k + p1k and the schedule is optimal. Another rule that may seem appealing at first sight is
the rule that gives, whenever a machine is freed, the highest priority to the job with the largest total
remaining processing time on both machines. It turns out that there are instances, even with two
machines, when this rule results in a schedule that is not optimal (see Exercise8.12). The fact that the
priority level of a job on one machine depends only on the amount of processing remaining to be done
on the other machine is key.
The LAPT rule described above may be regarded as a special case of a more general rule that can be
applied to open shops with more than two machines. This more general rule may be referred to as the
Longest Total Remaining Processing on Other Machines first rule. According to this rule, again, the
processing required on the machine currently available does not affect the priority level of a job.
However, this rule does not always result in an optimal schedule since the Om || Cmax problem is NP-
hard when m ≥ 3.

Theorem 8.1.2. The problem O3 || Cmax is NP-hard.

Proof. The proof is based on a reduction of PARTITION to O3 || Cmax. The PARTITION problem can be
formulated as follows. Given positive integers a1,...,at and
t

b = aj,

j=1

do there exist 2 disjoint subsets S1 and S2 such that

1 aj= aj = b ? j∈S j∈S2


233

The reduction is based on the following transformation. Consider 3t + 1 jobs. Of these 3t+1 jobs there
are 3t jobs that have only one non-zero operation and one job that has to be processed on each one of
the three machines.
p1j = aj, p2j = p3j = 0, for 1 ≤ j ≤ t,
p2j = aj, p1j = p3j = 0, for t + 1 ≤ j ≤ 2t,
p3j = aj, p1j = p2j = 0, for 2t + 1 ≤ j ≤ 3t,
p1,3t+1 = p2,3t+1 = p3,3t+1 = b,

where
t 2t 3t

aj= aj = aj = 2b

j=1 j=t+1 j=2t+1

and z = 3b. The open shop problem now has a schedule with a makespan equal to z if and only if there
exists a partition. It is clear that to have a makespan equal to 3b job 3t + 1 has to be processed on the
three machines without interruption. Consider the machine on which job 3t + 1 is processed
8.2 The Makespan with Preemptions

0 2 3

Fig. 8.2 Reduction of PARTITION to O3 || Cmax

second, that is, during the interval (b,2b). Without loss of generality it may be assumed that this is
machine 1. Jobs 1,...,t have to be processed only on machine 1. If there exists a partition of these t jobs
in such a way that one set can be processed during the interval (0,b) and the other set can be processed
during the interval (2b,3b), then the makespan is 3b (see Figure8.2). If there does not exist such a
partition, then the makespan has to be larger than 3b.

The LAPT rule for O2 || Cmax is one of the few polynomial time algorithms for non-preemptive open
shop problems. Most of the more general open shop models within the framework of Chapter 2 are NP-
hard, for example, O2 | rj | Cmax. However, the problem Om | rj,pij = 1 | Cmax can be solved in
polynomial time. This problem is discussed in a more general setting in Section 8.3.

8.2 The Makespan with Preemptions


Preemptive open shop problems tend to be somewhat easier. In contrast to Om || Cmax the Om | prmp |
Cmax problem is solvable in polynomial time.
234

From the fact that the value of the makespan under LAPT is a lower bound for the makespan with
two machines even when preemptions are allowed, it follows that the non-preemptive LAPT rule is also
optimal for O2 | prmp |

Cmax.
It is easy to establish a lower bound for the makespan with m (m ≥ 3) machines when preemptions
are allowed:
m n

Cmax ≥ maxpij,pij .
j

That is, the makespan is at least as large as the maximum workload on each of the m machines and at
least as large as the total amount of processing to be done on each of the n jobs. It turns out that it is
rather easy to obtain a schedule with a makespan that is equal to this lower bound.
In order to see how the algorithm works, consider the m×n matrix P of the processing times pij. Row
i or column j is called tight if its sum is equal to the lower bound and slack otherwise. Suppose it is
possible to find in this matrix a subset of non-zero entries with exactly one entry in each tight row and
one entry in each tight column and at most one entry in each slack row and slack column. Such a subset
would be called a decrementing set. This subset is used to construct a partial schedule of length Δ, for
some appropriately chosen Δ. In this partial schedule machine i works on job j for an amount of time
that is equal to min(pij,Δ) for each element pij in the decrementing set. In the original matrix P the
entries corresponding to the decrementing set are then reduced to max(0,pij − Δ) and the resulting
matrix is then called P. If Δ is chosen appropriately, the makespan Cmax that corresponds to the new
matrix P is equal to Cmax − Δ. This value for Δ has to be chosen carefully. First, it is clear that the Δ has
to be smaller than every pij in the decrementing set that is in a tight row or column, otherwise there
will be a row or column in P that is strictly larger than Cmax . For the same reason, if pij is an element
in the decrementing set in a slack row, say row i, it is necessary that

Δ ≤ pij + Cmax − pik,


k

where Cmax − pik is the amount of slack time in row i. Similarly, if pij is an entry in the slack column j,

then

Δ ≤ pij + Cmax − pkj,


k

where Cmax −pkj is the amount of slack time in column j. If row i or column j does not contain an

element in the decrementing set, then

Δ ≤ Cmax − pij
j
235

or
Δ ≤ Cmax − pij.

If Δ is chosen to be as large as possible subject to these conditions, then either P will contain at least
one less strictly positive element than P or P will contain at least one more tight row or column than P.
It is then clear that there cannot be more than r + m + n iterations where r is the number of strictly
positive elements in the original matrix.
It turns out that it is always possible to find a decrementing set for a nonnegative matrix P. This
property is the result of a basic theorem due to Birkhoff and von Neumann regarding stochastic
matrices and permutation matrices.
However, the proof of this theorem is beyond the scope of this book.
8.2 The Makespan with Preemptions

Machine 1 2 1 4

1 3 3

Machine 2
4 4 1

Machine 3

0 2 4 6 8 10 12 t

Fig. 8.3 Optimal Schedule for O3 | prmp | Cmax with four jobs (Example 8.2.1)

Example 8.2.1 (Minimizing Makespan with Preemptions). Consider 3 machines and 4 jobs with the
processing times being the entries in the matrix

3 4 0 4 ⎣ 4 0 0 6⎦

P =4 0 6 0⎤

It is easily verified that Cmax = 11 and that the first row and first column are tight. A possible
decrementing set comprises the processing times p12 = 4, p21 = 4 and p34 = 6. If Δ is set equal to 4,
then Cmax = 7. A partial schedule is constructed by scheduling job 2 on machine 1 for 4 time units; job
1 on machine 2 for 4 time units and job 4 on machine 3 for 4 time units. The matrix is now
P ⎡ =0 0 6 0⎤ 3 0 0 4 ⎣ 4 0 0 2⎦

Again, the first row and the first column are tight. A decrementing set is obtained with the processing
times p11 = 3, p23 = 6 and p34 = 2. Choosing Δ = 3, the partial schedule can be augmented by assigning
job 1 to machine 1 for 3 time units, job 3 to machine 2 for 3 time units and job 4 again to machine 3 but
now only for 2 time units. The matrix is
236

P ⎡ =0 0 3 0⎤ 0 0 0 4 ⎣ 4 0 0 0⎦

The last decrementing set is obtained with the remaining three positive processing times. The final
schedule is obtained by augmenting the partial schedule by assigning job 4 on machine 1 for 4 time
units, job 3 to machine 2 for 3 time units, and job 1 to machine 3 for 4 time units (see Figure 8.3). ||
8.3 The Maximum Lateness without Preemptions
The Om || Lmax problem is a generalization of the Om || Cmax problem and is therefore at least as hard.
Theorem 8.3.1. The problem O2 || Lmax is strongly NP-Hard.

Proof. The proof is done by reducing 3-PARTITION to O2 || Lmax. The 3-PARTITION problem is
formulated as follows. Given positive integers a1,...,a3t and b, such that
b b < aj <
4 2
and
3t

aj= tb,

j=1

do there exist t pairwise disjoint three element subsets Si ⊂ {1,...,3t} such that

aj = b

j∈Si

for i = 1,...,t ?
The following instance of O2 || Lmax can be constructed. The number of jobs, n, is equal to 4t and

p1j= 0 p2j = aj dj = 3tb j = 1,...,3t p1j = 0 p2j = 2b dj = 2b j = 3t + 1


p1j= 3b p2j= 2b dj = (3(j − 3t) − 1)b j = 3t + 2,...,4t

There exists a schedule with Lmax ≤ 0 if and only if jobs 1,...,3t can be divided into t groups, each
containing 3 jobs and requiring b units of processing time on machine 2, i.e., if and only if 3-PARTITION
has a solution.

It can be shown that O2 || Lmax is equivalent to O2 | rj | Cmax. Consider the O2 || Lmax problem with
deadlines d¯j rather than due dates dj. Let

d¯max = max(d¯1,...,d¯n).

Apply a time reversal to O2 || Lmax. Finding a feasible schedule with Lmax = 0 is now equivalent to

finding a schedule for O2 | rj | Cmax with

rj= d¯max − d¯j


237

and a makespan that is less than d¯max. So the O2 | rj | Cmax problem is therefore also strongly NP-
hard.
Consider now the special case Om | rj,pij = 1 | Lmax. The fact that all processing times are equal to 1
makes the problem considerably easier. The polynomial time solution procedure consists of three
phases, namely
8.3 The Maximum Lateness without Preemptions

Fig. 8.4 Network flow problem of Phase 2

Phase 1: Parametrizing and a binary search.


Phase 2: Solving a network flow problem.
Phase 3: Coloring a bipartite graph.

The first phase of the procedure involves a parametrization. Let L be a free parameter and assume
that each job has a deadline dj + L. The objective is to find a schedule in which each job is completed
before or at its deadline, ensuring that Lmax ≤ L. Let tmax = max(d1,...,dn) + L,
that is, no job should receive any processing after time tmax.
The second phase focuses on the following network flow problem: There is a source node U that has
n arcs emanating to nodes 1,...,n. Node j corresponds to job j. The arc from the source node U to node j
has capacity m (equal to the number of machines and to the number of operations of each job). There is
a second set of tmax nodes, each node corresponding to one time unit. Node t, t = 1,...,tmax, corresponds
to the time slot [t−1,t]. Node j has arcs emanating to nodes rj + 1,rj + 2,...,dj + L. Each one of these arcs
has unit capacity. Each node of the set of tmax nodes has an arc with capacity m going to sink V (see
Figure 8.4). The capacity limit on each one of these arcs is necessary to ensure that no more than m
operations are processed in any given time period. The solution of this network flow problem indicates
in which time slots the m operations of job j are to be processed.
However, the network flow solution cannot be translated immediately into a feasible schedule for
the open shop, because in the network flow formulation no distinction is made between the different
machines (i.e., in this solution it may be possible that two different operations of the same job are
processed in two different time slots on the same machine). However, it turns out that the assignment
238

of operations to time slots prescribed by the network flow solution can be transformed into a feasible
schedule in such a way that each operation of job j is processed on a different machine.
The third phase of the algorithm generates a feasible schedule. Consider a graph coloring problem
with a bipartite graph that consists of two sets of nodes N1 and N2 and a set of undirected arcs. Set N1
has n nodes and set N2 has tmax nodes. Each node in N1 is connected to m nodes in N2; a node in N1 is
connected to those m nodes in N2 that correspond to the time slots in which its operations are
supposed to be processed (according to the solution of the network flow problem in the second phase).
So each one of the nodes in N1 is connected to exactly m nodes in N2, while each node in N2 is
connected to at most m nodes in N1. A result in graph theory states that if each node in a bipartite
graph has at most m arcs, then the arcs can be colored with m different colors in such a way that no
node has two arcs of the same color. Each color then corresponds to a given machine.
The coloring algorithm that achieves this can be described as follows. Let gj, j = 1,...,n denote the
degree of a node from set N1, and let ht, t = 1,...,tmax denote the degree of a node from set N2. Let

Δ = max(g1,...,gn,h1,...,htmax)

In order to describe the algorithm that yields a coloring with Δ colors, let ajt = 1 if node j from N1 is
connected to node t from N2, and let ajt = 0 otherwise. The ajt are elements of a matrix with n rows and
tmax columns.
Clearly,
n

ajt≤ Δ t = 1,...,tmax
and
tmax

ajt ≤ Δ j = 1,...,n
The entries (j,t) in the matrix with ajt = 1 are referred to as occupied cells. Each occupied cell in the
matrix has to be assigned one of the Δ colors in such a way that in no row or column the same color is
assigned twice.
The assignment of colors to occupied cells is done by visiting the occupied cells of the matrix row by
row from left to right. When visiting occupied cell (j,t) a color c, not yet assigned in column t, is selected.
If c is assigned to another cell in row j, say (j,t∗), then there exists a color c not yet assigned in row j that
can be used to replace the assignment of c to (j,t∗). If another cell
8.3 The Maximum Lateness without Preemptions
239

Fig. 8.5 Network flow problem of Phase 2 (Example 8.3.2)

(j∗,t∗) in column j∗ already has assignment c, then this assignment is replaced by c. This conflict
resolution process stops when there is no remaining conflict. If the partial assignment before coloring
(j,t) was feasible, then the conflict resolution procedure yields a feasible coloring in at most n steps.

Example 8.3.2 (Minimizing the Maximum Lateness without Preemptions). Consider the following instance
of O3 | rj,pij = 1 | Lmax with 3 machines and 7 jobs.

jobs 1 2 3 4 5 6 7 rj 0 1 2 2 3 4 5 dj 5 5 5 6 6
88

Assume that L = 1. Each job has a deadline d¯j = dj +1. So tmax = 9. Phase 2 results in the network
flow problem described in Figure 8.5. On the left there are 7 nodes that correspond to the 7 jobs and on
the right there are 9 nodes that correspond to the 9 time units.
The result of the network flow problem is that the jobs are processed during the time units given in
the table below.
jobs 1 2 3 4 5 6 7

time units 1,2,3 2,3,4 4,5,6 4,5,6 5,6,7 7,8,9 7,8,9

1 2 3 4 5 6 7

1 2 3 4 5 6 7 8 9

Fig. 8.6 Bipartite graph coloring in Phase 3 (Example 8.3.2)

It can be verified easily that at no point in time more than three jobs are processed simultaneously.
Phase 3 leads to the graph coloring problem. The graph is depicted in Figure 8.6 and the matrix with
the appropriate coloring is

111000000
011100000
000111000
000111000
000011100
000000111
240

000000111

It is easy to find a red (r), blue (b), and white (w) coloring that corresponds to a
feasible schedule.

rbw------rbw-------rbw---
- --bwr------rbw-------rbw
- -----bwr

Since there is a feasible schedule for L = 1, it has to be verified at this point whether or not there is a
feasible schedule for L = 0. It can be shown easily that there does not exist a schedule in which every
job is completed on time. ||

8.4 The Maximum Lateness with Preemptions


In scheduling it is often the case that the preemptive version of a problem is easier than its non-
preemptive counterpart. That is also the case with Om | prmp | Lmax and Om || Lmax.
8.4 The Maximum Lateness with Preemptions

Consider O2 | prmp | Lmax and assume that d1 ≤ ··· ≤ dn. Let


k

Ak= p1j

j=1

and
k

Bk= p2j.

j=1

The procedure to minimize the maximum lateness first considers the due dates as absolute
deadlines and then tries to generate a feasible solution. The jobs are scheduled in increasing order of
their deadlines, i.e., first job 1, then job 2, and so on. Suppose that jobs 1,...,j−1 have been scheduled
successfully and that job j has to be scheduled next. Let xj (yj) denote the total amount of time prior to
dj that machine 1 (2) is idle while machine 2 (1) is busy. Let zj denote the total amount of time prior to
dj that machines 1 and 2 are idle simultaneously. Note that xj, yj, and zj are not independent, since

xj+ zj = dj − Aj−1

and
yj+ zj = dj − Bj−1.
241

The minimum amount of processing that must be done on operation (1,j) while both machines are
available is max(0,p1j − xj) and the minimum amount of processing on operation (2,j) while both
machines are available is max(0,p2j − yj). It follows that job j can be scheduled successfully if and only
if

max(0,p1j − xj) + max(0,p2j − yj) ≤ zj

This inequality is equivalent to the following three inequalities:

p1j − xj ≤ zj p2j − yj ≤ zj p1j − xj + p2j − yj ≤ zj

So job j can be scheduled successfully if and only if each one of the following three feasibility conditions
holds:

Aj≤ dj

Bj≤ dj

Aj+ Bj ≤ 2dj − zj

These inequalities indicate that in order to obtain a feasible schedule an attempt has to be made in each
iteration to minimize the
possible values of z1,...,zn are defined recursively by value of zj. The smallest
z1 = d1
zj= dj − dj 1 + max(0,zj 1 − p1,j 1 − p2,j 1), j = 2,...,n.
− − −
In order to verify the existence of a feasible schedule, the values of z1,...,zn have to be computed
recursively and for each zj it has to be checked whether it satisfies the third one of the feasibility
conditions. There exists a feasible schedule if all the zj satisfy the conditions.
In order to minimize Lmax a parametrized version of the preceding computation has to be done.
Replace each dj by dj + L, where L is a free parameter. The smallest value of L for which there exists a
feasible schedule is equal to the minimum value of Lmax that can be achieved with the original due
dates dj.
It turns out that there exists also a polynomial time algorithm for the more general open shop with
m machines, even when the jobs have different release dates, that is, Om | rj,prmp | Lmax. Again, as in
the case with 2 machines, the due dates dj are considered deadlines d¯j, and an attempt is made to find
a feasible schedule where each job is completed before or at its due date. Let

a1 < a2 < ··· < ap+1

denote the ordered collection of all distinct release dates rj and deadlines d¯j. So there are p intervals
[ak,ak+1]. Let Ik denote the length of interval k, that is,

Ik= ak+1 − ak.

Let the decision variable xijk denote the amount of time that operation (i,j) is processed during interval
k. Consider the following linear program:
p m n
max xijk
242

k=1 i=1 j=1

subject to

xijk≤ Ik for all 1 ≤ j ≤ n, 1 ≤ k ≤ p


i=1
n

xijk≤ Ik for all 1 ≤ i ≤ m, 1 ≤ k ≤ p


j=1
p

xijk≤ pij for all 1 ≤ j ≤ n, 1 ≤ i ≤ m


k=1
xijk≥ 0 if rj ≤ ak and dj ≥ ak+1
xijk= 0 if rj ≥ ak+1 or dj ≤ ak
The first inequality requires that no job is scheduled for more than Ik units of time in interval k. The
second inequality requires that the amount of processing assigned to any machine is not more than the
length of the interval. The third inequality requires that each job is not processed longer than
necessary.
8.4 The Maximum Lateness with Preemptions

The constraints on xijk ensure that no job is assigned to a machine either before its release date or after
its due date. An initial feasible solution for this problem is clearly xijk = 0. However, since the objective
is to maximize the sum of the xijk, the third inequality is tight under the optimal solution assuming
there exists a feasible solution for the scheduling problem.
If there exists a feasible solution for the linear program, then there exists a schedule with all jobs
completed on time. However, the solution of the linear program only gives the optimal values for the
decision variables xijk. It does not specify how the operations should be scheduled within the interval
[ak,ak+1]. This scheduling problem within each interval can be solved as follows: consider interval k as
an independent open shop problem with the processing time of operation (i,j) being the value xijk that
came out of the linear program. The objective for the open shop scheduling problem for interval k is
equivalent to the minimization of the makespan, i.e., Om | prmp | Cmax. The polynomial algorithm
described in the previous section can then be applied to each interval separately.
If the outcome of the linear program indicates that no feasible solution exists, then (similar to the m
= 2 case) a parametrized version of the entire procedure has to be carried out. Replace each d¯j by d¯j +
L, where L is a free parameter. The smallest value of L for which there exists a feasible schedule is equal
to the minimum value of Lmax that can be achieved with the original due dates dj.

Example 8.4.1 (Minimizing Maximum Lateness with Preemptions). Consider the following instance of O3 |
rj,prmp | Lmax with 3 machines and 5 jobs.
jobs 1 2 3 4 5

p1j 12223
p2j 31221
p3j 21121
rj 11333
dj 97679
There are 4 intervals that are determined by a1 = 1, a2 = 3, a3 = 6, a4 = 7, a5 = 9. The lengths of the four
intervals are I1 = 2, I2 = 3, I3 = 1, and I4 = 2. There are 4 × 3 × 5 = 60 decision variables xijk.
243

The first set of constraints of the linear program has 20 constraints. The first one of this set, i.e., j =
1,k = 1, is

x111 + x211 + x311 = 2.

The second set of constraints has 12 constraints. The first one of this set, i.e., i = 1,k = 1, is x111 + x121
+ x131 + x141 + x151 = 2.
The third set of constraints has 15 constraints. The first one of this set, i.e., i = 1,j = 1, is
x111 + x112 + x113 + x114 + x115 = 1.
It turns out that this linear program has no feasible solution. Replacing dj by dj +1 yields another
linear program that also does not have a feasible solution. Replacing the original dj by dj + 2 results in
the following data set:
jobs 1 2 3 4 5

p1j 1222 3
p2j 3122 1
p3j 2112 1

rj 1 1 3 3 3 d¯j 11 9 8 9 11

There are 4 intervals that are determined by a1 = 1, a2 = 3, a3 = 8, a4 = 9, a5 = 11. The lengths of the
four intervals are I1 = 2, I2 = 5, I3 = 1, and I4 = 2. The resulting linear program has feasible solutions
and the optimal solution is the following:
x111 = 1 x211 = 0 x311 = 1
x121 = 1 x221 = 1 x321 = 0
x131 = 0 x231 = 0 x331 = 0
x141 = 0 x241 = 0 x341 = 0
x151 = 0 x251 = 0 x351 = 0
x112 = 0 x212 = 0 x312 = 1
x122 = 1 x222 = 0 x322 = 0
x132 = 2 x232 = 2 x332 = 1
x142 = 1 x242 = 2 x342 = 2
x152 = 1 x252 = 1 x352 = 1
x113 = 0 x213 = 1 x313 = 0
x123 = 0 x223 = 0 x323 = 1
x133 = 0 x233 = 0 x333 = 0
x143 = 1 x243 = 0 x343 = 0
x153 = 0 x253 = 0 x353 = 0
x114 = 0 x214 = 2 x314 = 0
x124 = 0 x224 = 0 x324 = 0
x134 = 0 x234 = 0 x334 = 0
x144 = 0 x244 = 0 x344 = 0
x154 = 2 x254 = 0 x354 = 0
8.5 The Number of Tardy Jobs
244

Each one of the four intervals has to be analyzed now as a separate O3 | prmp | Cmax problem.
Consider, for example, the second interval [ 3,8 ], i.e., xij2. The O3 | prmp | Cmax problem for this
interval contains the following data.

jobs 1 2 3 4 5 p1j 0 1 2 1 1 p2j 0022


1 p3j 10121

Applying the algorithm described in Section 8.2 results in the schedule presented in Figure 8.7
(which turns out to be non-preemptive). The schedules in the other three intervals can be determined
very easily. ||

8.5 The Number of Tardy Jobs


The Om | pij = 1 | Uj problem is strongly related to the problems discussed in the previous sections. In
this problem again each job consists of m operations and each operation requires one time unit.
Assume, without loss of generality, that d1 ≤ d2 ≤ ··· ≤ dn.

4 2 3 5

3 5 4

1 4 5 3

3 4 5 6 7 8

Fig. 8.7 Schedule for interval [3,8] in Example 8.4.1

It can be shown easily that the set of jobs that are completed on time in an optimal schedule belong
to a set k∗,k∗ + 1,...,n. So the search for an optimal schedule has two aspects. First, it has to be
determined what the optimal value of k∗ is, and second, given k∗, a schedule has to be constructed in
which each job of this set finishes on time.
The value of k∗ can be determined via binary search. Given a specific set of jobs that have to be
completed on time, a schedule can be generated as follows: Consider the problem Om | rj,pij = 1 | Cmax,
which is a special case of the Om | rj,pij = 1 | Lmax problem that is solvable by the polynomial time
algorithm described in Section 8.3. Set rj in this corresponding problem equal to dmax−dj in the
original problem. In essence, the Om | rj,pij = 1 | Cmax problem is a time reversed version of the
original Om | pij = 1 | Uj problem. If for the makespan minimization problem a schedule can be found
with a makespan less than dmax, then the reverse schedule is applicable to the Om | pij = 1 | Uj problem
with all jobs completing their processing on time.
245

8.6 Discussion
This chapter, as several other chapters in this book, focuses mainly on models that are polynomial time
solvable. Most open shop models tend to be NP-hard. For example, very little can be said about the total
completion time objective.
The Om || Cj problem is strongly NP-hard when m ≥≥2. The Om | prmp |

Cjproblem is known to be strongly NP-hard when m 3. When m = 2 the Om | prmp | Cj problem is


NP-hard in the ordinary sense.

In the same way that a flow shop can be generalized to a flexible flow shop, an open shop can be
generalized to a flexible open shop. The fact that the flexible flow shop allows for few structural results
gives already an indication that it may be hard to obtain results for the flexible open shop. Even the
proportionate cases, i.e., pij = pj for all i or pij = pi for all j, are hard to analyze.
Another class of models that are closely related to open shops have received recently a considerable
amount of attention in the literature. This class of models are typically referred to as concurrent open
shops or open shops with job overlap. In these open shops the processing times of any given job on the
different machines are allowed to overlap in time (in contrast to the conventional open shops where
they are not allowed to overlap). This class of models are at times also referred to as the class of order
scheduling models. The motivation is based on the following: Consider a facility with m different
machines in parallel and each machine being able to produce a specific type of product. A customer
places an order requesting a certain quantity of each product type. After all the items for a given
customer have been produced, the entire order can be shipped to the customer.

Exercises (Computational)
8.1. Consider the following instance of O2 || Cmax and determine the number of optimal schedules that
are non-delay.

jobs 1 3 42
p1j 9 7 5 13 p2j 5 10 11 7

Exercises

8.2. Consider the following instance of O5 || Cmax with 6 jobs and all processing times either 0 or 1.
Find an optimal schedule.
jobs 1 2 3 4 5 6

p1j 100111
p2j 111010
p3j 010111
p4j 111001
p5j 111100
8.3. Consider the proportionate open shop O4 | pij = pj | Cmax with 6 jobs. Compute the makespan
under the optimal schedule.

jobs 1 2 3 4 5 6 pj 356689
246

8.4. Consider the problem O4 || Cmax and consider the Longest Total Remaining Processing on Other
Machines (LTRPOM) rule. Every time a machine is freed the job with the longest total remaining
processing time on all other machines, among available jobs, is selected for processing. Unforced
idleness is not allowed. Consider the following processing times.
jobs 1 2 34

p1j 5 5 13 0
p2j 57 38
p3j 12 5 70
p4j 05 0 15
(a) Apply the LTRPOM rule. Consider at time 0 first machine 1, thenmachine 2, followed by
machines 3 and 4. Compute the makespan.
(b) Apply the LTRPOM rule. Consider at time 0 first machine 4, thenmachine 3, followed by
machines 2 and 1. Compute the makespan.
(c) Find the optimal schedule and the minimum makespan.

8.5. Find an optimal schedule for the instance of O4 | prmp | Cmax with 4 jobs and with the same

processing times as in Exercise 8.4.

8.6. Consider the following instance of O4 | rj,pij = 1 | Lmax with 4 machines and 7 jobs.

jobs 1 2 3 4 5 6 7 rj 0 1 2 2 3 4 5 dj 6 6 6 7 7
99

(a) Find the optimal schedule and the minimum Lmax.


(b) Compare your result with the result in Example 8.3.2.

8.7. Solve the following instance of the O2 | prmp | Lmax problem.


jobs 1 2 3 4 5 6 7
p1j 7 3 25 3 2 3
p2j3 4 2 4 3 4 5 dj 5 6 6 11
14 17 20
8.8. Solve the following instance of the proportionate O2 | prmp | Lmax problem.
jobs 1 2 3 4 5 6 7
p1j 7 3 25 3 2 3
p2j7 3 2 5 3 2 3 dj 5 6 6 11
14 17 20
Can the algorithm described in Section 8.4 be simplified when the processing times are proportionate?

8.9. Consider the Linear Programming formulation of the instance in Exercise 8.7. Write out the
objective function. How many constraints are there?

8.10. Consider the following instance of Om | pij = 1 | Uj with 3 machines and 8 jobs.

jobs 1 2 3 4 5 6 7 8 dj 3 3 4 4 4 4 5 5
247

Find the optimal schedule and the maximum number of jobs completed on time.
Exercises

Exercises (Theory)
8.11. Show that non-delay schedules for Om || Cmax have at most m − 1 idle times on one machine.

Show also that if there are m − 1 idle times on one machine there can be at most m − 2 idle times on any

other machine.

8.12. Consider the following rule for O2 || Cmax. Whenever a machine is freed, start processing the job
with the largest sum of remaining processing times on the two machines. Show, through a
counterexample, that this rule does not necessarily minimize the makespan.

8.13. Give an example of Om || Cmax where the optimal schedule is not nondelay.
8.14. Consider O2 || Cj. Show that the rule which always gives priority to the job with the smallest total

remaining processing is not necessarily optimal.

8.15. Consider O2 | prmp | Cj. Show that the rule which always gives preemptive priority to the job

with the smallest total remaining processing time is not necessarily optimal.

8.16. Consider Om || Cmax. The processing time of job j on machine i is either 0 or 1. Consider the
following rule: At each point in time select, from the machines that have not been assigned a job yet, the
machine that still has the largest number of jobs to do. Assign to that machine the job that still has to
undergo processing on the largest number of machines (ties may be broken arbitrarily). Show through
a counterexample that this rule does not necessarily minimize the makespan.

8.17. Consider a flexible open shop with two workcenters. Workcenter 1 consists of a single machine
and workcenter 2 consists of two identical machines. Determine whether or not LAPT minimizes the
makespan.

8.18. Consider the proportionate open shop Om | pij = pj | Cmax. Find the optimal schedule and prove
its optimality.

8.19. Consider the proportionate open shop Om | prmp,pij = pj | Cj. Find the optimal schedule and

prove its optimality.

8.20. Consider the following two-machine hybrid of an open shop and a job shop. Job j has processing
time p1j on machine 1 and p2j on machine 2. Some jobs have to be processed first on machine 1 and
then on machine 2. Other jobs have to be processed first on machine 2 and then on machine 1. The
routing of the remaining jobs may be determined by the scheduler. Describe a schedule that minimizes
the makespan.

8.21. Find an upper and a lower bound for the makespan in an m machine open shop when
preemptions are not allowed. The processing time of job j on machine i is pij (i.e., no restrictions on the
processing times).
248

8.22. Compare Om | pj = 1 | γ with Pm | pj = 1,chains | γ in which there are n chains consisting of m jobs
each. Let Z1 denote the value of the objective function in the open shop problem and let Z2 denote the
value of the objective function in the parallel machine problem. Find conditions under which Z1 = Z2
and give examples where Z1 > Z2.

Comments and References


The LAPT rule for O2 || Cmax appears to be new. Different algorithms have been introduced before for
O2 || Cmax, see, for example, Gonzalez and Sahni (1976). Gonzalez and Sahni (1976) provide an NP-
hardness proof for O3 || Cmax and Sevastianov and Woeginger (1998) present a Polynomial Time
Approximation
Scheme (PTAS) for Om || Cmax.
The polynomial time algorithm for Om | prmp | Cmax is from Lawler and Labetoulle (1978). This
algorithm is based on a property of stochastic matrices that is due to Birkhoff and Von Neumann; for an
organized proof of this property, see Marshall and Olkin (1979), Chapter 2, Theorems 2.A.2 and 2.C.1.
For more work on Om | prmp | Cmax, see Gonzalez (1979).
Lawler, Lenstra, and Rinnooy Kan (1981) provide a polynomial time algorithm for O2 | prmp | Lmax
and show that O2 || Lmax is NP-Hard in the strong sense. Cho and Sahni (1981) analyze preemptive
open shops with more than two machines and present the linear programming formulation for Om |
prmp | Lmax.
For results on the minimization of the (weighted) number of late jobs in open shops with unit
processing times, see Brucker, Jurisch, and Jurisch (1993), Galambos and Woeginger (1995) and
Kravchenko (2000).
Achugbue and Chin (1982) present an NP-hardness proof for O2 || Cj and Liu and Bulfin (1985)
provide an NP-hardness proof for O3 | prmp | Cj. Tautenhahn and Woeginger (1997) analyze the total
completion time when all the jobs have unit processing times.
Vairaktarakis and Sahni (1995) obtain results for flexible open shop models.
Concurrent open shops and order scheduling models have received a considerable amount of
attention recently, see Wagneur and Sriskandarajah (1993), Sung and Yoon (1998), Ng, Cheng, and
Yuan (2003), Leung, Li, Pinedo, and Sriskandarajah (2005), Yang and Posner (2005), Leung, Li, and
Pinedo (2005a,b, 2006), and Roemer (2006).

También podría gustarte