diseño e implementación de un algoritmo de secuenciación de trabajos
DESCRIPTION
Diseño de un Algoritmo de Secuenciación de Trabajos para una configuración productivaTRANSCRIPT
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
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
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
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.
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.
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
7
Lista de Tablas
Tabla 1 – Comparación entre los términos en aproximaciones basadas en ATC (Fuente:
Pfund, 2007) .............................................................................................................................. 28
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.
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.
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
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.
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.
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.
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.
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.
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:
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.
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:
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
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.
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ú.
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
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.
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
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
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:
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:
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
38
6 Plan de Trabajo
39
7 Conclusiones
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
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.
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.
43
Anexos
44
Anexo 1 – DAct Inicializar Programa
45
Anexo 2 – DAct Mover a Máquinas
46
Anexo 3 – DAct Calcular Índice ATCS
47
Anexo 4 – DAct Procesar Trabajos
48
Anexo 5 – DAct Avanzar Reloj de Simulación