Sunteți pe pagina 1din 25

11/10/2019

Flow Shops
Ciro Amaya
2019

Características de Flow Shop
• m máquinas, n trabajos
• Un trabajo consiste de operaciones, que se realizan en cada máquina
• Los trabajos se procesan en serie en las máquinas, cada trabajo tiene 
la misma ruta de máquinas.
• El tiempo de procesamiento del trabajo j en la máquina i es pij

1
11/10/2019

Restricciones de Flow Shop
• |block| Almacenamiento intermedio:
• Ilimitado
• Limitado => genera bloqueo

• | prmu | mantener la secuencia
• Si en cada máquina se usa la regla FCFS (First‐come‐first‐served), 
los trabajos no intercambian su secuencia, mantienen la misma 
permutación en todas las máquinas.
• Permutation flow shop

Flow Shop

Caso: Fm | prmu |Cmax

2
11/10/2019

Fm | prmu |Cmax
• Los tiempos de terminación en las máquinas se pueden calcular así:

𝐶, ∑ 𝑝, i=1, ... , m
𝐶 , ∑ 𝑝 , k=1, ... , n
𝐶, max 𝐶 , ,𝐶 , + 𝑝 , i= 2, … , m ; k= 2, … , n

• Ver Fm Gantt.R

3
11/10/2019

Fm | prmu |Cmax
• Existe una secuencia óptima en la cual no es necesario cambiar las 
secuencias entre la primera y segunda máquinas y entre la penúltima 
y última máquina

• Eso conlleva a qué:
• F2|| Cmax y F3|| Cmax tienen secuencias óptimas que se mantienen en 
las máquinas. 

Fm | prmu |Cmax Grafo dirigido

p1, j1 p1, j2 ... ... p1, jn


... ...

...
p2, j1 ... ... pi , j k pi , jk 1 ...

... ... pi 1, jk pi 1, jk 1 ... ...

pm , j1 ... ... ... pm , jn

4
11/10/2019

F4 | prmu |Cmax
5 Trabajos, 3 máquinas, pij:

jobs j1 j2 j3 j4 j5

5 5 3 6 3
p1, jk

p2 , jk 4 4 2 4 4

4 4 3 4 1
p3, jk

p4 , jk 3 6 3 2 5

F4 | prmu |Cmax Grafo dirigido

5 5 3 6 3

4 4 2 4 4

4 4 3 4 1

3 6 3 2 5

Critical path

5
11/10/2019

Ejemplo R
#ejemplo 6.1.1
n <‐ 5
m <‐ 4
p1 <‐ c(5, 5, 3, 6, 3)
p2 <‐ c(4, 4, 2, 4, 4)
p3 <‐ c(4, 4, 3, 4, 1)
p4 <‐ c(3, 6, 3, 2, 5)
P <‐ rbind(p1,p2,p3,p4)

• Ver file_:  2‐ Grafo del problema ‐ longestpath igraph.R

6
11/10/2019

Reversibilidad de los Flow Shops


• Suponga dos Talleres con los tiempos de procesamiento:
• pij (del 1) = pm+1‐i, j (del 2)

• La secuencia de los trabajos de acuerdo con la permutación j1, ..., jn
en el primer  taller produce el mismo Makespan que la permutación 
jn, ..., j1 en el segundo.

 El Makespan no cambia si los trabajos atraviesan el taller de flujo en 
la dirección opuesta en orden inverso (Reversibilidad).

• #ejemplo 6.1.1
• n <‐ 5
• m <‐ 4
• p1 <‐ c(5, 5, 3, 6, 3)
• p2 <‐ c(4, 4, 2, 4, 4)
• p3 <‐ c(4, 4, 3, 4, 1)
• p4 <‐ c(3, 6, 3, 2, 5)
• P <‐ rbind(p1,p2,p3,p4)

