Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Código Nombre % Participación en el trabajo / 100% Nota 20162015433 Iván Felipe Mejía Peña 20171015054 José Mauricio Lobatón Gómez 20171015098 Jenniffer Alejandra Benavides Liévano Problema 1. Considere la siguiente situación de 20 trabajos para procesar en una maquina sin restricciones de precedencia, la maquina solo puede procesar un trabajo a la vez y no se permite la interrupción de un trabajo iniciado. En la tabla se muestra los tiempos de procesamiento ( ) y la fecha de entrega (𝑑𝑗 ) deseada por los clientes y el peso de importancia (𝑤𝑗 ) del trabajo, donde 10 es el más importante y 1 el menos importante. • Breve descripción del problema (características, supuestos, etc.) Supuestos: Se supone que los pesos son iguales para cada trabajo así poder implementar la regla SPT, lo que garantiza el tiempo de flujo menor. Cuando se multiplica cada objetivo por el valor indicado (30%, 40%, 30), se va a transformar a las mismas unidades para realizar la respectiva comparación. Tiempo actual (t) como (t=0) • Formulación matemática Algoritmo. (n Jobs, one machine, common Due Dates) 𝑃𝑎𝑠𝑜 0: 𝑂𝑟𝑔𝑎𝑛𝑖𝑧𝑎𝑟 𝑡𝑟𝑎𝑏𝑎𝑗𝑜 𝑒𝑛 𝑆𝑃𝑇 𝑃𝑎𝑠𝑜 1: 𝐶𝑟𝑒𝑎𝑟 2 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜𝑠 𝑣𝑎𝑐𝑖𝑜𝑠 𝐴 𝑦 𝐵 𝑃𝑎𝑠𝑜 2: 𝐶𝑎𝑙𝑐𝑢𝑙𝑎𝑟 𝐶𝑚𝑎𝑥 = ∑ 𝑃𝑗 (𝑡𝑖𝑒𝑚𝑝𝑜𝑠 𝑑𝑒 𝑝𝑟𝑜𝑐𝑒𝑠𝑎𝑚𝑖𝑒𝑛𝑜) 𝑆𝑒 𝑐𝑎𝑙𝑐𝑢𝑙𝑎𝑛 2 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒𝑠. 𝑅 = 𝐶𝑚𝑎𝑥 − 𝑑 (𝑇𝑎𝑟𝑑𝑎𝑛𝑧𝑎𝑠); 𝐿 = 𝑑 (𝐹𝑒𝑐ℎ𝑎 𝑒𝑛𝑡𝑟𝑒𝑔𝑎) 𝑃𝑎𝑠𝑜 3: 𝑅𝑒𝑔𝑙𝑎𝑠 𝑑𝑒 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖ó𝑛 reviewer Highlight no esta la notación de graham UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 𝑆𝑖 𝑅 ≥ 𝐿 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐴 → 𝐴 𝑈 𝐽𝑜𝑏 (𝑗) 𝑆𝑖 𝑅 < 𝐿 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐵 → 𝐵 𝑈 𝐽𝑜𝑏 (𝑗) 𝑆𝑖 𝑖 = 1, 𝑣𝑎𝑦𝑎 𝑎𝑙 𝑝𝑎𝑠𝑜 5 𝑃𝑎𝑠𝑜 4: 𝑅 → 𝑅 − 𝑃 𝐽𝑜𝑏 (𝑗), 𝑖𝑓 𝐽𝑜𝑏 (𝑗) ∈ 𝐴 𝐿 → 𝐿 − 𝑃 𝐽𝑜𝑏 (𝑗), 𝑖𝑓 𝐽𝑜𝑏 (𝑗) ∈ 𝐵 𝑃𝑎𝑠𝑜 5: 𝑆𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 (𝐵, 𝐴)𝐷𝑜𝑛𝑑𝑒 𝐵 𝑒𝑠 𝐹𝐼𝐹𝑂 𝑦 𝐴 𝑒𝑠 𝐿𝐼𝐹𝑂 Algoritmo. (n Jobs, One machine, Different due dates) 𝑃𝑎𝑠𝑜 1: 𝑂𝑟𝑔𝑎𝑛𝑖𝑧𝑎𝑟 𝑙𝑜𝑠 𝑡𝑟𝑎𝑏𝑎𝑗𝑜𝑠 𝑒𝑛 𝑜𝑟𝑑𝑒𝑛 𝑆𝑃𝑇 𝑃𝑎𝑠𝑜 2: 𝑆𝑒𝑡 𝑁𝑜 = 0, 𝑁𝑗 = ∑ 𝑛𝑘, 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … 𝑚 𝑗 𝑘=1 𝑃𝑎𝑠𝑜 3: 𝐾𝑗 = 𝑁𝑗−1 + ( 𝑃3 − 𝑃1 𝑃3 + 𝑃2 ∗ 𝑛𝑗) 𝑃𝑎𝑟𝑎 𝑗 = 1 . . . 𝑚 𝑃𝑎𝑠𝑜 4: 𝑝𝑎𝑟𝑎 𝑞 = 1,2, … 𝑛 𝛿𝑞 = 𝑃2 (𝑞 − 1 − 𝑁𝑗−1) + 𝑃1 (𝑛 − 𝑁𝑗−1) 𝑝𝑎𝑟𝑎 𝑞 ∈ (𝑁𝑗−1…Kj) 𝛿𝑞 = 𝑃3 (𝑁𝑗 − 𝑞 + 1) + 𝑃1 (𝑛 − 𝑁𝑗) 𝑝𝑎𝑟𝑎 𝑞 ∈ (𝐾𝑗+1…Nj) • Síntesis de resultados (si son necesarios) Resuelva el problema de secuenciación de operaciones considerando las siguientes situaciones: • Minimizar el tiempo promedio de flujo • Minimizar el total ponderado de los tiempos de terminación de los trabajos Realizando un comparativo con las reglas de secuenciación, se identifica que al implementar la regla WSPT (Aparent Tardiness Cost) se logra el menor tiempo de flujo ponderado (101.5). 111,7971 101,5 117,942 144,2681 130,913 124,8188 109,8478 82,44928 72,16667 87,12319 117,1812 99,76812 93,67391 79,02899 1,797101 1,811594 0,326087 4,057971 0 0 0,326087 15 16 19 17 20 20 19 SPT WSPT FIFO LIFO CR SLACK ATC Promedio Anticipación 0,26087 Numero de trabajo Tardíos 19 LPT Tiempo de flujo ponderado 150,8261 Promedio Tardanza 119,942 reviewer Highlight esto no lo entiendo, cual fue el resultado? UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 • Minimizar el total de anticipación y tardanza con una fecha común de 100 Empleando la regla de secuenciación LPT se obtiene el tiempo promedio de tardanza menor (6.12) Empleando la regla de secuenciación LPT se obtiene el tiempo promedio de anticipación menor (15.62319) Dado que se presenta un fecha común de entrega (Due Date = 100) se emplea el algoritmo de Common Due Date. 111,7971 119,2319 117,942 144,2681 130,913 124,8188 109,8478 37,86957 43,28261 43,86957 59,8913 49,94928 44,5942 36,17391 26,07246 24,05072 25,92754 15,62319 19,03623 19,77536 26,32609 9 12 11 14 13 12 12 SPT WSPT FIFO LIFO CR SLACK ATC Promedio Anticipación 11,3 Numero de trabajo Tardíos 15 LPT Tiempo de flujo ponderado 150,8 Promedio Tardanza 6,12 111,7971 119,2319 117,942 144,2681 130,913 124,8188 109,8478 37,86957 43,28261 43,86957 59,8913 49,94928 44,5942 36,17391 26,07246 24,05072 25,92754 15,62319 19,03623 19,77536 26,32609 9 12 11 14 13 12 12 SPT WSPT FIFO LIFO CR SLACK ATC Promedio Anticipación 11,3 Numero de trabajo Tardíos 15 LPT Tiempo de flujo ponderado 150,8 Promedio Tardanza 6,12 Iteración i R L A B 1 20 149 100 10 0 2 19 129 100 7 0 3 18 111 100 18 0 4 17 94 100 0 13 5 16 94 83 20 0 6 15 78 83 0 15 7 14 78 67 14 0 8 13 62 67 0 19 9 12 62 52 11 0 10 11 47 52 0 5 11 10 47 38 8 0 12 9 34 38 0 17 13 8 34 26 4 0 14 7 22 26 0 3 15 6 22 15 16 0 16 5 12 15 0 9 17 4 12 5 2 0 18 3 4 5 0 12 19 2 4 1 1 0 20 1 1 1 6 0 VERDADERO R>=L VERDADERO R<L FALSO VERDADERO FALSO FALSO VERDADERO VERDADERO FALSO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO FALSO FALSO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO FALSO VERDADERO VERDADERO VERDADERO FALSO VERDADERO VERDADERO FALSO FALSO UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 De acuerdo a lo anterior, organizando los conjunto de la forma (B,A) se obtiene que la secuencia de trabajo obtenida es (13,15,19,5,17,3,9,12,6,1,2,16,4,8,11,14,20,18,7,10) donde el tiempo de tardanza obtenido es 748 y el de anticipación 287. • Minimizar el número de trabajos tardíos Empleando la regla SPT se logra minimizar el número de trabajos tardíos (15). Empleando el algoritmo de Moore, es decir aplicando de forma iterativa EDD se identifica que la secuencia (1,10,6,12,16,17,13,15,9,4,8,7,2,5,11,19,20,3,14,18) Se requiere determinar las fechas de entrega de 4 grupos de trabajos de tamaños, 4, 5, 5, y 6. Entregados en este orden en 4 fechas diferentes. Se desea minimizar el costo total compuesto por tres componentes: uno asociado a la fecha de entrega con valor de $4/unidad de tiempo (ut); uno de anticipación de $13/ut; y uno de tardanza de $20/ut. Teniendo en cuenta el algoritmo que emplea un número de grupos, así como el número de trabajos por grupo se pudo determinar lo siguiente: Secuencia 13 15 19 5 17 3 9 12 6 1 2 16 4 8 11 14 20 18 7 10 dj 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 Lj -83 -67 -52 -38 -26 -15 -5 -1 1 4 12 22 34 47 62 78 94 111 129 149 Tj 0 0 0 0 0 0 0 0 1 4 12 22 34 47 62 78 94 111 129 149 743 Ej 83 67 52 38 26 15 5 1 0 0 0 0 0 0 0 0 0 0 0 0 287 1030 111,7971 101,5 117,942 144,2681 130,913 124,8188 109,8478 82,44928 72,16667 87,12319 117,1812 99,76812 93,67391 79,02899 1,797101 1,811594 0,326087 4,057971 0 0 0,326087 15 16 19 17 20 20 19 SPT WSPT FIFO LIFO CR SLACK ATC Promedio Anticipación 0,26087 Numero de trabajo Tardíos 19 LPT Tiempo de flujo ponderado 150,8261 Promedio Tardanza 119,942 Trabajo j 1 10 6 12 16 17 Pj 3 20 2 4 10 12 dj 8 24 32 44 50 55 Cj 3 23 25 29 39 51 reviewer Highlight donde esta la justificacion de esto? UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACIONY CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Asignando un ranking basado en delta q, se obtiene la secuencia de trabajos (6,2,1,4,9,7,3,5,10,15,13,8,11,15,19,18,14,12,17,20) donde los grupos están conformados así: (I1: 6,2,1,4; Fecha común de entrega: 13) (I2: 9,7,3,5,10; Fecha común de entrega: 50) (I3: 15,13,8,11,15; Fecha común de entrega: 116) (I4: 19,18,14,12,17,20; Fecha común de entrega: 197). En esta tabla se puede identificar que las posiciones indicada en la secuencia (Kj) es decir para (K1 para el grupo I1 es 2; K2 para el grupo I2 es 7; K3 para el grupo I3 es 12; K4 para el grupo I4 es 17) no se cuenta con Lj, Tj, Ej, es decir que los trabajos ubicados en dichas posiciones no presentan retardo ni anticipación en su entrega, por otra parte empleado los P1: Costo de asignación($4/ut), q Trabjo Pj Grupos Fecha D 1 16 10 2 1 3 3 6 2 4 2 8 5 17 12 6 3 11 7 12 4 8 9 10 9 8 13 10 15 16 11 19 15 12 4 12 13 5 14 14 15 16 15 7 18 16 18 17 17 14 16 18 11 15 19 13 17 20 10 20 Kj 2 2 7 7 7 2 2 7 12 12 7 12 12 93 104 84 64 17 17 17 17 17 17 12 60 40 20 Secuencia Opt 6 2 1 4 9 7 70 64 44 24 37 50 77 90 84 64 44 57 delta q 80 13 50 116 197 17 20 I1 I2 I3 I4 11 15 19 18 14 12 3 5 10 15 13 8 Secuencia 16 1 6 2 17 3 12 9 8 15 19 4 5 15 7 18 14 11 13 10 Pj 10 3 2 8 12 11 4 10 13 16 15 12 14 16 18 17 16 15 17 20 Sj 0 10 13 15 23 35 46 50 60 73 89 104 116 130 146 164 181 197 212 229 Cj 10 13 15 23 35 46 50 60 73 89 104 116 130 146 164 181 197 212 229 249 dj 13 13 13 13 50 50 50 50 50 116 116 116 116 116 197 197 197 197 197 197 Lj -3 0 2 10 -15 -4 0 10 23 -27 -12 0 14 30 -33 -16 0 15 32 52 Tj 0 0 2 10 0 0 0 10 23 0 0 0 14 30 0 0 0 15 32 52 Ej 3 0 0 0 15 4 0 0 0 27 12 0 0 0 33 16 0 0 0 0 P1*dj 52 52 52 52 200 200 200 200 200 464 464 464 464 464 788 788 788 788 788 788 8.256$ P2*Ej 39 0 0 0 195 52 0 0 0 351 156 0 0 0 429 208 0 0 0 0 1.430$ P3*Tj 0 0 40 200 0 0 0 200 460 0 0 0 280 600 0 0 0 300 640 1040 3.760$ 13.446$ UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 P2: Costo antipación ($13/ut) y P3: Costo de tardanza ($20/ut), a la secuencia hallada se obtiene que el valor de la función TP (s) es: TP (s) = ($8.256 + $1.430 + $3.760) = $13.446 Se tienen tres objetivos simultáneos: Minimizar el total ponderado de los tiempos de terminación de los trabajos, total ponderado de los tiempos de tardanza de los trabajos, y minimizar el total de trabajos tardíos. Se tiene una importancia relativa a la decisión de 30%, 40% y 30% respectivamente a cada uno de los objetivos. Compare diferentes reglas de secuenciación (al menos 8 reglas diferentes) y selecciones la mejor entre ellas para estos objetivos. Teniendo en cuenta el peso de importancia asignado a tiempo de terminación (30%), trabajos tardíos (40%), tiempo de tardanza (30%) se obtiene que la secuencia que permite minimizar los tiempos antes mencionados es la asignada por WSPT. SPT WSPT FIFO LIFO CR SLACK ATC 71,01884 64,11667 75,93188 95,2529 85,18116 80,91522 70,26594 Objetivo LPT 98,92464 reviewer Text Box No es legible el informe, no presenta un flujo por problema o por algoritmo, los resultados no son claros. UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 0 50 100 150 SPT WSPT FIFO LIFO LPT CR SLACK ATC Promedio Tardanza Promedio Tardanza 0 50 100 150 200 SPT WSPT FIFO LIFO LPT CR SLACK ATC Tiempo de flujo ponderado Tiempo de flujo ponderado 0 1 2 3 4 5 SPT WSPT FIFO LIFO LPT CR SLACK ATC Promedio Anticipación Promedio Anticipación UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 • Conclusiones Considerando los datos encontrados, los cuales se ven reflejados en los gráficos radios se identifica que emplear la regla de secuenciación SPT o WSPT permite reducir el promedio de tardanza así como el valor de flujo ponderado, dado que los vértices se acercan al centro de la gráfica. • Anexos (modelos en el software seleccionado, salidas y toda la información de soporte que sustente el trabajo) Taller 1_Plan2. (xlsx) Problema 2. Suponga que cuenta con 30 trabajos que deben ser secuenciados en tres diferentes máquinas siguiendo la misma ruta M1-M2- M3, los tiempos de procesamiento se dan en la Tabla 2. Codifique un algoritmo en algún lenguaje de programación (vba, java, c++, gams, matlab), que le permita aplicar la adaptación del algoritmo de Johnson para el caso de tres máquinas, recuerde que el algoritmo debe permitir utilizar cualquier tamaño de instancia. • Breve descripción del problema (características, supuestos, etc.) • Formulación matemática • Síntesis de resultados (si son necesarios) Es un problema al cual se le debe aplicar el modelo de Jonhson modificado o el planteado por Campbell, Dudek y Smith. Para esto primero se debe mirar la condición para saber si esta solución es optima o no, seguido a esto se deberán realizar las agrupaciones para lograr obtener los dos grupos a los cuales se les debe aplicar la regla de Jonhson para obtener la secuenciación, después de obtener la secuenciación realizaremos los cálculos pertinentes para hallar nuestro objetivo que en para este caso es el Cmax. 𝐹3 | | 𝐶𝑚𝑎x Pasos seguidos para desarrollar el programa. • Determinar si se cumple las condiciones para saber si la solución que se logre obtener es optima o no. • Desarrollar las agrupaciones para obtener solo dos máquinas. Para la solución de este problema y la solución de este algoritmo se aplicaron las 3 posibles agrupaciones para las tres máquinas que son las siguientes: o G1(M1+M2) y G2(M2+M3) o G1(M1) y G2(M2+M3) o G1(M1+M2) y G2(M3) reviewer Highlight reviewer Sticky Note y los ponderados? reviewer Accepted UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 • Aplicar la regla de Johnson, pero por el otro camino el cual se describe a continuación: 1. Programe el grupo de trabajos U que son más cortos en la primera máquina que la segunda. U = { j | p1j < p2j } 2. Programe el grupo de trabajos V que son más cortos en la segunda máquina que la primera. V = { j | p1j ≥ p2j } 3. Organizar los trabajos en U en orden no decreciente por sus tiempos de procesamiento en la primera máquina. 4. Organizar los trabajos en V en orden no creciente por sus tiempos de procesamiento en la segunda máquina. 5. Concatenar U y V y ese es el orden de procesamiento para ambas máquinas. • Ya obtenida la secuencia se hallan los valores de Cj para cada una de las máquinas para lograr determinar al final Cmax del problema. La siguiente tabla muestran los resultados obtenidos a partir de la agrupación G1(M1+M2) y G2(M2+M3) donde se obtuvo un valor de Cmax de 443 con la secuencia que se puede observar en la tabla. Es importante resaltar que en el programa que se presenta en Matlab se pueden obtener los resultados de las otras dos agrupaciones, para las otras dos agrupaciones también se obtuvo Cmax de 443 con diferentes secuencias. UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Tabla. Resultados obtenidos con la agrupación G1(M1+M2) Y G2(M2+M3) elaboraciónpropia Secuencia PjM1 SjM1 CjM1 PjM2 SjM2 CjM2 PjM3 SjM3 CjM3 Cj 12 4 0 4 9 4 13 13 13 26 26 13 4 4 8 13 13 26 26 26 52 52 26 6 8 14 14 26 40 21 52 73 73 30 6 14 20 7 40 47 18 73 91 91 10 7 20 27 12 47 59 11 91 102 102 19 7 27 34 16 59 75 21 102 123 123 22 7 34 41 8 75 83 26 123 149 149 20 8 41 49 13 83 96 14 149 163 163 28 9 49 58 15 96 111 19 163 182 182 7 11 58 69 10 111 121 19 182 201 201 6 13 69 82 15 121 136 19 201 220 220 21 13 82 95 5 136 141 15 220 235 235 1 14 95 109 12 141 153 17 235 252 252 8 14 109 123 13 153 166 21 252 273 273 18 15 123 138 5 166 171 16 273 289 289 29 16 138 154 7 171 178 19 289 308 308 16 21 154 175 12 178 190 25 308 333 333 15 18 175 193 16 193 209 15 333 348 348 2 14 193 207 15 209 224 12 348 360 360 3 18 207 225 17 225 242 10 360 370 370 4 19 225 244 16 244 260 8 370 378 378 14 13 244 257 15 260 275 9 378 387 387 23 19 257 276 13 276 289 9 387 396 396 11 10 276 286 13 289 302 6 396 402 402 17 21 286 307 5 307 312 13 402 415 415 24 11 307 318 9 318 327 9 415 424 424 27 16 318 334 11 334 345 4 424 428 428 25 16 334 350 8 350 358 5 428 433 433 5 12 350 362 6 362 368 5 433 438 438 9 6 362 368 5 368 373 5 438 443 443 443Cmax reviewer Pencil UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Gráfico, Resultados parciales con la agrupación G1(M1) Y G2(M2+M3) Obtenido en Matlab Programa en Matlab Para el desarrollo del programa se hizo uso de la aplicación Matlab dado al acceso que se tiene por los beneficios que otorga la universidad. El programa que se desarrolló permite solucionar problemas de F𝑚 | | 𝐶𝑚𝑎x para n trabajos, aplicando el algoritmo de Johnson modificado para encontrar la secuencia optima y Cmax. Código clc close all T1=readtable('ej2.xlsx'); T=table2array(T1); [n,m]=size(T); M1=T(:,2); M2=T(:,3); M3=T(:,4); M2max=max(M2); M1min=min(M1); M3min=min(M3); sol_opt=0; if (M1min>=M2max || M3min>=M2max) sol_opt=1; end A=zeros(n,m-1); a1= T(2,1); reviewer Pencil UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 for i=1:n for j=1:3 if j==1 A(i,j)=T(i,1); else a1= T(i,j); a2= T(i,j+1); A(i,j)=a1+a2; end end end B=zeros(n,m-1); b1= T(2,1); for i=1:n for j=1:3 if j==1 B(i,j)=T(i,1); else if j==2 B(i,j)=T(i,2); else b1= T(i,j); b2= T(i,j+1); B(i,j)=b1+b2; end end end end C=zeros(n,m-1); c1= T(2,1); for i=1:n for j=1:3 if j==1 C(i,j)=T(i,1); else if j==2 c1= T(i,j); c2= T(i,j+1); C(i,j)=c1+c2; else C(i,j)=T(i,4); UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 end end end end G1=zeros(1,3); G2=zeros(1,3); p=1; q=1; for i=1:n if A(i,2)<=A(i,3) G1(p,1)=A(i,1); G1(p,2)=A(i,2); G1(p,3)=A(i,3); p=p+1; else G2(q,1)=A(i,1); G2(q,2)=A(i,2); G2(q,3)=A(i,3); q=q+1; end end G1=sortrows(G1,2); G2=sortrows(G2,3,'descend'); G3 = vertcat(G1, G2); GANT=zeros(n,11); for i=1:n GANT(i,1)=T(G3(i,1),1); GANT(i,2)=T(G3(i,1),2); GANT(i,5)=T(G3(i,1),3); GANT(i,8)=T(G3(i,1),4); if i==1 GANT(i,3)=0; GANT(i,4)=GANT(i,2)+GANT(i,3); GANT(i,6)=GANT(i,4); GANT(i,7)=GANT(i,5)+GANT(i,6); GANT(i,9)=GANT(i,7); GANT(i,10)=GANT(i,8)+GANT(i,9); GANT(i,11)=GANT(i,10); else GANT(i,3)=GANT(i-1,4); GANT(i,4)=GANT(i,2)+GANT(i,3); GANT(i,6)=max(GANT(i-1,7),GANT(i,4)); GANT(i,7)=GANT(i,5)+GANT(i,6); GANT(i,9)=max(GANT(i-1,10),GANT(i,6)); GANT(i,10)=GANT(i,8)+GANT(i,9); GANT(i,11)=GANT(i,10); end end K1=zeros(1,3); UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 K2=zeros(1,3); p1=1; q1=1; for i=1:n if B(i,2)<=A(i,3) K1(p1,1)=B(i,1); K1(p1,2)=B(i,2); K1(p1,3)=B(i,3); p1=p1+1; else K2(q1,1)=A(i,1); K2(q1,2)=A(i,2); K2(q1,3)=A(i,3); q1=q1+1; end end K1=sortrows(K1,2); K2=sortrows(K2,3,'descend'); K3 = vertcat(K1, K2); GANT1=zeros(n,11); for i=1:n GANT1(i,1)=T(K3(i,1),1); GANT1(i,2)=T(K3(i,1),2); GANT1(i,5)=T(K3(i,1),3); GANT1(i,8)=T(K3(i,1),4); if i==1 GANT1(i,3)=0; GANT1(i,4)=GANT1(i,2)+GANT1(i,3); GANT1(i,6)=GANT1(i,4); GANT1(i,7)=GANT1(i,5)+GANT1(i,6); GANT1(i,9)=GANT1(i,7); GANT1(i,10)=GANT1(i,8)+GANT1(i,9); GANT1(i,11)=GANT1(i,10); else GANT1(i,3)=GANT1(i-1,4); GANT1(i,4)=GANT1(i,2)+GANT1(i,3); GANT1(i,6)=max(GANT1(i-1,7),GANT1(i,4)); GANT1(i,7)=GANT1(i,5)+GANT1(i,6); GANT1(i,9)=max(GANT1(i-1,10),GANT1(i,6)); GANT1(i,10)=GANT1(i,8)+GANT1(i,9); GANT1(i,11)=GANT1(i,10); end end L1=zeros(1,3); L2=zeros(1,3); p2=1; q2=1; for i=1:n if C(i,2)<=A(i,3) L1(p2,1)=B(i,1); L1(p2,2)=B(i,2); UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 L1(p2,3)=B(i,3); p2=p2+1; else L2(q2,1)=A(i,1); L2(q2,2)=A(i,2); L2(q2,3)=A(i,3); q2=q2+1; end end L1=sortrows(L1,2); L2=sortrows(L2,3,'descend'); L3 = vertcat(L1, L2); GANT2=zeros(n,11); for i=1:n GANT2(i,1)=T(L3(i,1),1); GANT2(i,2)=T(L3(i,1),2); GANT2(i,5)=T(L3(i,1),3); GANT2(i,8)=T(L3(i,1),4); if i==1 GANT2(i,3)=0; GANT2(i,4)=GANT2(i,2)+GANT2(i,3); GANT2(i,6)=GANT2(i,4); GANT2(i,7)=GANT2(i,5)+GANT2(i,6); GANT2(i,9)=GANT2(i,7); GANT2(i,10)=GANT2(i,8)+GANT2(i,9); GANT2(i,11)=GANT2(i,10); else GANT2(i,3)=GANT2(i-1,4); GANT2(i,4)=GANT2(i,2)+GANT2(i,3); GANT2(i,6)=max(GANT2(i-1,7),GANT2(i,4)); GANT2(i,7)=GANT2(i,5)+GANT2(i,6); GANT2(i,9)=max(GANT2(i-1,10),GANT2(i,6)); GANT2(i,10)=GANT2(i,8)+GANT2(i,9); GANT2(i,11)=GANT2(i,10); end end T2 = array2table(GANT,'VariableNames',{'sec','p_jm1','s_jm1','c_jm1','p_jm2','s_jm2','c_jm2','p_jm3','s_jm3','c_jm 3','c_j'}); disp('La secuencia y los datos obtenidos para la primera agrupación que fue la siguiente (M1+M2;M2+M3) y se encuentra en la siguiente tabla:'); disp(T2); cmax = max(GANT(:,11)); if sol_opt == 1 disp('La secuencia encontrada es una solucion optima y el valor cmax es: '); disp(cmax); else disp('La secuencia encontrada no es una solucion optima y el valor cmax es: '); disp(cmax); UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 end T3 = array2table(GANT1,'VariableNames',{'sec','p_jm1','s_jm1','c_jm1','p_jm2','s_jm2','c_jm2','p_jm3','s_jm3','c_jm3','c_j'}); disp('La secuencia y los datos obtenidos para la segunda agrupación que fue la siguiente (M1;M2+M3)'); disp('y se encuentra en la siguiente tabla:'); disp(T3); cmax1 = max(GANT1(:,11)); if sol_opt == 1 disp('La secuencia encontrada es una solución optima y el valor cmax es: '); disp(cmax1); else disp('La secuencia encontrada no es una solución optima y el valor cmax es: '); disp(cmax1); end T4 = array2table(GANT2,'VariableNames',{'sec','p_jm1','s_jm1','c_jm1','p_jm2','s_jm2','c_jm2','p_jm3','s_jm3','c_j m3','c_j'}); disp('La secuencia y los datos obtenidos para la tercera agrupación que fue la siguiente (M1+M2;M3) y se encuentra en la siguiente tabla: '); disp(T4); cmax2 = max(GANT2(:,11)); if sol_opt == 1 disp('La secuencia encontrada es una solución optima y el valor cmax es: '); disp(cmax2); else disp('La secuencia encontrada no es una solución optima y el valor cmax es: '); disp(cmax2); end Instrucciones de Uso 1. Para lograr correr el programa el usuario deberá cargar tabla en un archivo Excel. Esta tabla deberá tener la siguiente información: • Trabajo • Tiempo de Procesamiento de la M1 • Tiempo de Procesamiento de la M2 • Tiempo de Procesamiento de la M3 La información se debe visualizar de la siguiente manera en el Excel. reviewer Pencil reviewer Text Box falto documentar este codigo, pero en general esta bien UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Imagen 1 Tabla de datos iniciales en Excel 2. Cargar el documento de Excel en el archivo de Matlab o el programa. Para cargar el archivo de Excel donde se encuentra la tabla con los datos se debe hacer clic en la opción “Browser for folder” (Ver imagen 2 ) después de hacer clic se busca el archivo de Excel que se quiere cargar, que en nuestro caso es el Excel donde tenemos los datos iniciales. Después de cargados los datos se podrá observar el archivo Excel en la parte izquierda del Matlab. reviewer Pencil UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Imagen 2 Browser for folder 3. Después de tener cargado el archivo en el Matlab se debe ir a cambiar el nombre en el código específicamente en la línea número 4 de código, allí se colocará el nombre de nuestro archivo cambiando el nombre que se encuentra en el momento que en la imagen 3 se observar que es ej2. Es importante decir que el nombre debe escribirse con .xlsx para que el programa lo pueda leer. Imagen 3. Línea 4 para cambiar el nombre del código 4. Realizado bien los puntos 2 y 3 se dará a correr el programa y obtendremos los resultados. reviewer Pencil reviewer Pencil UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Imagen 4. Correr el programa y los resultados. • Conclusiones Es importante llevar los problemas que tenemos en la industria ya sean los problemas de Scheduling u otros problemas que nos enfrentamos los ingenieros industriales a programas computacionales de programación y que nos ayuden a optimizar los procesos disminuyendo los tiempos en la obtención de posibles soluciones, además en los últimos años se ha visto la necesidad de tener conocimientos de programación dándole mayor importancia a ese conexión entre la labor de los ingenieros industriales y las nuevas herramientas computacionales y tecnologicas. • Anexos (modelos en el software seleccionado, salidas y toda la información de soporte que sustente el trabajo) Programación_punto2.m Problema 3. Suponga que se cuentan con 30 trabajos que se muestran en la Tabla 3. Estos trabajos deben ser secuenciados en dos máquinas y además se cuenta con una regla de asignación los cuales se muestran en la columna tres de la tabla: Tipo 1: Trabajos que se procesan sólo en M1. Tipo 2: Trabajos que se procesan sólo en M2. Tipo 12: Trabajos que se procesan primero en M1 y luego en M2. Tipo 21: Trabajos que se procesan primero en M2 y luego en M1. reviewer Text Box Este problema esta bien UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 • Breve descripción del problema (características, supuestos, etc.) • Formulación matemática • Síntesis de resultados (si son necesarios) a) Codifique en algún lenguaje de programación el siguiente algoritmo: Programar los trabajos de Tipo 1 y Tipo 2 en cualquier orden. Con lo cual se obtienen las secuencias S1 y S2. Programar los trabajos de Tipo 12 y Tipo 21 de acuerdo con el algoritmo de Johnson y obtener las secuencias S12 y S21 (hay que tener en cuenta que, en la secuencia S21, M2 es la primera máquina y M1 la segunda máquina). Obtener la planificación óptima combinando estas secuencias de la siguiente forma: • M1 → S12, S1, S21 • M2 → S21, S2, S12 Note que el primer paso del algoritmo no indica que regla utilizar, así que usted debe aclarar que regla se utilizará y por qué lo realizará basado en experimentaciones o en análisis del problema. Solución. Para el desarrollo de este punto, inicialmente se hallaron las secuencias S1 y S2 por el método SPT para las máquinas 1 y 2 respectivamente; seguido a esto, se hallaron las secuencias S12 y S21 mediante el método Johnson. Obtenidas las secuencias, se organizaron los trabajos ejecutados en la máquina 1 para la secuencia planteada por el ejercicio (S12, S1, S21) y luego se organizaron los trabajos ejecutados en la máquina 2 para la secuencia planteada por el ejercicio (S21, S2, S12) generando de esta manera el Scheduling para el problema. Posterior a esto se desarrolló el diagrama de Gantt con respecto a esta secuencia obtenida. Obtención de S1 Y S2 s1 s2 M1 pj SPT 13 4 19 7 M2 pj 28 9 9 5 11 10 7 10 24 11 1 12 14 13 20 13 21 13 3 17 18 15 15 18 reviewer Sticky Note y la notación??? reviewer Highlight reviewer Sticky Note ¿porque SPT? UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 Obtención de S12 b) Realice un diagrama de Gantt de las secuencias obtenidas y analice los resultados. • Conclusiones Para lograr estos resultados se formuló un algoritmo utilizando el lenguaje de programación de Python para ejecutar la regla de Jhonson para 2 máquinas en diversas disposiciones (Tipo 1:Trabajos que se procesan sólo en M1 ; Tipo 2: Trabajos que se procesan sólo en la máquina 2 ; Tipo 3: Trabajos que se procesan primero en la máquina 1 y luego en la máquina 2 ; Tipo 4: Trabajos que se procesan primero en la máquina 2 y luego en la máquina 1 ),dado que éste es un algoritmo ampliamente conocido para optimizar un proceso de programación en la fabricación. Funciona para n trabajos en 2 máquinas. Esta es una regla de optimización y tiene amplias aplicaciones en las industrias manufactureras para seleccionar el orden en el que se deben procesar los trabajos en las máquinas para obtener la máxima productividad en el menor tiempo y ayudar a evitar retrasos innecesarios en los procesos de producción. Puede ingresar el tiempo de procesamiento para cada trabajo en las máquinas respectivas de forma individual y manual o el código también brinda la opción de pasar un archivo de vectores separados M1 M2 pj s12 12 4 6 13 4 16 23 13 s21 m2 m1 pj 17 5 5 6 29 7 25 8 27 11 1612 8 13 2 14 22 7 10 7 26 6 30 6 reviewer Text Box no son claros los resultados, y la relación con el siguiente codigo. UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 por comas (csv) que contiene los tiempos de procesamiento de varios trabajos. El código procesará automáticamente los datos de tiempo de procesamiento y devolverá la secuencia óptima de trabajos con el menor tiempo de espera. list1 = [] list2 = [] l1 = [] l2 = [] l3 = [] l4 = [] l5 = [] l6 = [] l7 = [] l8 = [] l9 = [] c = input('¿Desea ingresar datos desde un archivo? y/n_') if c == 'y': file_name = input('enter the file name:_ ') # file_name=j_rule.txt df = pd.read_csv(file_name, delimiter=',') a = np.array(df['m1']) b = np.array(df['m2']) n = np.size(a) for i in range(0, np.size(a)): list1.append(i) l1.append(a[i]) l2.append(b[i]) else: n = int(input('INGRESE EL NÚMERO DE TRABAJOS_')) for i in range(1): print(f'') print(f'Ingrese la asignación del tipo de trabajo teniendo en cuenta:') print(f'Tipo 1 Trabajos que se procesan sólo en M1') print(f'Tipo 2 Trabajos que se procesan sólo en M2') print(f'Tipo 3 Trabajos que se procesan primero en M1 y luego en M2') print(f'Tipo 4 Trabajos que se procesan primero en M2 y luego en M1') for i in range(0, n): list2.append(i) l3.append(int(input(f' El trabajo {i + 1} es de tipo?_'))) reviewer Text Box este codigo esta muy desordenado, puede comentar para que sea entedible UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 for i in range(0, n): list1.append(i) l1.append(int(input(f'Ingrese el tiempo de procesamiento del trabajo {i + 1} en máquina 1_'))) l2.append(int(input(f'Ingrese el tiempo de procesamiento del trabajo{i + 1} en máquina 2_'))) # print(list1) # print(l1) # print(l2) for i in range(0, n): x1 = min(l1) x2 = min(l2) if l3[l1.index(x1)]==1: x=x1 s= l1.index(x1) l4.append(list1[s]) list1.pop(s) l1.pop(s) l2.pop(s) else: if l3[l1.index(x1)]==2: x=x2 t = l2.index(x2) l5.append(list1[t]) list1.pop(t) l1.pop(t) l2.pop(t) else: if l3[l1.index(x1)]==3: if x1 == x2: if l1[l1.index(x1)] + l2[l1.index(x1)] < l1[l2.index(x2)] + l2[l2.index(x2)]: x = x1 else: x = x2 elif x1 != x2: x = min(x1, x2) if x == x1: k = l1.index(x1) l6.append(list1[k]) else: UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 k = l2.index(x2) l7.append(list1[k]) list1.pop(k) l1.pop(k) l2.pop(k) else: if l3[l1.index(x1)]==4: if x1 == x2: if l1[l1.index(x1)] + l2[l1.index(x1)] < l1[l2.index(x2)] + l2[l2.index(x2)]: x = x1 else: x = x2 elif x1 != x2: x = min(x1, x2) if x == x1: k = l1.index(x1) l8.append(list1[k]) else: k = l2.index(x2) l9.append(list1[k]) list1.pop(k) l1.pop(k) l2.pop(k) l7.reverse() l8.reverse() new_list3 = l6 + l4 + l8 for i in range(0, len(new_list3)): new_list3[i] = new_list3[i] + 1 print(f'La secuencia S12,S1,S21 para M1 óptima es {new_list3}') new_list4 = l9 + l5 + l7 for i in range(0, len(new_list4)): new_list4[i] = new_list4[i] + 1 print(f'La secuencia S21,S2,S12 óptima para M2 es {new_list4}') Acá la aplicación del algoritmo a un ejercicio de clase: UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS PROYECTO CURRICULAR DE INGENIERIA INDUSTRIAL AREA SISTEMAS PRODUCTIVO PROGRAMACION Y CONTROL DE LA PRODUCCION Código. 110 Créditos: 3. Grupo 025 • Anexos (modelos en el software seleccionado, salidas y toda la información de soporte que sustente el trabajo) Ejercicio tres_taller 1 (.xlsx) PROGRAMA_2MAQUINAS_EJ.3 (2).py Resultados ejercicios 3(1).py reviewer Sticky Note ¿y esto es? reviewer Text Box En general el informe escrito esta muy desordenado, no se citan las figuras ni tablas, los algoritmos no estan explicados y los resultados no estan detallados. - menciona anexos que funcionan bien, aunque falta documentarlos - no presenta notación de graham para problema 1 y 3 - faltan los diagramas de gantt, no es clara las medidas de desempeño y su calculo.
Compartir