Top Banner
Pontificia Universidad Católica de Valparaíso Escuela de Ingeniería Industrial Diseño e Implementación de un Algoritmo de Secuenciación de Trabajos en un Job Shop Híbrido, Considerando Setups Dependientes de la Secuencia y Disponibilidad de Recursos por Kevin Aldair Castillo Iturrieta Informe Final de Proyecto 1 Prof. Guía: Ricardo Gatica E. Prof. Co-Guía: Ernesto Vásquez C. Junio, 2015
48

Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

Dec 06, 2015

Download

Documents

Diseño de un Algoritmo de Secuenciación de Trabajos para una configuración productiva
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

Pontificia Universidad Católica de Valparaíso

Escuela de Ingeniería Industrial

Diseño e Implementación de un Algoritmo de Secuenciación de

Trabajos en un Job Shop Híbrido, Considerando Setups

Dependientes de la Secuencia y Disponibilidad de Recursos

por

Kevin Aldair Castillo Iturrieta

Informe Final de Proyecto 1

Prof. Guía: Ricardo Gatica E.

Prof. Co-Guía: Ernesto Vásquez C.

Junio, 2015

Page 2: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

2

Índice

Lista de Abreviaturas y Siglas .................................................................................................. 4

Lista de Figuras ......................................................................................................................... 6

Lista de Tablas ........................................................................................................................... 7

1 Introducción .......................................................................................................................... 8

2 Objetivo General ................................................................................................................... 9

2.1 Objetivos específicos .................................................................................................... 9

3 Planificación y Control de la Producción ......................................................................... 10

3.1.1 Programación de Operaciones ............................................................................. 11

3.2 El problema de Secuenciación de Trabajos ................................................................ 11

3.2.1 Trabajos ............................................................................................................... 12

3.2.2 Máquinas ............................................................................................................. 13

3.2.2.1 Una sola máquina .................................................................................................... 13

3.2.2.2 Máquinas paralelas .................................................................................................. 14

3.2.2.3 Taller de flujo (Flow shop)...................................................................................... 14

3.2.2.4 Taller de trabajo (Job shop) .................................................................................... 15

3.2.2.5 Taller abierto (Open shop) ...................................................................................... 15

3.2.3 Objetivos .............................................................................................................. 16

3.2.4 Características y Restricciones de Procesamiento ............................................... 18

3.3 Algoritmos de resolución ............................................................................................ 20

3.3.1 Algoritmos exactos .............................................................................................. 20

3.3.2 Algoritmos de aproximación ............................................................................... 20

3.3.2.1 Heurísticas ............................................................................................................... 21

3.3.2.2 Metaheurísticas........................................................................................................ 22

3.4 Reglas de Despacho .................................................................................................... 24

3.5 Reglas de Despacho Compuestas ............................................................................... 25

3.5.1 Apparent Tardiness Cost (ATC) .......................................................................... 26

3.5.2 Apparent Tardiness Cost with setups (ATCS) .................................................... 27

3.5.3 Otras heurísticas .................................................................................................. 28

4 Definición del Problema ..................................................................................................... 30

4.1 Descripción del Problema ........................................................................................... 30

4.2 Formulación del Problema .......................................................................................... 32

Page 3: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

3

5 Algoritmo de Secuenciación Propuesto ............................................................................. 34

5.1 Programa Principal ..................................................................................................... 36

5.2 Inicializar Programa .................................................................................................... 36

5.3 Mover a Máquinas ...................................................................................................... 36

5.4 Calcular Índice ATCS ................................................................................................. 37

5.5 Procesar Trabajos ........................................................................................................ 37

5.6 Avanzar Reloj de Simulación ..................................................................................... 37

6 Plan de Trabajo ................................................................................................................... 38

7 Conclusiones ........................................................................................................................ 39

Bibliografía ............................................................................................................................... 40

Anexos ....................................................................................................................................... 43

Anexo 1 – DAct Inicializar Programa ....................................................................................... 44

Anexo 2 – DAct Mover a Máquinas .......................................................................................... 45

Anexo 3 – DAct Calcular Índice ATCS .................................................................................... 46

Anexo 4 – DAct Procesar Trabajos ........................................................................................... 47

Anexo 5 – DAct Avanzar Reloj de Simulación ......................................................................... 48

Page 4: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

4

Lista de Abreviaturas y Siglas

ATC = Apparent Tardiness Cost.

ATCS = Apparent Tardiness Cost with Setups.

ATCSR = Apparent Tardiness Cost with Setups and Ready times.

BATCS = Batch Apparent Tardiness Cost with Setups.

BATCSmod = Batch Apparent Tardiness Cost with Setups Modified.

CP = Critical Path.

CT = Centro de Trabajo.

DAct = Diagrama de Actividades.

DCla = Diagama de Clases.

EDD = Earliest Due Date.

FEFO = First Expiration First Out.

FIFO = First In First Out.

FSSP = Flow Shop Scheduling Problem.

GRASP = Greedy Randomized Adaptative Search Procedure.

ILS = Iterated Local Search.

JIT = Just in time.

JSSP = Job Shop Scheduling Problem.

LIFO = Last in First Out.

LNS = Largest Number of Succesors.

LPT = Longest Process Time.

MS = Minimum Slack First.

SIRO = Service in Random Order.

Page 5: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

5

SST = Shortest Setup Time.

STP = Shortest Process Time.

TT = Total Tardiness.

TWT = Total Weighted Tardiness.

VNS = Variable Neighboorhood Search.

WSPT = Weighted Shortest Process Time.

X-RM = X-dispatch Rachamadugu and Morton.

X-RMmod = X-dispatch Rachamadugu and Morton Modified.

Page 6: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

6

Lista de Figuras

Figura 2.1 – Proceso de Planificación y Control de la Producción (Fuente: Domínguez, 1995).

................................................................................................................................................... 10 Figura 2.2 – Elementos de un problema de secuenciación de trabajos. ................................... 11 Figura 2.3 – Parámetros, variables y medidas de desempeño asociados a un trabajo Jj. ......... 12

Figura 2.4 – Ejemplo de configuración tipo flexibe flow shop. ................................................ 16 Figura 2.5 – Ejemplo de configuración Hybrid Jop Shop. ....................................................... 16 Figura 3.1 – Ejemplo Layout Problema en Estudio. ................................................................ 30 Figura 3.2 – Diagrama de clases Problema en Estudio. ........................................................... 32

Page 7: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

7

Lista de Tablas

Tabla 1 – Comparación entre los términos en aproximaciones basadas en ATC (Fuente:

Pfund, 2007) .............................................................................................................................. 28

Page 8: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

8

1 Introducción

La mayoría de los modelos tradicionales de Planificación de la Producción abordan el

problema de determinar la cantidad a producir de múltiples productos en cada período de

tiempo, de modo de satisfacer las demandas, minimizando el costo total de inventario, setup y

sobretiempo, considerando como restricción la disponibilidad de algún recurso escaso,

típicamente un centro de trabajo. Con la finalidad de lograr que los modelos tengan un tamaño

adecuado y que estos tengan tiempos de resolución razonables, se recurre a enfoques

jerárquicos, que típicamente consideran un horizonte de mediano plazo (6 meses),

particionado en periodos mensuales, y un horizonte de corto plazo (3 a 4 semanas),

descompuesto en períodos semanales o en el mejor de los casos a nivel diario. No obstante, en

la práctica es común que se presenten problemas con horizonte más pequeños (uno o dos días),

que requieren una descomposición a nivel de horas y un nivel de detalle mucho mayor. En el

caso de la Planificación y Control de la Producción a muy corto plazo, se resuelven dos

problemas típicos. El primero consiste en asignar máquinas, operarios y pedidos de

fabricación a centros de trabajo y el segundo consiste en secuenciar o coordinar esos pedidos

en los centros de trabajo. Este último, desde ahora el problema de secuenciación de trabajos,

es un problema de carácter combinatorio bastante complejo, el cual es clasificado NP-Hard

para ciertas configuraciones por diferentes autores. Además, si se considera estructuras de

setups dependientes de la secuencia, secuenciar y coordinar 15-20 trabajos supone un trabajo

computacional enorme y prohibitivo a la hora de evaluar soluciones como probar todas las

combinaciones posibles para encontrar la solución óptima, o incluso el uso de algoritmos

exactos, tales como: la programación lineal entera mixta y los algoritmos branch & bound. A

raíz de esto, se hace necesario el uso de algoritmos de aproximación, los cuales sacrifican la

garantía de encontrar la solución óptima en función de obtener tiempos de resolución

razonables y prácticos. El presente proyecto tiene el objetivo de conceptualizar un algoritmo

de secuenciación de trabajos para un Job Shop Híbrido con setups dependientes de la

secuencia, el cual hace uso de algoritmos de aproximación, específicamente ATCS (Apparent

Tardiness Cost with Setups), y un modelo de simulación de eventos discretos.

El presente informe consta de seis partes principales. Primero se hace referencia al

objetivo general del proyecto. Posteriormente se describe el marco teórico, el cual resume el

contexto de estudio del problema que se estudia. Luego de contextualizar, se procede a la

definición del problema específico que se estudiara. Con el problema descrito, se procede al

diseño del algoritmo. Finalmente, se presenta el plan de trabajo para la continuación del

proyecto y se exponen las conclusiones obtenidas hasta el momento.

Page 9: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

9

1 Generalización de un Jop Shop, en el cual se consideran CT con máquinas paralelas (ver sección 3.2.2.4) 2 Total Weighted Tardiness y Total Setup Times (Ver sección 3.2.3). 3 Setups dependientes de la secuencia y restricciones a la disponibilidad de recursos (Ver sección 3.2.4). 4 Ver “Fases de un Estudio de Investigación de Operaciones” Capitulo 1 (Taha, 2004).

2 Objetivo General

El objetivo de este proyecto es el diseño e implementación de un algoritmo de

secuenciación de trabajos en Job Shop Híbrido1, el cual permita la asignación eficiente de los

recursos productivos a los trabajos, o a las operaciones contenidas en estos, y la determinación