• #ejemplo 6.1.3
• n <‐ 5
• m <‐ 4
• p1 <‐ c( 5, 2, 3, 6, 3 )
• p2 <‐ c( 1, 4, 3, 4, 4 )
• p3 <‐ c( 4, 4, 2, 4, 4 )
• p4 <‐ c( 3, 6, 3, 5, 5 )
• P <‐ rbind(p1,p2,p3,p4)

7
11/10/2019

• Ver ejemplosdatos.R

Flow Shop

Caso: F2 | |Cmax

16

8
11/10/2019

F2 | |Cmax
• La regla de Johnson genera un óptimo. Un óptimo tiene la misma 
permutación en las dos maquinas

• Dividir los trabajos en dos conjuntos:
• Conjunto I: Trabajos que p1j  p2j
• Conjunto II: Trabajos que p2j  p1j
• Secuencia SPT(1)‐LPT(2)
• Hacer secuencia SPT de los trabajos del Conjunto I
• Hacer secuencia LPT de los trabajos del Conjunto II

• Los trabajos con tiempos de proceso iguales en las dos máquinas, se pueden agregar 
a cualquiera de los dos conjuntos.

Flow Shop

Caso: Fm | prmu|Cmax

18

9
11/10/2019

Fm | prmu|Cmax
• ES NP‐hard, de hecho
• F3|prmu|Cmax es NP‐hard en sentido estricto

Prog Entera Mixta para Fm|prmu|Cmax


• Notación
• xjk=1 si el trabajo j es el trabajo k‐ésimo en la secuencia ; 0 sino
• Iik es el tiempo de inactividad de la máquinas i entre el trabajo k y el (k+1)
• Wik tiempo de espera del trabajo de la posición k entre las máquinas i y la 
(i+1)
• ik Diferencia entre el tiempo cuando el trabajo en la posición k+1 inicia en 
la máquina i+1 y el tiempo en que el k termina en la máquina i
• pi(k) Tiempo de procesamiento en la máquina i del trabajo en la k‐ésima
posición.

20

10
11/10/2019

Gráficamente
ik

Iik Wi,k+1

Máquina i pi(k) pi(k+1)

Wik

Máquina i +1 pi+1,(k-1) pi+1,(k) pi+1,(k+1)

Wik > 0 y Ii+1, k = 0

MIP para Fm|prmu|Cmax
• Objetivo: 
Min Makespan ~  Minimizar el tiempo de inactividad en la máquina m

𝑝 𝐼

Minimiza:
• Tiempo de inactividad antes de del primer trabajo en última máquina.
• Tiempo de inactividad en la última máquina.

11
11/10/2019

MIP para Fm|prmu|Cmax
Dado que hay un solo trabajo en posición k, se tiene:

𝑝 = ∑ 𝑋 𝑝

∑ 𝑝 = ∑ ∑ 𝑋 𝑝

MIP para Fm|prmu|Cmax

Min               ∑ ∑ 𝑋 𝑝 ∑ 𝐼
Sujeto a: 
∑ 𝑋 1 k = 1, ... , n
∑ 𝑋 1 j = 1, ... , n
𝐼 ∑ 𝑋, 𝑃 𝑊, 𝑊
∑ 𝑋 𝑃 , 𝐼 , 0 for k = 1, ..., n‐1; i = 1, ..., m‐1
Wi1 = 0 i = 1, ..., m‐1 xjk  {0,1}  j=1, ...,n
I1k = 0  k = 1, ..., n‐1 k=1, ...,m
Wik  0  i = 1, ..., m‐1; k = 1, ..., n
Iik  0  i = 1, ..., m; k = 1, ..., n‐1

12
11/10/2019

La tercera restricción: 𝑰𝒊𝒌 ∑𝒏𝒋 𝟏 𝑿𝒋,𝒌 𝟏 𝑷𝒊𝒋 𝑾𝒊,𝒌 𝟏 𝑾𝒊𝒌 ∑𝒏𝒋 𝟏 𝑿𝒋𝒌 𝑷𝒊 𝟏,𝒋 𝑰𝒊 𝟏,𝒌 0
ik

