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
Embed
Diseño e Implementación de Un Algoritmo de Secuenciación de Trabajos
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
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
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:
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