del instante de tiempo en que cada uno de estos trabajos u operaciones debe procesarse en los

recursos, con la finalidad de optimizar simultáneamente dos medidas de desempeño globales2,

considerando ciertas restricciones y características especiales3.

2.1 Objetivos específicos

Para la consecución del objetivo general, se hace necesario seguir una metodología de

investigación, que mediante su logro sistemático, dará forma al producto final que se establece

en el apartado previo. En este caso particular, se usará una variación de la metodología de

investigación de operaciones4, la cual considera el uso de métodos heurísticos. Luego, es

posible definir los siguientes objetivos específicos:

1) Definir y formular el problema exacto que se abordará con todas sus restricciones y

características particulares.

2) Buscar o diseñar un algoritmo de secuenciación de trabajos que permita resolver el

problema formulado, generando modelos para futuras pruebas.

3) Realizar una implementación computacional

4) Validar el algoritmo diseñado y corregir errores.

5) Buscar posibilidades de mejora.

6) Implementar la solución y obtener conclusiones.

Page 10: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

10

3 Planificación y Control de la Producción

La Planificación Empresarial es un proceso por el cual cada uno de los departamentos

organiza sus recursos en el tiempo con el objeto de optimizar su uso y conseguir así el mayor

beneficio posible para la empresa. En función del horizonte de planificación, se consideran

tres etapas básicas: Planificación Estratégica, Planificación Táctica y Planificación Operativa,

las cuales van desde el largo plazo hacia el corto plazo.

En un entorno fabril, se sigue un enfoque jerárquico para el proceso de planificación y

control de producción, el cual permite la coordinación entre los objetivos, planes y actividades

de los niveles estratégico, táctico y operativo (Domínguez, 1995). En la figura 3.1 se presenta

un resumen del proceso de planificación y control de la producción.

Figura 3.1 – Proceso de Planificación y Control de la Producción (Fuente: Domínguez, 1995).

Se sabe que el Plan de Materiales y el Programa Maestro de Producción establecen los

lotes a obtener de cada ítem componente y producto final, en cada momento del horizonte de

planificación seleccionado pero no entregan la información respecto a los pedidos que deben

ejecutarse en cada uno de los centros de trabajo (CT) ni tampoco nos dicen nada respecto al

orden de procesamiento de los pedidos en cada CT. Esto conlleva a preguntarse ¿Qué pedidos

deberá elaborar cada CT?, ¿En qué orden debe realizarse? ¿Cuáles serán las fechas de

comienzo y de finalización de cada pedido? Las repuestas a estas preguntas las podemos hallar

Page 11: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

11

en la programación de operaciones, el cual es el resultado de la gestión de talleres como se

evidencia en la figura 3.1.

3.1.1 Programación de Operaciones

“La Programación de Operaciones tiene por objeto determinar que operaciones se van

a realizar sobre los distintos pedidos, durante cada momento del horizonte de planificación, en

cada CT, de forma que, con la capacidad disponible en cada uno de ellos, se cumplan las

fechas de entregas planificadas, empleando el menor volumen de recursos e inventario

posible.” (Domínguez, 1995). A continuación se mencionan las etapas de la Programación de

Operaciones:

a) Carga de Talleres: Consiste en la asignación de los pedidos, equipos y

operarios a los CT.

b) Secuenciación: Consiste en establecer la prioridad de paso de los pedidos en

los diferentes CT, con el objeto de optimizar alguna medida de desempeño

global.

c) Programación Detallada: Consiste la determinación de las fechas de inicio y

de término de cada uno de los pedidos de los CT, o más bien de las operaciones

que puedan estar contenidos en estos.

Luego, lo que se analiza en este proyecto son las últimas dos etapas, las cuales son el

output de los problemas de secuenciación de trabajos. A continuación se analiza el problema

de secuenciación de trabajos y los algoritmos de resolución para este tipo de problemas.

3.2 El problema de Secuenciación de Trabajos

El problema de secuenciación de trabajos aparece cuando un conjunto común de

recursos debe ser compartido para procesar una serie de trabajos durante el mismo periodo de

tiempo. “El objetivo de la secuenciación es la asignación eficiente de recursos a los trabajos, o

a las operaciones contenidas en estos, y la determinación del instante de tiempo en el que cada

uno de estos trabajos debe procesarse con la finalidad de optimizar uno o más objetivos”

(Shaw, 1992).

Figura 3.2 – Elementos de un problema de secuenciación de trabajos.

Page 12: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

12

En un problema de secuenciación de trabajos siempre existirán al menos cuatro

elementos diferenciados (ver figura 3.2): las tareas o trabajos que se pretenden realizar, los

recursos disponibles para su realización, las finalidades objetivos que se desean lograr, los

cuales nos permiten identificar entre varias planificaciones posibles aquellas que sean óptimas,

y las restricciones y características de procesamiento particulares de cada problema.

A continuación se describe cada elemento del problema de secuenciación de trabajos.

3.2.1 Trabajos

Los trabajos son tareas o actividades a realizar. En un entorno productivo un trabajo es

en realidad una orden de fabricación, las cuales son instrucciones concretas para la fabricación

de una cantidad específica o lote de un artículo determinado. A continuación se describen los

parámetros, variables y medidas de desempeño asociados a un trabajo Jj en un problema de

secuenciación.

Figura 3.3 – Parámetros, variables y medidas de desempeño asociados a un trabajo Jj.

a) Parámetros

- dj = (due date)j : Fecha comprometida de entrega del trabajo Jj.

- pji = (process time)ji : Tiempo de procesamiento necesario para completar la

operación del trabajo Jj en la máquina i.

- sji = (setup time)ji : Tiempo de alistamiento necesario para procesar la operación del

trabajo Jj en la máquina i.

- tpji = (total process time)ji : Tiempo de procesamiento total (process time + setup

time) necesario para completar la operación del trabajo Jj en la máquina i.

Page 13: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

13

- rj = (ready time)j : Instante de tiempo en el cual el trabajo Jj está disponible para ser

procesado.

- wkj = (weight)k

j : Peso o ponderación que indica la importancia relativa de Jj con

respecto a los otros trabajos en el criterio k con 1<= k <= K, siendo K el número

de criterios considerados.

b) Variables

- STj = (start time)j: Instante de tiempo en el que comienza el procesamiento del

trabajo Jj.

- Cj = (Completion time)j : Instante de tiempo en el cual termina de ser procesado el

trabajo Jj.

c) Medidas de desempeño individuales

- Fj = (Flow time)j= (Cj – rj) : Tiempo de flujo o duración en el sistema del trabajo Jj,

es decir, es el tiempo transcurrido desde la llegada del trabajo hasta la finalización

de la última operación.

- Lj = (Lateness)j =(Cj – dj): Cuantifica lo pronto (o tarde) que se ha terminado un

trabajo. Si es mayor que cero implica una tardanza en Jj. En caso contrario, implica

una prontitud.

- Ej = (Earliness)j = Max{dj – Cj , 0}: Adelanto del trabajo Jj.

- Tj = (Tardiness)j = Max{0, Lj }: Tardanza del trabajo Jj.

3.2.2 Máquinas

Una máquina es un recurso que puede ejecutar en cada instante de tiempo un único

trabajo. El ambiente de las máquinas se dividen en varias configuraciones: una sola máquina,

máquinas paralelas, talleres de flujo (flow shop), talleres de trabajo (job shop) y talleres

abiertos (open shop).

3.2.2.1 Una sola máquina

Este tipo de problema considera una sola máquina, en la cual deben procesarse en ella

todos los trabajos asignados. Este tipo de problemas se presenta en muchos sistemas

productivos, habitualmente cuando se tiene un cuello de botella muy saturado, el cual

determina el rendimiento global del sistema. Otra utilidad es cuando se recurre al uso de

métodos de descomposición, donde los problemas de secuenciación de N trabajos y M

máquinas, son llevados a M problemas de 1 máquina.

Page 14: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

14

3.2.2.2 Máquinas paralelas

Una estación de máquinas paralelas es una generalización de los modelos de máquinas

solitarias. En los ambientes de producción es típico que se encuentren estaciones o centros de

trabajo, los cuales consisten en un conjunto M de máquinas en paralelo. Habitualmente, se

considera que las máquinas son idénticas, es decir, que tienen la misma velocidad de

procesamiento. Aunque podrían ser uniformes, las cuales tienen distintas velocidades de

procesamiento (por ejemplo, algunas máquinas pueden ser más viejas y operar a una menor

velocidad), o no relacionadas, cuyas velocidades dependen de los trabajos.

3.2.2.3 Taller de flujo (Flow shop)

En este tipo de configuración se tienen M máquinas diferentes. En un flow shop los

trabajos fluyen siguiendo la misma ruta a través de las distintas máquinas. No obstante, alguno

de estos puede saltar alguna máquina que no sea necesaria, por lo que dichas máquinas se

disponen en línea, una tras otra. Tras fabricarse un lote de un ítem, se procede ajustar las

máquinas y se fabrica un lote de otro distinto, y así sucesivamente. Este tipo de configuración

se asocia a la fabricación de grandes lotes de productos diferentes pero técnicamente

homogéneos, es decir, con baja variabilidad, empleándose maquinaria especializada pero con

grados de versatilidad.

Formalmente, el Flow Shop Scheduling Problem (FSSP) se describe de la siguiente

manera: Se tiene un conjunto de N trabajos j = {J1,…,JN} que tienen que ser procesados en un

conjunto de M máquinas m = {M1,…,Mn}. Cada trabajo Jj consiste en una cadena de mj = m

operaciones {O1j,… Omj} con tiempos de procesamiento pOij, donde las operaciones de los

trabajos son procesadas en forma secuencial a través de las máquinas. Dicho orden es

relevante y siempre es el mismo, es decir, todos los trabajos deben seguir el mismo patrón de

flujo, es decir, la misma trayectoria de máquinas. Existen relaciones de precedencia entre las

operaciones, es decir, una operación se inicia solamente si se ha terminado la anterior (Oij →

Oij+1). Además, se debe considerar que cada operación solo puede ser procesada solo en una

