

































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Soluciones Generadas con Estructuras de Vecindad para el Problema de Talleres de Manufactura. Introducción al JSP El problema de talleres de manufactura (Job Shop Problem) es un problema complejo, el cual consiste en procesar distintas operaciones individuales que son requeridas para terminar diversos trabajos en varias máquinas. Este es un problema de optimización combinatoria que crece de manera exponencial a medida que se aumentan las máquinas y los trabajos.
Tipo: Apuntes
1 / 41
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Evaluación de la Factibilidad de Soluciones Generadas con Estructuras de Vecindad para el Problema de Talleres de Manufactura Resumen: Introducción al JSP El problema de talleres de manufactura (Job Shop Problem) es un problema complejo, el cual consiste en procesar distintas operaciones individuales que son requeridas para terminar diversos trabajos en varias máquinas. Este es un problema de optimización combinatoria que crece de manera exponencial a medida que se aumentan las máquinas y los trabajos. Existen pocos métodos exactos que puedan determinar una solución a este problema en tiempo polinomial, y de forma determinística, por lo que, todos los avances que existen acerca del tema son basados en heurísticas y metaheurísticas, aun cuando son métodos de aproximación se pueden obtener soluciones factibles. Existen diferentes metaheurísticas diferentes que pueden ser utilizadas para resolver problemas de calendarización. Algunos métodos populares incluyen programación entera, programación de restricciones y algoritmos de búsqueda heurística (métodos aproximados). Cada método tiene sus propias debilidades y fortalezas, por lo que es importante elegir el algoritmo adecuado para cada instancia de algún problema en particular. Planteamiento del problema Como se mencionó anteriormente, el problema de calendarización en talleres de manufactura (Job Shop) pertenece al área de optimización combinatoria y es catalogado dentro de las ciencias computacionales con complejidad NP-Completo por Garey (1976). Complejidad del problema La teoría de la complejidad computacional es la parte de la computación, que estudia los recursos y el tiempo requeridos para resolver un problema. Los recursos son el espacio o memoria de la computadora y el tiempo, es la duración de un proceso. Todos los problemas pueden ser clasificados de acuerdo con el grado de dificultad.
Algoritmos de Optimización para el JSP El JSP es el modelo clásico para resolver el problema de calendarización en talleres de manufactura y con el paso del tiempo se han propuesto diferentes algoritmos para resolverlo. Zhang et al. (2019), hacen una recopilación de varios de los algoritmos que se han propuesto para tratar de solucionar el problema. Estos algoritmos se pueden clasificar en dos categorías: Métodos de optimización exacta y métodos aproximados. Métodos Exactos Los métodos exactos se caracterizan por buscar la solución óptima del conjunto de soluciones para la función objetivo de un problema de optimización de manera matemática. Este tipo de métodos fueron los primeros en aplicarse al JSP. Entre los primeros esfuerzos para encontrar soluciones exactas se encuentran el de Johnson (1954), el cual propuso una serie de reglas de decisión para encontrar la calendarización óptima a un problema de producción de dos y tres máquinas. La opinión del origen del problema de JSP es mixta sobre quién propuso por primera vez el problema del taller en su forma actual. Se ha visto que los métodos exactos pueden obtener soluciones óptimas para algunas instancias del JSP, especialmente el método de Branch and Bound. Sin embargo, todos comparten el mismo problema del tiempo requerido para su solución. Métodos Aproximados Conforme las herramientas para resolver problemas han mejorado, así también los problemas de optimización combinatoria han ido creciendo y debido a su naturaleza de complejidad exponencial, se ha hecho cada vez más difícil de resolverlos de manera exacta. El JSP no es una excepción y es por eso por lo que gradualmente se han adoptado métodos de aproximación para resolverlo. Como su nombre lo indica, estos métodos buscan encontrar soluciones aproximadas aceptables ya sea en su calidad o en la rapidez para obtenerlas. Dentro de los métodos aproximados, todas las pruebas de han realizado tomando en cuenta solo una ruta crítica debido al alto costo de su cálculo. Sin embargo, existe múltiples rutas críticas en Levy et al. (1963) la ruta crítica es la ruta más larga (en el tiempo) de principio a fin, indica el tiempo mínimo necesario para completar todo el proyecto, el tiempo necesario para recorrer cada camino es la suma de los tiempos asociados a todos los trabajos en el camino, el método de la ruta crítica, es una técnica potente y sencilla para analizar, planificar y programar proyectos grandes y complejos, dicha metodología proporciona un medio para determinar qué trabajos o actividades, de los muchos que componen un proyecto, son críticos en cuanto a su efecto en el tiempo total del proyecto y la mejor manera de programar todos los trabajos y para cumplir una fecha objetivo.
El problema de programación de taller abierto es un tipo especial de problema de programación, que tiene n trabajos, cada uno con m máquinas y un conjunto de operaciones que se asignan sin restricciones. Representaciones del JSSP Notación para JSSP El problema de calendarización de talleres de manufactura está formado por un conjunto finito de trabajos con cardinalidad n: J = {J1,J2,…Jn}, y n |J| un conjunto finito M de máquinas con cardinalidad m: M = {M1,M2….Mm} y m = |M| y un conjunto de O que consiste en n * m operaciones 𝑂 = { i1, i2 ,… im*n} donde n , m ≥ 1; de estos conjuntos se tiene que para cada operación i ∈ O existe un trabajo Jk ∈ J | i ∈ Jk al que pertenece la operación, así como una máquina Mk ∈ M en la que dicha operación debe ser procesada. Cada operación i tiene además un tiempo de inicios y un tiempo de procesamiento p, de tal forma que para una operación cualquiera i ∈ O, su tiempo final está dado por (si + pi), que es la suma de su tiempo de inicio más el tiempo de procesamiento. El objetivo considerado en este trabajo es minimizar el makespan (Cmax), que consiste en minimizar el intervalo de tiempo entre el inicio del procesamiento del primer trabajo (tiempo de referencia 0) y el tiempo de terminación del procesamiento del último trabajo, es decir, el intervalo de tiempo en el que se procesa completamente la totalidad de los trabajos (órdenes de producción). Se consideran los siguientes supuestos: El tiempo total de una calendarización o makespan es igual al intervalo de tiempo entre el inicio del procesamiento del primer trabajo y el tiempo de terminación del procesamiento del último trabajo, el decir, el intervalo de tiempo en el que se procesa completamente la totalidad de los trabajos el cual se representa como MAX (si+pi), donde MAX se obtiene mediante la función objetivo, en la Tabla 2. se muestran los elementos descritos anteriormente de forma resumida.
Diagrama de Gantt Otra forma de representar una calendarización para el problema del JSP, es mediante un diagrama de Gantt, este tipo de esquema permite visualizar la asignación de cada operación, su tiempo de inicio y tiempo de proceso a lo largo de una tabla, dicha tabla está dividida en un número de filas igual a la cantidad de máquinas definidas por el problema y se extiende en columnas de unidades que llegan hasta el valor total del makespan. En la figura 2.3 se puede apreciar la calendarización del grafo anterior con el orden en que se ejecutan los trabajos por ejemplo el trabajo verde representa el trabajo 1 con operaciones en sus respectivas máquinas. METODOLOGÍA Introducción En los capítulos anteriores se habló sobre las características del JSSP, así como de los métodos más comunes para tratar de solucionarlo. Se propone un algoritmo con una nueva estructura de vecindad, que consiste en permutar pares adyacentes en todas las máquinas que se encuentren en la misma línea de tiempo. Instancias de Prueba para el JSSP Las instancias de datos de prueba que se usan para evaluar este algoritmo son tomadas de la literatura y se encuentran en el formato presentado en la página de Or-Library (1990) en la Tabla 3.1 se muestra una instancia que consiste en un archivo de texto el cual contiene la información del número de trabajos y el número de máquinas y su tiempo de procesamiento. Las filas Jn, representan los trabajos (j) que a su vez están divididos en 6 columnas de operaciones (O) y dentro de cada columna las máquinas (m) en las cuales se tiene que llevar a cabo cada operación, el segundo valor de cada columna es su tiempo de procesamiento (p) que indica cuanto tiempo dura esa operación. Generación de la Solución Inicial. Para poder generar una solución inicial aleatoria, se tienen que seguir varios procedimientos, los cuales consisten en cargar los datos de entrada, inicializar las estructuras de datos, procesar la información y producir los resultados deseados.
Generación de la Estructura de Trabajos Para poder trabajar con el algoritmo convencional de Nakano y Yamada (1991) y poder llevar a cabo la calendarización, es necesario establecer el marco de trabajo. Representación Gráfica De la Estructura de Trabajos La figura 3.2 se muestra una representación de una estructura 6X6. La cual consiste en 7 elementos, de 0 a 6 {0,1,2,3,4,5,6}. El elemento 0, se utiliza como máquina ficticia donde se inicializa la calendarización, la fila (Jn) representa un trabajo completo, es decir, cada columna es equivalente a una operación con sus respectivos campos:
Preparación de Matriz de Estructuras de Máquinas La segunda estructura para poder establecer el marco de trabajo es la estructura de máquinas figura 3.5 que cuenta con las mismas características que la matriz de trabajos. ● Se inicializan todos los campos de la columna 0, todos a ceros, esto es porque al iniciar la calendarización en la columna 1 o trabajo 1 es donde se inicia la calendarización. ● A las máquinas se les asigna de forma aleatoria los trabajos que tienen que procesar, los valores son los mismos que los del Benchmarks de prueba cargados en la matriz de trabajos. ● Los tiempos de procesamiento (p) son copiados de la matriz de trabajos. Valores que no cambian a lo largo del proceso de calendarización. Estos son todos los datos iniciales necesarios para empezar con el proceso de calendarización. Cabe mencionar, que es de suma importancia entender que los valores de la máquina 1 (M1), por ejemplo, corresponden a trabajos que van a ser procesados en esa máquina y el tiempo que dura dicha operación (p). Algoritmo de Calendarización Una vez preparado el escenario con ambas matrices, actualizadas con los datos necesarios, se implementa el algoritmo de calendarización y el algoritmo de armonización global como se muestra en la figura 3.6; ambos son necesarios para poder calendarizar y obtener una solución inicial factible, como se puede apreciar en la figura, los campos de inicio y de término de la primera columna en adelante están todos vacíos, para que cuando se cumplan las condiciones y criterios de calendarización los valores sean asignados de acuerdo a sus tiempos de calendarización. Ya con ambas matrices listas para calendarizar y llevar a cabo el primer algoritmo que es el algoritmo de calendarización de Nakano y Yamada (1991), se observa que ambas estructuras de datos tienen los campos (f) inicializados en ceros, que significa que no se han agendado, el campo (j), que es el número de trabajo en la matriz de máquinas de color azul fuerte (figura 3.7) indica el trabajo a ser procesado y su respectivo tiempo de procesamiento (p) de cada operación, y así consecutivamente de cada columna de la uno hasta la columna 6. La segunda estructura de la figura 3.7 contiene los datos iniciales de prueba de la página de Or Library (1990).
Pseudocódigo para Algoritmo de Calendarización El procedimiento se realiza en la matriz de máquinas, los valores de las variables n y m, se obtienen del valor de máquinas y trabajos del archivo de instancia (mt06): nm = 66, que representa las dimensiones de las matrices; que es el proceso de calendarización qué se debe de llevar a cabo en cada fila interactuando entre ambas matrices y sus campos. En el Algoritmo 1 Calendarización, se muestra un procedimiento finito y preciso para poder encontrar la solución, detallando cada uno de sus pasos a seguir.
Paso 6: Seleccionar Trabajo Se lleva a cabo solo si se cumple el paso 5. Selecciona el trabajo o campo j en la matriz de máquinas que indica que ese trabajo se va a considerar como candidato a ser calendarizado y realizar comparaciones, si se cumplen se agenda. Paso 7: Ir a estructura de trabajos Solo se lleva a cabo si se cumplen los pasos anteriores 5 y 6. Con el valor almacenado en el campo j de la matriz de máquinas se hace referencia a esa fila en la matriz de trabajos, es decir, si, el valor almacenado en la variable j es 1, se va al trabajo 1 (J1) para seguir con el procedimiento de selección de candidatos. Paso 8: Buscar máquina Solo se lleva a cabo si se cumplen los pasos 5, 6 y 7 y su tarea es la de seleccionar el número de máquina que se encuentra en la matriz de trabajos, si, el campo f es 0 entonces, selecciona la máquina, que corresponderá al valor almacenado en el campo m de la matriz de trabajos. El valor que se encuentra en m representa la máquina donde el trabajo es procesado. Paso 9: Si la bandera de la máquina seleccionada es 0 entonces Si el campo f, de la estructura de trabajos es 0, entonces es candidata para ser agendada. Paso 10: Si trabajo es igual a máquina Solo se lleva a cabo si se cumplen los pasos 5, 6, 7 ,8 y 9. Si, la maquinayel trabajo coinciden, entonces, se procede a agendar para que, se cumpla el valor que se encuentra almacenado en el campo m de dicho trabajo, el cual tiene que ser igual a la máquina de donde proviene ese trabajo, puesto que se tienen que cumplir las restricciones de precedencia que indican que el primer trabajo de j se debe de realizar en la máquina que tiene el campo m. Paso 11: Buscar tiempo de término mayor Solo se lleva a cabo si se cumplen los pasos 5,6,7,8,9 y 10. Una vez que se den los criterios de calendarización, la ecuación 3 del modelo matemático indica que un trabajo va a iniciar cuando se termine el otro, es por eso que se necesita encontrar el tiempo de término mayor de las operaciones anteriores entre ambas matrices. Paso 12: Agendar Solo se lleva a cabo si se cumplen los pasos 5,6,7,8,9,10 y 11. Para realizar este
paso se debe de tomar en cuenta el paso anterior el cual fue, seleccionar el tiempo de término mayor (campo c) de una de las dos estructuras, se suma 1 al tiempo de término mayor del trabajo o de la maquina anterior, lo cual c + 1 = s como tiempo de inicio (campo s), el tiempo de término (campo c) es igual a (s + p) – 1 = c. Paso 13: Asignar cero a variable ciclo Si se llegó hasta este punto entonces ya no existe el ciclo. El ciclo para el JSP es cuando se realizan todas las iteraciones y no se pudo agendar ningún trabajo, se debe reiniciar la variable ciclo a cero para evitar llamar el algoritmo de armonización global. Paso 14: Fin Si Si no se cumplieron los pasos del 5 al 13, entonces, se continúa con la siguiente máquina y se termina el ciclo que recorren los trabajos ya que la calendarización tiene que ser en orden, la cual es otra restricción del modelo matemático. Paso 15: Fin Si Se tiene que se cumplió la condición del paso. Paso 16: Fin Sino Fin de condición. Paso 17: Continuar con siguiente máquina Se agendó trabajo o no se continúa con la siguiente fila de máquinas. Paso 18: Fin sino Fin de condición. Paso 19: Hasta que se recorran todos los trabajos Condición de paro del ciclo interno correspondiente a los trabajos. Paso 20: Hasta que se recorran todas las máquinas Condición de paro del ciclo externo correspondiente a las máquinas. Paso 21: Si, ciclo es igual a 1 Se recorrieron todas las máquinas y trabajos y no se pudo agendar ninguna operación, el proceso de calendarización se encuentra en un ciclo infinito que no permite agendar ninguna operación y generar una solución inicial factible,entonces es necesario llamar al algoritmo de armonización global para poder agendar por lo menos un trabajo.
Paso V Algoritmo armonización global: Mover el trabajo al inicio para que pueda ser agendado, las calendarizaciones deben de seguir un orden, al igual que, los trabajos se deben de agendar de izquierda a derecha hasta el final de la matriz. Paso 23: Fin si Se cumplió la condición. Paso 24: Fin Mientras condición de paro (n*m) Una vez agendados todos los trabajos en todas las máquinas termina la ejecución. Representación del Algoritmo 1 Calendarización de Forma Grafica Para entender mejor el proceso de calendarización y rompimiento de un ciclo se ejecutan los pasos del algoritmo 1 calendarización y algoritmo 2 armonización global, con las imágenes de las matrices amplificadas para una mejor lectura. El procedimiento se puede observar en figura 3. (primera comparación). Los pasos del 1 al 3 se ejecutan cada vez que se lleva a cabo una nueva iteración del ciclo que recorren las estructuras, es por eso que a continuación se detallan los pasos del 3 al 9 para comprender el algoritmo de adentro hacia afuera. En la figura 3.8 se observan los pasos del 3 al 9 de forma gráfica: con campos y las flechas que indican el flujo.
Segunda Comparación: El mismo procedimiento de los pasos del 3 al 9 se repiten con cada una de las máquinas, hasta que, se cumplan los criterios de calendarización y se pueda calendarizar una operación, y así, poder continuar con la segunda máquina, figura 3.9 (segunda comparación) con el mismo procedimiento, pero diferentes valores. Paso 3. Mientras no se recorran todas máquinas: Se inicia el recorrido en M2. Paso 4. Mientras no se recorran todos los trabajos: Este ciclo nos permitirá recorrer de la columna 1 a la columna 6. Paso 5. Si el campo f es 0 entonces: Es candidata para agendar. Paso 6. Seleccionar Trabajo: Se toma el valor que se encuentra en el campo j que es 5. Paso 7. Ir a estructura de trabajos: El valor almacenado en el campo j del paso anterior es 5, entonces se va a J5. Paso 8. Buscar máquina: Máquina cuyo campo f sea 0 y se toma el valor de su campo m que es 3. Paso 9. Si trabajo es igual a máquina: m3 es igual a M2? “no”, por lo tanto, no se puede agendar. Se rompe el ciclo y se continúa con siguiente iteración.
Cuarta Comparación El mismo procedimiento de las comparaciones anteriores se tiene que repetir con cada una de las máquinas, hasta que se cumplan los criterios de calendarización, y continuar con la cuarta máquina, figura 3.11(cuarta comparación). Paso 3. Mientras no se recorran todas las máquinas: Se inicia el recorrido en M Paso 4. Mientras no se recorran todos los trabajos: Este ciclo nos permitirá recorrer de la columna 1 a la columna 6. Paso 5. Si el campo f es 0 entonces: Es candidata para agendar. Paso 6. Seleccionar Trabajo: Se toma el valor que se encuentra en el campo j que es 6. Paso 7. Ir a estructura de trabajos: El valor almacenado en el campo j del paso anterior es 6, entonces se va a J6. Paso 8. Buscar máquina: Máquina cuyo campo f sea 0 y se toma el valor de su campo m que es 2 Paso 9: Si trabajo es igual a máquina: m2 es igual a M6? “no”, por lo tanto, no se puede agendar, se rompe el ciclo y se continúa con siguiente iteración.
Quinta Comparación El mismo procedimiento de los pasos anteriores se tiene que repetir con cada una de las máquinas, hasta que, se cumplan los criterios de calendarización para continuar con la quinta máquina, figura 3.11 (quinta comparación) Paso 3. Mientras no se recorran todas las máquinas: Iniciar el recorrido en M5. Paso 4. Mientras no se recorran todos los trabajos: Este ciclo nos permite recorrer de la columna 1 a la columna 6. Paso 5. Si el campo f es 0 entonces: Es candidata para agendar. Paso 6. Seleccionar Trabajo: Se toma el valor que se encuentra en el campo j que es 2. Paso 7. Ir a estructura de trabajos: El valor almacenado en el campo j del paso anterior es 2, entonces se va a J2. Paso 8. Buscar máquina: Máquina cuyo campo f sea 0 y se toma el valor de su campo m que es 2. Paso 9. Si trabajo es igual a máquina: m2 es igual a M5? No, por lo tanto, no se puede agendar. Se rompe el ciclo y se continúa con siguiente iteración.