𝑝 = ∑ 𝑋 𝑝
Iik Wi,k+1
𝐼 𝑝 𝑊,
Máquina i pi(k) pi(k+1) 𝑊 𝑝 𝐼 ,

Wik Ii+1.k

Máquina i +1 pi+1,(k-1) pi+1,(k) pi+1,(k+1)

Wik > 0 y Ii+1, k = 0

• Ver file:  3‐ Fm_prmu_Cmax MIP.R

13
11/10/2019

Heurística Slope Fm|prmu|Cmax
• Calcule el índice Slope para cada trabajo:
•𝐴 ∑ 𝑚 2𝑖 1 𝑝 j=1, … , n

• El índice es grande si los tiempos de procesamiento en las máquinas 
posteriores son grandes en relación con los tiempos de procesamiento en las 
máquinas anteriores

• Secuenciar los trabajos en orden decreciente del índice calculado

job j1 j2 j3 j4 j5

Ejemplo 1 5 2 3 6 3
2 1 4 3 4 4

A1 = ‐(3 x 5) – (1 x 4) + (1 x 4) + (3 x 3) = ‐6  3 4 4 2 4 4
4 3 6 3 5 5
A2 = ‐(3 x 5) – (1 x 4) + (1 x 4) + (3 x 6) = +3
A3 = ‐(3 x 3) – (1 x 2) + (1 x 3) + (3 x 3) = +1
A4 = ‐(3 x 6) – (1 x 4) + (1 x 4) + (3 x 2) = ‐12 𝐴 𝑚 2𝑖 1 𝑝

A5 = ‐(3 x 3) – (1 x 4) + (1 x 1) + (3 x 5) = +3

Las secuencias 2,5,3,1,4 y 5,2,3,1,4 
(que son óptimas)

14
11/10/2019

• Ver Fm_prmu_Cmax Hslopa.R

Flow Shop proporcional

Caso: Fm | prmu, pij=pj|

30

15
11/10/2019

Flow shops proporcional
• El tiempo de procesamiento no cambia en las máquinas:
pij=pj
(el tiempo total está repartido por igual en las máquinas)

• Teorema 6.1.8
• El makespan de Fm|prmu,pij=pj|Cmax es 
Cmax=pj+(m‐1)max(p1,…,pn)

Y es independiente de la secuencia
31

Similitudes entre 1 máquinas y tiempos 
proporcionales
Regla/algoritmo Una máquina Flow Shop proporcional
SPT 1||Cj Fm|pij=pj|Cj
Algoritmo 3.3.1 1||Uj Fm|prmu,pij=pj|Uj
Algoritmo 3.2.1 1||hmax Fm|prmu,pij=pj|hmax
Algoritmo 3.4.4 1||Tj Fm|prmu,pij=pj|Tj
Lema 3.5.1 1||wjTj Fm|prmu,pij=pj|wjTj

Nota:  WSPT no es óptimo para Fm|prmu,pij=pj|wjCj

32

16
11/10/2019

|block| Almacenamiento 
Intermedio Limitado
=> genera bloqueo

|block| 
• Sólo es necesario considerar el caso con almacenamiento intermedio 
de cero
• SI es >0, se crea máquinas virtuales de tiempos cero.

• Notación:
• Dij : tiempo en que el trabajo j sale de la máquina i(deja de estar 
bloqueado)
• D0j : tiempo en que el trabajo j comienza a ser procesado en la 
máquina 1
 Cij ≤  Dij

17
11/10/2019

Fm | block |Cmax
Los tiempos de salida de los trabajos en las máquinas se pueden 
calcular así:

𝐷, ∑ 𝑝, i=1, ..., m
𝐷 , max 𝐷 , 𝑝, , 𝐷 , k=2, ..., n
𝐷, max 𝐷 , 𝑝, , 𝐷 , i=2, …, m‐1;  k=2, ..., n
𝐷 , 𝐷 , + 𝑝 , k= 2, …, n

El Makespan de una secuencia se puede calcular con el método de la 
ruta más larga.