máquina a la vez, y cada máquina puede procesar solo una operación a la vez. No es necesario

que un trabajo j pase por todas las máquinas, por lo cual se incluyen a los problemas flow shop

con saltos o skip job. El problema consiste en encontrar una asignación eficiente de las

máquinas a las operaciones de los trabajos que optimice alguna función objetivo (ver sección

3.2.3) y la determinación de los tiempos de inicio de cada uno de los trabajos.

Una generalización de un flow shop es el Flexible Flow Shop o Flow Shop Flexible, el

cual considera procesamiento paralelo. En este problema se tiene una serie de etapas, las

cuales pueden ser etapas de máquinas solitarias o etapas de máquinas paralelas (ver figura

3.4). Los trabajos son procesados en alguna de las máquinas de las etapas, siguiendo el mismo

patrón de flujo. Al igual que el flow shop, se considera la posibilidad de skip job.

Ejemplos típicos de sistemas de manufactura que ocupan este tipo de configuración

productiva son aquellos que ocupan un enfoque estratégico de proceso productivo centrado en

la repetición, tales como: ensambladoras, envasadoras y empresas de consumo masivo.

Page 15: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

15

3.2.2.4 Taller de trabajo (Job shop)

Este tipo de configuración es más general que el flow shop, en cual cada trabajo tiene

una ruta única. Habitualmente este tipo de configuración se asocia a la producción de lotes

más o menos pequeños de una amplia variedad de productos, empleándose maquinaria de

escasa especialización.

Formalmente, el Job Shop Scheduling Problem (JSSP) se describe de la siguiente

manera: Se tiene un conjunto de N trabajos j = {J1,…,JN} que tienen que ser procesados en un

conjunto de M máquinas m = {M1,…,Mn}. Cada trabajo Jj consiste en una cadena de mj

operaciones {O1j,… Omj} con tiempos de procesamiento pOij, donde cada operación Oij

(j=1,..,M) debe ser procesada en una máquina predeterminada Mij ϵ M. Existen relaciones de

precedencia entre las operaciones, es decir, una operación se inicia solamente si se ha

terminado la anterior (Oij → Oij+1). Además, se debe considerar que cada operación solo puede

ser procesada solo en una máquina a la vez, y cada máquina puede procesar solo una

operación a la vez. El problema consiste en encontrar una asignación eficiente de las máquinas

a las operaciones de los trabajos que optimice alguna función objetivo (ver sección 3.2.3) y la

determinación de los tiempos de inicio de cada uno de los trabajos.

Cabe destacar que los problemas flow shop pueden considerarse como un caso

particular de los problemas jop shop, en los cuales todos los trabajos siguen el mismo patrón

de flujo o trayectoria de máquinas.

Existen diferentes extensiones o generalizaciones de este problema. Una de ellas es el

Flexible Jop Shop o Jop Shop Flexible, en el cual cada operación puede ser procesada en

subconjunto de máquinas Mij ⊆ M. Otra extensión es el Hybrid Jop Shop o Job Shop Híbrido,

en el cual las máquinas son agrupadas en E diferentes estaciones y estas pueden ser de

máquinas solitarias o máquinas paralelas (ver figura 3.5). Cabe mencionar que esta última

extensión es la que se considera en este proyecto y se abordará con detalle en la sección 4.

Ejemplos típicos de sistemas de manufactura que ocupan este tipo de configuración

productiva son aquellos que ocupan un enfoque estratégico del proceso productivo centrado en

el proceso, tales como: carpinterías, talleres artesanales, empresas de maquinado mecánico,

talleres de pintura, y cualquier otra industria que fabrique productos personalizados o de alta

variedad en lotes pequeños.

3.2.2.5 Taller abierto (Open shop)

En un sistema open-shop se tiene que cada trabajo Jj consiste en una cadena de mj = m

operaciones {O1j, O2j,…, Omj}, donde Oij se procesa en la máquina Mi en un tiempo pij. A

diferencia de los problemas anteriores, el orden en que se realicen las operaciones es

irrelevante. Son poco usuales en el mundo de la manufactura.

Page 16: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

16

Figura 3.4 – Ejemplo de configuración tipo Flexibe Flow Shop.

Figura 3.5 – Ejemplo de configuración Hybrid Jop Shop.

3.2.3 Objetivos

En los problemas de secuenciación, la función objetivo o medida de desempeño global

es habitualmente la minimización de una métrica de planificación o medida de desempeño

individual. Las funciones objetivo que se estudian en los problemas de secuenciación pueden

ser del tipo cuello de botella max {fj} o del tipo suma ∑fj. Las más estudiadas son las

siguientes:

Page 17: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

17

- Makespan: Corresponde al máximo de los tiempos de finalización (Cmax = max

{C1,…Cn}), o más bien el tiempo de finalización de todos los trabajos. Una de las

características de esta función objetivo, es que su minimización tiende a maximizar

el uso de las máquinas.

- Total Flow Time: Se define como la suma de los tiempos de finalización de todos

los trabajos ∑Cj. En caso de existir un peso wj para cada trabajo, la función objetivo

cambia a ∑Cj wj, denominándose Total Weighted Flow Time.

- Max Lateness: Corresponde al retraso máximo de todos los trabajos (Lmax = max

{L1,…Ln})

- Total Lateness: Corresponde a la suma de los retrasos de los trabajos ∑Lj, Una

demora positiva indica la tardanza en la finalización del trabajo, mientras que la

conclusión del trabajo en forma anticipada a su fecha de entrega dj se indica por

una demora negativa o adelanto, cuyo valor absoluto es la cantidad de tiempo

anticipada.

- Total Tardiness: La tardanza de un trabajo j se define como Tj = Max {Cj - dj, 0},

por lo cual la tardanza total se define como ∑Tj. En caso de existir un peso wj para

cada trabajo, la función objetivo cambia a ∑Tj wj, denominándose Total Weighted

Tardiness.

- Total Setup Time: Corresponde a la suma de tiempo invertido en operaciones de

setup en todos los trabajos, es decir, ∑Sj.

Existen otras funciones objetivos, menos estudiadas en la literatura tales como:

minimización de los tiempos de espera, minimización de los costos de transporte,

minimización de los costos de inventario de productos en proceso, etc. Y Otras más

contemporáneas como JIT (Just in Time), la cual minimiza simultáneamente el adelanto

ponderado total y el atraso ponderado total, es decir, min ∑wj’Ej + ∑wj

’’Tj.

Cabe mencionar que de estas funciones objetivo, sin duda, la más estudiada por los

investigadores teóricos y, por lo tanto, la mayor documentada en publicaciones científicas es

el makespan. No obstante, en el mundo competitivo de las organizaciones del siglo XXI, lo

que interesa es mejorar los índices de servicio y satisfacción del cliente. Es por esto, que existe

una nueva corriente de investigadores teóricos que está poniendo sus esfuerzos en los

problemas de secuenciación de trabajos con el objetivo de minimizar el Total Tardiness (TT) y

el Total Weighted Tardiness (TWT), las cuales son funciones que apuntan a mejorar lo

mencionado anteriormente, siendo esta última parte del estudio de este proyecto.

Page 18: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

18

3.2.4 Características y Restricciones de Procesamiento

Los problemas de secuenciación de trabajos tienen muchas características distintivas y,

a menudo, está sujeto a restricciones particulares. A continuación, se describen las

características y restricciones más comunes asociadas a los problemas de secuenciación.

a) Patrones de llegada de trabajos: Los trabajos pueden llegar por lote o en un intervalo

de acuerdo a una distribución probabilística. Al primer patrón se le denomina estático,

donde se conoce exactamente la fecha de disponibilidad (ready time) de los trabajos, y

al segundo se le denomina dinámico, donde la fecha de disponibilidad de los trabajos

depende de una función probabilística. La llegada estática no implica que todos los

trabajos estén disponibles para ser ejecutados en el mismo momento, sino que están

sujetos a programarse en el mismo tiempo. Esta situación ocurre cuando el encargado

del control de la producción hace un programa, digamos, una vez por semana y no

despacha ningún trabajo hasta contar con todos los pedidos de la semana anterior. En

la llegada dinámica se despachan los trabajos en cuanto llegan y se actualiza el

programa global para reflejar su efecto sobre las instalaciones productivas.

b) Atributos de los trabajos y los recursos: Los atributos de los trabajos y los recursos

se pueden dividir en determinísticos y estocásticos. En el primer caso los datos son

conocidos a priori, mientras que en el segundo estos dependen de una distribución

probabilística.

c) Políticas de inventario: Las políticas de inventario que se manejan en los sistemas de

manufactura pueden ser del tipo Make-To-Stock (Contra inventario) o Make-To-Order

(Contra pedido). Desde el punto de vista de la secuenciación de trabajos, los sistemas

que fabrican contra inventario no tienen fechas de entrega estrictas, mientras que los

sistemas que fabrican contra pedido tienen fechas de entrega específicas. Cabe destacar

que, en la práctica, la mayoría de los sistemas de manufactura operan de una forma

mixta, es decir, podría trabajar contra inventario un grupo de productos y con otros

fabricar contra pedido.

d) Configuración de la producción: Los trabajos pueden presentarse en dos formas o

pasos. Se dice que la configuración de la producción es de paso solitario, cuando cada

trabajo se hace en una sola máquina, y de paso múltiple, cuando cada trabajo consta de

una serie de operaciones que pueden ser procesadas en diferentes máquinas.

e) Restricciones de precedencia: A menudo, el procesamiento de un trabajo puede estar

sujeto a la completación previa de un conjunto de trabajos. Este tipo de restricciones

son referidas como restricciones de precedencia y pueden representarse con un grafo,

los cuales pueden tener diferentes estructuras según el caso. A continuación se

describen las principales estructuras:

Page 19: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

19

a. prec: Se tiene una relación de precedencia general entre los trabajos dada por

un grafo G dirigido acíclico cuyos vértices representan los trabajos Jj (j =

{1,..N}) y los arcos Jj → Jk indican que el comienzo de la ejecución del trabajo Jk

está condicionado a la completación previa del trabajo Jj.

