Source: http://docplayer.es/1261450-Universidad-de-burgos.html
Timestamp: 2018-06-19 08:37:47+00:00

Document:
Gregorio Castillo Vargas
1 UNIVERSIDAD DE BURGOS DEPARTAMENTO DE INGENIERÍA CIVIL TESIS DOCTORAL ANÁLISIS DE LA RELAJACIÓN LAGRANGIANA COMO MÉTODO DE PROGRAMACIÓN DE TALLERES FLEXIBLES EN UN ENTORNO MULTIAGENTE Autor: Directores: Juan José Laviós Villahoz Dr. Ricardo del Olmo Martínez Dr. José Alberto Araúzo Araúzo Abril, 2013
3 Agradecimientos La finalización de este trabajo no hubiera sido posible sin la colaboración de muchas personas que, de una u otra manera, me han acompañado en este camino. En primer lugar quiero agradecer a mis directores de tesis la dedicación y disponibilidad constante que han tenido. A Ricardo del Olmo por su confianza en mi, paciencia y ayuda, sin cuya revisión y conocimiento no hubiera sido posible la finalización de esta tesis. A Alberto Araúzo por su generosidad al proponerme una línea de investigación que él comenzó en su tesis doctoral, y de la que el presente trabajo es continuación. Sus aportaciones han sido fundamentales en la realización de este trabajo. A Miguel Ángel Manzanedo a quien nunca he encontrado el momento de agradecer las oportunidades que me ha dado para colaborar con él y por hacer posible que pueda estar realizando este trabajo tan apasionante. A Luis Izquierdo por introducirme a trabajar con Netlogo, revisar pacientemente mis primeros pasos y resolver todas las dudas que le he consultado, sus orientaciones y consejos me han sido de gran utilidad. A Josema Galán y a Nacho Santos su apoyo y estímulo en los momentos en los que estaba más perdido. A Lourdes Saiz, por darme un consejo adecuado en el momento preciso. También quiero agradecer a mis compañeros del Edificio A, Susana, Michel, Juanma, Nacho por el interés y ánimos que me han transmitido en todo este tiempo. A Teresa Peña, mi compañera de asignatura y a pesar de ello mi amiga, por su #optimismo y #pasion, por complementarme en mi trabajo y darme su apoyo moral. A mis amigos por compartir los buenos momentos que hacen la vida más llevadera, en especial a Fran, cuyas conversaciones me ayudan a poner los pies en la tierra. A mi familia, a mis padres, por ser ejemplo de superación en los momentos difíciles y por su apoyo siempre que lo he necesitado.
5 Í ndice INTRODUCCIÓN... 1 CAPÍTULO 1. PROGRAMACIÓN DE OPERACIONES Y EL PROBLEMA DE PROGRAMACIÓN DE TALLERES PROGRAMACIÓN DE OPERACIONES CONFIGURACIONES DEL ENTORNO DE FABRICACIÓN Y SU INFLUENCIA EN LA PROGRAMACIÓN CLASIFICACIÓN DE LOS PROBLEMAS DE SCHEDULING: NOTACIÓN DEFINICIÓN DEL PROBLEMA DE PROGRAMACIÓN DE TALLERES PROBLEMA DE PROGRAMACIÓN DE TALLERES CON ENRUTAMIENTO FLEXIBLE COMPLEJIDAD DEL PROBLEMA CONCLUSIONES DEL CAPÍTULO CAPÍTULO 2. MÉTODOS PARA LA GENERACIÓN DE PROGRAMAS DE PRODUCCIÓN MÉTODOS DE RESOLUCIÓN DEL PROBLEMA DE PROGRAMACIÓN DE TALLERES DESDE UN PUNTO DE VISTA ESTÁTICO PROGRAMACIÓN EN ENTORNOS DINÁMICOS CONCLUSIONES DEL CAPÍTULO CAPÍTULO 3. PROGRAMACIÓN DE OPERACIONES DISTRIBUIDA Y SISTEMAS MULTIAGENTE PROGRAMACIÓN DE OPERACIONES DISTRIBUIDA SISTEMAS MULTIAGENTE MODELADO BASADO EN AGENTES DE UN PROBLEMA DE PROGRAMACIÓN DE OPERACIONES DISTRIBUIDO CONCLUSIONES DEL CAPÍTULO CAPÍTULO 4. MECANISMOS DE ASIGNACIÓN DISTRIBUIDOS BASADOS EN SUBASTAS TIPOS DE SUBASTA APLICACIÓN DE LAS SUBASTAS A PROBLEMAS DE PRODUCCIÓN SUBASTAS COMBINATORIAS Y SU APLICACIÓN A PROBLEMAS DE PRODUCCIÓN IMPLEMENTACIÓN DE LAS SUBASTAS EN PROBLEMAS DE PROGRAMACIÓN DE OPERACIONES
6 4.5. CONCLUSIONES DEL CAPÍTULO CAPÍTULO 5. MÉTODO DE RELAJACIÓN LAGRANGIANA: PRINCIPALES PROPIEDADES RELAJACIÓN LAGRANGIANA DEFINICIONES Y PROPIEDADES EN LA RELAJACIÓN LAGRANGIANA RESOLUCIÓN DEL PROBLEMA DUAL APLICACIÓN DEL MÉTODO DE RELAJACIÓN LAGRANGIANA A UN PROBLEMA SEPARABLE DE PROGRAMACIÓN ENTERA REVISIÓN DE LOS TRABAJOS PREVIOS DE APLICACIÓN DE LA RELAJACIÓN LAGRANGIANA A PROGRAMACIÓN DE OPERACIONES CONCLUSIONES DEL CAPÍTULO CAPÍTULO 6. PROBLEMA JOB SHOP: MÉTODO DE RELAJACIÓN LAGRANGIANA Y SUBASTAS APLICACIÓN DEL MÉTODO DE RELAJACIÓN LAGRANGIANA AL PROBLEMA JOB SHOP RESOLUCIÓN DEL PROBLEMA DUAL LAGRANGIANO EN EL PROBLEMA JOB SHOP SELECCIÓN DEL PROGRAMA LOCAL POR PARTE DE CADA ORDEN DE TRABAJO MÉTODOS DE CONSTRUCCIÓN DE PROGRAMAS FACTIBLES RELACIÓN DEL MÉTODO DE RELAJACIÓN LAGRANGIANA CON LAS SUBASTAS COMBINATORIAS CONCLUSIONES DEL CAPÍTULO CAPÍTULO 7. EXPERIMENTACIÓN Y ANÁLISIS DE RESULTADOS IMPLEMENTACIÓN DEL PROBLEMA JOB SHOP EN LA PLATAFORMA NETLOGO TEST DE PRUEBA PLANIFICACIÓN DE LA EXPERIMENTACIÓN ANÁLISIS DE LOS ASPECTOS QUE AFECTAN A LA ACTUALIZACIÓN DE LOS PRECIOS ANALISIS DE LOS MÉTODOS DE CONSTRUCCIÓN DE PROGRAMAS FACTIBLES CONCLUSIONES DEL CAPÍTULO CONCLUSIONES Y LÍNEAS FUTURAS DE TRABAJO BIBLIOGRAFÍA
7 Introducción Introducción Uno de los principales problemas de la mayoría de las empresas, en la actualidad, es como hacer frente a las demandas de un mercado cada vez más exigente. Las empresas han dejado de actuar dentro de un entorno local para pasar a competir en un mercado global. Esto ha hecho necesario aumentar la competitividad de los sistemas productivos de forma que se ajusten a las necesidades de los consumidores. Los modelos clásicos de producción en masa que primaban bajos costes frente a flexibilidad, variedad de gama y rapidez de respuesta, han quedado obsoletos en los mercados actuales. Las empresas deben reducir los tamaños de lote, el ciclo de vida de los productos, así como los plazos de entrega; y todo ello aumentando la variedad de productos. Por ello, se proponen sistemas mucho más flexibles y ágiles, capaces de dar una rápida respuesta ante los cambios del mercado, proporcionando productos y servicios más personalizados y adaptados al cliente, pues éstos participan cada vez más en la definición de las especificaciones de los productos, exigiendo unos plazos de entrega cada vez más cortos. En el entorno actual, los sistemas clásicos de gestión de la producción dejan de ser eficientes a pesar de su visión global del sistema y de su capacidad para generar buenos programas de producción. Los sistemas clásicos de planificación y control de la producción, basados en estructuras centralizadas y altamente jerarquizadas, tienen dos grandes inconvenientes. El primero es la dependencia exclusiva de un planificador central que realiza todos los cálculos y toma las decisiones, provocando un cuello de botella que limita la capacidad y ralentiza la toma de decisiones. El segundo, es su rigidez que hace que la modificación del sistema de control, altamente jerarquizado, 1
8 Introducción sea muy costosa en términos de tiempo y de trabajo de programación (Ouelhadj y Petrovic 2009). Las empresas, en consecuencia, deben evolucionar hacia estructuras distribuidas donde las decisiones se toman de forma descentralizada, principalmente para mejorar su respuesta ante los cambios y dotarlas de una mayor flexibilidad. Para hacer frente a estas exigencias, se buscan nuevos sistemas de gestión, altamente automatizados, capaces de ofrecer características como robustez, estabilidad, adaptabilidad y uso eficiente de los recursos, mediante el diseño de sistemas modulares y distribuidos que proporcionen estas características dando una respuesta rápida y poco traumática a los cambios que se van produciendo. Esto se debe realizar a todos los niveles dentro del subsistema de producción, desde el diseño del producto y de los procesos, al nivel más operativo de la planta de producción como es la programación de operaciones. Antecedentes y justificación La toma de decisiones distribuida es considerada una alternativa a los sistemas de programación operaciones puramente centralizados, ya que permiten la incorporación de objetivos locales, preferencias y restricciones de cada recurso en el proceso de decisión (Kutanoglu y Wu 1999). El problema de programación de operaciones es un problema de toma de decisiones relacionado con la asignación de recursos a tareas sobre períodos de tiempo, y su fin es la optimización de uno o varios objetivos. Los sistemas de producción son uno de los campos de aplicación más conocidos de este problema, donde las tareas son operaciones de distintos procesos y los recursos suelen ser los centros de trabajo o máquinas de un taller. Este problema, de gran interés práctico en la industria, se caracteriza por su complejidad debido en parte a su naturaleza combinatoria, y, por ello, es uno de los campos de investigación más activos dentro de la dirección de la producción (Shen 2002, Pinedo 2008). Se busca un método para la programación de sistemas de producción en un entorno dinámico. Este trabajo se centra en el problema de programación de talleres flexibles. El paradigma de sistemas multiagente ha permitido que se desarrollen propuestas de sistemas de programación de la producción distribuidos. Las características propias de estos sistemas, como la autonomía, robustez y su naturaleza distribuida, hacen que sean uno de los paradigmas más adecuados para construir sistemas complejos y 2
9 Introducción robustos (Parunak 1996, Shen et al 2001, Brennan y Norrie 2001). Los sistemas multiagente están constituidos por unidades software autónomas y proactivas denominadas agentes. Los agentes se utilizan para encapsular entidades físicas y lógicas, e incluso funciones del sistema de producción. Mediante la interacción y la negociación entre los distintos agentes que conforman el sistema, se pretende resolver problemas de alta complejidad para los que las técnicas clásicas no han aportado soluciones totalmente satisfactorias. En las dos últimas décadas, este paradigma ha tenido un gran desarrollo en el entorno de planificación de operaciones (Shen et al 2006, Lee y Kim 2008). Desde este punto de vista, el problema de programación de operaciones puede ser representado mediante un sistema multiagente compuesto por los siguientes elementos: (1) un conjunto de agentes que representan cada recurso o máquina. Cada máquina está caracterizada por una serie de habilidades que le permite realizar distintos tipos de operaciones, así como de su capacidad de producción que limita el número de operaciones simultáneas que puede realizar; (2) un conjunto de agentes que representan cada orden de trabajo. Cada orden de trabajo tiene un determinado objetivo propio, que puede ser la finalización en una fecha determinada, minimización del coste de producción o del coste de penalización por retraso u otros, y está compuesta por una serie de tareas interrelacionadas mediante relaciones de precedencia. Para poder realizar las tareas es necesario utilizar los recursos que dispongan de las habilidades correspondientes. Este conjunto de agentes deberá coordinarse para que cada uno alcance sus propios objetivos, consiguiendo realizar el conjunto de órdenes de trabajo pendientes. En estos sistemas se busca el comportamiento emergente a partir de las decisiones tomadas por las entidades individuales que lo componen. La combinación de los procesos de resolución individual de problemas y los protocolos de coordinación y negociación es uno de los retos de investigación en esta área, dado que lo que se gana en flexibilidad y rapidez de respuesta en los sistemas distribuidos, se pierde en eficiencia frente a los clásicos sistemas centralizados. Además, la dificultad para conseguir que su comportamiento sea predecible ha frenado su aplicación en entornos reales. Por esta razón, es necesario estudiar los mecanismos de coordinación que permiten su funcionamiento. Uno de los mecanismos de coordinación utilizados en la programación distribuida de operaciones es la subasta. Una subasta es un mecanismo de mercado que se caracteriza porque la asignación del bien intercambiado y sus precios se determinan mediante un conjunto de reglas en función de las pujas de los participantes (McAfee 3
10 Introducción y McMillan 1987). Este método de coordinación implica crear un programa de producción basado en los precios que se generan a partir de un proceso de subasta, en el que los productos que deben ser fabricados -las órdenes de trabajo lanzadas en el plan de producción- pujan por el uso de los recursos o máquinas. Así, el problema de programación de operaciones puede ser modelado como una subasta donde los bienes intercambiados son las unidades de tiempo en que se divide el horizonte de programación de cada recurso. Las órdenes de trabajo pujan en la subasta por aquellos intervalos de tiempo del horizonte de programación de los recursos que le permiten realizar su operación, tratando de maximizar sus propios objetivos (p.e. finalizar el producto dentro de plazo o minimizar la penalización por retraso). Este mecanismo sigue los principios de los sistemas distribuidos, de forma que la información relevante de cada orden de trabajo que participa, como la fecha de entrega comprometida o la penalización por retraso, permanece oculta para el resto de participantes en la subasta. Ninguna de las órdenes de trabajo conoce cuáles son los objetivos de las otras órdenes de trabajo ni si están pujando por los mismos recursos. Los precios actúan como señales que indican las preferencias del conjunto de participantes, no de forma individual, sobre cada ítem y permiten que se coordinen. Cada orden de trabajo propone un programa de producción de sus propias operaciones que optimice sus objetivos con los precios dados. De esta forma, la complejidad de cálculo se distribuye entre los distintos participantes, dividiendo el problema en otros más fáciles que pueden ser resueltos en paralelo (Wellman et al 2001). La idea de subasta aparece de forma intuitiva como un mecanismo eficaz para coordinar elementos con intereses propios. Sin embargo, existen dos dificultades principales en su aplicación: (1) se va a subastar de forma simultánea un elevado número de ítems (cada periodo de tiempo en que se divide el horizonte de programación de cada recurso); y (2) los ítems subastados presentan complementariedades, de modo que la valoración de un determinado ítem depende de la combinación de productos a la que pertenezca. Debido a las restricciones de precedencia y capacidad que caracterizan a los problemas de programación de operaciones un ítem será valorado en función de los otros ítems que se adquieran al mismo tiempo en la subasta. El modelado del proceso de programación de la producción como una subasta combinatoria permite tener en cuenta las dependencias originadas por las restricciones de precedencia y de capacidad que caracterizan a los problemas de programación de 4
11 Introducción operaciones. La subasta combinatoria es adecuada como medio de negociación y coordinación en aquellos problemas en los que se han de considerar las distintas valoraciones que se tienen sobre bienes interdependientes. Hay distintos tipos de subasta combinatoria. En las de una ronda, los participantes envían una sola vez las distintas valoraciones de las posibles combinaciones de bienes (en nuestro problema intervalos de tiempo de uso de las máquinas) y el subastador asigna los bienes de modo que se maximiza el objetivo global. La alternativa es realizar la valoración de forma iterativa, de forma que los precios se fijan después de múltiples rondas. Las subastas combinatorias iterativas tienen ventajas respecto a la de una sola ronda. En primer lugar, los participantes no necesitan realizar pujas sobre todo el conjunto de posibles combinaciones. En segundo lugar, en las subastas iterativas los participantes revelan en cada iteración sus preferencias, a través de los precios que se generan. En tercer lugar, las subastas iterativas son adecuadas en entornos dinámicos, donde los participantes entran y salen en cualquier momento. Así mismo, hay diferencias en cuanto a la forma de realizar las pujas en la subasta. De esta forma, aparecen dos tipos principales de subastas iterativas. En un tipo, los participantes envían el precio que están dispuestos a pagar por las posibles combinaciones de bienes, y el subastador asigna los bienes a cada participante en base a esas valoraciones (subastas con fijación de cantidad). En el segundo tipo, los participantes envían como puja el conjunto de bienes que estarían dispuestos a adquirir dados unos precios. En cada iteración el subastador actualiza los precios en función de la demanda (subastas de fijación de precios). El mecanismo puede ser descrito como sigue: existe un conjunto de recursos, cada uno representado por un agente. Cada recurso dispone de una serie de habilidades diferentes. El horizonte de programación de cada recurso está dividido en partes iguales, que son puestas a la venta en una subasta. Por otra parte, existe un conjunto de órdenes de trabajo que deben ser completadas. Cada orden de trabajo también está representada por un agente. Para completar cada orden de trabajo es necesario realizar un conjunto de tareas, ligadas entre sí por un conjunto de relaciones de precedencia. Para poder realizar las tareas es necesario utilizar los recursos que dispongan de las habilidades correspondientes. Las órdenes de trabajo tratan de minimizar su función de coste. Esta función de coste es la suma de la penalización por retraso más el coste de uso de los recursos, valorados con los precios generados en la subasta. Hay un agente que actúa como nodo central, que hace las funciones de subastador. El subastador recibe las pujas realizadas por las órdenes de trabajo y actualiza los precios 5
12 Introducción de cada unidad temporal de los recursos. Una vez conocidos los precios, las órdenes de trabajo reelaborarán sus pujas, repitiéndose el proceso. De forma iterativa, este ciclo continúa hasta que los precios se estabilizan (Kutanoglu y Wu 1999). El precio de cada una de las unidades de tiempo aumenta o disminuye siguiendo un mecanismo walrasiano, de forma que el subastador compara la demanda sobre cada una de las unidades de tiempo con la capacidad del recurso. Si hay un exceso de demanda, el subastador sube el precio, mientras que si hay un exceso de capacidad, el subastador lo baja. Existen distintas formas de actualizar los precios: pueden actualizarse con un valor constante, de forma proporcional a la demanda, o de forma proporcional al exceso de demanda. La forma de actualizar los precios es importante, ya que va a determinar que el proceso iterativo tienda o no hacia el equilibrio. Se puede establecer una analogía entre el algoritmo de Relajación Lagrangiana aplicado al problema de programación de la producción (Hoitomt et al 1993) y las subastas combinatorias. El proceso de actualización de precios es similar al proceso iterativo de actualización de los multiplicadores de Lagrange (Dewan y Joshi 2002). De este modo, los métodos de actualización utilizados en el método de Relajación Lagrangiana pueden ser usados para actualizar los precios en la subasta iterativa. Este mecanismo aporta el soporte matemático que proporciona las características y propiedades del método y ha sido utilizado para resolver diferentes problemas de programación de tareas. Las decisiones tomadas por los agentes tienen gran influencia en la eficiencia del sistema. Los precios que aparecen el mecanismo de subasta aportan información en cada instante de la demanda que tiene cada uno de los recursos, y adaptará sus propuestas en función de dichos precios. El resultado final deberían ser programas más eficientes. Las principales dificultades en la aplicación del mecanismo de subasta como mecanismo de coordinación en un problema de programación de operaciones son las siguientes: Diseñar un mecanismo de coordinación cuyo comportamiento sea predecible. El mecanismo debe hacer que el sistema tienda hacia el equilibrio y que el funcionamiento que se consiga esté cercano al óptimo. Lograr una buena convergencia del método, de forma que la transición de un modo a otro de funcionamiento, cuando existen cambios en los parámetros del sistema sea rápida. Eliminar los elementos de coordinación central en los cálculos y su papel necesario en el mecanismo de tipo síncrono. 6
13 Introducción Objetivos Esta tesis está relacionada con la programación de operaciones de tipo distribuido y analiza el método de Relajación Lagrangiana para su aplicación como mecanismo de generación de precios en el contexto de las subastas combinatorias iterativas. Distintos trabajos han aplicado estas técnicas para la resolución de distintos problemas dentro de este ámbito. En este trabajo se pretende estudiar distintos mecanismos de programación distribuidas basados en subastas y las distintas opciones que presentan, con el objeto de poder estudiar sus características y limitaciones para ser implementados en sistemas distribuidos de programación y control de la producción basados en agentes. Se partirá del sistema desarrollado por Araúzo (2007) donde se implementó un sistema de programación y control distribuido en fabricación basado en agentes. En él se demostró la viabilidad de estos métodos implementados mediante estándares FIPA, pero también se vio la necesidad de profundizar sobre la metodología de coordinación basada en subastas, de estudiar sus características y sus límites. Ya que, como indica Shen (2002), el aumento del uso de protocolos de negociación basados en mercado o basados en subastas hace necesario la investigación y desarrollo de mecanismos más sofisticados de negociación. Los sistemas de negociación basados en subastas combinatorias tienen un alto interés en este campo. El objetivo perseguido con el presente trabajo es: Estudiar la adecuación de los métodos de programación basados en subastas para ser implementados en sistemas multiagente de programación y control de la producción. Todo ello orientado al diseño de métodos que teniendo las ventajas de los procedimientos distribuidos (flexibilidad, robustez, ) presenten, a la vez, algunas de las bondades de los métodos centralizados (optimalidad y estabilidad). Para intentar alcanzar el éxito, este objetivo se ha desglosado en los siguientes objetivos parciales: Contextualizar el problema de programación de talleres flexibles definiendo el problema y revisando los principales métodos que se han aplicado a su resolución. Estudiar el método de coordinación basado en subastas, revisando los trabajos prácticos que lo han implementado como medio de coordinación de sistemas multiagente en entornos de producción, realizando su clasificación y caracterización en función de distintos criterios. Estudiar la relación entre las subastas combinatorias de tipo iterativo y el método de Relajación Lagrangiana 7
14 Introducción como método de resolución del problema de programación de la producción. Esta relación proporciona alternativas al método de actualización de precios. Analizar las propiedades del método de Relajación Lagrangiana que permitan determinar su capacidad de aplicación en entornos distribuidos. Determinar los principales parámetros de funcionamiento del método de Relajación Lagrangiana y sus valores óptimos en su aplicación al problema de programación de talleres flexibles. Estudiar alternativas al método del subgradiente que permitan aplicar el método de forma asíncrona y reducir el tiempo de computación en los cálculos locales. Estudiar las diferentes variantes del método de construcción de programas factibles, incidiendo sobre su calidad y su capacidad de distribución. Comparar el método de Relajación Lagrangiana con el método Walrasiano no adaptativo para la actualización de los precios. En estas comparaciones se tendrá en cuenta la calidad de la solución propuesta y la velocidad de convergencia del método. Organización del documento El documento se ha organizado en una Introducción, siete Capítulos, Conclusiones y Bibliografía. En el capítulo 1 se plantea el problema general de programación de la producción, se estudia la clasificación de los principales problemas de scheduling y su notación, para pasar a describir el problema de programación de talleres flexible y terminar estudiando su complejidad. Los principales métodos para la resolución de la programación de operaciones en producción, desde un punto de vista estático y dinámico, se presentan en el capítulo 2. En el capítulo 3 se analizan los sistemas de programación de operaciones de tipo distribuido y se vinculan con los sistemas multiagente, paradigma que ha permitido potenciar su desarrollo. El capítulo finaliza estudiando el modelado del problema de programación de operaciones desde un enfoque distribuido basado en agentes. El siguiente capítulo, capítulo 4, recoge los mecanismos de subastas como mecanismos de coordinación en sistemas distribuidos y su aplicación a problemas de programación de operaciones en producción. 8
15 Introducción Los dos siguientes capítulos se centran en la Relajación Lagrangiana como método de resolución de problemas de programación entera, primero de forma general, estudiando sus principales propiedades y aplicaciones a la programación de operaciones (capítulo 5), para pasar a centrarse sobre el problema de programación de talleres y plasmando su relación con las subastas combinatorias (capítulo 6). En el capítulo 7 se realizan una serie experimentos que permiten estudiar la aplicación de las subastas combinatorias en la resolución del problema de programación de talleres flexibles y la utilización del método de Relajación Lagrangiana como base de los métodos de actualización de precios en la subasta. Estos experimentos se agruparán en tres bloques. Se estudiarán, en el primer bloque, los aspectos relacionados con la actualización de precios en la subastas. En el segundo bloque, el análisis se centrará en los algoritmos para obtener soluciones factibles a partir de los programas propuestos en la subasta. En el último bloque, se comparará el un método de actualización de precios derivado del método de Relajación Lagrangiano con un método de actualización de precios no adaptativo. A partir de los resultados obtenidos, se obtendrán las conclusiones del trabajo realizado y se propondrán líneas futuras de trabajo, finalizando este trabajo citando toda la bibliografía utilizada para su realización. 9
17 Programación de operaciones y el problema de programación de talleres Capítulo 1. Programación de operaciones y el problema de programación de talleres Este capítulo está dedicado a la definición del problema de programación de talleres u operaciones con enrutamiento flexible (job shop scheduling problem). Este es el problema sobre el que se va a aplicar el sistema de programación de operaciones basado en subastas. El capítulo se estructura como sigue: primero se define el problema de programación de operaciones aplicado al entorno de fabricación; después se explican los tipos más importantes de configuraciones en entornos productivos, que van a originar los tipos fundamentales de problemas en programación de la producción; a continuación, se clasifican los principales tipos de problemas de este tipo describiendo una de las propuestas de notación más utilizada en este ámbito; seguidamente se realiza una definición formal de los problemas de programación de talleres simples y con enrutamiento flexible; y, por último, se estudia el concepto de complejidad computacional, aplicándolo posteriormente a estos problemas. 11
18 Capítulo Programación de operaciones El término programación de operaciones (scheduling) se refiere a la búsqueda de programas de producción óptimos o cercanos al óptimo, sujetos a una serie de restricciones. Este problema puede aplicarse en distintos ámbitos: en gestión de producción trata de programar las operaciones de fabricación asignándolas a unas determinadas máquinas; en gestión de proyectos se programan las fases de realización del proyecto asignando cada uno a los distintos equipos y recursos; en informática versa sobre la ejecución de programas asignando los recursos de memoria y del procesador; o en logística, donde el transporte de materiales es asignado a los distintos medios de transporte y personal (Pinedo 2009). La programación de operaciones permite: (1) proporcionar visibilidad del sistema de modo que se pueda conocer de antemano cual va a ser la capacidad utilizada o los medios a usar, permitiendo tomar decisiones adecuadas; (2) proporcionar grados de libertad para poder modificar el propio programa adaptándolo a las circunstancias cambiantes, previendo ciertas holguras en los elementos más críticos; y por último, (3) aportar una función de control, permitiendo evaluar el trabajo realizado en producción (el programa sirve como referencia para comparar con el resultado obtenido finalmente, por lo que es importante que el programa sea lo más realista posible). En general, muchos de los problemas que aparecen en programación de operaciones son complejos. El origen de esta dificultad proviene de: (1) la complejidad de los cálculos: un problema de programación de la producción se caracteriza por su naturaleza combinatoria, que hace que la búsqueda de soluciones óptimas para problemas grandes sea una labor inabordable en tiempo razonable; (2) la naturaleza distribuida del problema: se trata, en efecto de repartir n tareas entre varios recursos, pudiendo existir dependencias entre ellos; (3) el número de restricciones: el problema está sometido a una serie de restricciones que pueden ser numerosas. Estas restricciones pueden tener naturaleza física (restricciones funcionales de una máquinaherramienta, de una tarea a ejecutar,...) o temporal (como la fecha de fin de un trabajo, duración de tratamiento de una operación o el tiempo de cambio de herramienta de una máquina,...). En el entorno de fabricación, la programación de operaciones consiste en asignar recursos (máquinas, herramientas o personas), a los trabajos a realizar, fijando sus fechas de comienzo, de forma que se consiga un funcionamiento óptimo o suficientemente bueno del sistema de fabricación. Se trata del nivel más bajo de 12
19 Programación de operaciones y el problema de programación de talleres planificación (planificación a muy corto plazo) dentro del proceso de planificación de la producción en la empresa. Puede verse como una fase de preparación de las actividades productivas, después de la planificación maestra y del cálculo de necesidades. El resultado es una asignación y un calendario. En el caso más general la programación de operaciones requerirá de tres procesos (Companys 1989): Asignación o carga: de las operaciones a los centros de trabajo. Secuenciación: de las operaciones asignadas a un centro de trabajo estableciendo en qué orden van a ser ejecutadas. Temporización: determinación de los momentos de comienzo y de fin de cada operación. Independientemente de la configuración del entorno de producción que se esté estudiando, un problema de programación de operaciones puede ser descrito utilizando la siguiente estructura (Pinedo 2009): Un conjunto de recursos: hace referencia a las máquinas, personas e instalaciones que permiten realizar una determinada actividad. Son los sistemas físicos o lógicos que son capaces de realizar las operaciones de proceso sobre los trabajos. Un conjunto de trabajos, compuestos por una serie de operaciones que necesitan de los recursos para poder ser procesados. Unas restricciones, que son un conjunto de condiciones a satisfacer. Las restricciones pueden hacer referencia a: Los recursos: principalmente referidas a su configuración y su capacidad. Las operaciones: las principales son restricciones de sucesión y de localización temporal. Restricciones de sucesión: existe una restricción de sucesión entre dos tareas T1 y T2, si la operación T1 no puede comenzar antes de que finalice la operación T2. Se denota por T1>T2. Restricción de localización temporal: hay una restricción de localización temporal para una tarea i cuando la fecha de su ejecución t i está limitada inferiormente (t i >α), superiormente (t i <β) o las dos a la vez (α<t i <β) donde α y β son las fechas límites. 13
20 Capítulo 1 Una función objetivo: es la función a evaluar y cuyo valor se quiere optimizar. Los criterios generales más frecuentemente utilizados son la minimización de la duración total de fabricación, de los tiempos de inactividad de las máquinas, del coste de la programación de la producción (p.e. el número de productos en curso puede llevar a costes de almacenamiento suplementarios) o incluso de los retrasos incurridos. En ciertos casos particulares, pueden ser necesarios criterios más específicos como, por ejemplo, la minimización del efecto de cuello de botella producido por un recurso. Se puede encontrar una descripción detallada del problema, de su desarrollo y de las principales técnicas de resolución en Brucker (2007), Blazewicz et al (2007) y Pinedo (2008, 2009) Configuraciones del entorno de fabricación y su influencia en la programación Dentro del ámbito de la fabricación, el abanico de configuraciones distintas que se puede encontrar es muy amplio. Puede ir desde un caso tan simple como secuenciar un conjunto de tareas sobre una máquina determinada, hasta entornos más complejos como el job shop donde varias tareas relacionadas mediante precedencias han de ser programadas en distintas máquinas y donde pueden existir rutas alternativas. Entre esos extremos se sitúan problemas con una cierta complejidad donde existen varias máquinas iguales trabajando en paralelo, o casos algo más complicados como el que resulta de programar un conjunto de trabajos sobre un sistema configurado en varias etapas, donde todas las tareas deben ser procesadas en las mismas máquinas y con una secuencia igual (flow shop). Las configuraciones productivas están asociadas al tipo de producto que se produce, a su variedad y al volumen de producción. De acuerdo con Cuatrecasas (2009), existe una relación directa entre el tipo de producto y el proceso donde se fabrica. Los principales tipos de proceso son: el funcional por lotes y su variante por puestos fijos, por una parte, y la producción en flujo o cadena y su variante en flujo continuo, por otra. La otra variable a analizar es el volumen producido y la variedad. Se puede distinguir entre producción de volúmenes muy bajos y variedad muy elevada, o de productos estandarizados producidos en grandes volúmenes. 14
21 Programación de operaciones y el problema de programación de talleres Es posible realizar una matriz combinando las dimensiones de proceso y volumen de producción, que es la llamada matriz producto-proceso (Figura 1). En esta matriz, inicialmente desarrollada por Hayes y Wheelwright (1979), la combinación producto y proceso da lugar a una diagonal. Figura 1. Matriz producto-proceso convencional (Cuatrecasas 2009) Dentro de la matriz producto-proceso convencional, se define los siguientes tipos de producción (Cuatrecasas 2009): Producción en flujo continuo: en esta modalidad cada máquina y equipo están diseñados para realizar siempre la misma operación. Suelen ser procesos automatizados donde el ítem que procesa una máquina es suministrado por la máquina precedente. Se pretende obtener un gran volumen de producción, de una gran calidad y a un coste muy bajo. Por el contrario, la variedad de los productos es pequeña, y el diseño es muy estandarizado. En esta configuración la programación de operaciones se limita a la determinación del tiempo de funcionamiento de la línea. Producción en flujo o cadena (flow shop): es un sistema de producción orientado a producto. Esta modalidad se adopta cuando se deben fabricar lotes grandes de pocos productos diferentes, pero técnicamente homogéneos, usando para ello las mismas instalaciones. Se trata de productos cuyo proceso de 15
22 Capítulo 1 obtención en el centro de trabajo requiere una secuencia similar de operaciones, aunque algunos de ellos puedan necesitar alguna operación diferente. Los puestos de trabajo y sus máquinas y equipos se disponen siguiendo el flujo de operaciones que sigue el producto. Los equipos suelen estar especializados para el tipo de operación y de producto y se hallan dedicados por completo a los mismos. En esta configuración, la programación de operaciones consiste en determinar la secuencia de entrada a la cadena. Producción funcional por lotes: en este caso el producto ya no es a medida, sino que se dispone de una gran variedad de versiones entre las que ha de elegir el consumidor. Los lotes suelen ser de un volumen mayor, incluso muy grandes. La distribución en planta está orientada al proceso: recorridos diversos y largos para el producto, muchas actividades de manipulación y transporte, altas esperas de productos en colas y volúmenes importantes de stock. Esto hace que aparezcan muchas actividades sin valor añadido (tiempos largos de proceso, stock ). En este caso la programación de operaciones abarca los procesos de asignación o carga (si existe la posibilidad de realizar la tarea en más de una máquina), secuenciación y temporización. Producción funcional a medida (job shop): en este tipo de configuración se producen lotes más o menos pequeños de una amplia variedad de productos de poca o nula estandarización. Los equipos de producción estarán poco especializados. La distribución de planta suele estar orientada al proceso, es decir, los equipos suelen agruparse en talleres o centros de trabajo según la función que desarrollan. Suelen ser versátiles y permiten ejecutar operaciones diversas. Es habitual que exista una cartera de pedidos pendientes (con el consecuente alargamiento de los plazos de entrega) y gran cantidad de stocks de materiales y trabajos en curso. Este tipo de producción acarrea fuertes desequilibrios, se crean cuellos de botella en determinados puestos de trabajo y se acumula mucho material en las colas internas. Al igual que en el caso anterior, la programación de operaciones abarca la asignación, secuenciación y temporización. En la actualidad, las nuevas tendencias en gestión de los sistemas productivos en el marco de la producción ajustada han hecho que se rompa el principio de la diagonal. Nuevos modelos pretenden abarcar eficientemente las características de competitividad: calidad, tiempo y coste, de los tipos de producción en línea; y la flexibilidad, la funcionalidad y alta variación de producto, características propias de los entornos enfocados a proceso. Estos nuevos tipos de gestión se encuentran fuera de 16
23 Programación de operaciones y el problema de programación de talleres la diagonal que aparecía en la matriz producto-proceso original (Figura 2). Algunos de estos nuevos conceptos son: La producción lean o ajustada: ha aportado nuevas y avanzadas formas de gestionar los sistemas productivos tratando de alcanzar dos objetivos de forma simultánea. Por una parte, persigue reducir al máximo el empleo de recursos y el número de actividades necesarias para realizar la producción, utilizando procesos con orientación al producto (zona inferior de la matriz productoproceso). Por otra, busca lotes de producción pequeños y elevada variación de producto para alcanzar una mayor flexibilidad (zona izquierda de la matriz producto-proceso) (Womack et al 2007). Sistemas de fabricación flexible (FMS - flexible manufacturing systems): se trata de sistemas altamente automatizados, que permiten alcanzar altos niveles de utilización y eficiencia, manteniendo la flexibilidad de los equipos poco especializados. Por sus bajos tiempos de preparación estos sistemas son adecuados para producciones de pequeños lotes, que permiten cambiar rápidamente a distintas variantes del producto. La configuración de estos sistemas va desde la más cercana a las cadenas de producción (pero incorporando fabricación y no sólo de montaje), a las configuraciones de taller (Vollmann et al 1997). Dada la flexibilidad de estas nuevas configuraciones, se utilizan los tres procesos de programación de operaciones: asignación, secuenciación y temporización. Figura 2. Matriz producto-proceso completa (Cuatrecasas 2009) 17

References: RESOLUCIÓN 
 RESOLUCIÓN 
 RESOLUCIÓN 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución