I. INTRODUCCIÓN
La degradación de algunas variables propias de la competitividad a menudo encuentra entre sus principales causas la falta de integración entre la gestión de la producción y la gestión del mantenimiento. Si bien este escenario se presenta frecuentemente en la práctica empresarial la situación en la esfera académica no resulta muy diferente, pues tradicionalmente los métodos desarrollados para la gestión de la producción no incluyen explícitamente los requerimientos de mantenimiento, lo que conduce a la generación de soluciones subóptimas [1; 2; 3; 4].
En una configuración productiva caracterizada por máquinas paralelas minimizar el makespan (Cmax) se convierte en un objetivo de especial interés, puesto que en la práctica los programadores de producción intentan frecuentemente lograr un equilibrio adecuado en la utilización de los recursos [5]. Dada su analogía con el conocido problema del bing packing, el cual pertenece a la clase de problemas NP-hard la existencia de un método exacto que en tiempo polinomial sea capaz de resolver de manera óptima todas las instancias resulta improbable [6, 7]. Si a esto se une el carácter aleatorio del tiempo de completamiento de los trabajos debido a las paradas por fallos del equipamiento la complejidad del problema se incrementa, por lo que el diseño de métodos heurísticos capaces de proveer soluciones cercanas a la óptima en un tiempo razonable parece ser la mejor alternativa.
En su versión tradicional (determinística) el problema de minimización del makespan en máquinas paralelas idénticas ha encontrado estrategias de solución basadas en algoritmos heurísticos tales como First Fit Decresing (FFD) y Best Fit Decresing (BFD) [8]. Así como la conocida regla de despachoLargest Processing Time (LPT) [9]. Años más tarde Coffman et al. (1978) proponen el algoritmo MULTIFIT, el cual posee un ratio de desempeño superior a LPT. Otras estrategias de solución más refinadas para este problema, basadas en el enfoque de ramificación y acotamiento, han sido propuestas por Carlier (1987) y Gharbi y Haouari (2002) [10; 11].
La extensión de este problema al considerar limitaciones en la disponibilidad del equipamiento fue abordada por Lee (1991; 1996; 2000) [12; 13; 14]. Este autor estudió dicha configuración productiva cuando las máquinas presentaban un único periodo de no disponibilidad durante el horizonte de planificación. Otras contribuciones importantes corresponden a Xu et al. (2008) y Lee y Wu (2008) quienes abordaron el problema desde una perspectiva determinística en lo que refiere a los instantes de comienzo de las intervenciones preventivas.
En los últimos años la mayoría de las estrategias de solución para este tipo de problema han estado basadas en algoritmos de búsqueda local, inteligencia artificial y en el uso de la simulación. En este sentido pueden citarse a autores como Mirabedini y Iranmanesh (2014) quienes aplicaron un algoritmo genético dinámico multiobjetivo y un esquema de optimización basado en enjambre de partículas como métodos de solución alternativos para un modelo donde se buscaba optimizar el makespany otras medidas de desempeño [17]. Wang and Liu (2015) estudiaron este problema considerando que todos los productos estaban disponibles para iniciar el procesamiento al comienzo del horizonte de planificación. Diseñaron un modelo matemático no lineal y para la solución desarrollaron un algoritmo genético multiobjetivo elitista [18]. De modo similar Da et al. (2016) desarrollaron un algoritmo genético elitista pero para una variante de este problema en la que tanto el equipamiento como el tiempo de procesamiento de los trabajos se deterioran (alargan) en el tiempo [19].
A pesar del auge alcanzado en la utilización de los métodos procedentes del campo de la Inteligencia Artificial, las heurísticas constructivas continúan siendo una alternativa tentadora cuando se trata de desarrollar métodos relativamente sencillos, capaces de generar buenas soluciones con rapidez. Incluso las heurísticas han demostrado su utilidad en el desarrollo de métodos híbridos en los que frecuentemente un algoritmo de búsqueda local mejora la solución inicial provista por la heurística.
En este sentido, el presente trabajo tiene como objetivo desarrollar un método, relativamente sencillo, para la generación de un programa integrado de producción y mantenimiento preventivo en una configuración productiva de máquinas paralelas idénticas. Dirigido a minimizar el makespan (Cmáx), que solvente algunas de las carencias de otros métodos encontrados en la literatura para enfrentar este tipo de problema. Donde no siempre se consideran fechas de lanzamiento diferentes para varios trabajos y, con frecuencia, los instantes de inicio de las intervenciones de mantenimiento preventivo (MP) se consideran conocidos previamente, constituyendo restricciones de entrada que limitan el carácter integrado de la solución.
Específicamente el método que se propone consiste en un algoritmo híbrido de dos fases, denominado HCSA. En la primera fase una Heurística Constructiva (HC) genera una solución inicial, la cual se tratará de mejorar en una segunda fase mediante un enfoque de recocido simulado (SA). Se distingue que se considera que los diferentes productos pueden tener distintas fechas de lanzamiento y que el tiempo entre intervenciones de MP no es fijo, sino que constituye una variable de decisión dentro del algoritmo. Dicha variable trata de optimizar de conjunto con el programa de fabricación. Su implementación fue realizada en Matlab R2015a.
II. MÉTODOS
Se emplean métodos estadístico-matemáticos con la finalidad de desarrollar un programa integrado de producción y mantenimiento preventivo en una configuración productiva de máquinas paralelas idénticas. Para una mejor comprensión Esta sección se ha estructurado en 3 epígrafes. En el primero se plantea una breve descripción del problema, en el segundo se definen las variables y parámetros del algoritmo y en el tercero se proporciona una descripción detallada de su diseño.
2.1 Breve descripción del problema
El sistema productivo consta de un conjunto de m máquinas, dispuestas en paralelo, capaces de procesar indistintamente n tipos de productos. Cada producto recibe todo el procesamiento en una y solo una de las máquinas disponibles. El tiempo de procesamiento de los trabajos se asume constante y conocido, siendo el mismo en cada máquina (máquinas idénticas) y una vez iniciado el procesamiento de un trabajo este no será interrumpido a menos que ocurran perturbaciones inevitables en el proceso, en cuyo caso, luego de restablecidas las condiciones de operación, se continuará el procesamiento del producto. Se asume que el tiempo entre fallos del equipamiento puede describirse mediante una distribución de densidad probabilística Weibull.
El algoritmo propuesto se dirige a establecer una asignación de trabajos a las diferentes máquinas, indicando además el momento más conveniente para efectuar las intervenciones de Mantenimiento Preventivo (MP) sobre estas, de manera que se minimice el tiempo total de fabricación (makespan). Se considera una política de MP del tipo as good as new, o sea, luego de ejecutar la intervención preventiva sobre el equipo se restablecen totalmente las condiciones operativas del mismo.
2.2 Definición de variables y parámetros
n: Número de trabajos (productos o lotes de productos) a ser programados.
m: Número de máquinas.
J: Conjunto de trabajos (productos o lotes de productos) a ser programados.
M: Conjunto de máquinas.
βk: Parámetro de forma de la distribución Weibull que describe la variable tiempo entre fallos asociada a la máquina k.
ηk: Parámetro de escala de la distribución Weibull que describe la variable tiempo entre fallos asociada a la máquina k.
# (α): Cardinalidad del subconjunto α.
Cmáx: Valor del makespan asociado a la asignación de trabajos e intervenciones de mantenimiento establecida como solución.
2.3 Diseño de las fases del algoritmo HCSA propuesto
2.3.1 Fase 1. Generación de la solución inicial mediante el diseño de una heurística constructiva (HC)
1.Inicializar Ttk =
2.Formar el conjunto J de trabajos ordenados de manera no creciente según pj
3.Hacer: t = 1; S =
Si
Hacer
Si
Programar los tiempos o instantes de inicio
Si
Si
4.Generar el subconjunto P de trabajos ordenados de manera no decreciente según
4.1 Calcular el peso relativo del trabajo
Si
4.2 Calcular el tiempo de completamiento esperado del trabajo
Identificar la máquina k
Si
hacer
si no ir al paso 4.3
4.3 Hacer t = t + 1. Si t ≤ # (P) y
5.Si S
6.Hacer
Si
Programar los instantes de inicio
Si
Definición de la regla combinada r - LPT
1. Ajustar to =
2. Formar el subconjunto de trabajos JA
3. Formar el subconjunto de máquinas MA
4. Si # (JA)
Actualizar los arreglos
Evaluar la variable
Programar los instantes de inicio
5. Ajustar S = S \ j
2.3.2 Fase 2 Mejoramiento de la solución inicial mediante un enfoque de recocido simulado
El enfoque o algoritmo de recocido simulado que se propone está compuesto por 3 funciones características del mismo: una función que define la estrategia para generar una solución vecina a partir de un solución actual, la cual será denominada neighbord function; una función de recocido, denominada schedules generation, la cual toma como entrada una solución determinada y la modificará mediante una cantidad de cambios proporcional al parámetro de temperatura y, por último, la función objetivo (fitness function). La solución tomada como punto de partida para iniciar el proceso de búsqueda (solución inicial) se obtiene a partir de la heurística constructiva (HC) definida en el epígrafe 2.3.1. Seguidamente se presenta el diseño de las tres funciones que integran el algoritmo de recocido simulado.
2.3.2.1 Función generadora de soluciones vecinas (neighbord function)
La estrategia definida para generar una solución vecina a partir de la actual consiste en seleccionar aleatoriamente un par de máquinas m1 y m2, de manera que la máquina que presente el mayor tiempo de terminación esperado en la solución actual tenga mayor probabilidad de ser seleccionada como m1; mientras quela máquina que presente el menor tiempo de terminación esperado tenga mayor probabilidad de ser seleccionada como m2.Un elemento del vector que contiene la solución de m1 se selecciona aleatoriamente y se transfiere a una posición aleatoria dentro del vector que define la solución de m2. Si el elemento seleccionado en m1 es una actividad de PM esta será transferida hacia m2 con una probabilidad de 0,5. El pseudocódigo que define la funciónneighbor function, implementado en MATLAB R2105a, se muestra a continuación:
1.Definir sch_neighb: matriz que contiene la solución inicial obtenida mediante la heurística constructiva (HC) definida en el subepígrafe 2.3.1.
t1 = randi (n)
x = round (rand)
2.if x == 1
else
end
3.x = round(rand);
if x == 1
else
end
if
4.Hacer j = randi (n)
5.if sch_neighb (m1, t1)
if sch_neighb (m2, j)
Hacer d = round (rand)
if d
end
end
if sch_neighb (m2, j)
Hacer d
if d
end
end
if sch_neighb (m2, j)
Hacer d = round (rand)
if d
end
end
5.1 Eliminar la actividad de PM de la celda sch_neighb (m1, t1) y actualizar las posiciones de los elementos de la fila m1 desplazando una posición (celda) a la izquierda los elementos ubicados en las celdas (m1, u) ∀ u > t1.
else
Hacer d = round (rand).
if d
else
insertar el trabajo ubicado en la celda sch_neighb (m1, t1) como último trabajo de la fila m2
end
5.2 Actualizar las posiciones de la fila m1 cuidando que no queden 2 actividades de PM en posiciones adyacentes. De ocurrir esto eliminar una de estas.
end
2.3.2.2 Función de recocido (schedules generation)
Esta función toma como entrada la solución obtenida por neighbord function, expresada en la matriz sch_neighb, y efectúa cambios sucesivos sobre dicha solución (determinados conforme a la estrategia definida en neighbord function) en una cantidad definida por el parámetro temperatura. La solución obtenida constituye, igualmente, una solución vecina, pero con una estructura diferente a la provista por neighbord function. El pseudocódigo que define a esta función se muestra a continuación:
Hacer sch_neighb = optimValues.x;
for i = 1:floor (optimValues.temperature) + 1
[mach orders] = size(sch_neigbh);
sch_neighb = neighbor (schvecina, mach, orders);
end
2.3.2.3Función objetivo (fitness function)
La función objetivo (fitness function) considera las premisas bajo las cuáles se diseñó HC, fundamentalmente en lo que refiere a la adopción de una política de mantenimiento preventivo de tipo as good as new y la variable tiempo entre fallos modelada mediante una distribución Weibull. El pseudocódigo correspondiente se muestra a continuación:
Inicializar I =
for
for
if
end
if
end
if
end
end
end
Cmáx =
II. RESULTADOS
EL algoritmo fue aplicado en un taller de la industria del plástico, integrado por 7 máquinas de inyección dispuestas en paralelo. El sistema productivo reúne las características definidas en el epígrafe 2.1. El tiempo de fabricación de los lotes de productos y la fecha de lanzamiento estimada para cada uno a partir del inicio del periodo de programación se muestran en la Tabla 1.
Productos | Tiempo de elaboración (h/u) | Tamaño del lote (u) | Tiempo de producción (h) | Fecha de lanzamiento (h) |
---|---|---|---|---|
1. Cubeta 4 lts | 0,0193 | 14600 | 281,78 | 0 |
2. Cubeta 10 lts | 0,0196 | 15760 | 308,90 | 24 |
3. Cubeta 19 lts | 0,0210 | 10650 | 223,65 | 0 |
4. Tapa de teclado VE78 | 0,0073 | 1120 | 8,18 | 240 |
5. Asa inferior de la olla | 0,0064 | 31586 | 202,15 | 0 |
6. Decoración del mango | 0,0071 | 14300 | 101,53 | 0 |
7. Galón cónico | 0,0155 | 13865 | 214,91 | 120 |
8. Cubierta de placa 2P | 0,0017 | 113000 | 192,10 | 0 |
9. Pomo 1 lt | 0,0135 | 21610 | 291,74 | 0 |
10. Recipiente de 4 lts | 0,0137 | 18350 | 251,40 | 72 |
11. Recipiente medidor | 0,0153 | 23740 | 363,22 | 0 |
12. Base del tomacorriente | 0,0014 | 139250 | 194,95 | 0 |
13. Hélice 12' Repuesto | 0,0195 | 22950 | 447,53 | 48 |
14. Botón de ajuste | 0,0058 | 10400 | 60,32 | 72 |
15. Botón oscilador | 0,0029 | 15980 | 46,34 | 240 |
16. Caja 2x4 vivienda | 0,0072 | 102740 | 739,73 | 480 |
17. Asa superior de la olla | 0,0064 | 31293 | 200,28 | 0 |
18. Caja 4x4 vivienda | 0,0072 | 43857 | 315,77 | 0 |
19. Tapa lateral | 0,0055 | 33084 | 181,96 | 48 |
20. Hélice VE 79 | 0,0229 | 19056 | 436,38 | 72 |
21. Columna base VE 79 | 0,0207 | 30694 | 635,37 | 288 |
22. Tuerca protectora | 0,0043 | 17315 | 74,45 | 0 |
23. Base VE 79 | 0,0156 | 7000 | 109,20 | 288 |
24. Tapa base VE 78 | 0,0173 | 8550 | 147,92 | 120 |
25. Base VE78 | 0,0231 | 309 | 7,14 | 0 |
26. Hélice 16 | 0,0229 | 1115 | 25,53 | 0 |
27. Gaveta para vegetales | 0,0229 | 2540 | 58,17 | 360 |
28. Panel frontal | 0,0172 | 2200 | 37,84 | 0 |
29. Marco congelador | 0,0229 | 2715 | 62,17 | 0 |
30. Panel superior | 0,0533 | 1540 | 82,08 | 120 |
31. Anillo protector VE 79 | 0,0110 | 15630 | 171,93 | 168 |
32. Placa soporte 2 puestos | 0,0069 | 37950 | 261,86 | 168 |
Para cada una de las máquinas se tomaron datos de las variables tiempo entre fallos (TBF) y tiempo de inactividad debido a fallos (TTR) expresados en horas (más de 30 datos por cada máquina). Para ambas variables las pruebas de bondad de ajuste realizadas (Kolmogorov - Smirnov (KS), Anderson - Darling (AD) y Chi cuadrado) reafirmaron la hipótesis de que los datos ajustaban a la distribución Weibull con un 5% de significación.
La Tabla 2 contiene la información, para cada máquina, referida a los parámetros de forma y escala de la distribución Weibull para las variables:
TBF
TTR
el tiempo medio dedicado a mantenimiento preventivo
el tiempo medio de la reparación del fallo (
el tiempo entre intervenciones preventivas (
El tiempo medio de reparación de cada máquina fue obtenido a partir de la ecuación 9 empleada por Mora Gutiérrez (2012) [20]:
Donde:
No. | Máquinas |
|
|
|
|
|
|
|
|
E0(h) |
---|---|---|---|---|---|---|---|---|---|---|
1 | TTI-130-1 | 2,06 | 585,97 | 33,45 | 1,42 | 127,62 | 116,06 | 400 | 311,41 | 332 |
2 | TTI-130-2 | 2,20 | 911,78 | 33,45 | 1,41 | 135,72 | 123,56 | 400 | 463,43 | 292 |
3 | TTI-300 | 1,87 | 397,64 | 33,45 | 1,29 | 61,43 | 56,82 | 400 | 322,69 | 168 |
4 | IJ-300 | 2,03 | 1318,53 | 35,54 | 1,42 | 73,99 | 67,29 | 550 | 948,86 | 480 |
5 | EM-300 | 5,67 | 2002,27 | 27,29 | 1,53 | 22,42 | 20,19 | 385 | 1608,94 | 288 |
6 | EM-480 | 1,63 | 952,41 | 27,29 | 1,29 | 36,64 | 33,89 | 385 | 1107,18 | 316 |
7 | JM-650 | 2,59 | 1454,74 | 27,29 | 1,36 | 97,57 | 89,35 | 425 | 515,45 | 412 |
Los valores del tiempo entre intervenciones preventivas
Resultados obtenidos
En un primer momento se muestra la solución obtenida mediante la heurística constructiva (HC) que constituye la fase 1 del método híbrido HCSA. Posteriormente se muestran los resultados alcanzados mediante la aplicación de la fase 2.
3.2.1 Solución obtenida mediante la heurística constructiva (HC) de la fase 1
En la matriz Schedule se muestra la solución proporcionada por HC. Las filas corresponden a cada máquina, en el orden en que aparecen en la Tabla 2. Los valores se corresponden con el id de cada trabajo, en el orden en que aparecen en la tabla 1. El valor 100 indica una actividad de PM en la máquina correspondiente a la fila. Por ejemplo, de acuerdo con esta solución el programa integrado para la máquina 1 (máquina TTI - 130 - 1) iniciaría con una intervención de PM, luego se elaborarían los productos 17 y 22 y, seguidamente, el 32, el 8 y el 23, ejecutándose una intervención de PM antes de iniciar cada uno de estos 3 últimos productos. En este caso el valor del parámetro
La matriz TTj muestra el id de cada trabajo en la fila 1, en el orden en que fueron asignados a las máquinas, y en las filas 2 y 3 los instantes de inicio y de completamiento esperados, respectivamente, para cada trabajo. Según puede apreciarse el valor de la función objetivo (Cmax) es de 1222,3 h., determinado por la máquina 5 tras concluir la elaboración del producto 16.
Schedule = Columns 1 through 9
TTj = 1.0e+03 *
Columns 1 through 13
0.0110 0.0180 0.0090 0.0010 0.0030 0.0050 0.0170 0.0120 0.0060 0.0220 0.0290 0.0280 0.0260
0 0 0 0 0 0 0.0335 0.2488 0.2405 0.2464 0.2952 0.3024 0.3272
0.3633 0.3272 0.3024 0.2952 0.2488 0.2405 0.2464 0.4799 0.3705 0.3504 0.3612 0.3419 0.3541
Columns 14 through 26
0.0250 0.0160 0.0210 0.0130 0.0200 0.0020 0.0320 0.0100 0.0070 0.0080 0.0190 0.0310 0.0240
0.3419 0.4800 0.4800 0.4800 0.4800 0.4800 0.4800 0.4800 0.7890 0.7974 0.8338 0.9519 0.9590
0.3494 1.2223 1.1525 0.9590 0.9519 0.8338 0.7974 0.7890 1.0553 1.0346 1.0527 1.1420 1.1260
Columns 27 through 32
0.0230 0.0300 0.0140 0.0270 0.0150 0.0040
1.0346 1.0527 1.0553 1.1260 1.1420 1.1525
1.1809 1.1689 1.1506 1.1927 1.1937 1.1613
3.2.2 Resultados obtenidos mediante la aplicación de la fase 2 del método híbrido (HCSA)
Se tomará la solución provista por HC como solución de partida para el algoritmo de recocido simulado definido en el epígrafe 2.3.2. La parametrización se definió de la manera siguiente: temperatura inicial igual a 1000, un valor relativamente alto que en las primeras iteraciones permite aceptar soluciones peores que la inicial con alta probabilidad. Se amplía con ello el espacio de búsqueda; definición del entorno de búsqueda mediante las funciones neighbord function y schedules generation. Condición de equilibrio definida ajustando a 100 el reannealing interval; y esquema de enfriamiento exponencial. Con
El valor del makespan (Cmax) logró reducirse a 1219,98 h, apreciándose una reducción considerable en el número de intervenciones de PM necesarias. La matriz TTj correspondiente a la solución anterior se muestra a continuación.
TTj = 1.0e+03 * h
Columns 1 through 13
0.0180 0.0210 0.0250 0.0050 0.0080 0.0130 0.0290 0.02400.0100 0.0320 0.0090 0.0040 0.0260
0.0335 0.4151 1.1876 0 0.2576 0.4537 0.9539 1.02890.0720 0.4083 0.6962 1.0674 1.0785
0.3817 1.1876 1.1980 0.2242 0.4537 0.9539 1.0289 1.21310.3748 0.6962 1.0674 1.0785 1.1134
Columns 14 through 26
0.0310 0.0010 0.01700.0060 0.0230 0.0190 0.0160 0.0120 0.0030 0.0270 0.02200.0200 0.0150
0.1680 0.3474 0.64650.8629 0.9738 0.0480 0.4800 0 0.2016 0.4352 0.49630.5747 1.0385
0.3474 0.6465 0.86290.9738 1.0941 0.2300 1.2200 0.2016 0.4352 0.4963 0.57471.0385 1.0882
Columns 25 through 32
0.0300 0.0070 0.0020 0.0110 0.0280 0.0140
1.1155 0.1200 0.3416 0.6689 1.0703 1.1133
1.1982 0.3416 0.6689 1.0703 1.1133 1.1823
En la figura 1 se muestra la evolución del algoritmo en base al resultado de la función objetivo cada 250 iteraciones, en la que puede verse el mejor y el último valor de Cmax durante toda la corrida.
IV.DISCUSIÓN
La estructura de la solución obtenida en la fase 1 del algoritmo, al aplicar la heurística HC,establece una correspondencia adecuada entre la frecuencia de intervenciones de MP para cada máquina y los valores de la variable
V.CONCLUSIONES
Mediante la combinación de una heurística constructiva inspirada en la regla de despacho LPT y un enfoque de recocido simulado se desarrolló un algoritmo híbrido para generar programas integrados de producción y mantenimiento preventivo en ambientes productivos caracterizados por máquinas paralelas idénticas.
El algoritmo propuesto supera a otros enfoques encontrados en la literatura para abordar este tipo de problema al considerar posibles diferencias en las fechas de lanzamiento de varios productos. Se concibe el instante de inicio de las intervenciones de mantenimiento preventivo como una variable de decisión y no como un parámetro fijo y conocido previamente. Estos elementos realzan el valor práctico de nuestra propuesta, que modela situaciones frecuentes en la práctica empresarial, que otras propuestas han considerado restricciones, lo que limita la capacidad de reproducir adecuadamente el contexto de manufactura.
Investigaciones futuras relacionadas con esta temática pudieran considerar otras medidas además del makespan, tales como el consumo de la energía, el nivel de riesgo ambiental y el costo, dando lugar a la adopción de un enfoque multicriterio capaz de aportar soluciones con un carácter más integral. Por otro lado, resultaría de interés extender este estudio a talleres de manufactura con otras configuraciones productivas tales como el job shopflexible.