b. tree: el grafo G es un árbol, es decir, dos vértices cualquiera de G deben estar

conectados por un único camino simple.

c. intree: el grafo G es un árbol de ensamble, es decir, de cada vértice sale a lo

más un arco.

d. outtree: el grafo G es un árbol de ramificación, es decir, a cada vértice llega a

lo más un arco.

f) Restricciones de ruta: Este tipo de restricciones especifican la ruta o trayectoria de

máquinas que debe tomar un trabajo a través del sistema, por ejemplo, en un jop shop o

en un flow shop. Como fue mencionado anteriormente, en este tipo de sistemas un

trabajo consiste en una serie de operaciones que tienen que ser procesadas en máquinas

específicas, siguiendo un orden predeterminado.

g) Tiempos de setup dependientes de la secuencia: A menudo las máquinas necesitan

ser reconfiguradas o limpiadas entre el procesamiento de trabajos. Este proceso es

conocido como alistamiento o setup. Si el tiempo del setup depende del trabajo que

acaba de terminar y del que va ser iniciado, entonces los setups son dependientes de la

secuencia. Si el trabajo j es seguido por el trabajo k en la máquina i, el tiempo de setup

se denota como Sijk.

Por ejemplo, las empresas que fabrican pinturas frecuentemente requieren operaciones

de setup entre el procesamiento de distintos lotes de pintura. Cada vez que un nuevo

color es usado, las máquinas deben ser limpiadas. Este tiempo de limpieza depende del

color que fue usado y del color que se usará, en consecuencia, existen tiempos de setup

dependientes de la secuencia. En la práctica la mejor secuencia es ir de colores claros a

colores oscuros, debido a que el proceso de limpieza es más fácil y rápido.

h) Interrupciones: Es posible que durante el procesamiento de un trabajo, ocurran ciertos

eventos que requieran la interrupción del trabajo que está siendo procesado, debido a,

por ejemplo, la llegada de un trabajo un trabajo urgente. En la mayoría de los

problemas de secuenciación, se considera que los trabajos no son interrumpibles. En

caso de considerarse interrupción de los trabajos, las interrupciones sólo tienen sentido

si se puede retomar el trabajo en el estado que se dejó, es decir, no interesa interrumpir

un trabajo si al retomarse se obliga a repetir todo lo que se había hecho.

i) Restricciones de elegibilidad de maquinaria: En un ambiente de máquinas paralelas,

un trabajo j podría no ser factible de procesar en cualquiera de las máquinas

disponibles. De otra forma, un trabajo j puede ser procesado en un subconjunto Mj de

Page 20: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

20

todas las máquinas disponibles. Cabe destacar que este tipo de restricciones aparece

cuando existe un ambiente de M máquinas paralelas no idénticas.

j) Restricciones a la disponibilidad de los recursos: Los recursos en un problema de

secuenciación de trabajos se pueden clasificar en: máquinas, operarios, materias primas

y componentes. Respecto a las máquinas y operarios, es posible que cumplan horarios

o turnos. Esto implica que no siempre se encuentren disponibles para realizar

operaciones, afectando las decisiones a la hora de programar los trabajos. Asimismo,

se puede considerar que un trabajo requiere de insumos (materias primas y/o

componentes) para poder ser procesado. Esto implica que, en ciertas ocasiones, un

trabajo no pueda ser procesado, debido a la falta de inventario de materias primas y/o

componentes necesarios.

3.3 Algoritmos de resolución

“Un algoritmo es una “receta” para obtener una solución de un modelo. Una instancia

es un conjunto de datos específico para el modelo. Los algoritmos exactos proporcionan una

solución óptima para todas las instancias del problema, mientras que los algoritmos de

aproximación proporcionan soluciones que se espera que sean cercanas a la óptima para

cualquier instancia” (Sippper, 1998). A continuación se presentan los algoritmos exactos y

aproximados utilizados para resolver los problemas de secuenciación.

3.3.1 Algoritmos exactos

Los algoritmos exactos garantizan poder encontrar la solución óptima en un tiempo de

procesamiento razonable, sin embargo, para la mayor parte de los problemas de secuenciación

de trabajos no existe un algoritmo exacto para resolverlo en tiempo polinomial1, debido al

carácter combinatorio2 del problema (Sevilla, 2010). De hecho, para el problema de

secuenciación en una máquina 1|∑wjTj es considerado NP-hard (Lawler, 1977), en

consecuencia, cualquier problema de 2 o más máquinas que considere como función objetivo

el TWT es también NP-hard. En la práctica los algoritmos exactos necesitan tiempos

computacionales exponenciales, por lo tanto, no representan un método de solución real para

los problemas de secuenciación de trabajos. Los algoritmos exactos más comunes encontrados

en la literatura son los algoritmos branch & bound, programación dinámica y programación

lineal entera-mixta.

3.3.2 Algoritmos de aproximación

Los algoritmos de aproximación sacrifican la garantía de encontrar una solución

óptima en función de obtener soluciones cercanas a la óptima en tiempos computaciones

razonables y prácticos (Blum, 2003). Dentro de estos algoritmos encontramos heurísticas y

metaheurísticas, los cuales se describen a continuación.

Page 21: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

21

3.3.2.1 Heurísticas

“Las heurísticas son algoritmos que encuentran soluciones (ojala cercanas al óptimo) a

un costo computacional razonable para problemas complejos del tipo NP y NP-Complejo (NP-

Hard)” (González, 2013). La clasificación más básica de los algoritmos heurísticos son: los

algoritmos constructivos y los algoritmos de búsqueda local.

a) Algoritmos Constructivos: Los algoritmos constructivos o también algoritmos

paso a paso, construyen una solución factible agregando uno a uno los

componentes individuales. En el caso de los problemas de secuenciación, estos

componentes son las operaciones de los trabajos. Los algoritmos constructivos más

utilizados para los problemas de secuenciación son las variantes de las reglas de

despacho. Dado que el algoritmo escogido para solucionar el problema de este

proyecto es una extensión de las reglas de despacho, se describe en detalle este tipo

de heurísticas en la sección 3.4.

Otro tipo de algoritmo constructivo bastante utilizado en para resolver los

problemas tipo jop shop son las heurísticas basadas en cuellos de botella móvil1,

cuya idea principal es descomponer el problema de secuenciación de N trabajos y

M máquinas, en M problemas de 1 máquina y luego, resolver cada uno de estos

problemas en forma iterativa (habitualmente, utilizando reglas de despacho),

identificando en cada iteración a la máquina cuello de botella que tiene que ser

secuenciada. Esta estrategia permite reducir, notablemente, la complejidad en

problemas NP-Hard como el JSSP.

b) Algoritmos de Búsqueda Local: Los algoritmos de búsqueda local realizan una

búsqueda en un espacio de soluciones potenciales del problema, tratando de

encontrar aquella solución que maximice o minimice una determinada función

objetivo. En los problemas de secuenciación de trabajos, los algoritmos de

búsqueda local parten con una solución inicial, generada aleatoriamente o mediante

un algoritmo construcción (por ejemplo, reglas de despacho), e iterativamente, por

medio de un método de transición, pasan a una solución vecina de la solución

actual, habitualmente la que tiene menor costo. Luego, la solución actual se

reemplaza por la solución vecina escogida, siempre y cuando cumpla con el criterio

de aceptación, que puede consistir simplemente en que la solución vecina sea

mejor que la solución anterior (criterio de escalada).

Si bien la búsqueda local permite encontrar soluciones suficientemente buenas para

un conjunto amplio de problemas combinatoriales, presenta el inconveniente de

quedar fácilmente atrapada en óptimos locales, debido a su naturaleza de búsqueda.

A raíz de esto, es común verla asociada a estrategias más avanzadas

(metaheurísticas) como el enfriamiento simulado o búsqueda tabú.

Page 22: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

22

3.3.2.2 Metaheurísticas

“Las metaheurísticas son estrategias de nivel avanzado las cuales permiten tener

mejores desempeño que las heurísticas tradicionales. El principal objetivo es evitar las

desventajas en el desarrollo iterativo y, en particular, el profundo descenso, permitiendo a la

búsqueda local escapar de óptimos locales” (Blum, 2003). Una metaheurística combina

básicamente tres elementos: algoritmos de construcción, algoritmos de búsqueda local y

estrategias que evitan óptimos locales. A continuación se describen brevemente las

metaheurísticas más utilizadas en los problemas de secuenciación.

a) Algoritmos genéticos: Los algoritmos genéticos utilizan una estrategia de búsqueda

estocástica en un espacio de soluciones potenciales de un problema que trata modelar

las leyes de la evolución natural, en particular la herencia genética y la adaptación al

entorno. Los algoritmos genéticos simulan el proceso de evolución de los seres vivos y

están basados en el principio de supervivencia del más apto para formar la siguiente

generación de posibles soluciones. Estas soluciones se construyen utilizando

operadores probabilísticos, como el cruce genético, mutación y supervivencia del más

apto (selección). A medida que avanza el proceso evolutivo los individuos más aptos

sobreviven, lo que representa las mejoras soluciones, mientras que los individuos

menos aptos mueren. La evolución de dichas soluciones hacia valores óptimos del

problema depende en buena medida de una adecuada codificación de estas.

Cabe destacar que un esquema de codificación bastante utilizado en los problemas de

secuenciación, es el denominado “permutaciones con repetición”. En este esquema un

cromosoma puede ser definido como una permutación del conjunto de operaciones,

donde cada operación se representa por el número de trabajo al que pertenece.

(Bierwirth, 1995). A raíz de esto en un cromosoma aparece el número de un trabajo

tantas veces como operaciones contenga. Por ejemplo, el cromosoma (1 2 2 3 3 1 2 1

3) representa la permutación de operaciones (O11, O21, O22, O31, O32, O12, O23, O13,

O33), siendo Oij la operación j del trabajo i. Esta permutación debe entenderse que

expresa planificaciones parciales para cada conjunto de operaciones que requieren la

misma máquina. La principal ventaja de este esquema, es que cualquier permutación