Representación con grafo

𝝅 1 2 3 4 5
p1j 5 5 3 6 3
p2j 4 4 2 4 4
p3j 4 4 3 4 1
p4j 3 6 3 2 5

18
11/10/2019

Fm|block|Cmax
Heurística PF (profile fitting)
1. Se selecciona un trabajo para ir primero
2. Se prueban los otros trabajos para ser el siguiente
• Usar las ecuaciones de la diapositiva anterior para calcular los tiempos de 
salida
• Calcule una penalización como la suma de los tiempos de inactividad y los 
tiempos bloqueados en todas las máquinas.
• Elige el trabajo con la penalidad más baja para ir a continuación.
3. Si todos los trabajos han sido programados => TERMINAR, De lo 
contrario, vaya al Paso 2.

job j 1 2 3 4 5
Ejemplo PF 
p1j 5 5 3 6 3
Fm|block|Cmax p2j 4 4 2 4 4
p3j 4 4 3 4 1
Seleccione el de menos tiempo
J3 p4j 3 6 3 2 5

Busque el mejor Segundo que genera menos suma de tempo parado (inactividad + 
bloqueo) 
J5  3

Continue ….

• La secuencia es 3, 5, 1,2,4

19
11/10/2019

|no‐wait| Almacenamiento 
Intermedio Limitado
=> Sistema pull

|no‐wait|

20
11/10/2019

F2 / nwt / Cmax (no‐wait)


• F2 / block / Cmax es equivalente a F2 / nwt / Cmax (no‐wait)

• Cuando m≧ 3, son diferentes

F2 /block / Cmax
Cada vez que un trabajo comienza su 
procesamiento en la máquina 1, el trabajo 
anterior comienza su procesamiento en la 
máquina 2.

max( 𝑃 , ; 𝑃 , ) es el tiempo que gasta el 


trabajo jk en la máquina 1

21
11/10/2019

F2 /block / Cmax
• El problema de min Makespan es equivalente al TSP con n+1 
ciudades, con distancias entre ciudades:
doj = P1j , dko= P2k ,  djk= max(P1k,P2j),  j  k

d01 d12 d23 … dn0

F2 /block / Cmax
• La matriz de distancias se puede simplificar, pues:

2Cmax = ∑ 𝑃 𝑃 + Tiempo inactividad máquinas
 Min Cmax ≈  Min inactividad máquinas

22
11/10/2019

TSP   1 | sjk | Cmax


• (Sección 4.4)

• EL TSP con estructura de distancias de la forma: Sjk =| ak‐bj|
El tiempo de Setup entre j y k es el tiempo necesario para llevar la máquina 
del estado bj al estado ak, y este es proporcional a la diferencia absoluta entre 
los dos estados.

En este caso particular, existe un algoritmo Polinomial
 algoritmo 4.4.5 

No‐wait

Caso: Fm | nwt | Cmax

46

23
11/10/2019

Fm | nwt | Cmax
• El Fm | nwt |Cmax, a diferencia de Fm | block |Cmax, se puede 
formular como un TSP, con distancias:

𝑑 max 𝑝 𝑝 j, k 0, … , n
..

Si hay más de 2 máquinas este problema es NP‐duro.

Flexible Flow Shop
Compound Flow Shop
Multi‐processor Flow Shop
Hybrid Flow Shop

Caso: FFc | | Cmax ,   𝒋

48

24
11/10/2019

FFc | |
• Hay c etapas
• En la etapa l, hay ml idénticas máquinas, con tiempos de proceso pcj
• Capacidad de almacenamiento ilimitado
• Objetivos: Cmax y ∑𝑪𝒋

• Los ambientes de Máquinas en Paralelo y Flow Shop, son casos 
particulares.

• FFC es un ambiente complejo.

• Caso particular:

• SPT  es optima para FFc | pij = pj | ∑ 𝑪𝒋 si cada etapa tiene al menos 


tantas máquinas como la precedente. Teorema 6.4.2

25

S-ar putea să vă placă și