representa una planificación factible. Además, permiten diseñar operadores genéticos

(cruce y mutación) eficientes. (González, 2011)

b) Algoritmos meméticos: Son algoritmos híbridos que combinan estrategias evolutivas

como los algoritmos genéticos con estrategias de búsqueda local, de manera de

introducir un mecanismo de aprendizaje durante la vida de cada individuo y así

mejorar la adaptación evolutiva en un algoritmo genético.

c) Búsqueda dispersa: Similar a los algoritmos genéticos solo que en vez de utilizar una

estrategia de búsqueda estocástica, utilizan estrategias de búsqueda sistemáticas.

d) Búsqueda tabú: Es un método avanzado de búsqueda local, el cual para escapar de

óptimos locales y explorar nuevas regiones del espacio de búsqueda utiliza una

Page 23: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

23

estructura de memoria llamada lista tabú, que contiene un conjunto de movimientos o

transformaciones que no están permitidos para generar una nueva vecindad de la

solución actual. En otras palabras, la lista tabú evita que el proceso de búsqueda vuelva

a soluciones ya visitadas en anteriores iteraciones. Está técnica toma como referencia

dos estrategias: una basa en diversificación, que modifica la solución por medio de

reglas que le permitan elegir entre regiones con soluciones activas; y otra de

intensificación, que revisa en un nivel macro las zonas no visitadas, y genera

soluciones diferentes a las ya establecidas.

e) Búsqueda local explorativa: Son métodos modernos de búsqueda local, los cuales

tienen mecanismos para evitar óptimos locales. Entre ellos encontramos: GRASP

(Greedy Randomized Adaptative Search Procedure), VNS (Variable Neighboorhood

Search) y ILS (Iterated Local Search).

f) Colonia de hormigas: Esta metaheurística constituye un agente inteligente que se

inspira en el comportamiento que rigen a las hormigas para encontrar los caminos más

cortos entre las fuentes de comida y el hormiguero. Cuando las hormigas se mueven

para buscar comida van dejando feromonas en su camino, y las que encuentran el

camino más corto regresan dejando más concentración de feromonas en ese camino.

Luego, las hormigas que salen a buscar comida más tarde siguen el mismo camino,

incrementado aún más la concentración de feromonas, lo cual puede llevar al camino

más corto seguido por todas las hormigas. Este fenómeno es aplicado a un grafo

disyuntivo (ver Dugardin, 2007), el cual representa la ruta de las operaciones a través

de las máquinas de todos los trabajos. Luego, lo que interesa determinar es el mejor

camino entre el nodo fuente y el nodo sumidero del grafo, es decir, aquel con mayor

concentración de feromonas.

g) Enfriamiento simulado: Este algoritmo simula un proceso análogo al del recocido

metalúrgico. Este consiste en el enfriamiento de un metal fundido a baja velocidad, de

manera que las moléculas del metal se vayan adaptando poco a poco a una

configuración mínima de energía. La idea de este método, en un contexto de búsqueda

local, consiste en admitir con una cierta probabilidad, algunos vecinos que empeoren la

solución actual, y de este modo escapar de óptimos locales. En específico, si la

solución elegida es mejor que la actual, siempre se acepta. Pero si la solución vecina es

peor que la actual, la nueva solución se acepta con una determinada probabilidad que

depende de los parámetros: la temperatura T y el incremento de energía ∆E. Al

principio de la búsqueda, la temperatura tiene un valor alto (T0), de modo que la

probabilidad de aceptar una solución peor que la actual es alta. A medida que la

búsqueda progresa, el valor de T comienza a disminuir, desde este modo, la

probabilidad de aceptar una solución que empeore la actual va disminuyendo a medida

que avanza la búsqueda, hasta que al final únicamente se admiten soluciones que

mejoren o igualen a la actual.

h) Redes neuronales: Constituyen una tecnología de inteligencia artificial avanzada que

intenta reproducir el funcionamiento del cerebro humano, simulando el proceso de

aprendizaje y los procesos de toma de decisiones.

Page 24: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

24

3.4 Reglas de Despacho

Las reglas de despacho o heurísticas de despacho, son reglas que permiten definir

prioridades a todos los trabajos que están esperando para ser procesados en una máquina. Cada

vez que una máquina queda libre, una regla de despacho inspecciona los trabajos en cola y

selecciona el trabajo con la mayor prioridad para ser procesado.

Las reglas de despacho pueden ser clasificadas de varias formas. Una forma es la

clasificación respecto al tiempo, donde encontramos reglas estáticas y reglas dinámicas. Las

reglas estáticas no son dependientes del tiempo, sino solo de los datos de los trabajos y las

máquinas. Por otro lado, las reglas dinámicas son dependientes del tiempo, lo cual implica que

en un instante de tiempo un trabajo j puede tener mayor prioridad que un trabajo k, y en otro

instante puede ocurrir lo contrario. Otra forma de clasificación es de acuerdo a la información

que manejan, y según esta clasificación tenemos reglas locales y reglas globales. Las reglas

locales solo manejan información perteneciente a la cola de la maquina en la que el trabajo

está esperando, mientras que las globales también manejan información de las otras máquinas.

Si bien estas reglas no entregan soluciones de alta calidad para los problemas de

secuenciación, debido a su fácil entendimiento, implementación y rapidez de ejecución, las

reglas de despacho son probablemente las estrategias más aplicadas para resolver problemas

de secuenciación de trabajos en los ambientes productivos, sobre todo en combinación con

otros métodos.

En la literatura (Pinedo, 1999 y otros) se puede encontrar una amplia variedad de

reglas de despacho, destacándose, entre otras, las siguientes:

- SIRO (Service in Random Order): De acuerdo a esta regla, cuando una maquina es

liberada, el siguiente trabajo se selecciona de forma aleatoria.

- FIFO (First In First Out): Se emplea a menudo y, especialmente, con productos

perecibles, donde toma el nombre de FEFO (First Expiration First Out).

- LIFO (Last in First Out): No es común, pero en ocasiones, cuando el material

ocupa grandes superficies y la rotación es elevada, suele ser útil esta regla.

- EDD (Earliest Due Date): Cada vez que una máquina es liberada, el trabajo con la

fecha de entrega más temprana es seleccionado para ser procesado. Esta regla tiene

a minimizar Lmax entre los trabajos que esperan a ser procesados. Actualmente, en

una configuración de una sola máquina, con n trabajos disponibles en el instante t

= 0, la regla EDD minimiza Lmax.

- MS (Minimum Slack First): Esta regla es una variación de la regla EFF. Si una

maquina es liberada en el instante t, la holgura remanente de cada trabajo en este

instante, definida como: max(dj – pj – t, 0), es calculada. Luego, el trabajo con la

Page 25: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

25

menor holgura es el siguiente en ser programado. Esta regla tiende a minimizar los

objetivos relacionados con las fechas de entrega.

- WSPT (Weighted Shortest Process Time): Ordena los trabajos de forma

decreciente en función de la relación entre el peso wj y el tiempo de procesamiento

pj, es decir, en orden decreciente de wj / pj. Esta regla tiende a minimizar ∑ wjCj,

siendo una solución óptima para el problema 1|∑wjCj. Cuando todos los pesos son

iguales, la regla WSPT se reduce a la regla STP (Shortest Process Time), la cual

ordena los trabajos de menor a mayor tiempo de procesamiento.

- LPT (Longest Process Time): Ordena los trabajos de mayor a menor tiempo de

procesamiento. Cuando se tienen máquinas en paralelo esta regla tiende a equilibrar

las cargas de trabajo.

- CP (Critical Path): Se utiliza cuando los trabajos están sujetos a restricciones de

precedencia. Se selecciona el trabajo cuyo tiempo de procesamiento total es mayor,

considerando únicamente las actividades precedentes a la actual.

- LNS (Largest Number of Succesors): Esta regla se puede utilizar cuando los

trabajos están sujetos a restricciones de precedencia, donde se selecciona al trabajo

con mayor número de trabajos sucesores.

- SST (Shortest Setup Time): Selecciona al trabajo que tendría el tiempo de setup

más corto si se planificara a continuación.

Estas reglas de despacho básicas son útiles para encontrar buenas soluciones a

problemas con un solo objetivo, no obstante, no existen reglas de despacho básicas para

analizar problemas con objetivos más complejos. Para este tipo de problemas se utilizan reglas

de despacho compuestas, las cuales combinan reglas despacho básicas asignándole un peso a

cada una de ellas.

3.5 Reglas de Despacho Compuestas

Las reglas de despacho compuestas son una estrategia que combina reglas de despacho

básicas (ver sección 3.4) para computar un ranking de prioridad. Para determinar el nivel de

contribución de cada regla básica a la expresión general, se asocian parámetros de escala.

Estos pueden ser fijados por el diseñador de la regla, o pueden ser variables, en función del

conjunto de particular de trabajos que debe ser programado. En el último caso, se requiere la

determinación de una serie de estadísticas asociadas a los trabajos, las cuales permiten

caracterizar una instancia particular de un problema (por ejemplo, determinar la estrechez de

las fechas de entrega de los trabajos). Estas estadísticas, también denominado factores,

usualmente no dependen de la programación y pueden ser obtenidas en función de los

atributos de los trabajos y las máquinas de una instancia dada. Cada vez que una regla de

despacho compuesta es usada para generar una programación, las estadísticas necesarias son

computadas. Por medio de una función, que debe ser determinada, estas estadísticas son

Page 26: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

26

transformadas en los valores de los parámetros de escala, para luego finalmente aplicar la

regla de despacho a la instancia dada.

A continuación se describen las reglas de despacho ATC (Apparent Tardiness Cost) y

ATCS (Apparent Tardiness Cost With Setups), las cuales son heurísticas que permiten resolver

el problema Pm|∑wjTj y el Pm|Sjk|∑wjTj, respectivamente.

3.5.1 Apparent Tardiness Cost (ATC)

La heuristica ATC es una regla de despacho compuesta que combina WSPT y MS.

Esta fue desarrollada por Vepsalainen y Morton (Vepsalainen, 1987), ocupando los principios

de COVERT (Carroll, 1965) y MOD (Baker, 1982), para resolver el problema de máquinas

paralelas con atraso ponderado total como función objetivo (Pm|∑wjTj).

ATC programa los trabajos uno a uno de la siguiente manera; cada vez que una

máquina queda libre, un índice de prioridad es calculado para todos los trabajos en la cola de

la máquina. Luego, el trabajo con el índice de prioridad más alto es seleccionado para ser

procesado. Este índice es una función del tiempo t, que es el instante cuando la máquina queda

libre, y de pj, wj y dj de los trabajos remanentes, el cual se define como:

𝐼𝑗(𝑡) = 𝑤𝑗

𝑝𝑗exp (−

max(𝑑𝑗 − 𝑝𝑗 − 𝑡, 0)

𝐾�̅�)

Donde K es el parámetro de escala, el cual debe ser determinado empíricamente, y �̅� es

la media de los tiempos de procesamiento de los trabajos remanentes. Si K es muy grande, la

regla ATC se reduce a WSPT. Si K es muy pequeño y no hay trabajos atrasados, la regla se

reduce a MS. Si K es muy pequeño y hay trabajos atrasados, la regla se reduce a WSPT

aplicado a los trabajos atrasados.

Para obtener buenas programaciones, el valor de K (también llamado parámetro de

futuro) debe ser apropiado para la instancia particular del problema. Para determinar el valor

de K, en primera instancia, se debe realizar un análisis estadístico que permita caracterizar la

instancia del problema. Las estadísticas típicamente utilizadas para caracterizar las instancias

de los problemas son el due date tightness (τ) y el due date range (R). El due date tightness es

definido como:

𝜏 = 1 − �̅�

𝐶𝑚𝑎𝑥

Donde �̅� es la media de los de las fechas de entrega. Valores de 𝜏 cercanos a 1 indica

que las fechas de entrega están estrechas, mientras que valores cercanos a 0 indican que las

fechas de entrega están holgadas. Por otro lado, el due date range es definido como:

Page 27: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

27

𝑅 =𝑑𝑚𝑎𝑥 − 𝑑𝑚𝑖𝑛

𝐶𝑚𝑎𝑥

Donde un valor alto de R indica un rango ancho de fechas de entrega, mientras que un

valor bajo indica un rango estrecho de fechas de entrega.

Finalmente, cada vez que se quiera resolver un problema se debe caracterizar la

instancia, utilizando las estadísticas mencionadas. Luego, se debe determinar el valor de K

como función de estos factores o estadísticas así como del ambiente particular de las

máquinas. Una vez fijado K, se puede aplicar la heurística.

3.5.2 Apparent Tardiness Cost with setups (ATCS)

La heurística ATCS es una extensión del heurística ATC, la cual considera tiempos de

setup dependientes de la secuencia. Esta fue desarrollada por Lee y Pinedo (Lee, 1997) para

resolver el problema de máquinas paralelas con setups dependientes de la secuencia y atraso

ponderado total como función objetivo (Pm|Sjk|∑wjTj). En este caso, los trabajos están sujetos a

setups dependiente de la secuencia Sjk y la prioridad de cualquier trabajo j depende del trabajo

que acaba de ser procesado cuando la máquina quedo libre.

ATCS combina WSPT, MS, y SST en un solo índice de clasificación. La regla calcula

el índice del trabajo j sobre la completación del trabajo l en el tiempo t como:

𝐼𝑗(𝑡, 𝑙) = 𝑤𝑗

𝑝𝑗exp (−

max(𝑑𝑗 − 𝑝𝑗 − 𝑡, 0)

𝐾1�̅�) exp(

𝑆𝑙𝑗

𝐾2�̅�)

Donde �̅� es la media de los tiempos de setup de los trabajos remanentes, K1 es el

parámetro de escala relacionado con las fechas de entrega y K2 es el parámetro de escala

relacionado con los tiempos de setup.

Los parámetros de escala K1 y K2, pueden ser determinados como una función de tres

factores:

1) Due date tightness factor (τ).

2) Due date range factor (R).

3) Setup time severity factor η = �̅�/�̅�

Estas estadísticas no son fácil de calcular como en el caso de ATC, debido a que el

makespan (Cmax) es ahora dependiente de la programación producto de los tiempos de setup. A

raíz de esto, antes del cálculo de los factores τ y R, el makespan tiene que ser estimado. Una

forma de estimar el makespan en una máquina (Pinedo, 1999) es:

Page 28: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

28

�̂�𝑚𝑎𝑥 = ∑ 𝑝𝑗

𝑛

𝑗=1

+ 𝑛�̅�

Luego, las definiciones de τ y R tienen que ser modificadas reemplazando el makespan

con su estimación.

Un estudio experimental de la regla ATCS (Pinedo, 1999) sugiere algunas directrices

para la determinación de los valores K1 y K2. Estas directrices son:

𝐾1 = {4.5 + 𝑅 𝑠𝑖 𝑅 ≤ 0.56 − 2𝑅 𝑠𝑖 𝑅 ≥ 0.5

𝐾2 = 𝜏

(2√𝜂)

3.5.3 Otras heurísticas

Existen varias extensiones o variaciones de la heurística ATC, las cuales se pueden

resumir en la tabla 1. A continuación se describen brevemente cada una de ellas, exceptuando

ATCS que fue descrita en la sección anterior.

Tabla 1 – Comparación entre los términos de aproximaciones basadas en ATC (Fuente:

Pfund, 2007)

a) Batch Apparent Tardiness Cost with Setups (BATCS): Desarrollada por Mason

(Mason, 2002), incorpora el procesamiento por lotes. Este índice también permite

la programación de trabajos no disponibles, considerando fechas de disponibilidad

en el slack term (ver tabla 1). Cada vez que una máquina queda libre, se calcula el

índice BATCS, multiplicando los términos de la tabla 1, para cada uno de los

trabajos remanentes, incluyendo a aquellos que no están disponibles en ese

instante. El trabajo con el mayor índice BATCS es el siguiente en ser procesado.

Page 29: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

29

b) Batch Apparent Tardiness Cost with Setups Modified (BATCSmod): Es una

modificación del índice anterior, el cual cambia la forma en cómo se manejan las

fechas de disponibilidad en el slack term (ver tabla 1) de la heurística. Similar a los

casos anteriores, el trabajo con el mayor índice BATCSmod es el siguiente en ser

procesado.

c) X-dispatch Rachamadugu and Morton (X-RM): Desarrollada por Morton y Pentico

(Morton, 1993), intenta determinar si hay beneficio en la espera de trabajos no

disponibles. El índice se obtiene multiplicando los términos de la tabla 1, donde

pmin es el tiempo de procesamiento más pequeño entre los trabajos disponibles y B

es una constante que indica el nivel de importancia que se le da a los trabajos

atrasados. Cada vez que una máquina queda libre, se calcula el índice X-RM para

cada trabajo remanente, incluyendo aquellos que no están disponibles en ese

instante pero que estarán disponibles antes de t + pmin, donde t es el instante de

tiempo cuando la máquina queda libre. El trabajo con el mayor índice X-RM es el

siguiente en ser procesado.

d) X-dispatch Rachamadugu and Morton Modified (X-RMmod): Es una modificación

del índice anterior, la cual incorpora tiempos de setup, de forma similar al índice

ATCS. El resto del procedimiento es igual al índice X-RM

e) Apparent Tardiness Cost with Setups and Ready times (ATCSR): Desarrollada por

Pfund, Fowler, Gadkari y Chen (Pfund, 2007), es una aproximación basada en

ATCS, la cual incorpora fechas de disponibilidad (ready times). Esta regla

compuesta considera un término exponencial para las fechas de disponibilidad e

incluye fechas de disponibilidad en el cálculo del slack term (ver tabla 1). Al igual

que los índices anteriores, el trabajo con el mayor índice ATCSR es el siguiente en

ser procesado.

Page 30: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

30

4 Definición del Problema

A continuación se define el problema que se abordará en este proyecto. Primero se

realiza una descripción del problema, la cual busca establecer los límites del estudio y el

alcance del problema que se investiga, para luego ser formulado abstractamente.

4.1 Descripción del Problema

Se tiene un sistema de manufactura cuya configuración productiva se basa en lotes,

específicamente, en una configuración Jop Shop. Por lo tanto, se producen lotes, más o menos,

pequeños de una amplia variedad de producto, empleándose equipos o maquinarias de poca o

nula estandarización. No obstante, la mayoría de los trabajos hacen pasos solitarios, es decir,

consisten en una sola operación, aunque existen algunos que se componen de dos o más

operaciones. Este sistema agrupa los recursos, máquinas y operarios, en estaciones o centros

de trabajo (CT), según la función y especialización de estos, las cuales pueden ser estaciones

de máquinas solitarias o estaciones de máquinas paralelas idénticas (ver figura 4.1). Esta

configuración, en la jerga del scheduling, se conoce como Hybrid Job Shop o Job Shop

Híbrido (Dugardin, 2007).

Cada CT o estación del taller productivo tiene asociado un calendario de turnos, el cual

indica la disponibilidad de los recursos, máquinas y operarios, durante el horizonte de

planificación, en consecuencia, se desprende que no siempre se encuentran disponibles para

realizar operaciones.

Figura 4.1 – Ejemplo Layout Problema en Estudio (Fuente:

http://www.ingenieriaindustrialonline.com/, 2015).

Al sistema llegan diferentes órdenes de fabricación (trabajos), emanadas del Plan de

Materiales, las cuales están asociadas a la elaboración de un producto final o un producto

Page 31: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

31

intermedio. No obstante, se considerará el caso estático de los problemas de secuenciación, es

decir, se conoce exactamente la fecha de disponibilidad de los trabajos. En particular, se

considera que todos están potencialmente disponibles en el instante inicial y no llegan nuevas

órdenes durante el periodo de planificación. Cada una de estas órdenes de fabricación está

compuesta por diferentes requerimientos, los cuales son:

a) Requerimientos de Operación: especifica(n) la(s) operación(es) y el orden en que

debe(n) realizarse (trayectoria de máquinas) para ser procesado correctamente.

b) Requerimientos de Materias Primas: especifica(n) la(s) cantidad(es) y tipo(s) de

materia prima requerido(s) para poder ejecutar las operación(es) correspondiente(s) a

la orden.

c) Requerimientos de Productos (componentes): especifica(n) la(s) cantidad(es) y tipo(s)

de producto(s) requerido(s) para poder ejecutar las operación(es) correspondiente(s) a

la orden.

Estos requerimientos son determinados en base a dos documentos “típicos” de

producción: lista de materiales (bill of materials) y lista de operaciones (bill of operations). La

lista de materiales representa la estructura del producto, es decir, el tipo de componentes y/o

materias primas y la cantidad de cada uno de ellos, la cual habitualmente tiene forma de árbol

de ensamble. Por otro lado, la lista de operaciones recoge los datos necesarios para conocer la

forma en que se fabrica un artículo, es decir, el tipo de operaciones y la ruta por las máquinas.

Estas listas emanan de la receta del producto, la cual, en realidad, es la agrupación de estos

documentos.

Las órdenes de fabricación, además de requerimientos, tienen asociado los siguientes

atributos: tipo de producto, cantidad de producto, prioridad y fecha de entrega. Sin embargo,

las órdenes de fabricación que están asociadas a la elaboración de un producto intermedio o

componente, no tienen fecha de entrega.

Se consideran estructuras de setup dependientes de la secuencia, es decir, el tiempo de

setup depende de la orden que acaba de terminar y de la que va a comenzar.

Existen stocks iniciales para cada tipo de materia prima y componente del sistema, los

cuales irán variando a medida que lleguen órdenes planeadas de abastecimiento de materias

primas y/o se completen ordenes de fabricación asociadas a componentes.

Las órdenes de fabricación no son del todo independientes, es decir, existen relaciones

de precedencia entre las órdenes (por ejemplo, no se puede fabricar un lote de un cierto

producto final sin tener el stock suficiente de componentes para las operaciones). Esto

conlleva a que se tengan que priorizar los pedidos de componentes cada vez que no se tenga el

stock suficiente para cumplir con el programa productivo.

Además, se tiene una lista de máquinas, la cual entrega información respecto al tipo de

operación que puede soportar cada centro de trabajo y/o máquina del taller. Conjunto a esto,

en caso de existir más de una estación y/o máquina que pueda procesar un tipo de operación,

se conoce la estación y/o máquina preferida.

Page 32: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

32

Finalmente, para capturar adecuadamente los requerimientos y apoyar en la correcta

comprensión del problema, se representa el problema en estudio con el siguiente diagrama de

clases (DCla) (ver figura 4.2).

Centro de Trabajo

Recurso

1..*

Máquina Operario

Producto

Orden de Fabricación

Requerimiento de Operación

Requerimiento de Materia

Prima

Requerimiento de Producto

1..* 0..* 0..*

OperaciónMateria Prima

0..*

1..1

0..*

1..1

0..*

1..1

0..*1..*

0..1

0..1

1..1

0..*

{disjunto, completo}

Figura 4.2 – DCla Problema en Estudio.

4.2 Formulación del Problema

Se tiene un conjunto potencial de N trabajos (órdenes de fabricación) j = {J1,…,JN} a

secuenciar en un taller productivo con máquinas paralelas. El taller se compone de un

conjunto de M máquinas m = {M1,…,MM} de diferentes tipos agrupadas en CT centros de

trabajo, los cuales pueden ser CT de máquinas únicas o CT de máquinas paralelas idénticas.

Cada trabajo Jj está compuesto por tres tipos de requerimientos: operación, materia

prima y producto.

El requerimiento de operación especifica la cadena de mj operaciones {O1j,… Omj} que

compone al trabajo, donde cada operación Oij debe ser procesada en una máquina

predeterminada Mij ϵ M. Cada operación Oij tiene una duración fija POij y un tiempo de inicio

STOij cuyo valor se debe determinar. Existen relaciones de precedencia entre las operaciones,

es decir, una operación se inicia solamente si se ha terminado la anterior (Oij → Oij+1).

Además, se debe considerar que cada operación solo puede ser procesada solo en una máquina

a la vez, y cada máquina puede procesar solo una operación a la vez. Después que una

operación Oij salga de una máquina, y antes que una operación Okl entre a la misma máquina,

se debe realizar una operación de setup de duración SOijOkl, existiendo estructuras de setup

dependientes de la secuencia.

Page 33: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

33

El requerimiento de materia prima especifica los tipos materias primas MP = {MP1,…,

MPn}j requeridos, como también sus cantidades, para el procesamiento del trabajo Jj .

El requerimiento de producto especifica los tipos de producto Prod = {Prod1,…,Prodn}j

requeridos, como también sus cantidades, para el procesamiento del trabajo Jj.

Asimismo, cada trabajo Jj tiene una fecha de entrega dj, un peso wj y se encuentra

asociado a la elaboración de un producto k. A raíz de esto, se debe considerar que el resultado

del procesamiento de un trabajo Jj produce Xk unidades del producto k asociado.

El problema consiste en encontrar una asignación eficiente de las máquinas a los

trabajos, o a las operaciones contenidas en estos, con el objeto de minimizar el atraso

ponderado total (∑wjTj) y el tiempo total de setup (∑Sj) (ver sección 3.2.3). Al ser estos

objetivos contrapuestos o conflictivos, lo que interesa es la construcción de un conjunto de

soluciones no-dominadas, es decir, una curva Pareto eficiente.

Además, se deben tomar en consideración las siguientes restricciones y/o supuestos:

1) Cada trabajo Jj en realidad consta de una única operación, aunque pueden existir

trabajos que consten de dos o más operaciones.

2) La ejecución de un trabajo está condicionada a la disponibilidad de insumos (materias

primas y componentes).

3) Existen arribos programados de MPk unidades de materia prima k.

4) Las máquinas no siempre se encuentran disponibles, existiendo un calendario asociado

a cada una de ellas.

5) Los trabajos asociados al procesamiento de lotes de productos intermedios no tienen

fecha de entrega.

6) No se permiten las interrupciones de los trabajos.

7) No se considera recirculación.

Page 34: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

34

5 Algoritmo de Secuenciación Propuesto

Antes de describir el algoritmo de secuenciación propuesto, se deben hacer algunas

simplificaciones al problema. Dado que la mayoría de los trabajos constan de una sola

operación, se llevara este problema de paso “semi-solitario” (estructuras de paso solitario, con

excepciones de paso múltiple) a un problema de paso solitario, convirtiendo aquellos trabajos

que consten de dos o más operaciones en dos o más trabajos con restricciones de precedencia.

Para lograr esta tarea es necesario definir fechas de entrega, prioridades, cantidad producto y

tipo de producto a cada una de las operaciones que conformen un trabajo de paso múltiple.

Respecto a las fechas de entrega, se deben determinar utilizando la siguiente expresión:

𝑑𝑂𝑖𝑗 = 𝑑𝑗 − ∑ (𝑝𝑂𝑘𝑗+ �̅�𝑂𝑘𝑗)

𝑛

𝑘=𝑖+1

donde dOij es la fecha de entrega de la operación i del trabajo j, �̅�𝑂𝑘𝑗 es la media del tiempo

de setup ocupado por la operación Okj y n es el número de operaciones que compone al trabajo

Jj. De forma similar se procede, para el cálculo de las fechas de entrega de aquellas órdenes

relacionadas con la fabricación de productos intermedios. En cuanto a las prioridades, están

serán las mismas, es decir, wOij = wj ∀ i. Respecto a cantidades de producto y tipo de producto,

la última operación de un trabajo de paso múltiple, tendrá referenciadas las cantidades de

producto y tipo de producto del trabajo Jj, mientras que las operaciones anteriores estarán

asociadas a un insumo ficticio de cantidad 1, el cual será el insumo exclusivo de la operación

sucesora, constituyéndose restricciones de precedencia.

Efectuados estos cambios, el problema se puede abordar por medio de una simulación

de eventos discretos, la cual reprogramará aquellos trabajos en los buffers (colas) de las

máquinas, utilizando el índice ATCS, cada vez que ocurran ciertos eventos críticos. Este

enfoque, en la jerga de scheduling, se conoce como event-driven (Fang, 1997) y se utiliza en

ambientes dinámicos. En este caso, a pesar de ser un problema de secuenciación estático, las

características de disponibilidad de recursos obligan a experimentar ventanas de tiempo en la

programación, generándose características dinámicas que son fáciles de tratar con un esquema

event-driven.

En el algoritmo los trabajos y máquinas serán considerados clases o entidades que

presentan jerarquías de tipos definidas sobre la base de estados. Estas clases migraran de

estados, pasando por las distintas subclases, a medida que avance el reloj de simulación y se

ejecuten los distintos eventos. En el caso de los trabajos, esta jerarquía se puede visualizar en

la figura 5.1, mientras que la de las máquinas se puede visualizar en la figura 5.2.

Page 35: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

35

Figura 5.1 – Jerarquía Clase Trabajo.

Un trabajo podrá encontrarse en cinco posibles estados durante la ejecución el

algoritmo, estos estados son:

a) Esperando para ser procesado: condición inicial de todo trabajo.

b) Esperando en cola: cuando el trabajo espera en la cola o buffer de la máquina

correspondiente.

c) En proceso: cuando el trabajo se encuentra en proceso en la máquina correspondiente.

d) Terminado: cuando el trabajo se encuentra concluido.

Figura 5.2 - Jerarquía Clase Máquina.

Por otro lado, una máquina podrá encontrarse en tres posibles estados durante la

ejecución del algoritmo, estos estados son:

a) Libre: Cuando la máquina está disponible y no se encuentra realizando operaciones.

b) Ocupada: Cuando la máquina está disponible y se encuentra realizando operaciones.

c) No disponible: Cuando la máquina esta fuera de servicio, debido al calendario de

turnos correspondiente.

A continuación se describe el programa principal y las subrutinas del algoritmo propuesto.

Page 36: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

36

5.1 Programa Principal

Figura 5.3 – DAct Programa Principal Algoritmo Propuesto.

El programa principal, como se puede evidenciar en la figura 5.3, se compone de cinco

subrutinas: Inicializar Programa, Mover a Máquinas, Calcular Índice ATCS, Procesar

Trabajos y Avanzar Reloj de Simulación. El programa concluye cuando todos los trabajos se

encuentran concluidos, es decir, en el estado “terminado”, en caso contrario vuelve a repetir

las subrutinas.

5.2 Inicializar Programa

En este paso se inicializa el sistema (ver anexo 1). Se considerará que el sistema está

vacío e inactivo al comienzo de la planificación, es decir, no existen trabajos en proceso en el

instante t=0 y las colas de las máquinas se encuentran vacías. Además, se deben registrar en la

lista de eventos; los eventos asociados al arribo de materias primas y los eventos asociados a la

disponibilidad de la maquinaria (calendario de turnos).

5.3 Mover a Máquinas

En este paso se comprueba la disponibilidad de insumos (materias primas y

componentes) para todos los trabajos (ver anexo 2). En caso de existir disponibilidad, se

mueve el trabajo a la cola de la máquina correspondiente, se cambia el estado del trabajo a

“esperando en cola” y se consumen los insumos.

Page 37: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

37

5.4 Calcular Índice ATCS

En este paso se calcula el índice ATCS (ver sección 3.5.2) para cada uno de los

trabajos en las colas de las máquinas (ver anexo 3).

5.5 Procesar Trabajos

En este paso se procesan los trabajos en las colas de las máquinas que tengan el mayor

índice ATCS, siempre y cuando la máquina este libre (ver anexo 4). En caso de ser posible el

procesamiento de un trabajo, se debe cambiar el estado de este a “En proceso” y el estado de

la máquina que lo procesa a “Ocupada”. Además, se debe registrar el instante de completación

del trabajo en la lista de eventos.

5.6 Avanzar Reloj de Simulación

En este paso se debe avanzar el reloj de planificación al instante de tiempo del evento

más próximo de la lista eventos (ver anexo 5). Dependiendo del tipo de evento se debe hacer:

a) Evento Trabajo: Se debe actualizar el inventario de productos, cambiar el estado del

trabajo a “terminado y cambiar el estado de la máquina correspondiente a “libre”.

b) Evento Materia prima: Se debe actualizar el inventario de la materia prima

correspondiente.

c) Evento Calendario: Se debe actualizar el estado de disponibilidad de la maquinaria

correspondiente.

Page 38: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

38

6 Plan de Trabajo

Page 39: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

39

7 Conclusiones

Page 40: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

40

Bibliografía

Alcaide, D. (1996). Problemas de Planificación y Secuenciación Determinística:

modelización y técnicas de resolución. Disponible vía web en

ftp://tesis.bbtk.ull.es/ccppytec/cp3.pdf

Baker, K.; Bertrand, J. (1982). A dynamic priority rule for sequencing against dude dates. In:

Journal of Operations Management, 3, 37-42.

Behnkel, D.; Geigerl, M. (2012). Test Instances for the Flexible Job Shop Scheduling

Problem with Work Centers. Helmut-Schmidt-Universität, Lehrstuhl für BWL, insbes.

Logistik-Management. Disponible vía web en: http://edoc.sub.uni-

hamburg.de/hsu/volltexte/2012/2982/pdf/RR-12-01-01.pdf

Britto R.; Mejía, G.; Caballero, J. (2007). Production Programming in Manufacturing System

(Workshop Type) With a Combined Mobile Bottleneck and Taboo Search Algorithm. In: Ing.

Univ. Bogotá (Colombia), 11 (2): 203-224.

Bustos, G. (2010). Modelos Para Sistemas de Información. Una visión integrada: UML,

AEM, Statemate y Entidades Dinámicas. Valparaíso: Escuela de Ingeniería Industrial. Cap

2 y 6.

C. Bierwirth. (1995). A generalized permutation approach to job shop scheduling with genetic

algorithms. In: OR Spectrum, 17, 87-92.

C. Blum. (2003). Meta-heuristics in combinatorial optimization: Overview and conceptual

comparison. In: Ann Discrete Math, 269-308, ACM Comput Surv.

Carroll, D. (1965). Heuristic sequencing of jobs with single and multiple components. Ph.D.

thesis. Cambridge, MA: Massachusetts Institute of Technology.

Domínguez, José (1995). Dirección de Operaciones: Aspectos tácticos y operativos en la

producción y los servicios. España: McGraw-Hill/Interamericana, Cap 1 y 9.

Dugardin, F.; Chehade, H.; Amodeo, L.; Yalaoui, F.; Prins, C. (2007). Hybrid Job Shop and

Parallel Machine Scheduling Problems: Minimization of Total Tardiness Criterion.

Multiprocessor Scheduling: Theory and Applications, Eugene Levner (ED.), ISBN: 978-3-

902613-02-8, InTech, DOI: 10.5772/5227. Disponible vía web en:

http://www.intechopen.com/books/multiprocessor_scheduling_theory_and_applications/hybri

d_job_shop_and_parallel_machine_scheduling_problems__minimization_of_total_tardiness_c

riterion

Escuela de Ingeniería Industrial (2003). Guía para la Presentación de Informes

Académicos. Disponible vía web en http://eii.ucv.cl

Page 41: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

41

Fang, J. Xi, Y. (1997). A Rolling Horizon Job Shop Rescheduling Strategy in the Dynamic

Environment. In: International Journal of Advanced Manufacturing Technology, 13, 227-

232.

González, A. (2013). Design of Scheduling Methodology for Cost Reduction in a Hybrid

Flow Shop by Using Genetic Algorithms, Application to the Textile Industry. Disponible

vía web en: http://www.bdigital.unal.edu.co/39632/1/8912006.2014.pdf

González, M. (2011). Soluciones Metaheurísticas al “Job-Shop Scheduling Problem with

Sequence-dependent Setup Times”. Disponible vía web en

http://di002.edv.uniovi.es/tc/index.php?option=com_remository&Itemid=14&func=startdown

&id=30&lang=en

Graham, R.; Lawler, E.; Lenstra, J.; Rinnoy Kan, A. (1979). Optimization and Approximation

in Deterministic Sequencing and Scheduling: a Survey. In: Annals of Discrete Mathematics,

5, 287-326.

Lawler, E. (1977). A “pseudopolynomial” time algorithm for sequencing jobs to minimize

total weighted tardiness. In: Annals of Discrete Mathematics, 1, 331-342.

Lee, Y.; Bhaskaran, K.; Pinedo, M. (1997). A heuristic to minimize the total weighted

tardiness with sequence-dependent setups. In: IIE Transactions, 29, 45-52.

Lee, Y.; Pinedo, M. (1997). Scheduling jobs on parallel machines with sequence dependent

setup times. In: European Journal of Operational Research, 100, 464-474.

Mason, S.; Fowler, J.; Carlyle, W. (2002). A modified shifting bottleneck heuristic for

minimizing total weighted tardiness in complex jobs. In: Journal of Scheduling, 5(3), 247-

262.

Medina, R.; Padrenas, L.; Parada, V. (2011). A genetic algorithm for the Flexible Job Shop

Problem. In: Ingeniare. Revista Chilena de Ingeniería, 19, 53-61.

Mönch, L.; Driebel, R. (2005). A distributed shifting bottleneck heuristic for complex jobs. In:

Computers & Industrial Engineering, 49, 363-380.

Mönch, L.; Schabacker, R.; Pabst, D.; Fowler, J. (2007). Genetic algorithm-based subproblem

solution procedures for a modified shifting bottleneck heuristic for complex jobs. In:

European Journal of Operational Research, 177, 2100-2118.

Morton, T.; Pentico, D. (1993). Heuristic scheduling systems: With applications to

production systems and project management. New York: John Wiley and Sons.

Pfund, M.; Fowler, J.; Gadkari, A; Chen, Y. (2007). Scheduling jobs on parallel machines with

setup times and ready times. In: Computers & Industrial Engineering, 54, 764-782.

Page 42: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

42

Pinedo, M. (1999). Operations Scheduling with Aplications in Manufacturing and

Services. New York: Irwin/McGraw-Hill, Cap 1-3.

Pinedo, M. (2005). Planning and Scheduling in Manufacturing Services. New York:

Springer, Cap 1-2.

Santos, J. (2007). Organización de la Producción II: Planificación de procesos

productivos. Disponible vía web en

www.unav.es/ocw/orgproduccionii/0809/libroOP2teoria.pdf

Sevilla, H.; Zurita, C. (2010). Uso de Metaheurísticas para la Optimización de la

Secuencia de Producción y la Asignación de Mano de Obra en una Empresa

Manufacturera. Disponible vía web en:

http://www.researchgate.net/publication/44841761_USO_DE_METAHEURISTICAS_PARA

_LA_OPTIMIZACION_DE

Shaw, M. (1992). Intelligent scheduling with machine learning capabilities: the induction of

scheduling knowledge. In: IIE Transactions, 24, 2, 156-168.

Sippper, D. (1998). Planeación y control de la producción. México: McGraw-Hill, Cap 8.

Taha, H. (2004). Investigación de Operaciones. México: Pearson Educación, Cap 1.

Vepsalainen, A & Morton, T. (1987). Priority rules for job shops with weighted tardiness

costs. In: Management Science, 33, 1035-1047.

Vinod, V.; Sridharan, R. (2008). Dynamic jop-shop scheduling with sequence-dependent setup

times: simulation modeling and analysis. In: International Journal of Advanced

Manufacturing Technology, 36, 355-372.

Page 43: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

43

Anexos

Page 44: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

44

Anexo 1 – DAct Inicializar Programa

Page 45: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

45

Anexo 2 – DAct Mover a Máquinas

Page 46: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

46

Anexo 3 – DAct Calcular Índice ATCS

Page 47: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

47

Anexo 4 – DAct Procesar Trabajos

Page 48: Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos

48

Anexo 5 – DAct Avanzar Reloj de Simulación