You are on page 1of 97

Algoritmos de planificación basados en restricciones para la sustitución de componentes defectuosos

Irene Barba Rodríguez, 48861238S irenebr@us.es

Supervised by Prof. Dr. Carmelo del Valle Sevillano

Thesis project submitted to the Department of Computer Languages and Systems of the University of Sevilla in partial fulfilment of the requirements for the degree of Ph.D. in Computer Engineering. (Research report)

Índice general
1. Introducción 1.1. Estado del arte de los temas estudiados . . . . . . . . . . . . . . . . . . . 1.1.1. Programación con restricciones . . . . . . . . . . . . . . . . . . 1.1.2. Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.4. Planes de mantenimiento y reparación de sistemas . . . . . . . . 1.2. Nuestras propuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Un Modelado CSP para Planes de Reparación. . . . . . . . . . . 1.2.2. Un Modelado del JSSP para Búsqueda Local Basada en Restricciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 4 5 5 5 5 6 7 7 8 9 9 10 10 10 12 12 14 16 18 18 19 19 19 20 21 21 22 22 23 23 24 24 26

2. Hipótesis y objetivos 2.1. Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Trabajo relacionado 3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Programación con Restricciones . . . . . . . . . . . . . . . . . . . . . . 3.2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Modelado del Problema como un CSP . . . . . . . . . . . . . . . 3.2.3. Resolución del CSP . . . . . . . . . . . . . . . . . . . . . . . . Algoritmos de búsqueda . . . . . . . . . . . . . . . . . . . . . . Técnicas de consistencia . . . . . . . . . . . . . . . . . . . . . . Técnicas híbridas . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4. Heurísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ordenación de variables . . . . . . . . . . . . . . . . . . . . . . Ordenación de valores . . . . . . . . . . . . . . . . . . . . . . . 3.2.5. CSP Temporales . . . . . . . . . . . . . . . . . . . . . . . . . . Razonamiento temporal cualitativo . . . . . . . . . . . . . . . . Razonamiento temporal métrico . . . . . . . . . . . . . . . . . . Combinación de razonamientos cualitativo y métrico . . . . . . . Algoritmos eficientes para CSPs temporales . . . . . . . . . . . . 3.3. Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Definición del Job Shop Scheduling Problem . . . . . . . . . . . Grafo disyuntivo . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones objetivo . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Camino Crítico . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4. Programación matemática . . . . . . . . . . . . . . . . . . . . . 3.3.5. Heurística basada en cuellos de botella (Shifting Bottleneck Heuristic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.6. Programación con restricciones . . . . . . . . . . . . . . . . . .
I

. . . . . . . . . . . . . . . . . . . . . . .

. 26 . 28

II

ÍNDICE GENERAL
3.3.7. Métodos heurísticos . . . . . . . . . . . . . . . . . . . . . . . . Reglas de prioridad básicas . . . . . . . . . . . . . . . . . . . . . Beam Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2. Classical Planning . . . . . . . . . . . . . . . . . . . . . . . . . Representación . . . . . . . . . . . . . . . . . . . . . . . . . . . Técnicas de resolución . . . . . . . . . . . . . . . . . . . . . . . 3.4.3. HTN Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4. Procesos de Decisión de Markov . . . . . . . . . . . . . . . . . . 3.4.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . Planificación del mantenimiento y la reparación de sistemas . . . . . . . 3.5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2. Mantenimiento de sistemas . . . . . . . . . . . . . . . . . . . . . Mantenimiento preventivo . . . . . . . . . . . . . . . . . . . . . Sustitución/reparación de componentes defectuosos . . . . . . . . Diagnosis basada en modelos . . . . . . . . . . . . . . . . . . . 3.5.3. Planificación del proceso de desconexión y recomposición del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.4. Representación mediante grafos And/Or . . . . . . . . . . . . . . 3.5.5. Métodos de programación matemática . . . . . . . . . . . . . . . 3.5.6. Planificadores adaptables . . . . . . . . . . . . . . . . . . . . . . 3.5.7. Métodos de Inteligencia Artificial . . . . . . . . . . . . . . . . . 3.5.8. Redes de Petri . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.9. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un Modelado CSP para Planes de Reparación . . . . . . . . . . . . . . . 3.6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2. El problema de la planificación en reparación . . . . . . . . . . . 3.6.3. El modelado CSP . . . . . . . . . . . . . . . . . . . . . . . . . . Variables del CSP . . . . . . . . . . . . . . . . . . . . . . . . . . El grafo And/Or extendido . . . . . . . . . . . . . . . . . . . . . Tipos de restricciones . . . . . . . . . . . . . . . . . . . . . . . . 3.6.4. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . 3.6.5. Conclusiones y trabajo futuro . . . . . . . . . . . . . . . . . . . Un Modelado del JSSP para Búsqueda Local Basada en Restricciones . . 3.7.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2. Definición del Problema . . . . . . . . . . . . . . . . . . . . . . 3.7.3. Búsqueda Local Basada en Restricciones . . . . . . . . . . . . . 3.7.4. Nuestra Propuesta . . . . . . . . . . . . . . . . . . . . . . . . . El Modelado CSP . . . . . . . . . . . . . . . . . . . . . . . . . . Detección de Ciclos . . . . . . . . . . . . . . . . . . . . . . . . Vecindarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . El algoritmo parametrizado . . . . . . . . . . . . . . . . . . . . . 3.7.5. Resultados Experimentales . . . . . . . . . . . . . . . . . . . . . 3.7.6. Conclusiones y Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 30 32 32 32 32 33 35 36 37 39 39 40 40 42 43 43 44 46 47 48 48 49 50 50 51 53 54 56 59 62 62 64 64 64 65 65 65 67 69 72 73 74

3.4.

3.5.

3.6.

3.7.

4. Conclusiones 79 4.1. Conclusiones obtenidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Índice de figuras
3.1. 3.2. 3.3. 3.4. Problema de coloración del mapa . . . . . . . . . . . . . . . . . . . . . . . Un grafo disyuntivo para problemas Job Shop . . . . . . . . . . . . . . . . Ratio de ocurrencia de fallos en un sistema ROCOF . . . . . . . . . . . . . Diagrama de las etapas para la sustitución/reparación de componentes defectuosos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. El grafo And/Or para el sistema ABCDE . . . . . . . . . . . . . . . . . . . 3.6. Red de Petri que representa una operación elemental de desconexión (a) antes de la ejecución de la acción y (b) después de la ejecución de la acción 3.7. El grafo And/Or de ensamblaje para el sistema ABCDE . . . . . . . . . . . 3.8. El grafo And/Or simplificado de desensamblaje para el sistema ABCDE cuando la pieza defectuosa es D . . . . . . . . . . . . . . . . . . . . . . . 3.9. El grafo And/Or simplificado de reparación para el sistema ABCDE cuando la pieza defectuosa es D . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10. El grafo And/Or de reparación extendido y simplificado para la sustitución de la pieza D en el producto ABCDE cuando se consideran todos los planes de desensamblaje posibles . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11. El grafo And/Or de reparación extendido y simplificado para la sustitución de la pieza D en el producto ABCDE cuando se considera un solo plan de desensamblaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12. Un grafo disyuntivo para el problema Job Shop. . . . . . . . . . . . . . . . 3.13. Ejemplo de una solución satisfactible . . . . . . . . . . . . . . . . . . . . . 3.14. Ejemplos de ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.15. Un ciclo en un grafo disyuntivo . . . . . . . . . . . . . . . . . . . . . . . . 3.16. Casos para la prueba del teorema 1 . . . . . . . . . . . . . . . . . . . . . . 3.17. Intercambios posibles para una variable v . . . . . . . . . . . . . . . . . . 3.18. Intercambios permitidos para δ = 2 . . . . . . . . . . . . . . . . . . . . . 3.19. Intercambio entre variables . . . . . . . . . . . . . . . . . . . . . . . . . . 3.20. El algoritmo de búsqueda local parametrizado . . . . . . . . . . . . . . . . 11 24 41 42 45 49 52 54 55

57

58 65 67 68 68 70 71 71 72 73

III

IV

ÍNDICE DE FIGURAS

Índice de cuadros
3.1. Matriz de transición para el grafo And/Or de la figura 3.5 . . . . . . . . . 3.2. Número de nodos And/Or y planes para cada problema . . . . . . . . . . 3.3. Conjunto de restricciones de tipo (1) para el grafo And/Or de reparación de la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Conjunto de restricciones de tipos (2) y (3) para el grafo And/Or de reparación de la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Conjunto de restricciones de tipo (4) para el grafo And/Or de reparación de la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Conjunto de restricciones de tipo (5) para el grafo And/Or de reparación de la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7. Conjunto de restricciones de tipo (6) para el grafo And/Or de reparación de la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8. Resultados Comparativos (cualidad de las soluciones) . . . . . . . . . . . 3.9. Resultados comparativos (tiempo de ejecución) . . . . . . . . . . . . . . 3.10. Resultados sobre un conjunto de instancias JSS . . . . . . . . . . . . . . . 46 . 54 . 60 . 75 . 76 . 76 . . . . 76 76 77 78

V

VI

ÍNDICE DE CUADROS

Agradecimientos
En primer lugar quiero agradecer a Carmelo su buena disposición, paciencia y apoyo en todo momento, sin el cual este trabajo no hubiera sido posible. A mi familia por estar siempre ahí cuando los necesito, en especial a mis padres, a Dani, a Josefi, y a mis tres niños Rocío, Sara y Dani JR, que consiguen siempre sacar lo mejor de mí. Dar las gracias también a mis amigos por su compañía y comprensión, en especial a Diana y a Javi por brindarme tan buenos momentos y hacer del trabajo una diversión. Por último, y no por ello menos importante, a Rafa, gracias por hacerme la vida más fácil y agradable cada día.

VII

VIII

ÍNDICE DE CUADROS

Abstract
En la sociedad actual existe un ritmo incesante de producción y trabajo cuyo correcto funcionamiento depende en gran medida de la coordinación compleja de personal y sistemas de diversos tipos. Un fallo en cualquiera de ellos puede dar lugar a grandes pérdidas de distinta naturaleza, por lo que el tiempo de reacción ante un error es un factor fundamental a tener en cuenta en cualquier sistema. En el presente trabajo se consideran sistemas formados por un conjunto de componentes que pueden fallar de forma inesperada. Una vez realizada la diagnosis de un sistema y determinados los componentes defectuosos, es necesario proceder a su reparación o sustitución. Para ello es preciso realizar el desmontaje del sistema hasta aislar los componentes defectuosos, y tras su sustitución o reparación, la recomposición del mismo. Aunque puede parecer que los procesos de separación y composición de sistemas son muy similares, sus diferencias físicas y operativas hacen que deban considerarse por separado. La planificación del desensamblado ha ganado mucha atención en los últimos años debido a su papel en la recuperación de productos, como la remanufactura y el reciclado de productos. Un objetivo a perseguir es que el proceso global de reparación sea óptimo, escogiéndose la secuencia de tareas más adecuada. Planteado el problema de la selección de secuencias de separación y recomposición como un problema conjunto de planificación y scheduling, en el que hay que determinar por un lado el conjunto de tareas que componen la solución óptima dentro de un conjunto de tareas alternativas, y por otro la determinación de los tiempos de ejecución de las mismas, se han usado diferentes técnicas para resolverlo. En la última década se han realizado importantes avances en la resolución de problemas de scheduling mediante técnicas de satisfacción de restricciones, modelando el problema a partir de redes de restricciones temporales, y en menor medida, incluyendo la posibilidad de selección de tareas a partir de un conjunto de alternativas posibles. El presente documento es el resultado de un estudio detallado de las áreas relacionadas con el tema que nos ocupa, incluyendo Programación con Restricciones, Scheduling, Planificación, y Planes de Mantenimiento y Reparación de Sistemas. Como fruto de este estudio se han realizado dos artículos que han sido publicados y a los que se les dedica dos secciones. Para terminar, se incluye un capítulo que contiene las conclusiones obtenidas tras el estudio realizado y algunas ideas consideradas interesantes para la realización de trabajos futuros.

1

2

ÍNDICE DE CUADROS

Capítulo 1

Introducción
La motivación principal del presente trabajo es la realización de un estudio en profundidad de varios campos relacionados con el tema que nos ocupa: la generación de algoritmos de planificación para la sustitución o reparación de componentes defectuosos, optimizando en general alguna o algunas funciones objetivo. Para la propuesta de dichos algoritmos, se propone la programación con restricciones, que es un paradigma ampliamente estudiado que se presenta en la sección 3.2. Dicho paradigma es adecuado para modelar y resolver este tipo de problemas dada la flexibilidad y simplicidad que ofrece. En problemas de planificación existen dos grandes áreas, denominadas scheduling (sección 3.3) y planificación (sección 3.4), que se combinan en muchos casos, entre ellos en el problema de la sustitución de componentes defectuosos. Por otro lado, para disminuir la probabilidad de ocurrencia de errores, es importante realizar tareas de mantenimiento del sistema durante su tiempo de vida, idea que se expone en la sección 3.5. Además del presente capítulo de introducción, el presente trabajo consta de otros 3 capítulos que se exponen a continuación: Hipótesis y objetivos: Se establece como hipótesis de partida la adecuada combinación de varias áreas para conseguir así los objetivos que se persiguen. Trabajo relacionado: Engloba el estado del arte de las áreas de investigación relacionadas con el presente trabajo, incluyendo los aspectos y los trabajos más relevantes de cada una de ellas. También incluye la descripción de los trabajos realizados y que han sido publicados. Conclusiones: Se realiza una valoración del trabajo realizado, exponiendo un resumen de las conclusiones obtenidas. También se detallan algunas ideas que se consideran interesantes para la realización de trabajos futuros. El capítulo 3 es el más extenso, por lo que se considera adecuado presentar brevemente el contenido de cada una de las secciones que lo componen, las cuales se pueden englobar en 2 grandes bloques: Estado del arte de los temas estudiados y Nuestras propuestas.

1.1. Estado del arte de los temas estudiados
Cuando se desea realizar un trabajo de investigación, es fundamental el estudio del estado del arte de los temas relacionados. Gracias a ello, conseguimos la formación adecuada, podemos conocer las debilidades y fortalezas de otros trabajos, reutilizar ideas que nos ayuden en nuestra investigación, etc. En los siguientes apartados se presenta brevemente el contenido de cada uno de los temas desarrollados. 3

4

CAPÍTULO 1. INTRODUCCIÓN

1.1.1. Programación con restricciones
La programación con restricciones es una tecnología ampliamente utilizada en la resolución de multitud de problemas de diversas áreas, incluyendo problemas de planificación y scheduling. En la programación con restricciones se consideran básicamente dos tipos de problemas: problemas de satisfacción de restricciones (Constraint Satisfaction Problem, CSP) y problemas de optimización (Constraint Optimization Problem, COP). En CSPs, la solución se obtiene cuando de consigue una asignación de valores a las variables que cumple todas las restricciones, mientras en COPs se busca además que optimice una determinada función objetivo. La resolución de un problema mediante programación con restricciones consta de dos etapas claramente diferenciadas. En primer lugar es necesario realizar el modelado del problema, fase en la que se definen las variables, el dominio para cada una de ellas y las restricciones que las relacionan. Esta fase es muy importante puesto que, en general, tiene una gran influencia en la bondad de la solución obtenida y en el coste necesario para su obtención. Una vez modelado el problema, la segunda etapa consiste en aplicar algún mecanismo de resolución para conseguir la solución requerida. Existen multitud de estrategias, la mayoría de las cuales se pueden englobar en algoritmos de búsqueda, técnicas de consistencia y técnicas híbridas. En la sección 3.2 se detallan los aspectos más relevantes de cada una de ellas, destacando las ventajas e inconvenientes y el marco más adecuado de aplicación. Como último apartado se describen brevemente los CSP temporales, que se consideran interesantes desde el punto de vista de problemas de planificación y scheduling y, por lo tanto, para el presente trabajo.

1.1.2. Scheduling
El área denominada Scheduling engloba a multitud de problemas en los que es necesario determinar un plan de ejecución para un conjunto de tareas, que pueden estar relacionadas entre sí por restricciones de precedencia. Por otro lado, la ejecución de cada tarea está vinculada al uso de uno o varios recursos, de forma que varias tareas pueden entrar en conflicto por el uso compartido de recursos. De esta forma, la resolución del problema consiste en obtener un plan de ejecución que, satisfaciendo tanto las restricciones de precedencia como las de recursos, optimice alguna función objetivo, que suele estar relacionada con el tiempo. En la mayoría de los casos esta función objetivo es el makespan o tiempo de finalización de la última operación realizada. El Job Shop Scheduling Problem (JSSP) es un problema concreto de Scheduling en el que las tareas están agrupadas por trabajos, que son los que establecen las relaciones de precedencia. Cada trabajo está formado por una secuencia de tareas, de forma que una tarea no puede comenzar hasta que no haya finalizado la ejecución de su predecesora. Otra particularidad de este tipo de problemas es que para la ejecución de cada tarea se necesita un solo recurso. Una vez que se obtiene un plan para un JSSP, si se desea minimizar el makespan, el análisis del camino crítico (sección 3.3.3) es fundamental para obtener gran cantidad de información acerca de las operaciones (holgura, etc) y, por tanto, de los cambios prometedores que se deben realizar para conseguir el objetivo perseguido. Existen multitud de propuestas para resolver el JJSP. Entre las más conocidas y referenciadas se encuentran: programación disyuntiva, heurísticas basadas en cuello de botella, programación con restricciones y métodos heurísticos, las cuales de exponen en la sección 3.3.

1.2. NUESTRAS PROPUESTAS

5

1.1.3. Planificación
La resolución de un problema de planificación lleva asociado, en general, la generación de una secuencia de tareas cuya ejecución da lugar a la obtención de un objetivo perseguido. En la mayoría de los casos se parte de un estado inicial, y se establece como objetivo un estado final. Para cambiar de un estado a otro se cuenta con un conjunto de operaciones que hacen que el sistema vaya evolucionando a medida que se realizan dichas operaciones. Para resolver este tipo de problemas es necesario la selección de las operaciones correctas en el orden adecuado. Existen ciertos problemas en los que se persigue además la optimización de alguna función objetivo, de forma que existen varias alternativas para llegar al estado final y se debe seleccionar la que dé lugar al plan óptimo. En la sección 3.4 se detallan algunos tipos de problemas de planificación considerados relevantes, incluyendo Classical Planning y técnicas basadas en Hierarchical Task Network. También se incluyen técnicas de Procesos de Decisión de Markov, que pueden ser utilizadas para modelar y resolver problemas de planificación. Por último, se resumen algunas conclusiones que incluyen una breve descripción de problemas que engloban tanto planificación como scheduling.

1.1.4. Planes de mantenimiento y reparación de sistemas
Durante el tiempo de vida de un sistema, pueden ocurrir errores en su funcionamiento debido a muchos factores, entre los que se encuentran el deterioro de los subsistemas que lo componen. Una estrategia utilizada para ralentizar dicho deterioro consiste en llevar a cabo un plan de mantenimiento preventivo que conlleva la ejecución de distintas tareas, tales como limpieza, supervisión, ajustes, etc. Este plan de mantenimiento, en general, lleva asociado un coste temporal y económico que debe ser compensado con la reducción del coste por errores, por lo que es necesario encontrar un balance adecuado entre tareas de producción y tareas de mantenimiento del sistema. Por otro lado, una vez que se detecta un error en uno de los componentes del sistema, es necesario proceder a su reparación o sustitución. Para llevar esto a cabo, en primer lugar se requiere el aislamiento del componente defectuoso, lo que necesita un plan de desensamblaje adecuado, en el que generalmente se buscará la optimización de factores como el tiempo, el coste, etc. Una vez el componente es reparado o sustituido, se pasa a la etapa de conexión para conseguir nuevamente el sistema en buen estado. En la sección 3.5 se aborda el problema del mantenimiento de sistemas, centrado en la planificación de las etapas de desconexión y recomposición del sistema cuando se detecta un error. Se describen aspectos relacionados con dichas etapas, tales como los grafos And/Or para la representación de todas las secuencias posibles de tareas de desconexión/ recomposición, algunos métodos de programación matemática y de inteligencia artificial para obtener el plan de desnsamblaje que optimice alguna función objetivo, etc. Al final de la sección se presentan algunas conclusiones acerca de los trabajos relacionados realizados y las líneas que se consideran prometedoras para trabajos futuros.

1.2. Nuestras propuestas
En esta sección se presentan dos trabajos realizados que están íntimamente relacionados con el tema central del presente trabajo.

1.2.1. Un Modelado CSP para Planes de Reparación.
En la sección 3.6 se describe uno de los trabajos realizados que ha sido publicado en la revista Journal of Intelligent Manufacturing [109]. Se propone un modelado CSP y un

6

CAPÍTULO 1. INTRODUCCIÓN

mecanismo de resolución para el problema de la planificación del proceso de reparación de un componente defectuoso, que ha sido previamente detectado. El sistema se considera formado por un conjunto de componentes, y se cuenta con una serie de máquinas para realizar las tareas, cada una de las cuales puede trabajar con diversas configuraciones, requiere un tiempo de ejecución, y actúa sobre unos submontajes concretos. Se considera tanto el proceso de desensamblaje para aislar la pieza defectuosa, como el proceso de ensamblaje para dar lugar al producto completo. Ambas etapas se representan mediante un grafo And/Or en el que es posible observar las secuencias posibles de tareas que formarán el plan de reparación. El objetivo perseguido es la obtención de un plan de reparación que optimice el tiempo de ejecución, teniendo en cuenta las restricciones de precedencia y de recursos compartidos. En el problema propuesto se consideran operaciones auxiliares, tales como cambios en la configuración de una máquina y transportes de los subensamblajes de una máquina a otra. Todo esto se engloba en el modelado CSP propuesto. Para obtener el plan óptimo es necesario tanto seleccionar las tareas necesarias (planificación) como ordenarlas, resolviendo los conflictos que puedan surgir por el uso compartido de recursos (scheduling). Para evaluar la propuesta se presentan algunos resultados experimentales en los que se realiza una comparativa del método propuesto con un planificador genérico y con un algoritmo realizado en un trabajo previo.

1.2.2. Un Modelado del JSSP para Búsqueda Local Basada en Restricciones.
Este trabajo ha sido presentado en el workshop internacional Iberamia 2008 Workshop on Planning, Scheduling and Constraint Satisfaction [9]. Se aborda el Job Shop Scheduling Problem (JSSP), que es un problema de Scheduling en el que las tareas se encuentran agrupadas en trabajos, que son los que establecen las relaciones de precedencia. Un trabajo está formado por una secuencia de tareas que deben ejecutarse en un orden establecido, de forma que la ejecución de una tarea no puede comenzar hasta que su predecesora haya terminado. Por otro lado, se cuenta con un conjunto de recursos compartidos que deben ser gestionados convenientemente para una correcta ejecución de las operaciones, al mismo tiempo que se debe minimizar el makespan o tiempo de finalización del proyecto completo. Se presenta un modelado CSP simple y compacto, el cual permite trabajar con todas las restricciones del problema usando sólo dos tipos de relaciones, alldifferent e increasing. Para resolver el CSP se propone un algoritmo de búsqueda local que en cada iteración intenta mejorar el resultado actual. Por último, se exponen algunos resultados experimentales, que incluyen comparativas entre la propuesta realizada y uno de los mejores métodos para resolución de JSSP conocidos.

Capítulo 2

Hipótesis y objetivos
2.1. Hipótesis
Los trabajos de investigación que se plantean a partir del presente documento, se basan principalmente en la combinación de varias áreas de investigación muy referenciadas y exploradas individualmente, que engloban multitud de trabajos relevantes y prometedores que presentan, en general, resultados válidos y ampliables. En el presente trabajo se considera un sistema formado por un conjunto de componentes relacionados de alguna forma: dependencia económica, estructural o estocástica. Cuando se detecta un comportamiento anómalo del sistema y se diagnostica el/los componente/s defectuoso/s, es necesario proceder a la reparación o sustitución de los mismos. En primer lugar, se procede al aislamiento del componente defectuoso mediante operaciones de desconexión, tras lo cual se repara o sustituye dicho componente. A continuación es necesario volver a conectar los componentes para dar lugar al sistema completo funcionando correctamente. En general, se persigue realizar todo el proceso optimizando alguna función objetivo, como el tiempo de ejecución del plan resultante. Para dar lugar al objetivo perseguido, en la mayoría de los casos, es necesario analizar un conjunto de tareas que actúan sobre los componentes del sistema. Dicho análisis engloba el estudio de multitud de factores de forma conjunta: por un lado es necesario seleccionar un conjunto de tareas, de entre todas las posibles, que den lugar al objetivo perseguido (planificación), por otro lado, en general, dichas tareas realizarán un uso compartido de recursos, lo que puede dar lugar a que dos o más tareas requieran el mismo recurso al mismo tiempo, siendo necesario determinar el orden de ejecución de la mismas (scheduling). Existen multitud de propuestas para resolver problemas de planificación, problemas de scheduling, y problemas que engloban ambas áreas. En el siguiente capítulo, más concretamente en las secciones 3.3 y 3.4, se realiza un estudio que se considera adecuado acerca de ambos paradigmas. Por otra parte, la programación con restricciones es una tecnología ampliamente utilizada para resolver problemas de distinta naturaleza, incluyendo problemas de planificación y scheduling. Es por ello que en el siguiente capítulo, más concretamente en la sección 3.2, se realiza un estudio acerca de dicha tecnología y sus aplicaciones. Es importante destacar que el mantenimiento de un sistema es un aspecto fundamental para el correcto funcionamiento del mismo. Dicho mantenimiento engloba tanto planes de mantenimiento enfocados a la disminución de la probabilidad de error, como planes de reparación una vez que un error es detectado, aspectos que se abordan en la sección 3.5 del siguiente capítulo. El objetivo fundamental de este trabajo es realizar un estudio amplio y adecuado que proporcione información suficiente para ser capaces de proponer, de forma satisfactoria, 7

8

CAPÍTULO 2. HIPÓTESIS Y OBJETIVOS

algoritmos de planificación basados en restricciones para la sustitución de componentes defectuosos. Se establece como base de la investigación (hipótesis) la creencia (fundamentada teóricamente) de que es posible conseguir resultados competitivos y prometedores para el mantenimiento y la reparación de sistemas a partir de modelos y algoritmos basados en restricciones adecuados para el problema. Se pretende abordar dicho problema minimizando, en general, una o varias funciones objetivos. Es importante resaltar que ya se han realizado estudios relacionados consiguiendo resultados prometedores (algunos de ellos comentados en las secciones 3.6 y 3.7 del siguiente capítulo), lo que apoya la hipótesis de partida.

2.2. Objetivos
A partir del estudio realizado en el presente trabajo se pueden plantear multitud de propuestas de diversa naturaleza acerca de los temas analizados, incluyendo trabajos acerca de aspectos del mantenimiento y la reparación de sistemas que no han sido estudiados previamente, o no han sido analizados en profundidad.Teniendo en cuenta esto, nos planteamos la persecución de los siguientes objetivos: Proponer diversos modelados CSP y enfoques algorítmicos para resolver de forma eficiente el problema de la reparación o sustitución de componentes defectuosos. Realizar un estudio acerca de distintas funciones objetivo que se pueden perseguir de forma individual o combinada (multiobjetivo) en la generación de un plan de reparación para un sistema. Algunas funciones objetivo consideradas relevantes en este ámbito son: minimizar el tiempo de cese del funcionamiento del sistema, minimizar el tiempo de reparación/sustitución de un componente defectuoso, minimizar costes, maximizar la productividad del sistema, etc. Plantear trabajos que aborden la robustez de los planes generados (capacidad de un plan para asimilar eventos inesperados que puedan ocurrir durante su ejecución), incluyendo la robustez como una función objetivo añadida que puede entrar en conflicto con otros objetivos, como el tiempo de ejecución, en cuyo caso habrá que determinar el grado de importancia de cada uno de ellos para conseguir un equilibrio adecuado. Abordar el tema del mantenimiento de sistemas como medida de prevención de errores (mantenimiento preventivo), integrando la ejecución de tareas de mantenimiento y de producción, persiguiendo, en general, optimizar alguna función objetivo. A partir de la hipótesis de partida, se pretenden conseguir los objetivos comentados previamente, siendo el presente trabajo el primer paso hacia la persecución de los mismos.

Capítulo 3

Trabajo relacionado
3.1. Introducción
En el presente capítulo se presenta el trabajo ya realizado en relación con el tema de investigación descrito en la introducción, abarcando tanto las propuestas propias como las realizadas por otros investigadores. Se divide en dos grandes bloques: Estudio del estado del arte de los temas relacionados con el tema de investigación del presente trabajo, incluyendo los apartados: Programación con Restricciones (sección 3.2), Scheduling (sección 3.3), Planificación (sección 3.4), y Planes de mantenimiento y reparación de sistemas (sección 3.5). Presentación de los trabajos propios realizados y que están íntimamente relacionados con el tema central del presente trabajo, incluyendo los siguientes apartados: Un Modelado CSP para Planes de Reparación (sección 3.6) y Un Modelado del JSSP para Búsqueda Local Basada en Restricciones (sección 3.7).

9

10

CAPÍTULO 3. TRABAJO RELACIONADO

3.2. Programación con Restricciones
3.2.1. Introducción
La programación con restricciones (Constraint Programming, CP) es una tecnología software que se utiliza para modelar y resolver gran cantidad de problemas de diversa naturaleza y que persiguen objetivos diferentes [27, 46]. Existen multitud de trabajos relacionados con dicha tecnología que comprenden distintas áreas, entre las que se encuentran parte de la inteligencia artificial, la investigación operativa, las bases de datos o los sistemas expertos. La programación con restricciones se basa en el modelado de un problema a través de un conjunto de variables y restricciones que establecen relaciones ente ellas, para posteriormente obtener una solución que satisfaga dichas restricciones. En el caso de problemas de optimización (Constraint Optimization Problem, COP) se persigue encontrar una solución que, además de satisfacer las restricciones, optimice una determinada función objetivo. La complejidad de la resolución de un problema de satisfactibilidad es, en general, NP-completa, mientras que en el caso de problemas de optimización es NP-dura. Para resolver un problema mediante programación con restricciones (Constraint Satisfaction Problem, CSP) el proceso se divide en dos etapas claramente diferenciadas: 1. Modelado del problema como un problema de satisfacción de restricciones, siendo necesaria la definición de variables, dominios para dichas variables y restricciones que las relacionan. 2. Búsqueda de solución o soluciones al CSP modelado anteriormente. Esta etapa se puede realizar haciendo uso de diversas estrategias, entre las que se encuentran algoritmos de búsqueda, técnicas de consistencia y técnicas híbridas. La idea fundamental de la programación con restricciones es separar o desvincular el modelado del problema de la resolución del mismo, de forma que el problema se especifica completamente con un modelo claro, que se puede resolver siguiendo diversas estrategias. Todos estos conceptos serán desarrollados en los apartados posteriores. Esta sección se organiza como sigue: en primer lugar (sección 3.2.2) se detallan los aspectos más importantes a tener en cuenta en la etapa de modelado del problema, seguido por los métodos de resolución de CSP considerados más relevantes (sección 3.2.3). En cuanto a la búsqueda sistemática, en la etapa de búsqueda de soluciones para un CSP, es determinante el orden en el que se analizan las variables, así como los valores para cada una de ellas, por lo que se dedica la sección 3.2.4 a la exposición de algunas heurísticas tanto de ordenación de variables como de ordenación de valores. Para concluir, teniendo en cuenta el contexto en el que se realiza el presente trabajo, se describen brevemente los CSPs temporales, aplicables a la resolución de problemas de planificación y scheduling.

3.2.2. Modelado del Problema como un CSP
Como se ha comentado en la introducción, cuando se desea resolver un problema mediante programación con restricciones, el primer paso es definir un modelado de restricciones adecuado para dicho problema. Un mismo problema, en general, puede ser modelado de distintas formas. La elección de un modelado u otro es fundamental, ya que influye, en la mayoría de los casos, de manera determinante tanto en la estrategia a seguir durante la búsqueda de la solución, como en el tiempo de ejecución requerido en la obtención de la misma. El modelado CSP para un problema está formado por una terna (X,D,C) donde: X es el conjunto de variables CSP del problema, {x1 , . . . , xn }, para n variables.

3.2. PROGRAMACIÓN CON RESTRICCIONES

11

D es el conjunto de los dominios de cada una de las variables, < D1 , . . . , Dn >, siendo Di el dominio para la variable xi . C es un conjunto finito de restricciones. Cada restricción Cj involucra a m variables (restricción m-aria, m ≥ 1) y restringe el valor que pueden tomar dichas variables de forma simultánea. De esta forma, una asignación de un valor para una variable es un par variable-valor (x, a), a ∈ Da (instanciación de una variable). Una solución para el CSP consiste en una asignación de valores permitidos a cada una de las variables que forman parte del CSP de forma que se satisfagan todas las restricciones establecidas. Un problema es consistente si existe, al menos, una solución satisfactible para el mismo. Una vez modelado un problema como un CSP, se pueden perseguir diferentes objetivos, entre los que se encuentran: Encontrar una solución cualquiera para el problema. Encontrar algunas soluciones para el problema. Encontrar todas las soluciones existentes para el problema. Encontrar la solución óptima (o una buena solución) para el problema teniendo en cuenta un criterio establecido a partir de una función objetivo (en la mayoría de los casos conseguir una solución que minimice o maximice dicha función). Encontrar las mejores soluciones para el problema según la función objetivo. Un problema clásico que se puede modelar como un CSP es el denominado problema de coloración de un mapa. Dicho problema consiste en colorear un mapa que se encuentra dividido en un conjunto de regiones, de forma que se debe asignar un color a cada una de ellas. Hay que tener en cuenta que no pueden existir dos regiones colindantes con el mismo color y que sólo se cuenta con un número determinado de colores. La formulación de dicho problema como un CSP se realiza de forma que cada región es una variable del CSP, el dominio de cada una de las variables está formado por los colores permitidos, y las restricciones existentes establecen relaciones de desigualdad entre las variables que representan a regiones colindantes. Un ejemplo para este problema se puede ver en la figura 3.1, donde se observa que el mapa está compuesto por 4 regiones y que los colores permitidos son 3, rojo (r), verde (v) y azul (a).
{r,v,a} {r,v,a}

x y x

y

z

w z
{r,v,a}

w
{r,v,a}

Figura 3.1: Problema de coloración del mapa

12

CAPÍTULO 3. TRABAJO RELACIONADO

3.2.3. Resolución del CSP
Una vez se ha realizado el modelado de un problema como un CSP, es necesario aplicar algún mecanismo de resolución para conseguir la solución o soluciones requeridas. Existen multitud de estrategias para llevar a cabo este cometido, la mayoría de las cuales se pueden englobar en alguna de las siguientes técnicas: Algoritmos de búsqueda. Se basan en la exploración del espacio de soluciones hasta encontrar una solución o probar que no existe tal solución. La búsqueda puede ser completa si el recorrido del espacio de soluciones es sistemático, o incompleta en el caso de que se utilicen algoritmos de búsqueda local en los que sólo se exploran ciertas regiones del espacio de soluciones. Técnicas de consistencia. También se denominan técnicas de inferencia, y consisten en eliminar del dominio de las variables los valores inconsistentes. Una forma de realizar esto es evolucionando desde un problema P hacia un problema P equivalente cuyo espacio de soluciones es menor, siendo por tanto más fácil de resolver. La inferencia puede ser completa si al final se llega a un problema P que tiene una solución directa, o incompleta si es necesario realizar una búsqueda para obtener la solución. Técnicas híbridas. Son técnicas que se basan en la búsqueda de la solución mediante la combinación de algoritmos de búsqueda y técnicas de inferencia. Las combinaciones búsqueda sistemática + inferencia incompleta y búsqueda sistemática + inferencia completa se comentarán en el apartado 3.2.3. Algoritmos de búsqueda Una de las formas más naturales de resolver un CSP es mediante la búsqueda en el espacio de estados del problema, que es el conjunto de todas las asignaciones posibles de las variables. Existen varias clasificaciones para los algoritmos de búsqueda. En el presente trabajo se ha optado por la división en dos grandes bloques, algoritmos de búsqueda sistemática y algoritmos de búsqueda local, aunque algunos autores distinguen entre búsqueda completa e incompleta. Se detallan a continuación. Búsqueda sistemática La búsqueda sistemática consiste en recorrer el espacio de estados hasta que se encuentre una solución o se pruebe que no existe solución. Las posibles combinaciones de la asignación de valores a las variables en un CSP da lugar a un espacio de estados que puede ser representado como un árbol o grafo de búsqueda. Cada nodo del árbol de búsqueda representa una asignación parcial de valores a un conjunto de variables. El nodo raíz del árbol de búsqueda representa el caso en el que ninguna variable se encuentra instanciada, y los nodos hojas el caso en el que todas las variables se encuentran instanciadas. Existen varios algoritmos de búsqueda sistemática, la mayoría de los cuales se basan en backtracking cronológico. En Backtracking Cronológico se realiza un recorrido (parcial o completo) en profundidad sobre el árbol, de forma que en cada uno de los nodos se comprueba si la asignación parcial realizada hasta el momento es consistente con todas las restricciones del CSP. En el caso de que en un nodo no se detecte ninguna inconsistencia, prosigue la búsqueda en profundidad. En cambio, si en un nodo se detecta alguna inconsistencia, se cambia el valor de la última variable que ha sido instanciada a otro valor no probado. En el caso que para dicha variable todos los valores den lugar a inconsistencia (situación sin salida o dead-end), se vuelve al nivel superior para proceder de la misma forma. Si estamos buscando una solución cualquiera, el algoritmo termina cuando ha llegado a un nodo hoja (solución completa), o bien cuando ha explorado todas las combinaciones posibles variable-valor sin éxito (no existe solución). En problemas de optimización, se

3.2. PROGRAMACIÓN CON RESTRICCIONES

13

suelen añadir restricciones que impliquen una mejora de la mejor solución obtenida hasta el momento. En el proceso de búsqueda, en general, el orden en el que se estudian las variables tiene una gran influencia, así como el orden de selección de valores para cada una de ellas, ya que un orden adecuado de ambas cosas puede mejorar notablemente la eficiencia. Existen diferentes tipos de heurísticas tanto para la ordenación de variables como para la selección de valores, algunas de las cuales se comentan en el apartado 3.2.4. El backtracking cronológico es un algoritmo sencillo y completo, pero en general ineficiente. Uno de los problemas que presenta es que en cada nodo sólo se estudian las relaciones entre la variable actual y las anteriores, ignorando las variables futuras. Otra deficiencia es la carencia de memoria que posee, de forma que se puede llevar a cabo el análisis innecesario de la misma situación repetidamente. Para paliar dichas deficiencias existen variantes, que se engloban principalmente en algoritmos look-back y look-ahead, que se describen en la sección 3.2.3 (técnicas híbridas). Búsqueda local La búsqueda local consiste en explorar sólo algunas regiones del espacio de estados de forma que, en general, no se garantiza el hallazgo de una solución o de la solución óptima. Los algoritmos de búsqueda local son algoritmos incompletos muy utilizados debido al alto coste que requiere una búsqueda completa. En los algoritmos de búsqueda local normalmente se suele trabajar con soluciones completas (todas las variables se encuentran instanciadas) de forma que se desea llegar a una solución que cumpla todas las restricciones (en el caso de CSP) u optimice una determinada función objetivo (en el caso de COP). Inicialmente se parte de una solución inicial, y se itera repetidas veces dirigiéndose hacia otras soluciones que intentan mejorar el valor de la función objetivo y/o reducir el número de inconsistencias. En la mayoría de los casos, estos algoritmos finalizan tras una serie de intentos o iteraciones, o cuando encuentran el óptimo (si son capaces de detectarlo). Existen muchos algoritmos de búsqueda local, cada uno de los cuales consta de un conjunto de elementos que se describen a continuación: Función objetivo: Es una función que se aplica sobre una solución completa del problema para devolver un valor numérico que indica la bondad de dicha solución. Este valor se denomina coste o beneficio de la solución, y es lo que se desea optimizar. Vecindad: Para cada una de las soluciones (completas o incompletas) se determina un conjunto de soluciones vecinas. Normalmente dicho conjunto suele estar formado por pequeñas variaciones de la solución actual que se espera mejoren la función objetivo. Criterio de selección: Es necesario seleccionar un vecino de entre todos los posibles. Esto se realiza según el criterio de selección, que suele basarse en heurísticas para seleccionar así el vecino más prometedor. Las especificaciones tanto de la vecindad como del criterio de selección tienen una gran influencia en el proceso de búsqueda. Para aplicar búsqueda local a CSPs sin optimización se pueden considerar los siguientes puntos: Cada variable puede tomar cualquier valor de su dominio. Se va iterando sobre soluciones intermedias no consistentes con las restricciones existentes. Se asocia un coste a cada restricción que no se cumpla, de forma que el óptimo (solución consistente con las restricciones) se obtiene cuando el coste es igual a 0.

14

CAPÍTULO 3. TRABAJO RELACIONADO

Existen diferentes estrategias para algoritmos de búsqueda local, destacando las siguientes: Algoritmos genéticos [77] En el presente trabajo se incluyen los algoritmos genéticos como una estrategia de búsqueda local, aunque hay autores que no lo consideran así. Dichos algoritmos parten de una población inicial formada por un conjunto de individuos, que pueden ser generados aleatoriamente o mediante técnicas heurísticas, a partir de la cual se lleva a cabo una serie de pasos. En general, se busca que la evolución sea hacia una nueva población mejor que la actual, es decir, que posea individuos con un mejor coste para la función objetivo. El paso de una población a la inmediatamente posterior se realiza mediante tres tipos de operaciones: De Selección: sólo los mejores individuos de la población sobreviven. De Cruce: combinación de individuos para dar lugar a uno o varios nuevos. De Mutación: pequeña modificación en un individuo para dar lugar a otro. En cada una de estas operaciones existen muchas alternativas posibles. Si el algoritmo converge adecuadamente, se van obteniendo mejores soluciones. La solución que devuelve este algoritmo es el mejor individuo encontrado tras una serie de generaciones. Simulated annealing [58] La idea básica de este algoritmo es la posibilidad de moverse a estados con peor coste dependiendo de una probabilidad p que depende de varios factores, entre los que se encuentran: Empeoramiento de la solución tras el cambio. Mientras más se empeore la solución, menos probabilidad hay de aceptar el cambio. Número de iteración en el que se encuentre el algoritmo, de forma que mientras más avanzada esté la búsqueda, menor es la posibilidad de permitir soluciones peores. Si la nueva solución mejora la actual, siempre se realiza el movimiento. Búsqueda tabú [42] Uno de los principales problemas que podemos encontrar durante la búsqueda local consiste en que podemos caer repetidas veces en la misma situación y actuar de la misma forma, dando lugar a un ciclo. Para evitar que esto ocurra, la búsqueda tabú propone mantener durante el proceso de búsqueda una lista con los últimos k movimientos realizados (lista tabú), de forma que dichos movimientos no son permitidos (movimientos prohibidos). Esto da lugar a un algoritmo en el que el mismo movimiento no puede ser repetido o revertido, al menos, hasta k iteraciones después. Dicha lista se va actualizando en cada iteración de forma que se produce pérdida de memoria estratégica de los movimientos realizados anteriores al (k − 1)-ésimo. Para el éxito de la búsqueda tabú en la resolución del problema, es muy importante determinar de forma adecuada el tamaño de la lista tabú y la información almacenada. Junto con la búsqueda tabú, en algunos casos, se utiliza el criterio de aspiración, que consiste en seleccionar como próxima solución, si existe, aquella solución que mejore a la actual, se encuentre o no en la lista tabú. Técnicas de consistencia Las técnicas de consistencia se basan en la inferencia de nuevas restricciones a partir de las existentes en una red, de forma que las restricciones añadidas no incorporan conocimiento nuevo pero sí hacen explícitas relaciones que estaban presente de forma implícita. En general, esta nuevas restricciones pueden englobar a algunas restricciones anteriores, de forma que el número de restricciones puede ir reduciéndose en cada paso. La

3.2. PROGRAMACIÓN CON RESTRICCIONES

15

inferencia llevada al extremo da lugar a una sola restricción que engloba todas las restricciones iniciales, de forma que las tuplas que cumplen dicha restricción son soluciones directas al problema. Todas las redes de restricciones por las que se pasa durante el proceso de inferencia son equivalentes, es decir, todas tienen el mismo conjunto de soluciones. Mediante inferencia conseguimos redes de restricciones equivalentes pero más sencillas de resolver, intentando obtener redes con un espacio de estados menor o que se puedan explorar de forma más eficiente. Cuando se sintetizan todas las restricciones en una única se denomina inferencia completa o consistencia global, y dicho proceso es, en general, muy costoso. Por el contrario, cuando la inferencia es incompleta (consistencia local) se añaden restricciones que hacen explícitas relaciones que anteriormente se encontraban implícitas sin necesidad de llegar a una única restricción. En este caso y una vez realizada la inferencia, es necesario algún método de búsqueda que actúe sobre la nueva red de restricciones. A continuación se enumeran un conjunto de definiciones formales relacionadas con el concepto de consistencia en una red de restricciones: Arco consistencia (generalizada) ((G)AC). Dada una red N = (X, D, C), una restricción c ∈ C, y una variable xi ∈ X(c), • Un valor vi ∈ D(xi ) es consistente con c en D si y sólo si existe una tupla válida τ satisfaciendo c tal que vi = τ [{xi }]. Dicha tupla se denomina soporte para (xi , vi ) en c. • El dominio D es arco consistente (generalizado) en c para xi si y sólo si todos los valores en D(xi ) son consistentes con c en D. • La red N es arco consistente (generalizada) si y sólo si D es arco consistente (generalizado) para todas las variables de X sobre todas las restricciones de C. • La red N es arco inconsistente si y sólo si ∅ es el único dominio más pequeño que D que es arco consistente (generalizado) para todas las variables y sobre todas las restricciones. Consistencia de caminos. Sea N = (X, D, C) una red normalizada. • Dadas dos variables xi y xj en X, el par de valores (vi , vj ) ∈ D(xi ) x D(xj ) presentan consistencia de camino si y sólo si para cualquier secuencia de variables Y = (xi = xk1 , xk2 , . . . , xkp = xj ) tal que pata todo q ∈ [1..p − 1], ckq ,kq+1 ∈ C, existe una tupla de valores (vi = vk1 , vk2 , . . . , vkp = vj ) ∈ πY (D) tal que para todo q ∈ [1..p − 1], (vkq ,kq+1 ) ∈ ckq ,kq+1 . • La red N presenta consistencia de camino si y sólo si para cualquier par de variables (xi , xj ), i = j cualquier par de valores para (xi , xj ) localmente consistentes, presenta consistencia de camino. k-consistencia. Sea N = (X, D, C) una red. • Dado un conjunto de variables Y ⊂ X with |Y | = k − 1, una instanciación I localmente consistente sobre Y es k-consistente si y sólo si para cualquier variable xik ∈ X\Y existe un valor vik ∈ D(xik ), tal que I ∪ {(xik , vik )} es localmente consistente. • La red N es k-consistente si y sólo si para cualquier conjunto Y de k − 1 variables, cualquier instanciación localmente consistente sobre Y es k-consistente. k-consistencia fuerte. Una red es fuertemente k-consistente si y sólo si es j-consistente para todo j ≤ k. Si una red es fuertemente n-consistente, entonces es globalmente consistente.

16

CAPÍTULO 3. TRABAJO RELACIONADO

A veces es más adecuado utilizar consistencia global en lugar de quedarnos sólo en consistencia local: Dado un CSP (X,D,C) se dice que es globalmente consistente si y sólo si ∀xi ∈ X, ∀a ∈ Di , xi = a forma parte de una solución del CSP. Es importante resaltar que en una red de restricciones globalmente consistente la búsqueda puede llevarse a cabo sin backtracking [35]. Inferencia completa Son técnicas en las que se van generando redes de restricciones cada vez más pequeñas hasta llegar a una única restricción que engloba a todas las iniciales. Esto se realiza, en general, mediante la eliminación de variables, que tiene un gran coste computacional. Las restricciones son consideradas relaciones sobre un conjunto de variables, cada una de ellas compuesta por tuplas. Sobre dichas relaciones se definen las operaciones de proyección y join para llevar a cabo la inferencia. Un ejemplo de esta técnica es el algoritmo de consistencia adaptativa [68]. Inferencia incompleta Debido al alto coste computacional de la inferencia completa, existen alternativas de inferencia incompleta o consistencia local, ya que realizar un estudio del subproblema que sólo contempla un número pequeño de variables, lleva asociado un coste computacional aceptable. Las técnicas de inferencia incompleta se basan en el estudio de subredes de restricciones del problema. Una subred (X , D , C ) de una red de restricciones (X, D, C) está definida por un conjunto de variables X = {x1 , . . . , xk }, X ⊂ X, sobre los dominios originales D = {D1 , . . . , Dk }, bajo el conjunto de restricciones C = {c | c ∈ C ∧ var(c) ⊆ X } [68]. Gracias al estudio de subredes de restricciones que sólo consideran ciertas variables se pueden obtener diferentes resultados: Si se detectan valores o combinaciones de valores que no aparecen en ninguna solución de la subred, dichos valores tampoco aparecerán en la solución de la red, ya que las restricciones de la subred aparecen en la red global. Si la subred no tiene solución, la red global tampoco la tendrá. En cambio, que la subred tenga solución no implica que la red global también la tenga, ya que sólo se realiza un estudio local del problema. De esta forma, en general, no se encuentran soluciones globales al problema pero se añaden nuevas restricciones que aceleran la búsqueda al reducir el espacio de estados y mejorar la detección de inconsistencias. Existen varios algoritmos de consistencia local [68], algunos de los cuales están basados en consistencia de nodo (1-consistencia), consistencia de arco (2-consistencia) o consistencia de caminos (3-consistencia). La consistencia de arco es una de las formas más usuales de realizar la propagación de restricciones. Una de las razones es que es un concepto muy simple y natural que garantiza que todos los valores de un dominio son consistentes con todas las restricciones existentes. La propuesta de algoritmos eficientes que trabajan con la arco consistencia se ha considerado siempre una de las cuestiones centrales dentro de la comunidad de razonamiento con restricciones por varias razones. La primera de ellas es que la arco consistencia es el mecanismo de propagación básico que usan la mayoría de los resolutores existentes. Otra razón es que las nuevas ideas que permiten mejorar la eficiencia en la arco consistencia se pueden aplicar normalmente a algoritmos para mejorar otros tipos de consistencias locales. Se han propuesto múltiples algoritmos para conseguir arco-consistencia, todos polinómicos. Uno de los más conocidos es el AC3, propuesto por Mackworth [72]. Técnicas híbridas Como se ha comentado en apartados anteriores, las técnicas híbridas son una combinación de procesos de búsqueda junto con técnicas de inferencia, intentando combinar los

3.2. PROGRAMACIÓN CON RESTRICCIONES

17

aspectos más positivos de cada una de ellas para llegar a un buen mecanismo de resolución. Los algoritmos híbridos se pueden dividir en dos grandes bloques: Combinación de búsqueda sistemática e inferencia incompleta y Combinación de búsqueda sistemática e inferencia completa, que se comentan a continuación. Combinación de búsqueda sistemática e inferencia incompleta En cada nodo del subárbol de búsqueda se lleva a cabo la consistencia local del subproblema representado por dicho nodo, de forma que se detectan las tuplas parciales inconsistentes. Dichas tuplas son eliminadas, reduciendo el espacio de estados e incluso detectando una situación sin salida si el dominio queda vacío. Algoritmos look-back. Los algoritmos look-back son variantes del backtracking cronológico en las que, al igual que el backtracking, sólo se tiene en cuenta la información acerca de las variables anteriores a la actual. La diferencia es que dichos algoritmos cuando llegan a una situación sin salida realizan un estudio, más o menos profundo, de las variables instanciadas hasta el momento (variables anteriores), de forma que actúan intentando evitar caer en una situación sin salida por la misma razón repetidas veces. Existen varios algoritmos basados en esta idea, entre los que se encuentran: Backjumping [38] : La forma en la que se actúa cuando se llega a una situación sin salida es saltando a la variable que se considera responsable de haber llegado a dicha situación, no a la inmediatamente anterior como en el caso del backtracking cronológico. La variable que se considera responsable es aquella variable xj más profunda (más cerca de la variable actual) que está en conflicto con la variable actual xi , j < i. Una variable xj está en conflicto con una variable xi cuando la instanciación de la variable xj evita algún valor para xi , debido a alguna restricción que lo prohiba. Conflict-directed Backjumping [89]: La idea es similar a Backjumping, sólo que en este caso el salto hacia atrás se efectúa teniendo en cuenta más información. A medida que se va construyendo el árbol de búsqueda, para cada variable xi analizada se va asociando un conjunto conflictivo que está formado por todas las variables anteriores a xi que entran en conflicto con ella. De esta forma, cuando se llega a una situación sin salida para la variable xi , se salta a la variable más profunda xj que se encuentra en el conjunto conflictivo de xi . Además, todas las variables que están en el conjunto conflictivo de xi se incorporan al conjunto conflictivo de xj . Con esto se consigue conservar toda la información sobre conflictos acerca de las variables estudiadas anteriormente. La ventaja con respecto al backjumping es que realiza la vuelta atrás de forma más inteligente, teniendo en cuenta información que antes se perdía. El aspecto negativo es que es necesario trabajar con estructuras de datos más complejas y almacenar más información para cada variable. Learning [36]: Consiste en realizar un aprendizaje de las situaciones sin salida, en función del cual se realiza poda en el árbol de búsqueda. Mantiene en cada momento restricciones implícitas resultantes de la búsqueda que utiliza para evitar repetir situaciones sin éxito. Algoritmos look-ahead. Los algoritmos look-back sólo realizan el estudio de las variables anteriores, sin tener en cuenta las variables futuras (variables todavía no instanciadas). Los algoritmo look-ahead realizan un estudio tanto de las variables pasadas como de las variables futuras, lo que da lugar a la detección de situaciones sin salida antes de que tengan lugar. La técnica look-ahead más conocida y usada es la denominada Forward Checking [47]. Dicha técnica consiste en ir eliminando temporalmente valores del dominio de variables futuras en el caso de que dichos valores presenten inconsistencia con respecto a la variable actual. De esta forma, si el dominio de alguna variable todavía no instanciada se queda vacío, se debe a que la asignación parcial que se lleva hasta el momento no puede formar parte de una solución. Cuando ocurre dicha situación, se selecciona el siguiente valor

18

CAPÍTULO 3. TRABAJO RELACIONADO

para la variable actual. En caso de que la variable actual se quede sin valores consistentes por explorar, se salta a la variable anterior (al igual que en backtracking cronológico). Existen técnicas híbridas que combinan Forward Checking con técnicas de movimiento hacia atrás, obteniendo así las ventajas de ambos. Un ejemplo es forward checking con conflict-directed backjumping (FC-CBJ)[89]. Manteniendo arco consistencia (MAC). El algoritmo MAC [92] va generando una sucesión de subproblemas arco-consistentes, de forma que cada nuevo subproblema generado tiene en cuenta todas las restricciones para mantener la arco-consistencia. Combinación de búsqueda sistemática e inferencia completa En general, la inferencia completa es muy costosa debido al gran esfuerzo computacional que requiere. Sin embargo, teniendo en cuenta el valor de algunos parámetros, existen ciertas situaciones en las que su aplicación es adecuada dentro de un algoritmo de búsqueda. Búsqueda y eliminación de variables (Variable Elimination Search, VES) [67] La idea fundamental de las técnicas de inferencia es la eliminación sucesiva de variables. Esto tiene un coste exponencial en función de la anchura de la variable a eliminar, definiendo la anchura de una variable como el número de variables anteriores en el árbol más el número de variables que están relacionadas con ella en alguna restricción. Si la anchura de una variable tiene un valor alto, el coste de eliminar dicha variable es prohibitivo. En cambio, para variables con un valor de anchura bajo, se puede asumir el coste computacional de eliminarla a cambio de la reducción de complejidad que implica dicha eliminación. Además, tras la instanciación de una variable, se consigue una reducción en el árbol de búsqueda con la consiguiente reducción en la anchura de otras variables.

3.2.4. Heurísticas
Cuando se resuelve un CSP haciendo uso de un algoritmo de búsqueda, hay dos factores que pueden mejorar de manera considerable la eficiencia del proceso, que son los siguientes: Ordenación de variables: el orden en el que se estudian las variables en un proceso de búsqueda suele tener una gran importancia en el tamaño del espacio de búsqueda explorado. Ordenación de valores: para cada una de las variables, el orden en el que se estudian los valores de su dominio suele tener influencia en el proceso de búsqueda. En [94] se comenta la importancia de la ordenación de restricciones del problema a lo largo del proceso de búsqueda. Ordenación de variables En general, las heurísticas de ordenación de variables suelen instanciar las variables más restringidas en primer lugar, de forma que se intenta detectar una solución sin salida lo antes posible, para disminuir así el número de saltos hacia atrás. La ordenación de variables se puede clasificar de la siguiente forma: Heurísticas de ordenación de variables estáticas: Desde el primer momento de la búsqueda se establece un orden de selección de las variables que permanece fijo durante todo el proceso. Para dar lugar a esta ordenación se hace uso de la información global del problema, derivada de la topología del grafo de restricciones original que representa al CSP. Algunas heurísticas de este tipo son: • Maximum degree (MD) [26], que define el grado de un nodo como el número de nodos que son adyacentes a él y ordena las variables en un orden decreciente de su grado en el grafo de restricciones.

3.2. PROGRAMACIÓN CON RESTRICCIONES

19

• Maximum cardinality (MC) [90], que selecciona de forma aleatoria la primera variable, tras lo cual va seleccionando en cada paso la variable que es adyacente al conjunto más grande de las variables ya seleccionadas. Heurísticas de ordenación de variables dinámicas: abordan el problema del tratamiento dinámico del dominio de las variables, que va cambiando durante el proceso de búsqueda con la propagación de restricciones. Una de las más utilizadas es la heurística first fail principle [47], que indica que para obtener buenos resultados es bueno intentar buscar primero donde exista una mayor probabilidad de fallo. Ordenación de valores Existen menos trabajos en cuanto a heurísticas de ordenación de valores que a heurísticas de ordenación de variables. La mayoría de estos trabajos se basan en seleccionar primero los valores de cada una de las variables que tengan mayor probabilidad de llevarnos a una solución válida (valores menos restringidos en general), es decir, exploran en primer lugar las ramas del árbol consideradas más prometedoras. Una de las heurísticas más conocidas de este tipo es la heurística min-conflicts [76], que ordena los valores de forma decreciente en función del número de conflictos en los que estén involucrados con las variables no instanciadas aún.

3.2.5. CSP Temporales
Un campo muy interesante dentro de CP es la Satisfacción de Restricciones Temporales debido a la aplicación que presentan en multitud de áreas, entre las que se encuentran planificación y scheduling, procesamiento de lenguaje natural, diagnosis o minería de datos. Un problema de razonamiento temporal no es más que un tipo concreto de CSP donde las variables representan entidades temporales (puntos o instantes de tiempo e intervalos), los dominios son estructuras temporales y las restricciones establecen las relaciones temporales entre las distintas entidades. Una vez modelado un problema temporal como un CSP de forma adecuada, es posible su resolución aplicando cualquiera de las técnicas de resolución generales expuestas en apartados anteriores. En CSP temporales es fundamental especificar los valores temporales iniciales conocidos ya que, a partir de ellos y utilizando técnicas de propagación, será posible dar valor a las entidades temporales. Existen multitud de modelos de razonamiento temporal basados en restricciones que divergen entre ellos en diversos aspectos, tales como la representación temporal o los formalismos de razonamiento. En este apartado se distinguen tres tipos de formalismos en función del tipo de información temporal que permiten: Razonamiento temporal cualitativo: lo realmente importante es el orden en el que tienen lugar los eventos, y, en general, no se considera la distancia que existe entre ellos. Razonamiento temporal métrico: En esto caso la distancia entre eventos si es importante, siendo relevante por tanto la información cuantitativa. Combinación de razonamientos cualitativo y métrico. Razonamiento temporal cualitativo En [75], Meiri define el álgebra cualitativa QA como un formalismo expresivo para el razonamiento temporal cualitativo sobre puntos e intervalos. En QA es posible expresar restricciones binarias de la forma oi r1 oj ∨. . .∨oi rk oj , donde oi , oj son puntos o intervalos y r1 , . . . , rk son algunas de las siguientes alternativas:

20

CAPÍTULO 3. TRABAJO RELACIONADO
Relaciones intervalo a intervalo del Álgebra de intervalos (IA). James Allen [3] introdujo un formalismo para el razonamiento sobre intervalos temporales. Un intervalo i es un par (i− , i+ ) donde i− < i+ . Dicho formalismo está basado en trece relaciones binarias mutuamente excluyentes que permiten capturar todas las formas posibles de relación entre dos intervalos: {before, meets, overlaps, during, starts, finishes, equals} y sus relaciones inversas. En [3] se presenta un algoritmo de propagación de restricciones para redes IA basado en consistencia de camino de complejidad O(n3 ), siendo n el número de intervalos de la red. A la vez que las restricciones se van propagando, se va haciendo explícito algún conocimiento temporal que hasta ahora estaba presente de forma implícita. En [107] se demuestra que el algoritmo de propagación de restricciones de Allen no es completo, al mismo tiempo que se introduce el álgebra de puntos, expuesta a continuación. Relaciones punto a punto del Álgebra de puntos (PA) [111]. Sea pi y pj dos puntos temporales que actúan como variables de un CSP temporal, es decir, dos entidades. PA define tres relaciones binarias cualitativas disjuntas que expresan de forma exacta y excluyente la posición de pi y pj : pi y pj ocurren en el mismo instante (pi = pj ), pi tiene lugar antes que pj (pi < pj ) o pi ocurre después de pj (pi > pj ). Las restricciones entre los puntos pueden ser expresadas también con relaciones binarias disyuntivas, que combinan las tres relaciones anteriores mediante operaciones de conjunción y disyunción. Para representar un CSP temporal mediante este modelado y construir una red (denominada PA-red), las variables se representan mediante puntos, el dominio para cada una de ellas es el intervalo de números reales en los que puede encontrarse cada punto, y las restricciones son PA-relaciones entre los distintos puntos. Una PA-red puede ser representada mediante un grafo de restricciones dirigido y etiquetado. En el álgebra de puntos se pueden plantear básicamente tres tipos de problemas a resolver: 1. Decidir si una PA-red es consistente y en caso afirmativo encontrar una solución. 2. Encontrar la PA-red mínima. 3. Obtener una PA-relación mínima. Relaciones punto-intervalo o intervalo-punto. Sea p un punto e i un intervalo, se pueden dar las siguientes relaciones {p before i, i after p, p starts i, i started-by p, p during i, i includes p, p after i, i before p}.

Razonamiento temporal métrico Dechter, Meiri y Pearl realizaron un estudio acerca del manejo de información temporal métrica haciendo uso de restricciones binarias disyuntivas (Disjunctive Binary Difference, DBD), de la forma: a1 ≤ xi − xj ≤ b1 ∨ . . . ∨ an ≤ xi − xj ≤ bn donde xi , xj son variables reales que representan puntos temporales y a1 , . . . , an , b1 , . . . , bn son números reales [25]. Para trabajar con estas restricciones, se introdujeron redes DBD, donde los nodos representan las variables y los arcos representan las restricciones binarias. Un aspecto importante es que la verificación de la consistencia de redes DBD es NPcompleto [25]. Otra clase de restricciones temporales más expresivas, que han sido ampliamente estudiadas en la literatura, es la clase de restricciones n-arias disyuntivas (N-ary Disjunctive Difference, NDD), que son de la forma:

3.2. PROGRAMACIÓN CON RESTRICCIONES

21

a1 ≤ x1 − y1 ≤ b1 ∨ . . . ∨ an ≤ xn − yn ≤ bn donde x1 , y1 , . . . , xn , yn son variables reales que representan puntos temporales, y a1 , . . . , an , b1 , . . . , bn son números reales [4, 100]. Nuevamente la verificación de la consistencia de un conjunto de restricciones NDD es NP-completa. Combinación de razonamientos cualitativo y métrico Meiri [75] ha combinado el poder expresivo del álgebra cualitativa QA y el marco de restricciones DBD de [25] para dar lugar a un marco de redes de restricciones temporales binarias mixtas, donde los nodos son puntos o intervalos, y las restricciones pueden ser tanto cualitativas como cuantitativas. De forma similar, Kautz and Ladkin [56] propusieron un marco que combina restricciones cualitativas del álgebra de intervalos IA y las restricciones BD de [25]. Más recientemente, Krokhin et al. presentaron otro marco que combina razonamiento temporal cualitativo y métrico [61]. En este caso, los objetos de interés son los intervalos y la información cualitativa se expresa mediante IA. Además, la información temporal métrica sobre los extremos de los intervalos se puede expresar utilizando restricciones HDL. Algoritmos eficientes para CSPs temporales En las aplicaciones típicas de razonamiento temporal (como planificación y scheduling) las bases de datos que contienen las restricciones temporales que se deben manejar suelen ser muy extensas, por lo que la escalabilidad en los algoritmos de razonamiento temporal se considera un aspecto muy importante. En el presente apartado se citan algunos algoritmos para la resolución de CSPs temporales, clasificados de la siguiente forma: Algoritmos eficientes para CSPs temporales cualitativos: se pueden clasificar en dos categorías: • Algoritmos escalables para clases de restricciones con problemas de razonamiento PTIME (especialmente PA) [39, 40]. • Algoritmos de búsqueda local o backtracking para clases con problemas de razonamiento NP-completos (especialmente IA) [63, 106]. Algoritmos eficientes para restricciones BD y DBD. Algunos trabajos relacionados son [19, 118]. Algoritmos eficientes para NDD y extensiones. En general, los algoritmos de este tipo [101, 5] se basan en algoritmos que contienen los siguientes pasos básicos: • Paso de generación: Se generan todos los posibles conjuntos de restricciones BD que satisfacen las disyunciones. • Paso de comprobación de la consistencia: Se comprueba la consistencia de los conjuntos de de restricciones generados en el paso anterior.

22

CAPÍTULO 3. TRABAJO RELACIONADO

3.3. Scheduling
3.3.1. Introducción
El área denominada Scheduling engloba a multitud de problemas que tienen en común la necesidad de planificar la ejecución de un conjunto de operaciones o tareas en el tiempo. En general, las tareas están sujetas a relaciones de precedencia, de forma que, por ejemplo, el comienzo de una tarea debe ser posterior a la finalización de otra(s). Por otro lado, se cuenta con un conjunto limitado de recursos compartidos, necesarios para la ejecución de las tareas. Para solucionar este tipo de problemas se debe tener en cuenta tanto las restricciones de precedencia como las de recursos, para dar lugar así a un plan de ejecución viable. Un caso concreto de Scheduling es el denominado Job Shop, en el que las tareas se organizan en trabajos, a través de los cuales se establecen las relaciones de precedencia entre ellas. De esta forma, con el término trabajo se hace referencia a una secuencia de operaciones que deben ejecutarse en un orden determinado, existiendo una relación de precedencia entre ellas que establece que una operación puede comenzar sólo cuando ha terminado la ejecución de todas sus predecesoras. Por operación se hace referencia a una tarea que debe ser ejecutada, normalmente sin interrupción (preemptive scheduling), durante un tiempo determinado y haciendo uso de unos recursos específicos. Uno de los objetivos fundamentales de este tipo de problemas es generar un plan de ejecución optimizando una función objetivo determinada, que suele estar relacionada con el tiempo de procesado de todos los trabajos que forman parte del problema. A la hora de generar el plan, es necesario tener en cuenta tanto las restricciones de precedencia existentes entre las operaciones del mismo trabajo como las restricciones de recursos, que obligan a establecer un orden de ejecución entre las operaciones que comparten recursos. Estas últimas restricciones son la fuente de la complejidad NP-dura de este tipo de problemas [37]. Existen muchas variantes que se engloban dentro de este tipo de problemas, entre las que se encuentran: Job Shop: Cada operación sólo puede ejecutarse en una máquina. Puede ser que cada trabajo sólo utilice una vez cada máquina o bien que contenga varias operaciones que deban ser ejecutadas en la misma máquina (en este caso se denomina Job Shop sujeto a recirculación). Flow Shop: En cada trabajo hay exactamente una operación a ser ejecutada en cada una de las máquinas, por tanto cada uno de los trabajos pasa por cada una de las máquinas una sola vez. Además, todos ellos pasan por cada una de las máquinas en el mismo orden. Job Shop Flexible: Existen varios centros de trabajo, cada uno de los cuales contienen el mismo conjunto de máquinas. De esta forma, una operación puede ser ejecutada en cualquier centro de trabajo en la máquina adecuada. Se puede encontrar una información más detallada en [16]. Job Shop Acumulativo: [84] Es una generalización de job shop en la que los recursos tienen una capacidad finita y las operaciones pueden requerir varias unidades de varios tipos de recursos. Hay muchos problemas de scheduling presentes en aplicaciones reales. Un ejemplo clásico es el funcionamiento de un hospital. Cada paciente tiene que seguir una secuencia de pasos determinada y tiene que recibir tratamiento en diferentes módulos durante su internamiento. Otros ejemplos son aplicaciones en fabricación flexible y cadenas de suministros, la planificación de las operaciones de mantenimiento en la industria, la confección de horarios para plantillas laborales y para problemas de transporte, etc.

3.3. SCHEDULING

23

Esta sección se centra en el Job Shop Scheduling Problem, que aunque es un modelo simplificado, a partir de su estudio se pueden obtener muchas conclusiones para problemas reales. Por otro lado, es un problema muy estudiado y referenciado, por lo que es fácil realizar estudios comparativos. Esta sección se organiza como sigue: en primer lugar se muestra la definición formal del Job Shop Scheduling Problem (JJSP), problema en el que se basa uno de los artículos realizados [9]. La sección 3.3.3 está dedicada a la definición del camino crítico de una solución, que es uno de los conceptos fundamentales en la búsqueda de soluciones óptimas para el JJSP. Tras esto, se detallan las propuestas de resolución del JJSP consideradas más relevantes y referenciadas, incluyendo la programación matemática, heurística basada en cuellos de botella, programación con restricciones y métodos heurísticos.

3.3.2. Definición del Job Shop Scheduling Problem
El problema de Job Shop Scheduling (JSSP) puede ser formulado como sigue: se tiene un conjunto de n trabajos J1 , J2 , . . . , Jn y un conjunto de m máquinas M1 , M2 , . . . , Mm . Cada trabajo Ji está formado por una secuencia de ni operaciones opi1 , opi2 , . . . , opi,ni , que deben ser procesadas en este orden. Cada operación opij debe ser procesada durante pij unidades de tiempo, sin interrupción, en la máquina µij ∈ {M1 , ..., Mm }. Cada máquina sólo puede procesar una operación en cada momento. Una consideración típica consiste en suponer que ni = m, ∀i. Teniendo en cuenta todo esto, se definen dos tipos de restricciones: Restricciones de precedencia: Cada trabajo está formado por un conjunto de operaciones que deben ser ejecutadas en un orden determinado, de forma que una operación no puede comenzar hasta que no hayan finalizado todas las operaciones predecesoras. Restricciones de recurso: En cada momento sólo una operación puede ocupar una máquina, lo que fuerza a seleccionar un orden para la ejecución de todas las operaciones que se realizan en la misma máquina. Realmente consiste en seleccionar una de entre todas las permutaciones posibles de dichas operaciones, lo que dota al problema de complejidad NP-dura [37]. La resolución de JSSP consiste en encontrar una solución que cumpla todas las restricciones, normalmente minimizando algún valor relacionado con el tiempo (sección 3.3.2). Grafo disyuntivo Una de las representaciones más claras y utilizadas para este tipo de problemas es el denominado grafo disyuntivo [11]. Un grafo disyuntivo G = (V, C, D) contiene los siguientes elementos: Un conjunto V de nodos, cada uno de los cuales representa una operación, excepto dos de ellos, el nodo fuente y el nodo sumidero, que son nodos virtuales de duración 0 y representan el comienzo y el final del plan respectivamente. Un conjunto de aristas que unen los distintos nodos. Podemos distinguir dos tipos: • Aristas de precedencia C (conjunciones) correspondientes a las restricciones de precedencia. Son arcos dirigidos que unen operaciones correspondientes al mismo trabajo. • Aristas de recurso D (disyunciones) correspondientes a las restricciones de recurso. Son arcos no dirigidos que unen operaciones que se ejecutan en la misma máquina.

24

CAPÍTULO 3. TRABAJO RELACIONADO
Cada una de las aristas tiene asociada una longitud igual a la duración de la operación origen de dicha arista.

Una solución para el problema consiste en establecer una dirección en cada una de las aristas de recurso, siendo factible la solución si no da lugar a la formación de ciclos en el grafo. Cada operación del JSSP puede empezar cuando haya terminado la ejecución de sus operaciones predecesoras (en caso de que existan). En un grafo disyuntivo, la dirección de las flechas marca las relaciones de precedencia, de forma que si aparece una flecha dirigida de la operación p a q, esto indica que p precede a q. Es por esto que en el caso de que existan ciclos en el grafo, la solución no es válida. En la figura 3.12 se muestra un grafo disyuntivo que representa un problema simple con n = 3 y ni = 3, ∀i. El nodo fuente está representado por la etiqueta U y el nodo sumidero por V . Las aristas de precedencia están representadas mediante flechas unidireccionales de trazado continuo, mientras las de recurso aparecen como flechas bidireccionales de trazado discontinuo.
op11 op12 op13

fuente

U

op21

op22

op23

V

sumidero

op31

op32

op33

Figura 3.2: Un grafo disyuntivo para problemas Job Shop

Funciones objetivo En general, el objetivo más perseguido en este tipo de problemas es encontrar una solución factible, es decir, que satisfaga todas las restricciones, minimizando un valor denominado makespan, Cmax . El makespan se define como el tiempo en el que termina la ejecución de todos los trabajos, Cmax = maxi=1..n {Ci }, donde Ci es el tiempo de finalización del trabajo Ji , es decir, el tiempo de finalización cti,ni de la operación opi,ni . Teniendo en cuenta la definición del grafo disyuntivo realizada anteriormente, y dada una solución, el makespan se puede definir como la longitud del camino más largo que existe desde el nodo fuente hasta el nodo sumidero. Dicho camino está formado por un conjunto de operaciones en las que la primera comienza en tiempo 0 y la última finaliza en un tiempo igual a makespan. El problema de minimizar el makespan se reduce a encontrar una dirección para cada arista no dirigida que minimize la longitud del camino más largo. Aunque el makespan es probablemente la función objetivo más utilizada y estudiada en scheduling, también existen otras. Un ejemplo es la denominada tardanza máxima [8], que es el máximo retraso de los trabajos con respecto a un tiempo esperado D. La tardanza para cada uno de los trabajos se define como Tj = max(0, Cj − D), mientras que la tardanza máxima Tmax es igual a max(Tj ), j ∈ J. De esta forma, el objetivo es minimizar dicha tardanza máxima.

3.3.3. Camino Crítico
Una vez establecida una solución para un problema JJS, es decir, establecida la dirección en cada una de las aristas no dirigidas correspondientes a relaciones de recursos,

3.3. SCHEDULING

25

existen varias posibilidades para dar lugar a un plan de ejecución. El plan de ejecución óptimo para esa solución se obtiene actuando de forma que una operación comience justo cuando han terminado sus operaciones predecesoras (tanto en trabajo como en máquina). De esta forma, se define el tiempo de comienzo (o start time) stij para una operación opij , con una operación predecesora en máquina opkl (en caso de que exista), de la siguiente forma: Si es la primera en su máquina y la primera en su trabajo, stij = 0. Si es la primera en su máquina, pero no en su trabajo, stij = cti,j−1 . Si no es la primera en su máquina, pero sí en su trabajo, stij = ctk,l . Si no es la primera en su máquina, ni en su trabajo, stij = max{cti,j−1 , ctk,l }. Para todas las operaciones, el tiempo de finalización ctij es igual a: ctij = stij + pij . Así se consigue uno de los planes óptimos, pero existen diversas alternativas, algunas de las cuales dan lugar a planes con el mismo makespan (Cmax ). De hecho, dado un plan, existen planes alternativos que mantienen el mismo orden de ejecución de las operaciones y el mismo makespan, retrasando el comienzo de algunas operaciones. Teniendo en cuenta esto se define el tiempo de comienzo más tardío stij de una operación como el tiempo máximo en el que una operación puede comenzar sin provocar un aumento en el makespan. De la misma forma el tiempo de finalización más tardío ctij es el tiempo máximo en el que una operación puede finalizar sin provocar un aumento en el makespan (ctij = stij + pij ). Sea oprs la operación sucesora de opij en máquina. Se definen stij y ctij de la siguiente forma: Si es la última en su máquina y la última en su trabajo, ctij = Cmax . Si es la última en su máquina, pero no en su trabajo, ctij = sti,j+1 . Si no es la última en su máquina, pero sí en su trabajo, ctij = str,s . Si no es la última en su máquina, ni en su trabajo, ctij = min{sti,j+1 , strs }. Teniendo en cuenta todo esto, para una solución a un problema JJS, se pueden distinguir dos tipos de operaciones: 1. Operaciones críticas: Son aquéllas que cumplen que st = st , es decir, un retraso en su tiempo de comienzo provocaría un aumento en el makespan. 2. Operaciones con holgura: Son aquéllas que cumplen que st < st , es decir, un retraso en su tiempo de comienzo de no más de st − st unidades no provoca ningún cambio en el makespan. De forma similar, se define el camino crítico sobre un grafo solución como un camino formado exclusivamente por operaciones críticas que comienza en el nodo fuente y termina en el nodo sumidero. Pueden existir varios caminos críticos, y algunos de ellos pueden solaparse parcialmente. Existe otro concepto relacionado denominado bloque crítico, que se define como un conjunto de operaciones críticas consecutivas que se ejecutan en la misma máquina. Teniendo en cuenta estas definiciones, existe un conjunto de teoremas [108] que se comentan a continuación: Dada una solución satisfactible, cambiar el sentido de una de las aristas dirigidas perteneciente al camino crítico, da lugar a una solución también satisfactible. Dada una solución satisfactible, si el cambio en el sentido de una arista no perteneciente a ningún camino crítico da lugar a una solución satisfactible, ésta tendrá un coste igual o mayor que la solución inicial.

26

CAPÍTULO 3. TRABAJO RELACIONADO
Dada una solución satisfactible, cambiar el orden de ejecución de dos operaciones internas a un bloque crítico da lugar a una solución con un coste mayor o igual que la inicial. Intercambiar las dos primeras operaciones del primer bloque crítico, si la segunda de las operaciones es interna, da lugar a una solución con un coste mayor o igual que la inicial. De la misma forma, intercambiar las dos últimas operaciones del último bloque crítico, si la primera de las operaciones es interna, da lugar a una solución con un coste mayor o igual que la inicial.

Resumiendo, dada una solución a partir de la cual se desea obtener otra sólo cambiando el sentido de una arista, las únicas opciones que permiten mejorar el makespan, son el intercambio de las dos primeras o las dos últimas operaciones de cada bloque crítico, teniendo en cuenta que si se trata del primer y último bloque crítico las dos primeras y las dos últimas, respectivamente, sólo se intercambian si dicho bloque posee exactamente dos operaciones.

3.3.4. Programación matemática
Existen diversas formulaciones de programación matemática para problemas JJS, sin embargo, la formulación más utilizada es la denominada programación disyuntiva. Dicha formulación está muy relacionada con la representación del problema mediante el grafo disyuntivo. Sea stij el tiempo de comienzo de la operación opij , Ops el conjunto de todas las operaciones, C el conjunto de aristas de precedencia opij ⇒ opi,j+1 y µij la máquina en la que opij debe ser ejecutada. El siguiente modelo matemático plantea la minimización del makespan: minimizar Cmax sujeto a stih − stij ≥ pij for all (i, j), (j, h) | h > j Cmax − stij ≥ pij for all (i, j) ∈ Ops stij − strs ≥ prs or strs − stij ≥ pij for all (i, k), (r, s) ∈ Ops | µij = µrs stij ≥ 0 for all (i, j) ∈ Ops En esta formulación, el primer tipo de restricciones asegura que las operaciones que suceden a otras en un trabajo no pueden comenzar antes de que éstas hayan terminado. El tercer tipo establece que dos operaciones no pueden estar utilizando la misma máquina al mismo tiempo (restricciones disyuntivas). Es por esto que esta formulación recibe el nombre de programación disyuntiva. El hecho de que el problema JJS pueda ser formulado matemáticamente de forma sencilla no implica que existan procedimientos sencillos para conseguir el óptimo. Conseguir el óptimo en problemas JSS tiene un coste muy alto y los procedimientos de resolución suelen estar basados en enumeraciones o heurísticas.

3.3.5. Heurística basada en cuellos de botella (Shifting Bottleneck Heuristic)
La heurística basada en cuellos de botella [1] es un método para resolver problemas JJS basado en realizar la planificación de cada una de las máquinas en un orden determinado en función de la máquina que esté actuando como cuello de botella. El algoritmo consta de M (no de máquinas) iteraciones, en cada una de las cuales se planifica una máquina, es decir, se establece el orden de todas las operaciones que se ejecutan en dicha máquina. En cada momento se trabaja con un conjunto de máquinas ya planificadas (M0 ), que irá

3.3. SCHEDULING

27

incrementando a medida que avanza el algoritmo. Se trabaja también con un grafo G que contiene todas las operaciones, pero no todos los arcos. Inicialmente G contiene todas las aristas de precedencia y ninguna de recurso. El conjunto de aristas del grafo también irá incrementando a medida que avance el algoritmo. Se puede calcular el makespan Cmax (C0 ) para dicho grafo como la longitud del camino más largo desde el nodo fuente hasta el nodo sumidero. Una vez calculado Cmax (C0 ) para el grafo G, para cada operación se puede determinar el tiempo de liberación rtij como el camino más largo en G desde el nodo fuente hasta opij , y tiempo de finalización esperado dtij que es igual a Cmax (C0 ) menos el camino más largo desde opij hasta el nodo sumidero, más pij . En cada iteración, las operaciones correspondientes a una misma máquina forman un problema independiente con una solución también independiente. De esta forma, para cada máquina no planificada (M − M0 ), en función de los tiempos rt y dt de cada operación de esta máquina, se realiza la planificación óptima para dichas operaciones, obteniendo así Lmax (i) como la mínima longitud del camino más largo en el subproblema formado por las operaciones ejecutadas en la máquina i, teniendo en cuenta G. Este problema de optimización es NP-duro, pero existen procedimientos para resolverlo que funcionan razonablemente bien. Una vez realizados estos cálculos, la máquina h con la mayor tardanza Lmax (h) es seleccionada para ser incluida en el conjunto M0 y ser planificada. Además, los arcos correspondientes a dicha máquina son añadidos en el grafo G en función del plan óptimo obtenido anteriormente. Ahora es necesario calcular el nuevo makespan, que será al menos Lmax (h) unidades mayor: Cmax (M0 ∪ h) ≥ Cmax (M0 ) + Lmax (h). Las operaciones que estaban anteriormente en M0 , deben ser replanificadas teniendo en cuenta la inclusión en el grafo de las operaciones correspondientes a la máquina h. El algoritmo correspondiente a este procedimiento se muestra a continuación: 1. Condiciones iniciales. M0 = ∅ El grafo G es el grafo formado por todos los arcos de precedencia y ningún arco disyuntivo. Cmax igual a la longitud del camino más largo en G. 2. Análisis de máquinas a planificar. Para cada máquina i del conjunto M − M0 se realiza: Formular un problema para esa única máquina con todas sus operaciones teniendo en cuenta los tiempos de liberación y de finalización esperados. Minimizar Lmax en cada uno de dichos subproblemas. Sea Lmax (i) el mínimo Lmax en el subproblema correspondiente a la máquina i. 3. Selección del cuello de botella y secuenciación. Sea Lmax (h) = maxi∈M −M0 (Lmax (i)) Secuenciar la máquina h acorde a la secuencia generada en el paso 2. Insertar en G todos los arcos disyuntivos correspondientes a la máquina h. Insertar la máquina h en M0 . 4. Resecuenciación de todas las máquinas planificadas anteriormente. Para cada máquina l ∈ M0 − h, realizar: Eliminar los arcos disyuntivos correspondientes de G, formular un subproblema para la máquina l con los tiempos de liberación y finalización determinados por el cálculo del camino más largo en G. Encontrar la secuencia que minimice Lmax (l) e insertar los correspondientes arcos disyuntivos en G. 5. Criterio de parada. Si M0 = M , entonces FIN, en otro caso volver al paso 2.

28

CAPÍTULO 3. TRABAJO RELACIONADO

3.3.6. Programación con restricciones
La programación con restricciones ha sido comentada en la sección anterior. Puede ser aplicada a problemas job shop que tienen como función objetivo el makespan de la siguiente forma: suponemos que tenemos que encontrar un plan con Cmax menor o igual que un valor determinado d. Un algoritmo de satisfacción de restricciones debe producir para cada máquina una secuencia de operaciones de forma que el tiempo de procesamiento final de cada máquina no supere d. En primer lugar es necesario realizar un paso de inicialización, que consiste en realizar los cálculos adecuados para obtener el tiempo de comienzo más temprano y el tiempo de finalización más tardío de cada una de las operaciones en su máquina. Tras esto se realiza una comparación entre las ventanas temporales de todas operaciones asociadas a las misma máquina, de forma que si las ventanas temporales de dos operaciones asociadas a la misma máquina no se solapan, es posible establecer una relación de precedencia entre ellas: en cualquier plan factible, la operación con la ventana temporal más temprana debe ser predecesora de la operación con la ventana temporal más tardía. Realmente es posible establecer relaciones de precedencia incluso cuando las ventanas temporales se solapan. Sea stij (stij ) el tiempo posible de comienzo más temprano (más tardío) de la operación opij y ctij (ctij ) el tiempo posible de finalización más temprano (más tardío) de la operación opij teniendo en cuenta el conjunto de restricciones de precedencia dado. El tiempo posible de comienzo más temprano stij de la operación opij puede ser considerado el tiempo de liberación rtij de dicha operación, mientras que el tiempo posible de finalización más tardío ctij puede ser considerado como el tiempo de finalización esperado, dtij . Se define la holgura entre el procesamiento de las operaciones opij y oprs , ambas ejecutadas en la misma máquina, como: σ(opij )→(oprs ) = = = strs − ctij ctrs − stij − pij − prs dtrs − rtij − pij − prs . (3.1)

Si σ(opij )→(oprs ) < 0 entonces, bajo el conjunto de restricciones de precedencia actual, no existe ningún plan factible en el que la operación opij preceda a la operación oprs . De esta forma se puede establecer una restricción de precedencia que implique que la operación oprs se ejecute antes que la opij . En el paso de inicialización todos los pares de ventanas temporales son comparados entre ellos de forma que se obtienen las restricciones de precedencia y se añaden al grafo disyuntivo. Debido a las nuevas restricciones de precedencia, las ventanas temporales de cada una de las operaciones puede ser ajustadas, es decir, tiene lugar de nuevo el cálculo de los tiempos de liberación y de finalización esperados de cada operación. Las técnicas de satisfacción de restricciones a menudo confían en la propagación de restricciones. Una técnica de satisfacción de restricciones típicamente intenta, en cada paso, añadir nuevas restricciones de precedencia (arcos disyuntivos) que a su vez han sido implicados por restricciones de precedencia insertadas anteriormente. Una vez las nuevas restricciones han sido añadidas, tiene lugar el cálculo de las ventanas temporales de todas las operaciones. Existen otras alternativas de resolución, como instanciar variables en cada paso, etc. Para cada par de operaciones que tienen que ser procesadas en la misma máquina se cumple uno de los siguientes 4 casos: 1. Caso 1: Si σ(opij )→(oprs ) ≥ 0 y σ(oprs )→(opij ) < 0, entonces se puede añadir la restricción de precedencia opij → oprs . 2. Caso 2: Si σ(oprs )→(opij ) ≥ 0 y σ(opij )→(oprs ) < 0, entonces se puede añadir la restricción de precedencia oprs → opij .

3.3. SCHEDULING

29

3. Caso 3: Si σ(opij )→(oprs ) < 0 y σ(oprs )→(opij ) < 0, entonces no existe un plan que satisfaga las restricciones actuales. 4. Caso 4: Si σ(opij )→(oprs ) ≥ 0 y σ(oprs )→(opij ) ≥ 0, entonces cualquier orden entre las dos operaciones es posible.

3.3.7. Métodos heurísticos
En muchos de los problemas englobados dentro de planificación y scheduling, encontrar la solución que optimice una determinada función objetivo puede dotar al problema de una complejidad NP-dura. Algunas veces es necesario resolver problemas de gran tamaño en un tiempo "pequeño", aunque a cambio no se asegure el óptimo, siempre que las soluciones sean presumiblemente de calidad (cercanas al óptimo). En este apartado se describe un conjunto de reglas que resuelven problemas NP-duros en tiempo polinómico, no garantizando la solución óptima, pero dando lugar a una solución aceptable en un tiempo de ejecución relativamente pequeño. Tras esto se comenta un método denominado beam search, que es una variante de técnicas de ramificación y poda. Otros métodos heurísticos ampliamente aplicados a problemas de scheduling son simulated annealing, búsqueda tabú y algoritmos genéticos, los cuales han sido explicados previamente en la sección anterior (apartado 3.2.3). Reglas de prioridad básicas Una regla de prioridad es una regla que asigna prioridad a todos los trabajos que están esperando para ser procesados en una máquina. Los esquemas de prioridad pueden tener en cuenta tanto los atributos de los trabajos y de las máquinas, así como el tiempo actual. La investigación en reglas de prioridad ha estado activa durante varias décadas y muchas de ellas han sido desarrolladas y estudiadas en la literatura. Las reglas de prioridad pueden ser clasificadas de distintas formas. Una de ellas es la distinción entre reglas estáticas o dinámicas. Las reglas estáticas no son dependientes del tiempo de ejecución, sino que sólo dependen de las características de los trabajos y de las máquinas. Por el contrario, las reglas dinámicas son dependientes del tiempo. Otra clasificación se basa en la información estudiada por la regla para otorgar prioridades, de forma que pueden ser locales o globales. Una regla local es aquélla que sólo analiza la información de cada una de las máquinas por separado, mientras que las reglas globales usan información de otras máquinas, tal como el tiempo de procesado del trabajo en la próxima máquina en su ruta o la longitud actual de la cola de dicha máquina. Existen multitud de reglas de prioridad, entre las que se encuentran: Service In Random Order (SIRO): Acorde a esta regla de prioridad, en cuanto una máquina es liberada, el siguiente trabajo se selecciona de forma aleatoria de entre todos los trabajos que están esperando para ser procesados en dicha máquina. Earliest Release Date first (ERD): Es equivalente a la bien conocida regla First-InFirst-Out, es decir, la operación que lleva más tiempo esperando a ser procesada es la que tiene mayor prioridad en cuanto la máquina esté libre. De esta forma se minimizan los tiempos de espera de los trabajos para conseguir una máquina. Earliest Due Date first (EDD): Es cuanto una máquina es liberada, el trabajo con un tiempo de finalización esperado más temprano es seleccionado para ser procesado el siguiente. Esta regla tiende a minimizar la máxima tardanza entre trabajos esperando para ser procesados. Minimum Slack first (MS): Es una variación dinámica de la regla EDD. Si una máquina es liberada en un instante t, se calcula el tiempo de holgura restante para cada trabajo en ese momento, definido como max(dtj − pj − t, 0), donde dtj es el

30

CAPÍTULO 3. TRABAJO RELACIONADO
tiempo de finalización esperado y pj el tiempo de procesado. Esto implica que en algún momento un trabajo j puede tener mayor prioridad que un trabajo k, pero que un tiempo después estas prioridades pueden ser iguales. El trabajo con menor tiempo de holgura es seleccionado. Esta regla tiende a minimizar objetivos relacionados con el tiempo de finalización esperado. Longest Processing Time first (LPT): Esta regla ordena los trabajos en orden decreciente de tiempo de procesado. Cuando hay máquinas en paralelo, esta regla tiende a equilibrar la carga de trabajo en las distintas máquinas. El razonamiento es el siguiente: es ventajoso mantener trabajos con tiempos de procesamiento cortos para más tarde, ya que estos trabajos son útiles al final para equilibrar la carga de trabajo. Una vez asignados los trabajos a las máquinas, los trabajos de cualquier máquina pueden ser resecuenciados sin afectar al equilibrio en la carga de trabajo. Shortest Setup Time first (SST): En cuanto una máquina es liberada, el trabajo con menor tiempo de configuración (setup) es seleccionado. Least Flexible Job first (LFJ): Esta regla se usa cuando hay un conjunto de máquinas no idénticas trabajando en paralelo y y los trabajos están sujetos a restricciones de elección de máquinas. El trabajo j sólo puede ser procesado en un determinado conjunto de m máquinas, denominado Mj . En cuanto una máquina es liberada, se selecciona el trabajo que puede ser procesado en el menor número de máquinas alternativas posibles, es decir, el trabajo con menos alternativas de procesamiento posibles. Critical Path (CP): Se usa con operaciones sujetas a restricciones de precedencia. Se selecciona como siguiente trabajo aquél que está en la cabeza de la cadena más larga de tiempos de procesado en el grafo de restricciones de precedencia. Largest Number of Successors (LNS): Puede ser también utilizada cuando los trabajos están sujetos a restricciones de precedencia. Selecciona como próximo trabajo aquél que posee el mayor número de trabajos sucesores. Shortest Queue at the Next Operation (SQNO): Se utiliza en job shop problems. En cuanto una máquina es liberada, el trabajo que posea la cola más pequeña a la siguiente máquina en su ruta es seleccionado para ser procesado. La longitud de la cola a la siguiente máquina puede ser medida de distintas formas, por ejemplo el número de trabajos esperando en cola o la cantidad total de trabajo esperando en cola.

Beam Search Los métodos de ramificación y poda son actualmente unos de los más utilizados para obtener soluciones óptimas para problemas de scheduling de complejidad NP-dura. La desventaja es que pueden presentar una complejidad temporal excesivamente alta dado que el número de nodos a considerar puede ser muy alto. Beam Search es una variante de ramificación y poda que intenta eliminar ramas de forma inteligente para que un análisis de todo el árbol no sea necesario. De esta forma el tiempo de ejecución requerido es más bajo, pero no se puede garantizar que la solución encontrada sea la óptima. Con los métodos de ramificación y acotación se intentan eliminar nodos determinando un límite inferior del valor objetivo de todos los planes que pertenecen a la descendencia de dicho nodo. Si el límite inferior es mayor que el valor objetivo de un plan conocido, se elimina el nodo y se ignora su descendencia, porque se sabe que por esa rama no encontrará una solución mejor que la que ya tiene. Si al comienzo se obtiene un buen plan apoyándose en alguna heurística adecuada, es posible eliminar un mayor número de nodos durante el proceso de búsqueda. Sin embargo, incluso después de estas eliminaciones es necesario

3.3. SCHEDULING

31

evaluar aún gran cantidad de nodos. La principal ventaja de ramificación y poda es que tras el análisis de todos los nodos, se puede garantizar que la solución encontrada es óptima. Con beam search sólo los nodos más prometedores en cada nivel son seleccionados para ser ramificados, descartando el resto de nodos de dicho nivel de forma permanente. Un componente crucial de este método es la forma en la que se decide cuáles son los nodos que se seleccionan para cada uno de los niveles. El hecho de evaluar cada nodo cuidadosamente para estimar el potencial de su descendencia puede requerir un alto coste temporal. Una predicción rápida puede dar lugar al descarte de buenas soluciones, mientras que una evaluación más elaborada puede ser prohibitiva por el consumo temporal requerido. Una propuesta en dos etapas es útil: en primer lugar se realiza una evaluación rápida de todos los nodos del nivel, tras lo cual se eliminan los que obtengan una peor puntuación. Llegados a este punto, se realiza una evaluación más profunda sólo a los nodos que hayan superado la evaluación rápida. De esta forma el tiempo requerido es menor al mismo tiempo que la evaluación es profunda. Entre los nodos que pasan ambos filtros se selecciona un conjunto de ellos para ser expandidos, generando así el siguiente nivel del árbol. En [93] se aplica beam search a problemas de scheduling donde se persigue optimizar el makespan y la tardanza máxima de un conjunto de trabajos, obteniéndose resultados prometedores en comparación con otras técnicas.

32

CAPÍTULO 3. TRABAJO RELACIONADO

3.4. Planificación
3.4.1. Introducción
La planificación es la parte racional de la actuación. Es un proceso abstracto, de explícita deliberación, que selecciona y organiza acciones anticipando sus resultados esperados [41]. La planificación automatizada es un área de la inteligencia artificial que estudia la elaboración de dicho proceso computacionalmente. Existen multitud de problemas que se pueden englobar dentro del área denominada Planificación. Dichos problemas, en general, requieren la elaboración de un plan formado por una secuencia de acciones cuya ejecución da lugar a la obtención de uno o más objetivos planteados inicialmente. Esta secuencia de acciones puede contener bucles, condiciones, acciones paralelas, etc., aunque normalmente se reducen a un conjunto de tareas que han sido seleccionadas y ordenadas para lograr un fin específico. Dicho fin puede ser de distinta naturaleza, como conseguir un conjunto de objetivos, optimizar alguna función objetivo, etc. Las técnicas de planificación generalmente están enfocadas a problemas que incluyen una selección de acciones que se ejecutan en cascada, existiendo interacciones lógicas complejas entre dichas acciones. En general, se parte de un estado inicial y, mediante la ejecución de acciones, se va pasando a otros estados en los que las condiciones cambian como efecto de la acción aplicada. De esta forma, para dar solución al problema, es necesario llegar a un estado final a través de una secuencia de acciones que se ejecutan desde el estado inicial. Los trabajos acerca de planificación se engloban dentro de diversos campos, algunos de ellos son: Classical Planning, Hierarchical Task Network (HTN), Decision-Theoretic Planning, Case-based Planning y Reactive Planning. La planificación independiente del dominio se basa en modelos de acciones generales y abstractos. Para resolver un problema particular, un planificador independiente del dominio toma como entrada las especificaciones del problema e información acerca de su dominio. Lo modelos de acciones van desde los más simples, que permiten sólo formas limitadas de razonamiento, hasta modelos que poseen capacidades de predicción más ricas. En la presente sección se abordan dos tipos de problemas de planificación, Classical Planning y HTN planning. A continuación se incluye un apartado acerca de las técnicas de resolución denominadas Procesos de Decisión de Markov, para terminar con unas breves conclusiones.

3.4.2. Classical Planning
Representación Uno de los campos más amplios y que engloba a un mayor número de aplicaciones es el denominado Classical Planning. La especificación de este tipo de problemas se compone de: Un conjunto de literales del cálculo proposicional que pueden ser positivos o negativos y que representan los objetivos perseguidos. Un conjunto de literales del cálculo proposicional que pueden ser positivos o negativos y que representan el estado inicial, también conocidos como condiciones iniciales. Un conjunto de acciones caracterizadas mediante operadores STRIPS. Un operador STRIPS es una plantilla parametrizada para un conjunto de posibles acciones. Cada acción está formada por: • Un conjunto de precondiciones: conjunto de literales positivos o negativos que deben ser ciertos para que una acción pueda ser ejecutada.

3.4. PLANIFICACIÓN

33

• Un conjunto de efectos o cambios: conjunto de literales positivos o negativos que pasan a ser ciertos tras la ejecución de la acción. Como se ha indicado anteriormente, para que una acción pueda ser ejecutada, es necesaria la existencia de los literales de precondición. Por lo tanto, en cada momento, en función de los literales que sean ciertos (estado del mundo) existirá un conjunto de posibles acciones a ejecutarse. Cada vez que se ejecuta una acción, el conjunto de literales actuales cambia, provocando por tanto un cambio también en las posibles acciones a ejecutar, evolucionando así el estado del sistema. Una solución para el problema viene determinada por una secuencia de acciones que, partiendo del estado inicial, dan lugar a la obtención de los objetivos especificados en el problema (estado final). Mediante los operadores STRIPS las precondiciones y los efectos sólo se pueden especificar mediante la conjunción de literales. Existe una extensión denominada ADL [85] que permite disyunción de literales en las precondiciones, condiciones en los efectos y el uso de cuantificadores universales tanto en precondiciones como en efectos. Técnicas de resolución Existen multitud de técnicas de resolución para problemas de Classical Planning. En este apartado se muestran las que se consideran más relevantes. Forward State Space Search (FSS) La búsqueda hacia delante en el espacio de estados consiste en evolucionar desde el estado inicial hacia un estado final, pasando por un conjunto de estados intermedios. El paso de un estado a otro se realiza por medio de una acción u operación. Un algoritmo FSS en cada paso realiza una selección de uno de los posibles operadores válidos para ese estado (operadores cuyas precondiciones se cumplan), pudiendo realizar dicha selección de diversas formas. La búsqueda continúa hasta que se llega a un estado final. El mayor de los inconvenientes de esta técnica es que el espacio de búsqueda puede ser muy grande debido a las posibles acciones a ejecutar en cada paso. Una mala elección de una acción en un paso determinado puede dar lugar a un alto coste temporal y de memoria. Existen multitud de aproximaciones que se basan en el uso de heurísticas de selección de operadores que exploran sólo una fracción del espacio de búsqueda. Por otro lado existen algunos trabajos [6, 7] que usan fórmulas en lógica proposicional para proporcionar una guía basada en dominios. Goal-directed Planning Esta técnica de resolución se basa en la idea de construir el plan desde los objetivos perseguidos hacia el estado inicial. Consiste en una búsqueda hacia atrás en el espacio de estados, de forma que se parte del estado final, y en cada paso del algoritmo se selecciona una acción de entre todas las permitidas en dicho estado. Dado un estado determinado, las acciones posibles son aquéllas cuyos efectos contienen al menos un literal que es cierto en ese estado. El nuevo estado al que se pasa contiene los mismos literales que el estado actual, eliminando los que sean efecto de la acción elegida, y añadiendo los que forman parte de la precondición. De esta forma un objetivo (efecto) es sustituido por un conjunto de subobjetivos (precondiciones). El algoritmo termina cuando se llega a un estado que contiene los literales del estado inicial. Al igual que la técnica de resolución FSS, este tipo de algoritmos es relativamente simple si se mantiene un orden estricto de ejecución en las acciones. En cambio, para obtener soluciones factibles en acciones que se encuentran parcialmente ordenadas, es necesario mantener en cada momento la influencia que pueden tener las unas sobre las otras. Esto se lleva a cabo en la mayoría de los casos haciendo uso de enlaces causales. A lo largo de un plan, se mantiene un conjunto de enlaces causales que indica las proposiciones que deben ser ciertas entre la ejecución de ciertas acciones. De esta forma, cuando se añade una nueva

34

CAPÍTULO 3. TRABAJO RELACIONADO

acción a un plan con el fin de obtener un objetivo (o subobjetivo), también se añade un enlace causal para asegurar que el subobjetivo se mantiene (es cierto) entre la acción que lo consigue y la acción que lo necesita. Durante la elaboración del plan, de forma periódica, se comprueba que se verifican los enlaces causales y que ninguna acción los amenaza. En este caso, se impone un orden entre las acciones mediante restricciones de forma que se eliminen dichas amenazas. Los planificadores que utilizan esta aproximación usan enlaces causales de orden parcial (Partial Order Causal Link, POCL [22]). Con este tipo de planificadores no se han conseguido muy buenos resultados, y a pesar de que normalmente el grado de ramificación en la búsqueda hacia atrás es más pequeño que en la búsqueda hacia delante, siguen dando lugar a espacios de búsquedas demasiado grandes, y por lo tanto, inabordables cuando el tamaño del problema es elevado. A esto hay que añadir el coste que supone mantener en cada momento el conjunto de enlaces causales, que puede ser muy alto. Al igual que en FSS, existen muchas heurísticas que guían la búsqueda y que influyen considerablemente en los resultados obtenidos. Este tipo de planificadores ha sido extendido más allá del paradigma de planificación clásica, encontrando planificadores que manejan operadores con efectos condicionales cuantificados (UCPOP [86]), además de otras características del lenguaje ADL. También existen otros planificadores capaces de trabajar con tiempos de ejecución, con cantidades métricas, con incertidumbre, etc. Como se ha indicado anteriormente, el principal problema de este tipo de planificadores es que sólo puede trabajar con problemas de un tamaño limitado. Graphplan Graphplan [12, 13] es un sistema se planificación que utiliza técnicas muy diferentes del resto de planificadores (que había hasta ese momento) para realizar la búsqueda de planes adecuados. La idea básica es llevar a cabo un tipo de análisis de accesibilidad para así poder excluir ciertas combinaciones y secuencias de operadores que no son compatibles. Partiendo del estado inicial, este planificador va averiguando cuáles son las proposiciones que se pueden obtener después de un paso de la ejecución de un operador, después de dos pasos, de tres pasos, etc. Esto lo realiza de forma que, tras el primer paso, el conjunto de las proposiciones que se pueden obtener está formado por la unión de los literales que aparecen en los efectos de todas las acciones posibles a ejecutar en el estado inicial. Sin embargo, no todas las proposiciones son compatibles, ni pueden ser ciertas al mismo tiempo. Del mismo modo, existen acciones incompatibles. Para obtener toda esta información de incompatibilidad, Graphplan infiere relaciones binarias de exclusión mutua entre acciones y proposiciones incompatibles, de forma que se obtienen las siguientes reglas: Dos acciones se encuentran en exclusión mutua en un paso determinado si se da alguna de las siguientes situaciones: • Ambas acciones tienen efectos opuestos. • Alguno de los efectos de una de ellas es opuesto a alguna precondición de la otra. • Presentan precondiciones con exclusión mutua en ese paso. Dos proposiciones se encuentran en exclusión mutua en un paso determinado si se da alguna de las siguientes situaciones: • Son literales opuestos. • Si todas las acciones que dan lugar a dichas proposiciones son mutuamente excluyentes en el paso anterior. Los planificadores basados en Graphplan obtienen mejores resultados que POCL en la mayoría de los casos estudiados.

3.4. PLANIFICACIÓN

35

Al igual que POCL, Graphplan ha sido extendido a problemas con razonamiento con incertidumbre [12], con consideraciones limitadas de tiempo [98] y con cantidades métricas [59]. Planning and Satisfiability La idea básica de las técnicas de planificación y satisfactibilidad es adivinar la longitud de un plan, traducir el problema de planificación a un conjunto de fórmulas proposicionales, e intentar resolver el problema de satisfactibilidad resultante. Si dicho conjunto de fórmulas es insatisfactible, la longitud se incrementa y se repite el proceso. Existen diversas variantes basadas es esta técnica [57, 34], pero todas ellas comparten el empleo de variables proposicionales para: cada posible acción en cada paso. Indica la presencia o ausencia de dicha acción en ese paso. cada posible proposición en cada paso. Indica si dicha proposición es cierta o no en ese paso. Se consideran relevantes los siguientes puntos: Condiciones iniciales.- En el paso 0, todas las proposiciones que forman parte del estado inicial son ciertas. Objetivos.- En el último paso, todas las proposiciones que forman parte del estado final son ciertas. Acciones.- Cada acción que tenga lugar en el paso k-ésimo implica que sus precondiciones son ciertas en dicho paso y que sus efectos lo son en el k+1-ésimo. Causalidad.- Si una proposición es cierta en un paso k y falso en el paso k + 1, entonces al menos una de las acciones que provocan que dicha proposición se convierta en falsa debe haber ocurrido en el paso k. Idem cuando una proposición pasa de falso a cierto en un paso. Exclusión.- Dos acciones incompatibles no pueden tener lugar en el mismo paso. Una vez se haya realizado la traducción del problema de planificación a lógica proposicional, se pueden aplicar rápidos algoritmos de simplificación, tales como propagación unitaria o eliminación de literales. Para la búsqueda de soluciones es posible utilizar tanto métodos estocásticos como métodos sistemáticos. En [115] es posible encontrar una introducción a planificación SAT.

3.4.3. HTN Planning
Las técnicas de planificación Hierarchical Task Network (HTN) [116, 121, 80] se basan en reducir tareas de alto nivel en tareas primitivas. En HTN planning el objetivo se especifica normalmente como una tarea de alto nivel que debe ser conseguida, en lugar de ser especificado como un conjunto de literales que deben ser ciertos. A partir de una tarea en alto nivel, la resolución se lleva a cabo mediante un proceso recursivo que va transformando tareas de alto nivel en tareas de un nivel inferior que logran las tareas superiores (expansión). La transformación de tareas se lleva a cabo mediante reglas denominadas métodos. Un método transforma una tarea en una red de tareas parcialmente ordenada junto con un conjunto de restricciones. Tras cada paso de expansión, el planificador HTN realiza una detección de conflictos entre tareas de la red. En caso de que existan conflictos, se resuelven haciendo uso de unos objetos denominados critics, que normalmente imponen restricciones de orden adicionales y combinan o eliminan acciones solapadas.

36

CAPÍTULO 3. TRABAJO RELACIONADO

El proceso de resolución llega a su fin cuando la red de tareas resultante tras el paso de expansión contiene sólo tareas primitivas, siendo además el conjunto de restricciones consistente. Los sistemas de planificación HTN no presentan mucha dificultad a la hora de trabajar con tiempo y cantidades métricas. Estas restricciones pueden ser especificadas dentro de los métodos y la consistencia puede ser verificada con restricciones. También es relativamente fácil combinar sistemas de planificación HTN con sistemas de scheduling, ya que una vez que una red de tareas ha sido reducida a un conjunto de tareas primitivas, es posible utilizar un sistema de scheduling para optimizar el orden de la tareas que componen la red resultante. La fuerza de este tipo de sistemas radica en que la búsqueda puede ser estrechamente controlada con el diseño adecuado de los distintos métodos. En planificación clásica, las precondiciones y los efectos de una acción especifican cuándo una acción puede ser utilizada y qué se puede conseguir tras la ejecución de la misma. Por otro lado, en planificación HTN, los métodos especifican de forma precisa qué combinaciones de acciones pueden ser utilizadas para propósitos parciales. Es decir, los planificadores HTN indican cómo usar las acciones, mientras que los planificadores clásicos deben averiguarlo a partir de la descripción de las mismas. Este tipo de planificación presenta varios inconvenientes, entre los que destacan los siguientes: Semántica.- Para que los planificadores HTN funcionen correctamente, es fundamental la definición clara y precisa de la semántica de los métodos de descomposición y del comportamiento del sistema, lo que no es una tarea fácil en algunos casos. Ingeniería.- En general, es difícil desarrollar un conjunto de operaciones completo para una aplicación. En primer lugar, es necesario anticiparse a todos los diferentes tipos de tareas hacia los que el sistema se dirigirá y todos los caminos útiles para el logro de las tareas objetivos. Los métodos desarrollados deben cubrir todas estas posibilidades. Si existen muchos tipos diferentes de tareas, y/o un número considerable de caminos para conseguirlas, definir los métodos de forma adecuada puede ser una difícil tarea de ingeniería. Los cambios en el dominio también pueden ser problemáticos, de forma que cualquier cambio en alguna de las características del sistema puede dar lugar a grandes cambios en los métodos especificados. Fragilidad.- La fragilidad de los planificadores HTN radica en que son incapaces de manejar tareas que no fueron explícitamente descritas anteriormente por el diseñador, incluso si las acciones primitivas disponibles son suficientes para construir un plan válido.

3.4.4. Procesos de Decisión de Markov
Existen muchos problemas secuenciales de decisión que han sido modelados haciendo uso de Procesos de Decisión de Markov (Markov Decision Processes, MDPs), que puede ser extendido también a la resolución de problemas de planificación con incertidumbre. Básicamente, un MDP es un espacio de estados en el que la transición entre los distintos estados es de naturaleza probabilística. Por ejemplo, en un sistema puede ocurrir que una acción no siempre consigue su objetivo, sino que posee una probabilidad de fallo determinada. Tradicionalmente, problemas MDPs se han resuelto utilizando técnicas muy potentes denominadas valor-iteración y política-iteración [91]. Dichas técnicas encuentran políticas óptimas para un problema MDP, que ascienden a planes condicionales que especifican qué acciones se deben llevar a cabo en cada posible estado del problema.

3.4. PLANIFICACIÓN

37

El principal inconveniente de esta técnica es el tamaño del espacio de estados que puede tener el problema, por lo cual multitud de trabajos en esta área se han centrado en limitar dicho espacio de estado, destacando dos estrategias: uso de representaciones más compactas que exploten el hecho de que, normalmente, varias proposiciones y acciones son independientes. uso de técnicas de aproximación que expandan sólo las porciones del espacio de estados que posean una mayor probabilidad de ser útiles. Dichas técnicas han sido utilizadas satisfactoriamente en gran cantidad de problemas con incertidumbre, tales como tareas de navegación de robots, donde la posición y la orientación del robot tras un movimiento tienen un grado de incertidumbre [21]. El tamaño del espacio de estados sigue siendo un obstáculo considerable, pero además existen otros inconvenientes a tener en cuenta: Observabilidad completa.- MDP asume que, tras la ejecución de una tarea con una salida con incertidumbre, un agente puede observar el estado resultante. Esto no es siempre posible teniendo en cuenta que las máquinas tienen un número de sensores limitado y la detección es costosa. Tiempo atómico.- No existen modelos explícitos donde sea posible representar el tiempo. Las acciones se modelan como eventos discretos, instantáneos e ininterrumpibles. Si se permiten acciones concurrentes o eventos exógenos da lugar a un gran incremento en el tamaño del espacio de estados. Objetivos.- Es difícil expresar problemas que posean un objetivo a conseguir en el entorno de MDP. En general, deben ser modelados como problemas de horizonte infinito o como una sucesión de problemas de horizonte finito muy grandes. Políticas.- Las políticas óptimas son, en la mayoría de los casos, muy extensas y difíciles de comprender. Si los humanos pueden examinar, comprender y llevar a cabo planes, entonces es mejor contar con planes simples y compactos, que cubran sólo las necesidades más críticas.

3.4.5. Conclusiones
En esta sección se han comentado ciertos tipos de problemas que se engloban dentro del área denominada planificación. Dicha área es muy extensa y abarca multitud de tipos de problemas, de técnicas de resolución, etc. Es un área de interés actual ya que hoy en día se llevan a cabo muchos trabajos relacionados con este tema, incluso existen competiciones acerca de diversos aspectos de la planificación. La sección anterior trata acerca de scheduling, que está íntimamente relacionado con planificación, ya que ambos tratan de planificar tareas en el tiempo con la diferencia de que en scheduling las tareas a planificar son conocidas de antemano, mientras que en planificación hay que decidir las tareas que formarán parte de la solución. Existen muchos trabajos que combinan planificación y scheduling, ya que multitud de problemas reales necesitan dicha combinación para obtener una solución adecuada. Cuando un problema necesita conseguir un objetivo a través de la ejecución de una secuencia de acciones desconocidas de antemano (planificación) y cada una de estas tareas tiene un tiempo de ejecución determinado y requieren un recurso específico, existiendo restricciones temporales entre ellas y se desea optimización en el tiempo total de ejecución (scheduling), estamos hablando de un problema que combina ambos campos. La mayoría de las técnicas de planificación clásicas no son capaces de representar o de razonar con recursos, cantidades métricas o tiempo continuo. Por otro lado, la mayoría de las técnicas suelen ignorar la optimización. Por esto, existen trabajos que intentan extender

38

CAPÍTULO 3. TRABAJO RELACIONADO

las técnicas de clasificación clásicas para que sean capaces de tratar con recursos [33, 62], cantidades métricas [59, 87] y que permitan criterios de optimización [117, 113]. Además, se pueden encontrar trabajos que extienden las técnicas de planificación para que puedan trabajar con tiempo continuo y restricciones de tiempo [87, 98]. Uno de nuestros trabajos [109], que se explica en detalle en la sección 3.6, se basa precisamente en una propuesta de modelo CSP para resolver el problema de la reparación de componentes defectuosos, que combina aspectos tanto de planificación (es necesario decidir qué tareas seleccionar para conseguir el objetivo) como de scheduling (es necesario establecer un orden de ejecución de las tareas que presentan restricciones tanto de precedencia como de recursos, intentando optimizar el tiempo total de ejecución).

3.5. PLANIFICACIÓN DEL MANTENIMIENTO Y LA REPARACIÓN DE SISTEMAS39

3.5. Planificación del mantenimiento y la reparación de sistemas
3.5.1. Introducción
En esta sección se aborda el problema del mantenimiento de sistemas que se consideran formados por un conjunto de componentes, los cuales se encuentran vinculados o conectados formando un sistema completo. Este tipo de problemas se incluyen en multitud de campos, entre los que se encuentran aplicaciones mecánicas, electrónicas, sistemas software, industriales, plantas de producción, etc. En general, las interacciones o conexiones entre componentes se pueden clasificar en tres tipos [105]: Dependencia económica: implica que la producción o ganancia se mantiene sólo cuando varios componentes permanecen vinculados en lugar de separados, por lo que el mantenimiento debe realizarse de forma que el tiempo de aislamiento entre dichos componentes sea mínimo de cara a optimizar la ganancia económica. Una buena idea es realizar la etapa de supervisión o mantenimiento de todos los componentes que están vinculados al mismo tiempo, ya que mientras se supervisa o mantiene un componente se paraliza la ganancia del subsistema completo al que pertenece. Dependencia estructural: se aplica si los componentes estructuralmente forman un bloque o si existe conexión entre los componentes, así pues el mantenimiento de un componente defectuoso implica el mantenimiento también de los demás componentes del mismo bloque. Dependencia estocástica: ocurre si el estado de un componente influye en la distribución del tiempo de vida de otros componentes, o si existen causas externas al sistema que provocan fallos y, por lo tanto, influyen en sus tiempos de vida. La mayoría de los modelos de mantenimiento consideran una sola dependencia de entre las anteriores, ya que combinar más de una da lugar a modelos demasiado complejos de resolver o analizar [29]. Normalmente, existe un plan de mantenimiento previamente especificado para el sistema, que suele consistir en la inspección cada cierto tiempo de los componentes, conllevando la ejecución de una serie de tareas. La ejecución de tareas de mantenimiento lleva asociado un coste (temporal, económico, etc), al mismo tiempo que reduce la probabilidad de ocurrencia de errores en el sistema, por lo que es necesario determinar cuál es el balance adecuado para optimizar la producción y la disponibilidad del mismo. Teniendo en cuenta esto, existen multitud de estrategias de mantenimiento, la mayoría de las cuales se pueden englobar en [82]: mantenimiento correctivo, que conlleva la reparación o el reemplazo de componentes defectuosos, mantenimiento preventivo (Preventive Maintenance, PM), que inicialmente realiza la planificación de tareas de mantenimiento para prevenir los fallos del sistema, y mantenimiento oportunista, en el que el mantenimiento de un determinado componente defectuoso se ve como una oportunidad para mantener otros. El sistema completo, en algún momento de su ciclo de vida, puede presentar un comportamiento anómalo o inesperado, que se supone debido al fallo de alguno o algunos de sus componentes o recursos. Esto hace que las tareas asociadas al mantenimiento se deban replanificar, cambiando de orden algunas de ellas en caso de que sea necesario, e incluso incluyendo nuevas tareas y/o eliminando otras que previamente existían. En esta situación, el primer paso a seguir es detectar o diagnosticar el componente o los componentes defectuosos, lo que se realizará en ciertos casos con una determinada probabilidad de fallo. Existen trabajos [60] en los que se considera que cada uno de los componentes posee una probabilidad determinada de ser el responsable del fallo. Es posible encontrar muchas propuestas para realizar la diagnosis, una de las más interesantes es la diagnosis basada en modelos, que se comenta en el apartado 3.5.2.

40

CAPÍTULO 3. TRABAJO RELACIONADO

Una vez que se ha diagnosticado el origen del comportamiento erróneo del sistema, es necesario realizar una secuencia de tareas para paliar dicho comportamiento erróneo, entre las que se encuentran: desconexión de ciertas conexiones o vínculos del sistema para acceder al componente defectuoso, reparación o sustitución de dicho componente, y, por último, recomposición del sistema, es decir, volver a establecer las conexiones para obtener de nuevo el sistema completo (esta secuencia de etapas se comenta en más detalle en el apartado 3.5.2). Uno de los objetivos buscados en este tipo de problemas es la obtención de un plan de reparación óptimo teniendo en cuenta una función de coste determinada. Con frecuencia, dicha función es la minimización del tiempo total de reparación: tiempo empleado en la desconexión, junto con el tiempo de la reparación o sustitución del componente defectuoso, unido al tiempo de recomposición del sistema. Otro objetivo perseguido generalmente es disminuir los costes derivados del cese de funcionamiento del sistema (o parte de él) durante el mantenimiento o la reparación y los costes de la reparación. Esta sección se organiza como sigue: en la siguiente sección se presenta el mantenimiento de sistemas, incluyendo aspectos relevantes tales como el mantenimiento preventivo, la sustitución o reparación de componentes defectuosos, y la diagnosis basada en modelos. A continuación, se detallan aspectos de interés de la planificación del proceso de desconexión y recomposición del sistema, seguido por la representación de dicho proceso mediante grafos And/Or. También se abordan métodos de programación matemática propuestos para la resolución de este tipo de problemas, junto con los planificadores adaptables y los métodos de Inteligencia Artificial, para terminar con un breve resumen de las redes de Petri.

3.5.2. Mantenimiento de sistemas
Mantenimiento preventivo Cuando se lleva a cabo el mantenimiento de un sistema o la reparación de un componente, el funcionamiento del sistema debe ser pausado y la disponibilidad del mismo se reduce, provocando una reducción en los servicios que lleva a cabo. El mantenimiento preventivo (Preventive Maintenance, PM) consiste en una actividad planificada destinada a mejorar la fiabilidad y la disponibilidad de un sistema [107]. El PM se suele planificar para intervalos periódicos de tiempo para cada equipo o sistema. Generalmente, implica tareas tales como inspección, limpieza, ajustes y sustitución o reparación de componentes defectuosos. Una buena opción sería poder definir una política (un plan para las actividades de mantenimiento) de tal forma que el coste global de fallos del sistema, de mantenimiento y sustitución durante su ciclo de vida, se minimizara, al mismo tiempo que se maximize el rendimiento. Un aspecto muy importante en el PM es determinar cuándo, durante cuánto tiempo se realiza el mantenimiento y sobre qué componentes, para que el funcionamiento del sistema se pueda mantener en la situación óptima al mismo tiempo que se minimiza el impacto debido a la reducción de los servicios ofrecidos [97]. En este sentido, la predicción del calendario del PM necesario es crítica, al mismo tiempo que puede ser una tarea compleja, dependiente de muchos factores, entre los que se encuentran: el modo de funcionamiento del sistema, tiempo de preparación de los recursos concretos, disponibilidad de los recursos durante el mantenimiento, etc. En [107] se presenta un modelo para planificar las futuras PM para un sistema sujeto a un creciente ratio de ocurrencia de fallos (Rate of OCcurrence Of Failures, ROCOF), también denominado deterioro, durante un número de periodos. Para cada periodo en el futuro, se asume que debe planificarse una de las siguientes actividades: Do nothing: en este caso no se planifica ninguna acción, es decir, el sistema continúa con su ritmo natural de comportamiento.

3.5. MANTENIMIENTO DE SISTEMAS

41

Ro ec r ni dfo a douec e ls t i aa

Periodo j Periodo j+1 a. Efecto de realizar mantenimiento en el periodo j en un sistema ROCOF

Ro ec r ni dfo a douec e ls t i aa

Periodo j Periodo j+1 b. Efecto de realizar un reemplazo en el periodo j en un sistema ROCOF

Figura 3.3: Ratio de ocurrencia de fallos en un sistema ROCOF

42

CAPÍTULO 3. TRABAJO RELACIONADO

Diagnosis

Plan sustitución/ reparación Desconexión de los componentes defectuosos

Sustitución/reparación de los componentes defectuosos

Recomposición del sistema

Figura 3.4: Diagrama de las etapas para la sustitución/reparación de componentes defectuosos Maintenance: el sistema debe ser mantenido. Esta actividad se sitúa entre do nothing y replacement. La realización de una actividad de mantenimiento en el sistema produce un efecto sobre el ROCOF (3.3.a). Replacement: el sistema debe ser sustituido, su ciclo de vida ha finalizado. La realización de una actividad de reemplazo en el sistema produce un efecto sobre el ROCOF (3.3.b). Es importante destacar que el PM tiene una gran influencia en la productividad de los sistemas, por lo que es conveniente realizar un análisis adecuado del mismo y obtener así un buen plan de mantenimiento. Sustitución/reparación de componentes defectuosos Una vez que se establece el calendario de revisión de componentes para el mantenimiento, en caso de que se detecte algún comportamiento erróneo, es necesario llevar a cabo una serie de pasos. En la figura 3.4 se muestra un diagrama que contiene las etapas a realizar en caso de fallo: 1. Diagnosis: En esta etapa se diagnostica el componente o los componentes defectuosos, es decir, los responsables del comportamiento erróneo del sistema. Puede ser que se realice con un grado de incertidumbre determinado, otorgando una probabilidad de error a uno o más componentes diagnosticados. Existen distintas propuestas para realizar esta etapa, la mayoría de las cuales se engloban en diagnosticadores empíricos o basados en heurísticas y diagnosticadores basados en modelos. Este último enfoque se comenta en la siguiente sección. 2. Desconexión de los componentes defectuosos: Una vez el componente defectuoso es diagnosticado, es necesario la separación de ciertas relaciones existentes entre los

3.5. MANTENIMIENTO DE SISTEMAS

43

componentes del sistema, con la finalidad de aislar el componente defectuoso. Para realizar esta etapa, es necesario especificar un plan, que generalmente perseguirá minimizar su tiempo de ejecución. 3. Sustitución/reparación de los componentes defectuosos: Tras aislar el componente defectuoso del resto del sistema, es necesario repararlo o sustituirlo de forma que vuelva a realizar sus funciones correctamente. 4. Recomposición del sistema: En cuanto el componente defectuoso ha sido reparado o sustituido, se procede a la conexión de los componentes que han sido previamente separados, para dar lugar al sistema completo. En este caso, el conjunto de tareas necesarias para llevar a cabo este cometido también deberán ser planificadas, en general, intentando minimizar el tiempo total de ejecución. Este proceso no es necesariamente inverso al de desconexión, ya que se pueden incluir nuevas operaciones. Con respecto a la planificación de las etapas de desconexión y recomposición del sistema, un análisis conjunto de las tareas que las componen puede dar lugar a la obtención de planes más rápidos que si se analiza cada etapa por separado, debido a que los procesos pueden solaparse y ciertas tareas correspondientes a ambas etapas se podrían llevar a cabo en paralelo. Este análisis conjunto de las tareas de las dos etapas puede dar lugar a planes con un menor tiempo de ejecución, a cambio de incrementar la complejidad del problema a tratar. Todo esto se discute en la sección 3.6. Diagnosis basada en modelos La propuesta de diagnosis basada en modelos [95] representa un giro conceptual desde las primeras generaciones de sistemas expertos de diagnosis. Mientras que los sistemas expertos tradicionales confiaban en diagnosticadores empíricos o heurísticos que utilizaban conocimiento inferido a partir de cierta información, la propuesta basada en modelos se centra en una descripción o modelo independiente de las tareas del sistema a diagnosticar. La propuesta basada en modelos supera ciertas limitaciones de los sistemas basados en heurísticas, algunas de las cuales se comentan a continuación: La obtención de normas de diagnóstico desde un dominio experto, y el mantenimiento y actualización de la base de conocimiento, es costoso y difícil de realizar. Tratamiento de casos complejos con los sistemas basados en heurísticas, como la presencia de más de un componente defectuoso, es problemático. La diagnosis basada en modelos facilita el tratamiento de casos más complejos. La propuesta basada en modelos conlleva la construcción de un modelo para el sistema que se desea diagnosticar. Dicho modelo debe describir la estructura del sistema (los componentes y sus conexiones, información de la reparación o sustitución de los componentes) y la funcionalidad o el comportamiento de dichos componentes. Los seguidores de esta propuesta afirman que estos modelos son más fáciles de construir y de mantener, que no requieren experiencia (es decir, un modelo puede ser construido directamente desde el diseño de un nuevo sistema), y son independientes de las tareas (el mismo modelo puede ser utilizado tanto por un diagnosticador para un motor como para otras tareas, tales como simulación o monitorización).

3.5.3. Planificación del proceso de desconexión y recomposición del sistema
La desconexión de un sistema es necesaria, básicamente, en tres situaciones: cuando termina el tiempo de vida de un producto (reciclaje), cuando existe un error en el comportamiento del mismo debido al fallo de uno de sus componentes, y para llevar a cabo

44

CAPÍTULO 3. TRABAJO RELACIONADO

el mantenimiento del sistema, inspeccionando los componentes que lo forman cada cierto tiempo. Los procesos de desconexión y composición de un sistema son inversos y están íntimamente relacionados, por lo que el estudio de uno de ellos da lugar, en general, a la obtención de información relevante acerca del otro. Las secuencias de desconexión están formadas por acciones de desconexión. Una acción se determina, normalmente, desde un punto de vista de la ingeniería, es decir, la separación de un sistema en dos o más subsistemas, o la ruptura de una o más conexiones entre componentes. Generalmente, un sistema que está formado por un conjunto de componentes se puede descomponer llevando a cabo diferentes secuencias de acciones, lo que da lugar a que la selección de la secuencia óptima sea un aspecto crucial en este ámbito. Los trabajos realizados para secuencias de desconexiones han tenido, en general, diversos propósitos, entre los que se encuentran: Construcción y reparación remota en entornos inaccesibles (o de difícil acceso) tales como en naves espaciales y equipos nucleares. Reparación y mantenimiento óptimos. Como se ha comentado anteriormente, la desconexión y la composición de sistemas son dos aspectos muy relacionados, pero que poseen algunas diferencias, entre las que cabe destacar las siguientes: Normalmente la desconexión no se realiza de forma completa, en la mayoría de los casos se prefiere la desconexión incompleta. A menudo, el proceso de descomposición no es completamente reversible. El valor añadido en procesos de desconexión es normalmente modesto comparado con el obtenido en recomposición. La desconexión se lleva a cabo por humanos en lugar de líneas automáticas de ensamblajes o robots. En ensamblaje hay más operaciones robotizadas que en desconexión, pero siguen existiendo muchas manuales. La desconexión de un determinado sistema se puede llevar a cabo de distintas formas. En general, se expresa como una secuencia de operaciones unitarias de desconexión. Para la selección de la secuencia óptima de tareas se pueden utilizar diversas estrategias, tales como heurísticas, metaheurísticas, programación matemática, etc. Los métodos heurísticos y metaheurísticos se basan en: la búsqueda parcial (no se asegura el óptimo, pero en general se obtienen los resultados en un tiempo menor) o la búsqueda completa del espacio de soluciones (en este caso se asegura que el resultado obtenido es óptimo, pero en general el coste temporal es alto). Los métodos de programación matemática generan la solución óptima y son potencialmente útiles para el diseño y la evaluación de algoritmos basados en heurísticas que realizan un análisis parcial del espacio de búsqueda, ya que pueden determinar en qué medida el resultado del cálculo de una heurística es bueno. Desafortunadamente, el tiempo de cálculo necesario para ejecutar un procedimiento de solución exacta tiende a incrementarse con el tamaño del problema, por lo que si éste se incrementa exponencialmente, el método se limita sólo a sistemas de una complejidad y/o tamaño limitados.

3.5.4. Representación mediante grafos And/Or
Una de las primeras representaciones gráficas del proceso de conexión y desconexión de componentes de un sistema, en forma de árbol, fue propuesta por Bourjault en 1984 [15]. En 1986, el trabajo de Bourjault fue extendido por De Fazio y Whitney [28] para dar

3.5. MANTENIMIENTO DE SISTEMAS
ABCDE (1)

45

T1

T2

ABCD (2)

T3

ACD

(3)

T4

T5

(4) AC

(5) AD

BE (6)

T6

T7

T8

A (7)

B (8)

C (9)

D (10)

E (11)

Figura 3.5: El grafo And/Or para el sistema ABCDE

lugar a la representación basada en estados, que presentaba algunas desventajas que fueron superadas gracias a la aparición de los grafos And/Or o hipergrafos. Los grafos And/Or se han utilizado ampliamente en varios campos de ingeniería robótica a lo largo de muchos años [2] y de la inteligencia artificial. Dichos grafos posibilitan la representación de procesos de desconexión haciendo uso de grafos de desconexión basados en subsistemas en lugar de basados en estados. La representación mediante grafos And/Or, que fue introducida por Homem de Mello y Sanderson (1990) [48], permite una representación compacta de todas las posibles secuencias válidas de recomposición. Esto da lugar a una poderosa herramienta para la selección de los mejores planes de recomposición, para la selección de los mejores planes de desconexión y reparación, etc. La recomposición/desconexión paralela se representa por este grafo de forma natural. En un trabajo posterior (1991) [49] se presentó un algoritmo que producía todos las secuencias de desconexión válidas a partir de un grafo And/Or determinado. En general, esto da lugar a inmanejables cantidades de información, particularmente si se incluyen las secuencias incompletas. En la figura 3.5 se muestra el grafo And/Or correspondiente a un sistema formado por 5 componentes (A, B, C, D y E). Los nodos que representan los subsistemas son nodos OR, y se puede elegir la tarea que se desee ejecutar para la composición/descomposición del mismo de entre los nodos sucesores. Por ejemplo, vemos como para descomponer (u obtener) el sistema ABCDE se puede ejecutar o bien la tarea T1 o bien la tarea T2 . Las operaciones o tareas son los nodos AND, y la selección de una tarea de desensamblaje da lugar a la obtención de los submontajes hijos, mientras la selección de una tarea de conexión da lugar a la obtención del submontaje padre. Por ejemplo, en caso de ejecutarse la tarea T1 en desconexión, se obtendrán los subsistemas ABCD y E.

46

CAPÍTULO 3. TRABAJO RELACIONADO

3.5.5. Métodos de programación matemática
En este apartado se presenta un modelo matemático para la planificación de la separación o desconexión de los componentes de un sistema. Los métodos de Programación Matemática (Mathematical Programming, MP) requieren modelados con un alto nivel de abstracción. En el modelo matemático que se presenta, los subsistemas y las operaciones se representan mediante los índices i y j respectivamente. Las secuencias de desconexión se representan como una secuencia de índices j. Sea N el número de componentes, debido a que cada operación es una partición, como mucho una secuencia válida contendrá N − 1 operaciones. Cada secuencia válida o solución puede ser representada mediante un subgrafo conectado del grafo And/Or original. La estructura del grafo And/Or puede ser completamente representada utilizando una matriz denominada matriz de transición T , que contiene elementos Ti,j . De nuevo, el índice i hace referencia a los subsistemas válidos y el índice j hace referencia a las operaciones de desconexión válidas. Los conjuntos de subsistemas válidos y de las operaciones de separación válidas se nombran como I y J respectivamente. Un elemento Ti,j es 1 si el subsistema i se obtiene vía la operación j, y -1 en caso de que el subsistema i se destruye por la operacíón j, tomando el valor 0 en otro caso. Tabla 3.1: Matriz de transición para el grafo And/Or de la figura 3.5 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 -1 1 . . . . . . . . 1 -1 . 1 . . 1 . . . . . . -1 1 . . . . 1 . . . . . -1 1 . . . . . 1 . . . -1 . 1 . . . 1 . . . . . -1 . . 1 . 1 . . . . . . -1 . 1 . . 1 . . . . . . -1 . 1 . . 1

Teniendo en cuenta la especificación anterior, la matriz de transición T para el grafo de la figura 3.5 es la que aparece en la tabla 3.1, en la que el valor 0 se representa por el carácter "."para que la visualización de los datos sea más clara. En la formulación del modelado, se asigna una variable binaria (0, 1) xj a cada hiperarco, y su valor es distinto de 0 sólo si la operación j se ejecuta. Se añade además una variable x0 que se corresponde con la operación inicial (operación 0), y siempre se realiza, por lo que se establece a 1 su valor, de forma que aunque no aparezca en la tabla 3.1 los valores serían T1,0 = 1 y el resto de valores Ti,0 = 0. Teniendo en cuenta esto, las variables están sujetas al siguiente conjunto de restricciones: Ti,j xj ≥ 0 ∀i
j

En la fórmula anterior, T es la matriz de transición, mientras que los subsistemas y las operaciones se indican por los índices i y j respectivamente. Esto garantiza que: Un submontaje no puede ser destruido si no ha sido previamente creado. Un submontaje no puede ser destruido por múltiples operaciones simultáneamente.

3.5. MANTENIMIENTO DE SISTEMAS

47

Si no se permiten los desmontajes incompletos, las restricciones de nodos tienen que ser más estrictas sustituyendo el signo ≥ por =, con la excepción de los nodos que se corresponden con subsistemas formados sólo por un componente, que se crean pero no se destruyen. Si se consideran los costes dependientes de la secuencia, es conveniente introducir una matriz de sucesión S, que contiene elementos enteros (0,1) en cada posición Sj,k . Un elemento Sj,k es igual a 1 sólo si la operación k puede realizarse tras la operación j. Kanehara et al. [54] propusieron un método de programación matemática a través del análisis de redes. En dicho trabajo el grafo original And/Or fue transformado por dichos autores en un problema de Programación Entera Mixta (Mixed Integer Programming, MIP) vía una representación de redes de Petri (ver sección 3.5.8). Los conceptos básicos, tales como la matriz de transición, fueron presentados en dicho trabajo y subsecuentemente aplicados a problemas de optimización con costes asignados a acciones e ingresos asociados a submontajes. Un método gráfico basado en grafos And/Or se aplica para generar así la secuencia de desensamblaje óptima [64]. En la práctica, los costes de una acción dependen, frecuentemente, de la acción predecesora. Este modelo se basa en un subconjunto de representación de estados en lugar de grafos And/Or. El uso de generación automática de secuencias de desensamblaje destinadas a la reparación y el mantenimiento fue llevada a cabo por Subramani y Dewhurst [102] como parte de un enfoque integral en el diseño para el ensamblaje, minimizando el coste del ciclo de vida completo. Un enfoque similar fue propuesto más tarde por Navin-Chandra y Bansai [81], quienes analizaban una red gráfica basada en estados de submontajes, destinados al diseño por recuperación. En dicho trabajo se propusieron métodos basados en el algoritmo del viajante y en algoritmos de búsqueda. Debido a que en dichos métodos el tiempo de ejecución crecía mucho cuando se incrementaba el número de nodos, fue necesario introducir algunas heurísticas. Como consecuencia, no siempre se alcanzaba el óptimo. Otras propuestas que utilizan métodos MP, centrados en componentes y materiales de recuperación, se pueden encontrar en el trabajo de Penev y De Ron [88], quienes trataron el problema de la optimización como un problema de minimización de distancias, basado en la representación de grafos And/Or. Este método estaba restringido a los casos cuyo estado final era conocido.

3.5.6. Planificadores adaptables
En contraste con el montaje de sistemas, que es normalmente un proceso predecible, los procesos de desconexión se caracterizan por un alto grado de incertidumbre en el suministro, en la composición del sistema y en la calidad de los componentes. Los planificadores adaptables necesitan modelos flexibles, y MP ofrece la posibilidad de hacerlo. Zülch et al. [120] hace uso de una red capaz de utilizar múltiples métodos para cada acción. Esta flexibilidad puede utilizarse para adaptar secuencias de desconexión cuando ocurren circunstancias inesperadas, tales como el fallo de alguna operación. Los planificadores adaptables basados en árboles ponderados de submontajes se discuten en [74], donde se presenta un nuevo método de desensamblaje en el que la secuencia real de operaciones de desensamblaje se va elaborando de forma progresiva durante la ejecución, en función de las circunstancias reales del proceso. En dicho trabajo se presentan resultados experimentales que verifican la flexibilidad y capacidad de reacción que posee el sistema ante eventos impredecibles, particularmente ante errores inesperados en operaciones de desensamblaje. En [71] se describe un algoritmo que minimiza los costes de mantenimiento en el caso de múltiples defectos. Se usa un algoritmo para obtener el camino más corto en una red dirigida en la que los submontajes son los nodos, incluyendo tanto los costes de desensamblaje como de ensamblaje vinculados a los arcos, y la reparación, reutilización y reciclaje de los costes de eliminación de los nodos.

48

CAPÍTULO 3. TRABAJO RELACIONADO

3.5.7. Métodos de Inteligencia Artificial
Se han llevado a cabo muchos estudios que no usan técnicas de programación matemática, sino que se basan en sofisticados métodos pertenecientes al área de la Inteligencia Artificial. Entre ellos, se incluyen trabajos que hacen uso de simulated annealing [69], o algoritmos genéticos [30]. Ambas técnicas fueron presentadas en la sección 3.2.3. A continuación se muestran otras técnicas del campo de la inteligencia artificial que han sido utilizadas para resolver problemas de ensamblaje, desensamblaje y reparación de montajes, junto con los trabajos relacionados considerados más relevantes: Sistemas multiagentes. Este tipo de sistemas incluye un número de entidades activas, llamadas agentes, que son autónomas e independientes, capaces de adaptar el sistema a su entorno. Dichos sistemas han sido aplicados por Martinez et al. [74] para seleccionar secuencias de desensamblaje. Lógica difusa (borrosa). Se aplican para trabajar con incertidumbre. Aunque la incertidumbre es inherente al desensamblaje, aparece una incertidumbre adicional debida al valor de algunos parámetros que tienen que ser estimados, tales como costes, etc. Los conjuntos difusos fueron utilizados por Wang y Allada [114], quienes lo aplicaron para garantizar la disponibilidad de servicio, enfocado a la mejora en la facilidad del mantenimiento. Esto se considera un prerrequisito muy importante para la extensión en el ciclo de vida de un producto. Dichos autores aplican una red neuronal entrenada con lógica difusa, con una secuencia que incluye desensamblaje y ensamblaje como una de sus entradas. Redes neuronales. Estas redes intentan emular el funcionamiento de las células del cerebro. Realizan un aprendizaje reforzando o mitigando conexiones, tales como una reacción ante un estímulo, y de esta forma va cambiando su estructura interna. Estas redes son particularmente útiles para distinguir los elementos de los conjuntos difusos. Las redes neuronales han sido utilizadas para la categorización de los distintos productos suministrados para el desensamblaje al final de la vida de un producto [112], y para seleccionar una secuencia de desensamblaje óptima [51]. Redes bayesianas. Son sistemas expertos estadísticos que tratan con la relación entre variables con incertidumbre y la probabilidad de su ocurrencia [96]. Los algoritmos basados en estos métodos requieren un alto coste temporal, lo que impide su uso para cálculo online. En general, se obtienen como resultado soluciones subóptimas.

3.5.8. Redes de Petri
La representación mediante redes de Petri es una herramienta muy utilizada en el modelado de diversos tipos de sistemas, tales como sistemas concurrentes. Esta herramienta trata con relaciones entre acciones incluyendo relaciones de precedencia, por tanto, las redes de Petri son ampliamente utilizadas en el estudio de sistemas flexibles de fabricación. Se aplican también en sistemas concurrentes, tales como diseño para ensamblaje, incluyendo la fabricación de componentes, el estudio del ensamblaje y el análisis de posibles modificaciones en el diseño del producto. Las redes de Petri están formadas por 4 tipos de elementos: lugares, transiciones, cambios de estados y arcos, como se puede observar en la figura 3.6. En el grafo correspondiente And/Or, estos elementos se corresponden con nodos (subsistemas), hiperarcos (acciones), matrices de transición y arcos. Los tokens son conceptualmente entidades que representan objetos del mundo real, que están sujetos a transformaciones, y deben aparecer en los lugares. La distribución de tokens en los lugares representa el estado del sistema. El número total de tokens en la red no es necesariamente constante todo el tiempo. Un cambio

3.5. MANTENIMIENTO DE SISTEMAS
TOKEN AB
ARC

49

PLACE

AB

TRANSICIÓN
ARC

A

B

A

B

(a)

(b)

Figura 3.6: Red de Petri que representa una operación elemental de desconexión (a) antes de la ejecución de la acción y (b) después de la ejecución de la acción en el estado de la red tiene lugar por movimientos de tokens de un lugar a otro, partiendo de una configuración inicial. Las transformaciones se representan mediante cambios de estado, que sólo pueden tener lugar si al menos un token está en el lugar de entrada. En el ejemplo de la figura 3.6, antes de la transición de estados, sólo un token está presente, y en el estado final hay 2 tokens. Estos cambios se controlan en la matriz de cambios de estados. Un planificador adaptable, basado en redes de Petri de productos y de estaciones de trabajo, que modifica la secuencia de desensamblaje acorde a la condición de los items en un bloque, se presenta en [104].

3.5.9. Conclusiones
En esta sección se aborda un tema de gran importancia y complejidad como es la planificación del mantenimiento y la reparación de sistemas. Dicho tema engloba multitud de aspectos y posee una alta variabilidad, lo que da lugar a un elevado número de aspectos que se pueden estudiar en futuros trabajos. A la hora de planificar el mantenimiento y la reparación de un sistema, se pueden perseguir distintos objetivos, entre los que se encuentran: minimizar el tiempo de cese del funcionamiento del sistema, minimizar el tiempo de reparación/sustitución de un componente defectuoso (este objetivo se aborda en uno de los trabajos realizados, el cual se detalla en la sección 3.6), minimizar costes, maximizar la productividad del sistema, etc. En la mayoría de sistemas se persigue la combinación de varios objetivos, por lo que la obtención de una solución óptima lleva asociado una alta complejidad. Teniendo en cuenta todo lo anterior, aunque existen muchos trabajos relacionados, consideramos que es una línea prometedora y de gran interés, por lo que continuaremos planteando trabajos relacionados con este tema.

50

CAPÍTULO 3. TRABAJO RELACIONADO

3.6. Un Modelado CSP para Planes de Reparación
En esta sección se expone uno de los trabajos realizados, el cual ha sido publicado en la revista "Journal of Intelligent Manufacturing"[109]. Presenta un modelado CSP para planificación y scheduling de tareas de ensamblaje y desensamblaje cuando es necesario reparar o sustituir una pieza defectuosa, previamente detectada. El problema no sólo engloba el orden de tareas de ensamblaje y desensamblaje, sino también la selección de las mismas desde un conjunto de distintas alternativas. El objetivo del plan es minimizar el tiempo total de reparación, y el modelo considera, además de las duraciones y los recursos utilizados para las tareas de ensamblaje y desensamblaje, el retraso debido a los cambios de configuración en las máquinas y al transporte de los submontajes intermedios entre las distintas máquinas. El problema considera que los submontajes que no contienen la pieza defectuosa no son desmontados, al mismo tiempo que se permiten planes de reparación paralelos y no reversibles. El conjunto de todos los planes de reparación satisfactibles se representan mediante un grafo And/Or extendido. Mediante este tipo de estructuras es posible representar todas las restricciones del problema, tanto temporales como de recursos, y aquéllas relacionadas con la selección de tareas para obtener un plan correcto.

3.6.1. Introducción
Los problemas de scheduling han sido utilizados con éxito en un amplio número de aplicaciones usando técnicas basadas en restricciones. La mayoría de estos problemas pueden ser modelados de forma natural, teniendo en cuenta que las acciones son configuradas, las variables son elegidas para representar a parámetros temporales desconocidos (principalmente tiempo de comienzo y de fin) o al orden de tareas, y las restricciones reúnen restricciones de precedencia y de recursos [10]. Se han considerado algunas extensiones a scheduling, tales como recursos y procesos alternativos, que dan lugar modelos más cercanos a planificación, tales como problemas de selección de acciones, que son considerados a menudo problemas de planificación [99]. Por otro lado, la comunidad de planificación AI ha realizado verdaderos esfuerzos para extender las técnicas de planificación clásicas de forma que se posibilite el tratamiento de restricciones de tiempo y recurso. Desde que los problemas reales combinan planificación y scheduling, existe un interés creciente para integrar ambos tipos de técnicas [14]. La programación con restricciones ha sido utilizada en varios planificadores recientes [79], así pues este paradigma se encuentra situado en el corazón de la combinación de las técnicas de planificación y scheduling. Algunas de las aplicaciones que poseen dicha combinación se encuentran englobadas dentro de la planificación del mantenimiento y la reparación, donde existe una cascada de selecciones de acciones, facilidades, herramientas o personal, que afectan a la duración de los planes [99]. En esta sección se comenta un trabajo que presenta un modelado CSP para resolver problemas de planificación correspondientes a la secuencia óptima de tareas de ensamblaje y desensamblaje para reparar o sustituir piezas defectuosas. La planificación de ensamblaje y desensamblaje es my importante en procesos de fabricación de productos y sus ciclos de vida. Éstos incluyen la identificación, selección y secuenciación de operaciones de ensamblaje y desensamblaje, que pueden ser especificados por sus efectos en las piezas. La identificación de operaciones de ensamblaje y desensamblaje se lleva a cabo normalmente analizando la estructura del producto y la viabilidad de cada posible tarea [49, 18], y normalmente da lugar a un conjunto de planes viables. La mayoría de las propuestas de selección óptima de planes de ensamblaje emplean distintos tipos de reglas para eliminar tareas difíciles o submontajes intermedios no adecuados [49][44]. En otro contexto, la planificación del desensamblaje ha sido objeto de diferentes estudios, variando desde propósitos de mantenimiento hasta propósitos de reparación para reciclar o recuperar materiales útiles [70, 64, 65]. Para resolver estos problemas se han utilizado distintas técnicas, desde programación matemática hasta una variedad de métodos relacionados con la inteligencia artificial [66]. Al igual que para otros problemas de pla-

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

51

nificación y scheduling, una propuesta basada en CSP puede ser adecuada para resolver el problema propuesto. Este trabajo está centrado en la selección de tareas de ensamblaje y desensamblaje para la reparación de piezas defectuosas, y su ordenación óptima. El objetivo es minimizar el tiempo total de reparación cuando el plan es ejecutado en un entorno genérico de múltiples máquinas, considerando diferentes factores que pueden influir en el mismo: duraciones de las tareas, recursos compartidos, modos de operación (configuración de las máquinas) y una estimación del tiempo necesario para realizar operaciones auxiliares, tales como el transporte de submontajes intermedios entre las distintas máquinas, y cambios en la configuración de las máquinas. El problema general puede contener diferentes tipos de planes, pero en este trabajo nos centramos en planes de reparación reversibles y paralelos que no desensamblan los submontajes que no poseen la pieza defectuosa. Esta sección está organizado como sigue: en la sección 3.6.2 se detalla el modelo de reparación propuesto, en la sección 3.6.3 se explica el modelado CSP para la planificación de la sustitución de piezas defectuosas, mientras en la sección 3.6.4 se muestran algunos resultados experimentales de la resolución del problema mediante distintos métodos. Por último, en la sección 3.6.5 se presentan algunas conclusiones del trabajo realizado y los trabajos futuros que se plantean a partir del modelo propuesto.

3.6.2. El problema de la planificación en reparación
Una forma usual de describir y representar el conjunto de planes viables para ensamblaje y desensamblaje es a través de grafos And/Or [48]. En estos grafos, cada plan de ensamblaje/desensamblaje está asociado a un árbol de ensamblaje/desensamblaje, y un camino And/Or que comienza en el nodo raíz y termina en los nodos hojas, y muestra las restricciones de precedencia entre las tareas que forman parte del plan. En esta representación, los nodos Or se corresponden con submontajes, el nodo raíz se corresponde con el producto completo, y los nodos hojas con las piezas individuales. Cada nodo And se corresponde con tareas de ensamblaje que unen los submontajes de los dos nodos hijos para dar lugar al submontaje correspondiente al nodo padre. Los nodos And que se encuentran situados inmediatamente debajo de un nodo Or se corresponden con las tareas de ensamblaje alternativas que pueden ser seleccionadas para obtener el submontaje correspondiente al nodo Or. Además, cada nodo And se corresponde con la tarea de desensamblaje, opuesta a la de ensamblaje, que descompone este mismo submontaje. Una ventaja importante de este tipo de representación es que el grafo And/Or muestra las tareas de ensamblaje/desensamblaje que pueden ser ejecutadas en paralelo, tal y como puede verse en la figura 3.7. Además, tanto las restricciones de precedencia como las relacionadas con la selección de tareas para construir un plan viable, pueden obtenerse fácilmente desde esta representación. Teniendo en cuenta que una tarea de ensamblaje/desensamblaje se ejecuta en una máquina con una configuración determinada, es necesario tener en cuenta otras operaciones auxiliares que se exponen a continuación: operaciones de configuración (cambian la configuración de la máquina). ∆cht (M, C, C ) denota el tiempo necesario para cambiar la configuración de la máquina M de C a C transporte de submontajes entre diferentes máquinas. ∆mov (SA, M, M ) denota el tiempo requerido para transportar el submontaje SA desde la máquina M a M . Como se explica en la siguiente sección, una extensión de esta representación permitirá un mapeado directo desde el problema de planificación a un problema de satisfacción de restricciones, para ser resuelto utilizando programación con restricciones.

52

CAPÍTULO 3. TRABAJO RELACIONADO
ABCDE

T1

T2

ABCD

T3

ACD

T4

T5

AC

AD

BE

T6

T7

T8

A

B

C

D

E

Figura 3.7: El grafo And/Or de ensamblaje para el sistema ABCDE Para reparar o sustituir una pieza defectuosa (previamente detectada), es necesario ejecutar una secuencia de tareas de desensamblaje para obtener la pieza defectuosa. Tras esto, una acción de reparación sustituye o repara dicha pieza, y entonces una secuencia de tareas de ensamblaje debe construir el producto inicial. En el plan, hay que tener en cuenta los dos tipos de operaciones auxiliares comentadas anteriormente (configuración de máquinas y transporte de submontajes). Desde la perspectiva de planificación en inteligencia artificial, el dominio de planificación debe contener las siguientes acciones: assemble(sub1, sub2, result): ensambla los submontajes sub1 y sub2 para obtener result. disassemble(result, sub1, sub2): desensambla result para obtener los dos submontajes sub1 y sub2. move_subassembly(sub, mach1, mach2): mueve el submontaje sub desde la máquina mach1 hasta mach2. change_conf iguration(mach, conf 1, conf 2): cambia la configuración de la máquina mach1 de conf 1 a conf 2. repair_part(p): repara o sustituye la pieza p. El planificador debe obtener la secuencia óptima de operaciones de desensamblaje para extraer la pieza defectuosa, la tarea de sustitución o reparación, y la secuencia de tareas de ensamblaje. El problema general puede incluir la búsqueda en el grafo And/Or completo, permitiendo diferentes tipos de planes. Normalmente, se cumplen ciertas propiedades que se pueden tener en cuenta para simplificar la resolución del problema. Algunas de ellas son consideradas en este trabajo y se encuentran recopiladas en las siguientes definiciones. Definición 1. Un grafo de reparación es un subgrafo del grafo And/Or que sólo contiene las tareas de ensamblaje y desensamblaje (y los correspondientes submontajes) que podrían ser necesarios para reparar algunas piezas, de acuerdo con el modelado simplificado considerado.

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

53

Definición 2. Una tarea T de ensamblaje (desensamblaje) es reversible si su correspondiente tarea de desensamblaje (ensamblaje) T es viable, es decir, si ambas tareas manejan los mismo submontajes pero de forma opuesta, quizás utilizando diferentes máquinas o configuraciones. Se denominan tareas invertidas una con respecto a la otra. Definición 3. Un plan reversible es un árbol del grafo de reparación que sólo contiene tareas reversibles, de forma que para cada tarea de desensamblaje, su tarea inversa de ensamblaje está incluida. El modelado de planificación desarrollado en este trabajo supone las siguientes condiciones: (C1) Todas las tareas son reversibles. (C2) Los submontajes que no incluyen las piezas defectuosas no se desensamblan. Teniendo en cuenta las condiciones consideradas, se puede observar: La condición (C1) no implica que los planes sean reversibles. Si sólo debe ser reparado un componente, la condición (C1) asegura que, cuando se impone (C2), hay al menos una solución, correspondiente a un plan reversible, donde las tareas de ensamblaje y desensamblaje se secuencian de forma lineal. En el proceso de ensamblaje, otros submontajes diferentes de los generados durante el desensamblaje pueden aparecer, dependiendo de la forma de unión. Este caso se da cuando, para una tarea de desmontaje determinada que forma parte del plan, no se selecciona su tarea de ensamblaje inversa. Las tareas de desensamblaje sólo manejan submontajes que contienen piezas defectuosas, mientras que las tareas de ensamblaje manejan submontajes que pueden contener o no piezas defectuosas. En general, los planes no son secuencias lineales de tareas, a diferencia de los planes reversibles. Aunque el proceso de desensamblaje es lineal, el ensamblaje puede contener tareas que se pueden ejecutar en paralelo con otras. Además, es posible que el proceso de ensamblaje comience antes de que el desensamblaje haya finalizado, utilizando aquellos submontajes o piezas individuales que se generaron tras la ejecución de tareas de desensamblaje. Adicionalmente, aunque los procesos de desensamblaje y ensamblaje sean lineales, puede haber una ejecución paralela de dos tipos de tareas.

3.6.3. El modelado CSP
Acorde con la definición del problema realizada anteriormente, las típicas restricciones de tiempo y recursos de scheduling podrían ser transformadas en restricciones condicionales teniendo en cuenta que las tareas (y los submontajes) pueden no aparecer en la solución. Existe una propuesta similar realizada en trabajos previos para aplicaciones de planificación y configuración, haciendo uso de modelos DCSP [78] y transformándolos a CSPs [32]. La mayoría de las ideas han sido extraídas de trabajos anteriores [73], pero las consideraciones tenidas en cuenta en este trabajo modificará la mayoría de las restricciones y añadirá otras nuevas. Para obtener una solución, teniendo en cuenta las condiciones (C1) y (C2) de la sección anterior, el grafo And/Or puede ser simplificado (ver figuras 3.7 y 3.8), eliminando aquellos nodos And (desensamblaje) debajo de los nodos Or correspondientes a submontajes que no contienen la pieza defectuosa, pero manteniendo los mismos nodos And para ensamblaje que podrían ser utilizados en el proceso de ensamblaje. Esto puede realizarse con un recorrido transversal en anchura del grafo And/Or. Ahora, los nodos hoja del grafo de ensamblaje And/Or son las piezas individuales y los submontajes que no contienen la pieza defectuosa. Todos estos nodos serán procesados de la misma forma, exceptuando la pieza defectuosa. En la figura 3.9 se puede ver un ejemplo de esta representación, donde

54

CAPÍTULO 3. TRABAJO RELACIONADO
ABCDE

T’ 1

T’ 2

ABCD

T’ 3

ACD

T’ 4

T’ 5

AC

AD

BE

T’ 6

T’ 7

T’ 8

A

B

C

D

E

Figura 3.8: El grafo And/Or simplificado de desensamblaje para el sistema ABCDE cuando la pieza defectuosa es D es posible observar tanto los procesos de ensamblaje como los de desensamblaje. Por claridad, los nodos Or correspondientes a los mismos submontajes se repiten en ambas partes del grafo, ensamblaje y desensamblaje. La tabla 3.2 muestra el número de nodos Or y And en grafos And/Or correspondientes a conjuntos de productos hipotéticos de 30 y 40 piezas. Suponiendo que cada pieza individual debe ser reparada, se incluyen los valores medios del números de nodos Or, And, And’ (tareas de desensamblajes), y de planes de desensamblaje y reparación en los grafos And/Or simplificados, respectivamente. Tabla 3.2: Número de nodos And/Or y planes para cada problema Grafo And/Or Problema 30d 30c 30b 30a 40d 40c 40b 40a #Or 408 415 404 348 756 770 759 649 #And 837 863 828 630 2060 2143 2086 1518 #Or 294 310 303 223 598 621 604 433 #And 506 546 520 327 1400 1489 1433 833 Grafo And/Or simplificado #And’ 365 384 365 240 925 984 947 575 #Planes Des. 3071 3634 3045 623 54449 70980 76171 9370 #Planes Rep. 9414 12846 9200 1213 197551 248408 405661 23005

Variables del CSP Cada nodo del grafo And/Or está asociado a un conjunto de variables en el CSP: Para las tareas de ensamblaje y desensamblaje correspondientes a cada nodo And, T y T respectivamente: sus duraciones dur(T ) y dur(T ); las máquinas utilizadas

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

55

ABCDE

T’1

T’2

ABCD

T’3

ACD

T’4

T’5

AC

AD

BE

T’7

A

B

C

D

E

T6

T7

T8

AC

AD

BE

T4

T5

ACD

T3

ABCD

T1

T2

ABCDE

Figura 3.9: El grafo And/Or simplificado de reparación para el sistema ABCDE cuando la pieza defectuosa es D

56

CAPÍTULO 3. TRABAJO RELACIONADO
M (T ) y M (T ); y la configuración necesaria que deben tener, C(T ) y C(T ); sus tiempos de comienzo, ti (T ) y ti (T ); sus tiempos de finalización tf (T ) y tf (T ); y dos variables booleanas representando si las tareas son seleccionadas o no para la solución, s(T ) y s(T ) respectivamente. Para cada submontaje SA (nodo Or): la máquina utilizada para su ensamblaje, m(SA); los tiempos de obtención tras el ensamblaje, tOR (SA), y desensamblaje, tOR (SA); y dos variables booleanas representando si el submontaje SA aparece en el proceso de desensamblaje y ensamblaje, s(SA) y s (SA) respectivamente. Por último, para la pieza a reparar P se cuenta con un retraso temporal subst(P ), correspondiente al tiempo de reparación o sustitución de la misma. Para este trabajo se supondrá que subst(P ) no depende de la máquina de la que proceda P tras el desensamblaje ni de donde se realice la reparación.

Con respecto a los tipos de acciones (operadores) desde la perspectiva de la planificación AI de la sección 3.6.2, es importante resaltar que los operadores de ensamblaje y desensamblaje están vinculados a los nodos And. El operador repair_part está asociado al nodo Or correspondiente a la pieza defectuosa P , y el retraso subst(P ) representa la tarea de reparación. El grafo And/Or extendido Aunque la representación mediante el grafo And/Or muestra tanto las restricciones de precedencia como las restricciones asociadas a la selección de tareas para obtener un plan de ensamblaje y desensamblaje válido, vamos a extender dicho grafo de forma que la nueva representación incluye todas las restricciones contenidas en el problema, añadiendo nuevos tipos de enlaces entre nodos And. Los nuevos enlaces representan restricciones que no son de precedencia: debido al uso de los recursos compartidos por las tareas (restricción de tipo 5, que será comentada más adelante). teniendo en cuenta los retrasos debidos al cambio de configuración en las máquinas (restricción de tipo 4, que será comentada más adelante); cht(M, C, C ) denotará el tiempo requerido para cambiar la configuración de la máquina M de C a C . El transporte de submontajes intermedios supondrá un retraso adicional que debe ser considerado en las restricciones de precedencia; mov(SA, M, M ) denotará el tiempo necesario para el transporte del submontaje SA de la máquina M a M . Acorde a los operadores de la perspectiva de planificación AI de la sección 3.6.2, el operador move_subassembly no tiene una tarea explícita en el modelado CSP, y se tiene en cuenta con el retraso mov(∆). De forma similar, el operador change_conf iguration no tiene una tarea explícita en el modelado CSP, y se considera a través del retraso cht(∆). La figura 3.10 muestra el grafo And/Or de reparación extendido y simplificado, correspondiente al ejemplo en el que el producto completo es ABCDE y la pieza defectuosa es D, en el caso general de que los planes de ensamblaje y desensamblaje podrían ser diferentes. Para poder comprender mejor este tipo de restricciones, la figura 3.11 muestra sólo los planes de desensamblaje posibles del grafo de reparación And/Or resultante para el producto ABCDE cuando D es la pieza defectuosa, y los posibles planes de ensamblaje que podrían completar la solución. La figura 3.11 muestra que para un mismo plan de desensamblaje (T1 -T3 -T4 en el ejemplo) pueden existir diferentes planes de ensamblaje alternativos (T4 -T3 -T1 y T4 -T8 -T2 en el ejemplo). Aunque todos los nodos hojas generados en el proceso de desensamblaje (AC, B, D, E) deben aparecer en el proceso de ensamblaje, no ocurre lo mismo con los submontajes intermedios, que aparecerán o no dependiendo de las tareas de ensamblaje seleccionadas.

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

57

ABCDE
M2 C3

T’1

T’2

...

(1)

ABCD

(2)

M1 C2

T’3

(3)

ACD

(4)
M2 C3

T’4

T’5

M1 C2

(5) AC AD BE

T’7

M3 C6

A

B

C

D

E

M2 C4

T6

T7

M1 C2

T8

M2 C4

AC

AD

BE

M2 C5

T4

T5

M1 C2

ACD

M3 C6

T3

ABCD

M2 C4

T1

T2

M2 C5

ABCDE

Figura 3.10: El grafo And/Or de reparación extendido y simplificado para la sustitución de la pieza D en el producto ABCDE cuando se consideran todos los planes de desensamblaje posibles

58

CAPÍTULO 3. TRABAJO RELACIONADO

ABCDE

M3 C7

T’1

ABCD

M2 C3

T’3

ACD

T’4

M1 C2

AC

B

D

E

T8

M2 C5

AC

BE

T4

M2 C5

ACD

M2 C4

T3

ABCD

M2 C4

T1

M2 C3

T2

ABCDE

Figura 3.11: El grafo And/Or de reparación extendido y simplificado para la sustitución de la pieza D en el producto ABCDE cuando se considera un solo plan de desensamblaje

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

59

Además, las tareas reversibles pueden usar diferentes máquinas y/o configuraciones, por lo que es necesario tener en cuenta los posibles retrasos ocasionados por el transporte de los submontajes intermedios entre distintas máquinas cuando tareas reversibles utilizan máquinas diferentes, y los posibles retrasos debidos a cambios de configuraciones cuando utilizan la misma máquina. Tipos de restricciones En este apartado se presentan los diferentes tipos de restricciones para el modelo CSP propuesto. Cada tipo de restricciones se corresponde con un enlace o componente del grafo And/Or extendido (ver figura 3.10). En las tablas 3.3-3.7 se muestran algunos tipos de restricciones. Las restricciones de tipo 1 recogen la relación entre la información de un nodo Or y de los nodos And que se encuentran situados debajo de él en el grafo And/Or original. Por un lado, estas restricciones incluyen la selección de tareas de desensamblaje T y de tareas de ensamblaje T , expresadas a través del operador XOR, ya que una y sólo una tarea alternativa (desensamblaje o ensamblaje) podrá ser seleccionada para construir o desensamblar un submontaje, si este submontaje formara parte de la solución: s (SA) ⇔ XORTi ∈succ(SA) (s(Ti )) s(SA) ⇔ XORTi ∈succ(SA) (s(Ti )) Por otro lado, estas restricciones establecen los tiempos de desensamblaje tOR y de ensamblaje tOR de los nodos Or relativos a los tiempos de comienzo de las tareas de desensamblaje o a los tiempos de finalización de tareas de ensamblaje: s(Ti ) ⇒ ti (Ti ) ≥ tOR (SA) + ∆mov (SA, m (SA), m(Ti )) s(Ti ) ⇒ tf (Ti ) = tOR (SA) y la máquina m donde un submontaje se genera tras una tarea de ensamblaje: s(Ti ) ⇒ m(SA) = m(Ti ) Para el producto completo y para la pieza defectuosa se da un caso especial, ya que siempre formarán parte de la solución, siendo ciertas las variables booleanas asociadas a ellos. Además, para los nodos Or hoja (incluyendo aquéllos que no contienen la pieza defectuosa) tOR y tOR son iguales, excepto para la pieza defectuosa, donde es necesario considerar el retraso por reparación o sustitución. El tiempo origen está marcado por la variable tOR del producto completo, y el objetivo consiste en minimizar la variable tOR para el producto completo. La tabla 3.3 muestra algunos ejemplos representativos de restricciones de tipo 1, correspondientes al grafo And/Or de reparación extendido y simplificado de la figura 3.10. Las restricciones de tipo 2 consideran las duraciones de las tareas de ensamblaje y desensamblaje y se corresponden con las relaciones entre los tiempo de comienzo y de finalización de las mismas: s(Ti ) ⇒ tf (Ti ) = ti (Ti ) + dur(Ti ) Las restricciones de tipo 3 recogen la relación entre la información de un nodo And y el (los) nodo(s) Or que aparecen debajo de él en el grafo And/Or original. Además de la selección obligatoria de los dos nodos Or si el nodo And es seleccionado, s(T ) ⇒ s (SA1 ) ∧ s (SA2 )

60

CAPÍTULO 3. TRABAJO RELACIONADO

Tabla 3.3: Conjunto de restricciones de tipo (1) para el grafo And/Or de reparación de la figura 3.10 Tipo Restricciones s (ABCDE) = s(ABCDE) = s (D) = s(D) = true ∧ tOR (ABCDE) = 0 s (ABCDE) ⇒ (s(T1 )XORs(T2 )) s(T1 ) ⇒ (m (ABCD) = m (E) = M2 ∧ tOR (ABCD) = tOR (E) = tf (T1 )) s(T2 ) ⇒ (m (ACD) = m (BE) = M1 ∧ tOR (ACD) = tOR (BE) = tf (T2 )) . . . s (SA) ⇒ (s(SA) ∧ m(SA) = m (SA) ∧ tOR (SA) = tOR (SA)), SA ∈ {A, B, C, E, AC, BE} s (D) ⇒ (m(D) = m (D) ∧ tOR (D) = tOR (D) + ∆sust (D)) s(A) ⇒ (s(T6 )XORs(T7 )) ∧ ¬s(A) ⇒ (¬s(T6 ) ∧ ¬s(T7 )) s(T6 ) ⇒ (m(AC) = M2 ∧ tOR (AC) = tf (T6 )) s(T7 ) ⇒ (m(AD) = M1 ∧ tOR (AD) = tf (T7 )) s(B) ⇒ (s(T3 )XORs(T8 )) ∧ ¬s(B) ⇒ (¬s(T3 ) ∧ ¬s(T8 )) . . . s(ABCD) ⇒ s(T1 ) ∧ ¬s(ABCD) ⇒ ¬s(T1 ) s(T1 ) ⇒ (m(ABCDE) = M2 ∧ tOR (ABCDE) = tf (T1 ))

(1)

s(T ) ⇒ s(SA1 ) ∧ s(SA2 ) incluyen restricciones de igualdad entre los tiempos de desensamblaje de los nodos Or tOR y los tiempos de finalización de las tareas de desensamblaje T que aparece sobre dicho nodo Or en el grafo And/Or original, s(Ti ) ⇒ tf (Ti ) = tOR (SA1 ) = tOR (SA2 ) y la precedencia entre los tiempos de ensamblaje de los nodos Or, tOR , y los tiempos de comienzo de las tareas de ensamblaje T (nodos And), y considerando los posibles retrasos debidos al transporte de los submontajes si las dos tareas consecutivas involucradas usan máquinas diferentes: s(Ti ) ⇒ ti (Ti ) ≥ tOR (SA1 ) + ∆mov (SA, m(SA1 ), m(Ti )) s(Ti ) ⇒ ti (Ti ) ≥ tOR (SA2 ) + ∆mov (SA, m(SA2 ), m(Ti )) Además, la máquina m en la que un submontaje se genera tras una tarea de desensamblaje, es la máquina usada por dicha tarea de desensamblaje: s(Ti ) ⇒ m (SA1 ) = m(Ti ) s(Ti ) ⇒ m (SA2 ) = m(Ti ) La tabla 3.4 muestra algunos ejemplos indicativos de restricciones de tipo 2 y 3 correspondientes al grafo de reparación And/Or extendido y simplificado de la figura 3.8. Las restricciones de tipo 4 recogen la relación entre la selección de un nodo Or y todos los nodos And situados sobre él (puede ser sólo uno) en el grafo And/Or original. Las restricciones temporales entre dichos nodos se incluyen en las restricciones de tipo 3 comentadas anteriormente.

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

61

s (SA) ⇔ XORTi ∈pred(SA) (s(Ti )) s(SA) ⇔ XORTi ∈pred(SA) (s(Ti )) La tabla 3.5 muestra algunos ejemplos indicativos de restricciones de tipo 4 correspondientes al grafo de reparación And/Or extendido y simplificado de la figura 3.10. Todos los tipos de restricciones comentados hasta ahora provienen de las relaciones entre los nodos incluidos en el grafo And/Or original. Los dos tipos de restricciones que aparecen a continuación provienen del uso de (los mismos o diferentes) recursos por tareas de ensamblaje y desensamblaje diferentes, y están relacionados con nuevos enlaces entre tareas en el grafo And/Or extendido. Las restricciones de tipo 5 se deben al retraso debido al cambio de configuración en una máquina entre las ejecuciones de tareas de ensamblaje y desensamblaje que usan la misma máquina, existiendo restricciones de precedencia entre ellas. Dichas restricciones incluyen las relaciones entre las tareas de ensamblaje y desensamblaje reversibles. Se puede observar en la figura 3.11 que para un plan particular de reparación sólo es necesario relacionar cada tarea de ensamblaje con su tarea de ensamblaje sucesora más cercana en el árbol And/Or que usa la misma máquina, y lo mismo para tareas de desensamblaje. Para una tarea Ti , y su tarea predecesora más cercana que usa la misma máquina Tj , teniendo en cuenta los posibles cambios de configuración en la máquina, (s(Ti ) ∧ s(Tj )) ⇒ ti (Tj ) ≥ tf (Ti ) + ∆cht (m, C(Ti ), C(Tj )) debe ser satisfecha. Además, ya que la solución puede contener tareas no reversibles, cada tarea de desensamblaje debe ser relacionada con cada una de las tareas (no tiene por qué ser sólo una) de desensamblaje sucesoras más cercanas que usen la misma máquina. Por otro lado, cuando ambas tareas usan la misma configuración, la restricción resultante es superflua y se puede eliminar. Para el ejemplo de la figura 3.11, la tarea de desensamblaje T3 está relacionada con T8 y T4 . SE puede observar que la tarea de ensamblaje T4 está relacionada con T3 y T2 , cada una perteneciente a un plan de reparación diferente (. . .-T4 T3 -T1 y . . .-T4 -T8 -T2 ). La tabla 3.6 muestra algunos ejemplos representativos de diferentes restricciones de tipo 5 correspondientes al grafo de reparación And/OR extendido y simplificado de la figura 3.10. Por último aparece un nuevo tipo de restricciones, tipo 6, teniendo en cuenta que algunas tareas (de ensamblaje o desensamblaje) pueden ejecutarse en paralelo dependiendo del uso de recursos compartidos. Para cada par de tareas Ti y Tj que requieren la misma máquina m, sin restricciones de precedencia entre ellas, y que pueden pertenecer al mismo plan de reparación, las restricciones de tipo 6 expresan los dos posibles órdenes de ejecución de las tareas: (s(Ti ) ∧ s(Tj )) ⇒ (ti (Ti ) ≥ tf (Tj ) + ∆cht (m, C(Tj ), C(Ti )) ∨ ti (Tj ) ≥ tf (Ti ) + ∆cht (m, C(Ti ), C(Tj ))) Para el ejemplo de la figura 3.8, la tarea de ensamblaje T8 se relaciona con la tarea de desensamblaje T4 y con la tarea T4 en el grafo de reparación compuesto por T1 -T3 -T4 -T8 T4 -T2 , mostrando que la tarea de ensamblaje T8 puede ser ejecutada antes o después de T4 y T4 . La tabla 3.7 muestra algunos ejemplos representativos de diferentes restricciones de tipo 6 correspondientes al grafo de reparación And/Or extendido y simplificado de la figura 3.10. Un objetivo típico para este tipo de problemas es minimizar el tiempo de ejecución del plan, que es el tiempo en el que el producto es reensamblado tras la reparación, dado por la variable (tOR (ABCDE)) para el ejemplo mostrado. Nótese el carácter combinatorial del problema debido a las restricciones XOR de tipo 1 y 4 y las restricciones disyuntivas de

62

CAPÍTULO 3. TRABAJO RELACIONADO

tipo 6. Estos tipos de restricciones se corresponden, respectivamente, con la selección de tareas alternativas (de ensamblaje o desensamblaje) y con el uso de recursos compartidos por las tareas que no están vinculadas por restricciones de precedencia.

3.6.4. Resultados experimentales
En este apartado se muestran algunos resultados experimentales relacionados con diferentes métodos algorítmicos para obtener planes de reparación. El modelo CSP descrito ha sido probado utilizando un algoritmo básico basado en backtracking implementado en ILOG Solver [52] (dicho algoritmo será referenciado como ALG-2). Para la búsqueda se establece un límite temporal de 300 segundos. Para guiar la búsqueda, el orden de las variables a instanciar es desde arriba hacia abajo en el grafo And/Or extendido. Las tablas 3.8 y 3.9 muestran una comparativa realizada entre diferentes algoritmos utilizados para resolver el problema de reparación mediante planificación. Cada fila engloba a un conjunto de 80 instancias de grafos And/Or para productos hipotéticos de 30 o 40 piezas, con diferentes combinaciones para las duraciones de las tareas, máquinas y configuraciones utilizadas, y pieza defectuosa a ser reparada. Los experimentos han sido realizados en un 2,13 GHz Intel Core 2 Duo con 2 GB RAM. En primer lugar, se ha hecho uso de un planificador genérico (SGPlan, [20]), ganador del 1st Prize Satisficing (sub-optimal) Planning in the Deterministic Part of the International Planning Competition (IPC-5) en 2006 [31], ha sido utilizado para resolver los problemas correspondientes relativos a una definición de dominios adaptada. El segundo algoritmo que aparece fue utilizado en un trabajo previo [73] (dicho algoritmo será referenciado como ALG-1). Este algoritmo, implementado en Ilog Solver y Scheduler, trabaja con un CSP dinámico y un modelado más restrictivo que sólo permite planes lineales. Acorde a los tres algoritmos presentados anteriormente, se han estudiado algunas características consideradas relevantes: Best: Fracción de soluciones para cada método que coincide con la mejor solución obtenida por los tres algoritmos. ∆ Best: Desviación media relativa a la mejor solución encontrada. #opt: Número de soluciones que ha sido demostrado que son óptimas encontradas por ALG-2. T imeAve : tiempo medio, en segundos, consumido por el algoritmo para conseguir la solución. Los resultados que aparecen en la tabla 3.8 muestran que el comportamiento de ALG-2 es altamente dependiente de las características estructurales del grafo. En algunos casos (30a y 40c) dicho algoritmo obtiene las mejores soluciones, pero en otros casos (30d, 30c, 40d y 40a) los otros algoritmos son mejores. En otros casos (30b y 40b) algunos problemas se resuelven de la mejor forma posible y otros de la peor. Además, la solución óptima se garantiza en algunos tipos de problemas (30a, 40b y 40c). Los resultados obtenidos por ALG-1 son los mejores en algunos casos (30d, 30c, 40d y 40a), dando lugar a resultados intermedios en otros (30b, 30a, 40c y 40b). Por otro lado, los resultados encontrados por SGPlan son los peores en la mayoría de los casos. En la tabla 3.9 se puede observar que el algoritmo más rápido es ALG-1 y que el más lento es ALG-2.

3.6.5. Conclusiones y trabajo futuro
Este trabajo propone un modelado CSP para planificación y secuenciación de tareas de ensamblaje y desensamblaje cuando es necesario reparara o sustituir piezas defectuosas. Se han realizado dos suposiciones, que los submontajes que no contienen la pieza defectuosa no se desensamblan, pero permitiendo realizar planes de reparación paralelos y reversibles.

3.6. UN MODELADO CSP PARA PLANES DE REPARACIÓN

63

El CSP puede ser resuelto directamente haciendo uso de métodos convencionales para CSP genéricos. Además, se puede utilizar un enfoque DCSP de forma que la selección de tareas y submontajes impondrían la adición o el borrado de las restricciones correspondientes. Como trabajo futuro, además del uso de diferentes algoritmos para resolver el problema, se propone el desarrollo de modelos más generales, considerando el mantenimiento y la reparación de varias piezas, y que las tareas puedan no ser reversibles, donde la solución puede implicar descomponer submontajes que no incluyen la pieza defectuosa.

64

CAPÍTULO 3. TRABAJO RELACIONADO

3.7. Un Modelado del JSSP para Búsqueda Local Basada en Restricciones
Este trabajo ha sido presentado en el workshop internacional Iberamia 2008 Workshop on Planning, Scheduling and Constraint Satisfaction [9]. Propone un modelado basado en restricciones para el problema Job Shop Scheduling para ser resuelto utilizando técnicas de búsqueda local. Los principales aspectos del modelado son: el uso de variables enteras que representan el orden relativo de las operaciones a planificar, y dos restricciones globales, alldifferent e increasing, para asegurar la satisfactibilidad. Una propiedad muy interesante de este modelado es que la detección de ciclos en los planes está implícita en la satisfacción de las restricciones. Para probar el modelado propuesto, se ha hecho uso de un algoritmo parametrizado de búsqueda local, que utiliza un vecindario similar al de Nowicki y Smutnicki, el cual ha sido adaptado al modelado propuesto de forma adecuada.

3.7.1. Introducción
La Programación con Restricciones (CP) ha evolucionado en la última década a un campo maduro debido a, entre otros, el uso de diferentes procedimientos genéricos e intercambiables para inferencia y búsqueda, que pueden ser utilizados para resolver diferentes tipos de problemas [27, 46]. Aunque la separación de modelados y algoritmos es deseable para la reutilización, existe una influencia entre ellos que se debe tener en cuenta cuando se persigue un buen comportamiento del método resultante completo. La mayoría de modelados utilizados en CP han sido probados haciendo uso de algoritmos completos, los cuales no son tan adecuados como otras propuestas de búsqueda local [110]. Este artículo propone un modelado basado en problemas de satisfacción de restricciones (CSP) para el problema Job Shop Scheduling (JSSP) para ser resuelto haciendo uso de técnicas de búsqueda local. Dichas técnicas definen las variables que determinan una solución, las restricciones del problema relacionadas con dichas variables y un conjunto de vecindarios posibles. Este problema ha sido resuelto por diferentes autores mediante búsqueda local [53, 83, 108], pero la novedad radica en el modelado propuesto, basado en la inclusión del orden de las operaciones directamente en las variables y las restricciones del CSP, de forma que las definiciones y los desarrollos de los principales componentes de los algoritmos de búsqueda local obtengan ventajas de esta representación. Para estas técnicas, un aspecto muy importante es la definición del vecindario, que es el conjunto de candidatos hacia los cuales la búsqueda puede continuar desde la solución actual. Para JSSP, uno de los mejores métodos fue propuesto por Nowicki and Smutnicki [83], cuyo vecindario es más restringido que otras propuestas previas. En este trabajo se propone una adaptación y una extensión de este vecindario, de forma que sea adecuado al modelado CSP definido. El resto de la sección está organizado como sigue. En la sección 3.7.2 se presenta una formulación del JSSP. La sección 3.7.3 incluye las principales ideas de los algoritmos de búsqueda local. La sección 3.7.4 describe el modelado propuesto. Tras esto, se muestran y analizan algunos resultados experimentales. Finalmente, en la sección 3.7.6 se presentan algunas conclusiones y trabajos futuros.

3.7.2. Definición del Problema
El problema Job Shop Scheduling [17, 53] puede ser formulado como sigue. Se tiene un conjunto de n trabajos J1 , ..., Jn y un conjunto de m máquinas M1 , ..., Mm . Cada trabajo Ji consiste en una secuencia de ni operaciones opi1 , ..., opi,ni , que debe ser procesada en este orden. Cada operación opij debe ser procesada durante pij unidades de tiempo, sin interrupción, en la máquina µij ∈ {M1 , ..., Mm }. Cada máquina sólo puede procesar una

3.7. MODELADO JSS PARA CBLS

65

operación en cada momento. Así pues, se definen dos tipos de restricciones, restricciones de precedencia entre las operaciones de cada trabajo, y las restricciones de precedencia que fuerzan a seleccionar un orden en la permutación de las operaciones que usan cada máquina. Estas últimas restricciones son la fuente de la complejidad NP-dura de JSSP [37]. La función objetivo típica, usada en este trabajo, es encontrar una solución satisfactible, minimizando el makespan, Cmax = maxi=1..n {Ci }, donde Ci es el tiempo de finalización del trabajo Ji , es decir, el tiempo de finalización de opi,ni . La figura 3.12 muestra la representación como grafo disyuntivo para un ejemplo simple del problema, con n = 3 y ni = 3, ∀i. En un grafo disyuntivo G = (V, C, D), se tiene un conjunto V de nodos que se corresponden con las operaciones del job-shop, un conjunto C de arcos dirigidos correspondientes a las restricciones de precedencia, y un conjunto D de arcos no dirigidos que conectan las operaciones que usan la misma máquina. Una solución para el problema consiste en fijar una dirección para los arcos no dirigidos, siendo satisfactible si no existen ciclos.
op11 op12 op13

op21

op22

op23

op31

op32

op33

Figura 3.12: Un grafo disyuntivo para el problema Job Shop.

3.7.3. Búsqueda Local Basada en Restricciones
La mayoría de algoritmos para CSPs propuestos en el área de CP son completos, pero últimamente se está considerando la búsqueda local como un mecanismo prometedor de resolución de grandes instancias de problemas complejos [110], en los que los algoritmos completos fallan. Las restricciones del modelado CSP pueden ser utilizadas para garantizar la satisfactibilidad de las soluciones exploradas, o incluso haciendo uso de su posible (grado de) violación como guía para la búsqueda local. La mayoría de las ideas asociadas a los algoritmos de búsqueda local en otras áreas pueden ser utilizadas en la resolución de CSPs, o en nuestro caso, en problemas de optimización (COP). Los algoritmos de búsqueda local se mueven de forman iterativa a través del conjunto de las soluciones satisfactibles. Para estos movimientos, en cada iteración se determina un vecindario para la solución actual como un conjunto de soluciones que pueden ser seleccionadas como próxima solución, y que se pueden obtener de la solución actual tras pequeños cambios. En función del método de selección de la siguiente solución de entre el vecindario y del criterio de parada de la secuencia iterativa de movimientos, se pueden definir diferentes algoritmos [50]. Para probar el modelo propuesto, se ha usado un algoritmo de búsqueda tabú básico [43] que contiene los principales componentes útiles para búsqueda local, el cual se describe en la sección 3.7.4.

3.7.4. Nuestra Propuesta
El Modelado CSP Un CSP viene definido por un conjunto de variables, V , un conjunto de dominios de valores para cada variable D y un conjunto de restricciones que establecen relaciones entre las distintas variables C.

66

CAPÍTULO 3. TRABAJO RELACIONADO

Los modelados típicos para JSSP establecen los tiempos de comienzo stij de las operaciones opij como las variables del CSP [25], y las restriciones se dividen en dos grupos: Las restricciones de precedencia son un conjunto de desigualdades relacionadas con las variables correspondientes a los tiempos de comienzo de las operaciones del mismo trabajo, y teniendo en cuenta las duraciones de las operaciones, que es, stij + pij ≤ sti,j+1 , para la precedencia entra las operaciones opij y opi,j+1 . Las restricciones de recurso se pueden definir como disyunciones del tipo stij +pij ≤ stkl ∨ stkl + pkl ≤ stij , donde opij y opkl son operaciones que utilizan la misma máquina. Sin embrago, han sido utilizadas otras propuestas, como la representación del uso de cada máquina por todas las operaciones con restricciones globales, lo que puede permitir algoritmos de filtrado más eficientes. Nuestra propuesta CSP se basa en el uso de variables CSP para establecer el orden de ejecución de las operaciones del JSSP, dando lugar a un modelado simple. Sea ΠJ un JSSP con un conjunto J de n trabajos, un conjunto M de m máquinas, y un conjunto O de #ops operaciones. El modelado propuesto posee los siguientes componentes: Cada operación opij está representada por una variables entera del CSP vij , así pues el conjunto de variables es V = {vij , 1 ≤ i ≤ n, 1 ≤ j ≤ ni }. El dominio de cada variable vij es D(vij ) = [1..#ops], ∀vij ∈ V . El conjunto C de restricciones contiene dos tipos de elementos: 1. Restricciones de Precedencia: El valor de cada variable vij tiene que ser menor o igual que el valor de todas las variables correspondientes a las siguientes operaciones en el mismo trabajo: vij < vik , ∀vij , vik tal que j < k. Para mejorar la eficiencia y obtener un modelo más claro, se ha utilizado una nueva restricción (increasing) entre las operaciones de cada trabajo. Dicha restricción se define sobre una secuencia de variables {v1 , v2 , . . . , vn } y es equivalente a la satisfacción de las condiciones v1 < v2 < . . . < vn . 2. Restricciones de Recurso: Para satisfascer que cada máquina pueda procesar sólo una operación en cada momento, los valores de todas las variables se fuerzan a ser diferentes de los demás (se usa la restricción alldifferent), es decir, cada solución es una permutación del conjunto {1, 2, . . . , #ops}. Una propiedad interesante del modelado, haciendo uso de las restricciones increasing y alldifferent, es que la detección de ciclos está implícita en la satisfacción de las restricciones, así pues ninguna solución del CSP contendrá ciclos (ver la sección 3.7.4). Una solución para el problema de restricciones, en el que se da un valor para cada una de las variables, es una permutación de 1..#ops variables y puede ser representada por una secuencia ordenada de operaciones S. A esta secuencia nosotros asociamos el "tiempo de comienzo más temprano"planificando las operaciones en el orden inducido por la secuencia, dando lugar a una solución JSSP. Denotamos por S(m) la secuencia ordenada de operaciones que se ejecutan en la máquina m en el orden fijado por la solución representada por S. La figura 3.13 muestra una solución para el problema de la figura 3.12. En primer lugar, se muestra el valor para cada variable, debajo de los cuales se encuentra situada la correspondientes solución S, donde la posición a en la secuencia representa el valor de la variable S[a] (vij = a ≡ S[a] = opij ). Además, se muestran las secuencias ordenadas correspondientes a cada máquina. Finalmente, la figura 3.13 muestra una solución JSSP

3.7. MODELADO JSS PARA CBLS
v11 = 2 v21 = 4 v31 = 1
1 2 3 4

67

v12 = 6 v22 = 5 v32 = 3
5 6

v13 = 8 v23 = 9 v33 = 7
7 8 9

op 11

op 12

op13

S op 31 op 11 op 32 op 21 op 22 op 12 op 33 op 13 op 23 op 21 op 22 op23 S(m 1 ) op 31 op 11 op22 S(m 2) op 21 op 12 op 33 S(m 3) op 32 op 13 op 23 op 31 op 32 op 33

Figura 3.13: Ejemplo de una solución satisfactible donde todos los arcos en el grafo son dirigidos acorde al orden fijado en S. Pueden existir varias soluciones al problema CSP que den lugar a la misma planificación, por ejemplo la solución S = {op21 , op31 , op32 , op11 , op12 , op13 , op22 , op33 , op23 } para el problema de la figura 3.12 conduce al mismo plan que la solución que se muestra en la figura 3.13. En adelante, usaremos P M (v) y SM (v) para hacer referencia a las variables predecesoras y sucesoras de v en su máquina, y de forma similar P J(v) y SJ(v) en su trabajo. P M (P M (v)) se denota por P M2 (v) (lo mismo para SM (v)) y así sucesivamente. Además, denotamos m(v) como la máquina en la que la operación correspondiente a la variable v tiene que ser ejecutada. Detección de Ciclos Una solución para el problema consiste en establecer direcciones en los arcos no dirigidos del grafo disyuntivo, siendo satisfactible si no contiene ciclos. Un ciclo para una solución en un grafo disyuntivo es un camino (simple) cerrado dirigido, sin otros vértices repetidos más que los vértices inicial y final. La figura 3.14 muestra dos ciclos en el grafo disyuntivo presentado en la sección 3.7.2. En la figura 3.14.a es posible ver un ciclo que contiene cuatro operaciones de dos trabajos, mientras que la figura 3.14.b el ciclo contiene tres operaciones de tres trabajos diferentes. Es posible ver un ciclo como una secuencia de operaciones que contiene dos tipos de aristas: Aristas de precedencia: están fijadas por el problema. Aristas de recurso: están determinadas por las decisiones tomadas durante la resolución del problema. Todos los ciclos posibles que se pueden formar en un grafo engloban, al menos, dos máquinas y cuatro operaciones, dos pertenecientes a un trabajo, y dos pertenecientes a otro trabajo, tal y como se muestra en la figura 3.15. En esta figura se puede observar un ciclo formado por cuatro operaciones, dos pertenecientes a J1 (op1i y op1j ) y dos pertenecientes a J2 (op2k y op2l ). En la secuencia de operaciones aparecen, al menos, dos aristas de precedencia, que conectan operaciones que usan distintas máquinas. Todas las operaciones que aparecen en la figura pueden ser ejecutadas en máquinas diferentes, así pues el número de máquinas involucradas en este ciclo puede estar entre dos y cuatro. Es importante aclarar que op1,j y op2,k no tienen por qué ser ejecutadas en la misma máquina (lo mismo para op1,i y op2,l ). Teorema 1 Cualquier solución del CSP, con el modelado propuesto, no contendrá ciclos. Demostración. Sean op1i , op1j , op2k y op2l cuatro operaciones con las siguientes características:

68

CAPÍTULO 3. TRABAJO RELACIONADO

op11

op12

op13

op21

op22

op23

op31

op32

op33

a) Ciclo formado por 4 operaciones

op11

op12

op13

op21

op22

op23

op31

op32

op33

b) Ciclo formado por 6 operaciones

Figura 3.14: Ejemplos de ciclos

op1i

...

op1j

op2k

...

op2l

op1i

op1j

op2k

op2l

opab

opcd significa vab < v cd

Figura 3.15: Un ciclo en un grafo disyuntivo

3.7. MODELADO JSS PARA CBLS

69

op1i y op1j pertenecen a J1 , i < j, así pues v1i < v1j (restricción increasing sobre J1 ). op2k y op2l pertenecen a J2 , k < l, así pues v2k < v2l (restricción increasing sobre J2 ). Estas relaciones son establecidas por el problema. Acorde a la relación entre las operaciones op2k y op1j de diferentes trabajos, establecidas por una solución para el problema, pueden existir dos posibilidades: 1. v2k < v1j : La relación entre op1i y op2l puede ser: a) v1i < v2l (Figura 3.16.1a). En este caso, existen cuatro secuencias ordenadas posibles, y ninguna de ellas contiene ciclos: 1) v1i < v2k < v1j < v2l : No hay ciclos debido a 1a. 2) v1i < v2k < v2l < v1j : No hay ciclos, debido a la restricción increasing en J1 . 3) v2k < v1i < v1j < v2l : No hay ciclos, debido a la restricción increasing en J2 . 4) v2k < v1i < v2l < v1j : No hay ciclos debido a 1. b) v2l < v1i (Figura 3.16.1b). Existe sólo una secuencia ordenada posible: v2k < v2l < v1i < v1j , sin ciclos debido a 1. 2. v1j < v2k : La relación entre op1i y op2l puede ser: a) v1i < v2l (Figura 3.16.2a). Existe sólo una secuencia ordenada posible: v1i < v1j < v2k < v2l , sin ciclos debido a 2a. b) v2l < v1i (Figura 3.16.2b). Este caso no está permitido, debido a que la secuencia sería v1i < v1j < v2k < v2l < v1i (existiría un ciclo) y esto no se permite gracias a la restricción increasing en ambos trabajos. La prueba simétrica es válida para las operaciones op2l y op1i . 2 Vecindarios Para JSSP, la mayoría de las propuestas que obtienen buenos resultados hacen uso de vecindarios basados en invertir operaciones críticas (incrementar su duración implica que aumente el makespan) que deben ser ejecutadas en la misma máquina. Uno de los mejores métodos ha sido propuesto por Nowicki y Smutnicki [83], cuyo vecindario era más restringido que otras propuestas anteriores. Los movimientos permitidos son la inversión de dos operaciones críticas adyacentes que pertenecen al mismo bloque crítico (una secuencia máxima de operaciones críticas de la misma máquina sin holgura temporal entre ellas) de forma que una de ellas no es una operación interna en el bloque, excluyendo los intercambios entre las dos primeras operaciones del primer bloque cuando la segunda es interna y las dos últimas operaciones del último bloque cuando la primera es interna. Nosotros definimos una familia de vecindarios para el modelado propuesto en la que la idea básica es realizar un intercambio entre los valores de dos variables correspondientes a operaciones de la misma máquina, es decir, entre el orden relativo de estas operaciones en una solución, intentando cambiar el orden de operaciones que pertenecen a un camino crítico de una solución S (en adelante CP (S)), basada en el vecindario de Nowicki y Smutnicki (en adelante NS). Un camino crítico es una secuencia de bloques críticos, el primero de ellos comenzando en tiempo 0, y el último terminando en makespan, sin existir holgura temporale en la secuencia. Para una variable v, se define σ(v) como la unión de un conjunto de variables w satisfasciendo la siguiente condición: el intercambio entre v y w en S (denotado por

70
op1i

CAPÍTULO 3. TRABAJO RELACIONADO
...
op1j op1i

...

op1j

op2k

...

op2l

op2k

...

op2l

op1i

op1j op2k op2l op1i op1j

op2k

op2l

(1a)
op1i

(1b)
op1j op1i

...

...

op1j

op2k

...

op2l

op2k

...

op2l

op1i

op1j

op2k

op2l

op1i

op1j

op2k

op2l

(2a)
opab opcd significa vab < vcd

(2b)

Figura 3.16: Casos para la prueba del teorema 1 swap(v, w, S)) causa un intercambio entre v y P M (v) en m(v) y este es el único intercambio provocado en m(v). Las variables w que cumplen esta condición son aquéllas comprendidas entre P M2 (v) (no incluido) y P M (v) (incluido) en S. Es posible ver que el intercambio entre v y las variables que aparecen antes de P J(v) en S conducen hacia soluciones no satisfactibles. Entonces, σ(v), cuando v no es la primera en su trabajo y tiene, al menos, dos predecesoras en su máquina, se define como: σ(v) = {w ∈ V | max(P J(v), P M2 (v)) < w ≤ P M (v)} Si P J(v) y P M2 (v) no existen, el límite inferior es 0. Por otro lado, si sólo una de ellas existe, el límite inferior es establecido por ésta. Por último, todas las variables que tienen los valores más pequeños en su máquina (es decir, que son ejecutadas las primeras) no tiene ningún intercambio posible (σ = ∅). En la figura 3.17 se muestran diferentes casos de posibles intercambios. En la figura 3.17.a, P J(v) aparece antes que P M2 (v), entones el límite inferior del rango de posibilidades es establecido por P M2 (v). En la figura 3.17.b, P M2 (v) aparece antes que P J(v), entonces el límite viene dado por P J(v). En la figura 3.17.c, P J(v) aparece después de P M (v), por lo que no se puede realizar ningún intercambio para v. Para reducir y establecer un número máximo de vecinos para una solución, se ha definido un parámetro δ como el número máximo de posibles intercambios para una variable v, desde P M (v) hacia variables que aparecen antes que ésta en S. δ tiene que ser mayor que 1 para que el algoritmo pueda alcanzar cualquier solución posible, teniendo en cuenta el modelo propuesto. Acorde a este parámetro, el conjunto de intercambios permitidos para una variable se define como: σδ (v) = {w ∈ V | max(P M (v) − δ, P J(v), P M2 (v)) < w ∧ w ≤ P M (v)}

3.7. MODELADO JSS PARA CBLS
...

71

S

...

PJ(v)

...

PM 2 (v)

...

PM(v)

...

v

...

a) Posibles swap(v) cuando PJ(v) <
...

S

...

PM2 (v)

...

PJ(v)

...

PM(v)

...

v

...

b) Posibles swap(v) cuando
...

< PJ(v)

S

...

...

...

PM(v)

...

PJ(v)

...

v

...

c) Ningún swap(v) posible cuando PM(v) < PJ(v)

Figura 3.17: Intercambios posibles para una variable v

S

...

...

PM(v)

...

v

...

Figura 3.18: Intercambios permitidos para δ = 2 En la figura 3.18 se muestra un ejemplo para δ = 2. δ Se ha definido una familia de vecindarios, N1λ , dependiendo de las posibles variables a intercambiar. Para λ = 0, la idea es intercambiar variables que aparecen al principio o al final de un bloque crítico (en adelante CB, CB(v) para el CB de una variable v), excepto al comienzo del primer CB o al final del último CB, similar al vecindario NS. Estas variables vienen dadas por el conjunto V0 (S): V0 (S) = {v ∈ CP (S) | v = SM (f irst(CB(v))) ∨ v = last(CB(v))} donde f irst(CB(v)) y last(CB(v)) son la primera y la última operación de CB(v), δ δ respectivamente. V0 (S) contiene las posibles variables a ser intercambiadas en N10 (N10 = {swap(v, w, S) | v ∈ V0 (S) ∧ w ∈ σδ (v)}). Debido al modelo propuesto y a la búsqueda tabú, es posible alcanzar una solución con un vecindario vacío. Para paliar este problema y conseguir una mayor diversificación δ durante el proceso de búsqueda, se han definido otros vecindarios más generales N1λ , diferentes de la propuesta de NS, y que dependen de un parámetro λ. Para λ > 0, se permite intercambiar variables internas de CBs, más interna conforme λ va incrementando. El conjunto de posibles variables a intercambiar viene ahora determinado por: Vλ (S) = {v ∈ CP (S) | (v = SMλ+1 (f irst(CB(v))) ∨ v = P Mλ (last(CB(v)))) ∧ λ ≤ #CB(v)/2}
δ δ Entonces, el vecindario N1λ se define como N1λ = {swap(v, w, S) | v ∈ Vλ (S) ∧ w ∈ σδ (v)}. Para permitir intercambios entre todas las operaciones no críticas (pertenecientes o no a CP), se ha definido otro vecindario: δ N2 = {swap(v, w, S) | v ∈ V ∧ w ∈ σδ (v)}. El intercambio entre v y w tiene las siguientes consecuencias:

1. Intercambio entre el orden de ejecución de v y P M (v), ejecutadas en la misma máquina, que no depende de w (cambio en m(v)).

72
S S' S(m(v)) S'(m(v)) ... ... ... ... w v w v

CAPÍTULO 3. TRABAJO RELACIONADO
... ... v w ... ... v w ... ...

a) Intercambio entre variables correspondientes a operaciones ejecutadas en la misma máquina S S' S(m(v)) S'(m(v)) S(m(w)) S'(m(w)) ... ... ... ... ... ... w v PM(v) v w ... ... v PM(v) SM(w) SM(w) ... ... ... SM ...(w) SM ...(w) w ... ... ... ... SM 2(w) SM2(w) ... ... SM ...(w) SM ...(w) ... ... v w ... ...

SM(w) SM 2(w) ...

SM(w) SM 2(w)

b) Intercambio entre variables correspondientes a operaciones ejecutadas en máquinas diferentes

Figura 3.19: Intercambio entre variables 2. Si w = P M (v), es decir m(w) = m(v), tendrán lugar otros cambios. Si SM (w) < v, entonces los órdenes de ejecución de todas las operaciones w que satisfacen que m(w ) = m(w) y w < w < v se cambiarán. Concretamente, el orden relativo de todas estas operaciones se moverán hacia delante en su máquina (cambio en m(w)). Teniendo en cuenta esto, pueden darse dos tipos de movimientos. Primero, el intercambio entre las variables correspondientes a operaciones ejecutadas en la misma máquina, sólo se da un intercambio en S(m(v)) (Figura 3.19.a). En segundo lugar, el intercambio entre variables correspondientes a operaciones ejecutadas en máquinas diferentes, que conducen a intercambios en S(m(v)) y varios intercambios en S(m(w)), uno por cada sucesor directo o indirecto en la máquina de w que están situados entre w y v en S (Figura 3.19.b). En la figura 3.19 el vecino para S es referenciado como S . El algoritmo parametrizado Considerando los vecindarios definidos, se ha desarrollado un algoritmo de búsqueda local (Alg. 3.20). Aunque se puede utilizar cualquier solución inicial, la elección de mejores soluciones iniciales normalmente permite la obtención de mejores resultados, como ocurre en el caso del método NS [83]. De esta forma, para los experimentos de la próxima sección, hemos utilizado el algoritmo INSA [53]. Como se ha indicado en el apartado 3.7.4, un plan puede ser representado por diferentes soluciones del modelo. Por lo tanto, para seleccionar una solución inicial se usa un procedimiento aleatorio a partir de la planificación obtenida por el algoritmo INSA. Acorde a la evolución de la búsqueda, se usan diferentes vecindarios para seleccionar el siguiente vecino, que se corresponderá con una solución satisfactible. En cada iteración, δ se intenta un movimiento hacia el mejor vecino de N1,0 (λ = 0), pero, si el vecindario está vacío o todos sus miembros se encuentran en la lista tabú, se busca un vecindario más amplio, incrementando λ. Si λ alcanza el máximo valor permitido sin encontrar una δ solución adecuada que visitar, se hace uso del vecindario más general N2 , y ahora el vecino δ se selecciona aleatoriamente. N2 se usa también cuando el algoritmo no ha encontrado una

3.7. MODELADO JSS PARA CBLS
begin determina una solución inicial S de forma aleatoria best := S; for it := 1 to N Iterations do if solución no ha mejorado en las últimas K iteraciones then δ selecciona un vecino S de best en N2 aleatoriamente; else λ := 0; repeat δ determina el conjunto N1λ de los vecinos no tabú de S; δ if N1λ no está vacío then δ selecciona una mejor solución S en N1λ ; else λ := λ + 1; end until S ha sido seleccionado o λ > maxBlockSize(S)/2 ; δ if S no ha sido seleccionado (todos los N1λ están vacíos) then δ selecciona un vecino S de S en N2 aleatoriamente; end end S := S ; if S mejora best then best := S; end end end Figura 3.20: El algoritmo de búsqueda local parametrizado

73

solución mejor durante un número K de iteraciones. En este caso, el algoritmo devuelve la mejor solución encontrada hasta el momento. Por otro lado, la mayoría del coste computacional de los algoritmos de búsqueda local se deben a la evaluación de los vecinos. Para reducir dicha cantidad, se han propuesto algunas alternativas, tal como Taillard [103], que evalúa los vecinos haciendo uso de una estimación del límite inferior del makespan en tiempo constante, en lugar de calcularlo exactamente. En el algoritmo propuesto, la selección de candidatos se realiza en dos pasos. Primero, se selecciona el mejor intercambio entre dos operaciones críticas usando la estimación de Taillard del makespan esperado. Tras esto, se selecciona una variable de las δ posibilidades, eligiendo la que presenta una mayor mejora en su holgura gracias al cambio.

3.7.5. Resultados Experimentales
Para realizar la implementación del algoritmo 3.20 y manejar las restricciones del problema se ha hecho uso de ILOG JSolver [52]. Como se ha comentado anteriormente, el algoritmo consta de varios parámetros, δ, K (número máximo de iteraciones sin mejorar la solución), y el tamaño de la lista tabú (T LS), que pueden afectar en su comportamiento y determinar el valor adecuado para cada uno de ellos no es una tarea trivial. Teniendo en cuenta que el principal interés de este trabajo no radica en la competitividad del algoritmo propuesto sino en el nuevo modelado CSP que ha sido definido, se ha seleccionado un escenario para algunos resultados comparativos, en el cual el algoritmo se ha ejecutado para un número fijado de 1000 iteraciones, las cuales fueron seleccionadas aleatoriamente de los resultados del algoritmo INSA. Para dicha situación, el valor de K se ha establecido a 100. Para seleccionar δ y T LS, se lanzó el algoritmo sobre un conjunto reducido de instancias

74

CAPÍTULO 3. TRABAJO RELACIONADO

para δ desde 2 hasta 5 y T LS desde 5 hasta 10. Los mejores resultados para makespan mínimo y medio de las mejores soluciones tras 10000 iteraciones se encontraron para δ = 2 y T LS = 6. El hecho de que los mejores resultados se hayan obtenido para δ = 2 se puede explicar dado que para valores más altos de δ existe mayor probabilidad de encontrar una variable w tal que el intercambio entre v y w sea factible, lo que da lugar a un alto grado de diversificación. La tabla 3.10 muestra los resultados del algoritmo sobre un gran conjunto de benchmarks JSSP, tomados de OR-library, y algunas instancias más duras de Taillard [103]. Para cada instancia JSSP, la tabla muestra algunos valores estadísticos acerca del algoritmo utilizado para este trabajo: el error relativo (en porcentaje) de la mejor solución de los 100 restarts (BRE) con respecto a la mejor solución conocida (U B, cuyo valor no se ha probado que sea el óptimo para los valores indicados por *), el error relativo medio (M RE) y la desviación estándar del error relativo (SDRE). Además, se muestra el tiempo computacional requerido para la ejecución del algoritmo (RT ). Como referencia, se muestran los resultados obtenidos por el algoritmo NS en dos situaciones: en su forma original, que tiene en cuenta varios factores, y tras 10000 iteraciones (BRE104 y RT104 ). Como era de esperar, el algoritmo no es completamente competitivo (ha sido desarrollado en Java, muchos de sus componentes no han sido optimizados) con el de Nowicki y Smutnicki, considerado uno de los mejores métodos para la resolución de JSSP. En su lugar, los resultados que se muestran serán tomados como referencia para mejoras futuras del algoritmo o para diferentes propuestas que puedan hacer uso del modelado propuesto.

3.7.6. Conclusiones y Trabajo Futuro
En este trabajo se propone un modelado CSP para el problema Job Shop Scheduling para ser resuelto haciendo uso de técnicas de búsqueda local. Los principales aspectos del modelado son el uso de variables enteras que representan el orden relativo de las operaciones a planificar y dos tipos de restricciones globales, alldifferent e increasing, para garantizar la satisfactibilidad. Una propiedad interesante del modelado es que la detección de ciclos en los planes está implícita en la satisfacción de las restricciones. Además, se ha definido un vecindario para dicho modelado basado en la propuesta de Nowicki y Smutnicki. El principal interés de este trabajo no es la competitividad del algoritmo propuesto, sino la definición del modelado CSP. Como trabajos futuros, tanto el algoritmo como el vecindario podrían ser mejorados para resolver de forma más eficiente el JSSP. Para el algoritmo, exploraremos la influencia del uso de la estimación de Taillard del makespan esperado, y el criterio de aspiración. Para el vecindario, se intentará variar el valor del parámetro δ durante la búsqueda, de forma que sea posible controlar el grado de diversificación. Además, pensamos que el modelado propuesto puede ser adaptado de forma directa para otros problemas similares de secuenciación.

Tabla 3.4: Conjunto de restricciones de tipos (2) y (3) para el grafo And/Or de reparación de la figura 3.10 Tipo Restricciones

3.7. MODELADO JSS PARA CBLS

(2)

s(Ti ) ⇒ tf (Ti ) = ti (Ti ) + dur(Ti ), Ti ∈ {T1 , T2 , T3 , T4 , T5 , T7 } s(Ti ) ⇒ tf (Ti ) = ti (Ti ) + dur(Ti ), Ti ∈ {T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 }

s(T1 ) ⇒ (s (ABCD) ∧ s (E) ∧ ti (T1 ) ≥ tOR (ABCDE)) s(T2 ) ⇒ (s (ACD) ∧ s (BE) ∧ ti (T2 ) ≥ tOR (ABCDE)) s(T3 ) ⇒ (s (B) ∧ s (ACD) ∧ ti (T3 ) ≥ tOR (ABCD) + ∆mov (ABCD, m (ABCD), M1 )) (m (ABCD) = M2 ) . . .

(3)

s(T6 ) ⇒ (s(AC) ∧ ti (T6 ) ≥ tOR (A) + ∆mov (A, m(A), M2 )) m(A) = M3 s(T6 ) ⇒ (ti (T6 ) ≥ tOR (C) + ∆mov (C, m(C), M2 )) m(C) = M1 s(T7 ) ⇒ (s(AD) ∧ ti (T7 ) ≥ tOR (A) + ∆mov (A, m(A), M1 )) s(T7 ) ⇒ (s(AD) ∧ ti (T7 ) ≥ tOR (D) + ∆mov (D, m(D), M1 )) (m(A) = M3 ) . . .

s(T1 ) ⇒ (ti (T1 ) ≥ tOR (ABCD) + ∆mov (ABCD, m(ABCD), M2 ) ∧ ti (T1 ) ≥ tOR (E)) (m(ABCD) = M3 ) s(T2 ) ⇒ (ti (T2 ) ≥ tOR (ACD) + ∆mov (ACD, m(ACD), M2 )) s(T2 ) ⇒ (ti (T2 ) ≥ tOR (BE) + ∆mov (BE, m(BE), M2 ))

75

76

CAPÍTULO 3. TRABAJO RELACIONADO

Tabla 3.5: Conjunto de restricciones de tipo (4) para el grafo And/Or de reparación de la figura 3.10 Tipo Restricciones s (ACD) ⇔ (s(T3 ) XOR s(T2 )) s (D) ⇔ (s(T4 ) XOR s(T7 )) . . . s(A) ⇔ (s(T6 ) XOR s(T7 )) s(ACD) ⇔ (s(T3 ) XOR s(T2 ))

(4)

Tabla 3.6: Conjunto de restricciones de tipo (5) para el grafo And/Or de reparación de la figura 3.10 Tipo Restricciones (s(T1 ) ∧ s(T1 )) ⇒ ti (T1 ) ≥ tf (T1 ) + ∆cht (M2 , C3 , C4 ) (s(T1 ) ∧ s(T6 )) ⇒ ti (T6 ) ≥ tf (T1 ) + ∆cht (M2 , C3 , C4 ) . . . (s(T8 ) ∧ s(T2 )) ⇒ ti (T2 ) ≥ tf (T8 ) + ∆cht (M2 , C4 , C5 ) (s(T4 ) ∧ s(T1 )) ⇒ ti (T1 ) ≥ tf (T4 ) + ∆cht (M2 , C5 , C4 )

(5)

Tabla 3.7: Conjunto de restricciones de tipo (6) para el grafo And/Or de reparación de la figura 3.10 Tipo Restricciones (s(T4 ) ∧ s(T8 )) ⇒ (ti (T4 ) ≥ tf (T8 ) + ∆cht (M2 , C4 , C3 ) ∨ ti (T8 ) ≥ tf (T4 ) + ∆cht (M2 , C3 , C4 )) (s(T6 ) ∧ s(T8 )) ⇒ (ti (T6 ) ≥ tf (T8 ) ∨ ti (T8 ) ≥ tf (T6 )) (s(T4 ) ∧ s(T8 )) ⇒ (ti (T4 ) ≥ tf (T8 ) + ∆cht (M2 , C4 , C5 ) ∨ ti (T8 ) ≥ tf (T4 ) + ∆cht (M2 , C5 , C4 ))

(6)

Tabla 3.8: Resultados Comparativos (cualidad de las soluciones) Mejor Problema 30d 30c 30b 30a 40d 40c 40b 40a SGPlan 0.075 0.05 0.05 0.012 0.137 0.012 0.15 0.087 ALG-1 1 1 0.562 0.037 1 0.212 0.45 1 ALG-2 0 0 0.425 1 0 0.85 0.55 0 SGPlan 0.116 0.101 0.102 0.118 0.093 0.178 0.043 0.088 ∆Mejor ALG-1 0 0 0.024 0.016 0 0.020 0 0 ALG-2 0.457 0.620 0.023 0 0.153 0.011 0.500 0.521 0 0 0 58 0 44 44 0 #opt

3.7. MODELADO JSS PARA CBLS

77

Tabla 3.9: Resultados comparativos (tiempo de ejecución) Tiempo Medio Problema 30d 30c 30b 30a 40d 40c 40b 40a SGPlan 0.598 0.604 0.485 0.193 1.788 1.407 2.063 1.395 ALG-1 0.108 0.091 0.097 0.044 0.275 0.193 0.264 0.157 ALG-2 300 300 300 120.9 300 136.2 136.1 300

CAPÍTULO 3. TRABAJO RELACIONADO

Tabla 3.10: Resultados sobre un conjunto de instancias JSS Modelo Propuesto Inst. FT10 ABZ7 LA02 LA19 LA21 LA24 LA25 LA27 LA29 LA36 LA37 LA38 LA39 LA40 TA02 TA18 TA26 TA32 10 20 10 10 15 15 15 20 20 15 15 15 15 15 15 20 20 30 10 15 5 10 10 10 10 10 10 15 15 15 15 15 15 15 20 15 930 656 655 842 1046 935 977 1235 1152 1268 1397 1196 1233 1222 1244 1396* 1645* 1795* 2.25 9.90 0.45 2.49 5.16 3.85 7.26 6.96 8.42 7.09 9.09 5.85 7.94 7.03 6.35 12.60 9.36 14.20 3.95 13.98 3.80 6.25 8.23 6.56 11.24 12.07 12.57 11.42 14.59 8.09 10.44 10.28 10.49 15.25 13.14 17.84 n m UB BRE M RE SDRE 0.96 2.16 1.83 1.82 1.05 1.13 1.84 2.03 2.22 1.25 2.30 0.99 0.90 1.02 1.64 1.32 1.34 1.30 RT 8.72 64.40 3.02 10.52 18.76 18.72 20.65 30.73 33.24 38.61 41.80 41.72 41.04 36.52 36.47 57.82 93.66 116.93 BRE 0 2.28 0 0.11 0.86 1.39 1.12 1.94 3.13 0.79 1.50 1.84 0.89 1.64 2.73 3.65 3.10 3.12 RT 0.68 4.62 0.10 0.83 0.86 1.33 1.39 1.27 3.40 3.66 2.74 2.75 3.50 2.40 2.83 4.64 10.64 18.36

NS

BRE104

RT104

0 3.20 0 0.11 0.86 1.50 2.04 1.94 4.51 2.76 3.29 2.59 1.62 2.13 2.73 5.73 3.28 6.85

0.25 0.84 0.11 0.35 0.42 0.45 0.45 0.51 0.48 0.62 0.78 0.65 0.79 0.62 0.70 0.97 1.58 1.44

78

Capítulo 4

Conclusiones
En este último capítulo se presentan las conclusiones obtenidas durante la realización del trabajo, junto con el esbozo de algunas ideas consideradas innovadoras e interesantes para realizar nuevos estudios y análisis que puedan desembocar en la creación de trabajos relacionados con los temas estudiados.

4.1. Conclusiones obtenidas
Para la realización del presente documento ha sido necesaria la lectura de un gran número de trabajos de investigación de diversa temática, lo que ha dado lugar a una formación creciente durante todo el período de estudio. Por otro lado, cuando se desea realizar un trabajo de investigación acerca de un tema, es necesario conocer en gran medida los trabajos relacionados que ya existen, ya que esto tiene multitud de beneficios, algunos de los cuales se comentan a continuación: nos permite innovar teniendo cierta certeza de que nuestra idea no ha sido previamente estudiada, nos ayuda a conocer qué aspectos ya están resueltos, lo que podemos utilizar como punto de partida para algunos de nuestros trabajos, nos da la posibilidad de mejorar lo que ya existe, realizando comparativas con propuestas similares, lo que dota a nuestro trabajo de una mayor calidad. En este documento se lleva a cabo el estudio de los temas considerados relevantes para el presente trabajo. En primer lugar, para poder modelar y resolver un problema cualquiera haciendo uso de la programación con restricciones es necesario conocer este paradigma, al que se le dedica la sección 3.2. Por otro lado, con el término planificación se hace referencia a dos grandes áreas, scheduling (sección 3.3) y planificación (sección 3.4), que se combinan en la mayoría de los casos para resolver problemas reales, como es el caso de la generación del plan óptimo para la sustitución de componentes defectuosos. Además, es necesario tener en cuenta que durante el tiempo de vida de un sistema pueden ocurrir errores inesperados que disminuyan e incluso paralicen su productividad. Estos errores se pueden reducir en gran medida gracias a un buen plan de mantenimiento, aspectos que se exponen en la sección 3.5. Las secciones 3.6 y 3.7 describen dos de los trabajos realizados relacionados con el tema del presente trabajo. El primero de ellos propone un modelado CSP para el problema de la reparación una vez que un componente defectuoso es detectado, optimizando el tiempo total del plan. En el segundo, se propone un modelado CSP y un algoritmo de búsqueda local para resolver el problema Job Shop Scheduling. Ambos trabajos se consideran un buen punto de partida para la realización de nuevos trabajos de investigación. 79

80

CAPÍTULO 4. CONCLUSIONES

4.2. Trabajo futuro
Teniendo en cuenta la gran amplitud y aplicabilidad de los temas estudiados, existen multitud de líneas que no han sido (suficientemente) exploradas, algunas de las cuales nos resultan especialmente interesantes: A la hora de planificar el mantenimiento y la reparación de un sistema, se pueden perseguir distintos objetivos, entre los que se encuentran: minimizar el tiempo de cese del funcionamiento del sistema, minimizar el tiempo de reparación/sustitución de un componente defectuoso, minimizar costes, maximizar la productividad del sistema, etc. En la mayoría de los casos es interesante plantearse la optimización de varias funciones objetivos, lo que dota al problema de una mayor complejidad. Para resolver problemas de optimización multiobjetivo existen multitud de propuestas, la mayoría de las cuales se pueden englobar en: • Convertir el problema en otro con una única función objetivo, el cual puede ser resuelto al igual que un problema mono-objetivo. Un ejemplo de este tipo de k propuestas es el Weighting Method [119], que consiste en minimizar i=1 wi fi (x) sujeto a x ∈ S, donde wi ≥ 0 para todo i = 1, . . . , k, siendo wi el peso otorgado a la función objetivo fi (x). Es aconsejable normalizar las funciones objetivos haciendo uso de alguna escala, de forma que las distintas magnitudes no confundan al método. • Optimizar una de las funciones objetivos restringiendo las otras, tal como εConstraint Method [45], que optimiza fl (x) sujeto a fj (x) ≤ εj ∀j = 1, . . . , k, j = l, x ∈ S. • Trabajar con un conjunto de soluciones óptimas (denominadas Pareto óptimas), tal como Evolutionary Multiobjective Optimization [23], que parte de una población inicial de individuos-soluciones e iterativamente crea nuevas poblaciones a partir de las anteriores, haciendo uso básicamente de tres operaciones: selección, cruce y mutación. En problemas de planificación reales, el plan inicial generado puede sufrir modificaciones debido a factores inesperados (fallos en recursos, incremento en el tiempo de ejecución esperado de algunas tareas, etc) que pueden ocurrir durante su ejecución. Se define la robustez de un plan como la capacidad del mismo para asimilar eventos inesperados que puedan ocurrir durante su ejecución. En muchos casos se persigue maximizar la robustez de los planes resultantes, aunque a cambio haya que sacrificar en parte la optimización temporal. Durante el funcionamiento de un sistema de producción, la probabilidad de ocurrencia de errores se ve incrementada a medida que transcurre el tiempo de vida del mismo. Para ralentizar el deterioro, es conveniente realizar tareas de mantenimiento sobre los componentes y recursos del sistema, tales como lubricación, limpieza, ajustes, etc. En general, la ejecución de tareas de mantenimiento lleva asociado algún coste (temporal, económico, etc), por lo que es necesario encontrar el balance adecuado entre tareas de producción y de mantenimiento para que el funcionamiento del sistema sea óptimo.

Bibliografía
[1] J. Adams, E. Balas and D. Zawack, ‘ The shifting bottleneck procedure for job shop scheduling’, Management Science , 34(3), 391–401, (1988). [2] I. Aleksander, H. Farreny, and M. Ghallab, ‘Decision and intelligence.’, Robot Technology Series, 6–7, (1983). [3] J. Allen, ‘ Maintaining Knowledge about Temporal Intervals’, Comunications of the ACM, 26(11), 832–843, (1983). [4] A. Armando, C. Castellini and E. Giunchiglia, ‘SAT-based procedures for temporal reasoning’, In ECP, 97–108, (1999). [5] A. Armando, C. Castellini, E. Giunchiglia and M. Maratea, ‘A SAT-based decision procedure for the Boolean combination of difference constraints’, In SAT, (2004). [6] F. Bacchus, and Y. Teh, ‘Making forward chaining relevant.’, Proc. 4th Int. Conf. on AI Planning Systems,54–61, (1998). [7] F. Bacchus and F. Kabanza, ‘Using temporal logics to express search control knowledge for planning.’, Artificial Intelligence, 116, 123–191, (2000). [8] K. Baker de Mello and G. Scudder, ‘Sequencing with earliness and tardiness penalties: a review’, Operations Research, 38(1), 22–36, (1990). [9] I. Barba, C. Del Valle and D. Borrego ‘A Job-Shop Scheduling Model for ConstraintBased Local Search’, Iberamia 2008 Workshop on Planning, Scheduling and Constraint Satisfaction, 7–18, (2008). [10] J.C. Beck and M.S. Fox ‘A generic framework for constraint-directed search and scheduling’, AI Magazine, 19(4), 101–130, (1998). [11] J. Blazewic, E. Pesh and M. Sterna, ‘The disjunctive graph machine representation of the job shop scheduling problem’, European Journal of Operational Research , 127(2), 317–331, (2000). [12] A. Blum and J. Langeford, ‘Probabilistic planning in the Graphplan framework. ’, Proc. AISPS 98 Workshop on Plnning as Combinatorial Search, 8–12, (1998). [13] A. Blum and M. Furst, ‘Fast planning through planning graoh analysis.’, Artificial Intelligence, 90, 281–230, (1997). [14] M.S. Boddy, A. Cesta, and S.F. Smith, ‘ICAPS-04 Workshop on Integrating Planning into Scheduling.’(2004). [15] A. Bourjault, ‘Contribution à une approche méthodologique de l’assemblage automatisé: elaboration automatique des séquences opératoires’, Besancon, France: Faculty of Science and Technology, Université de Franche-Comté, PhD Thesis, 12 November, (1984). 81

82

BIBLIOGRAFÍA

[16] P. Brandimarte ‘Routing and scheduling in a flexible job shop by tabu search’, Annals of Operations Research, 41(3), 157–183, (1993). [17] P. Brucker and S. Hnust, Complex Scheduling, Springer, 2006. [18] T.L. Calton ‘Advancing design-for-assembly. The next generation in assembly planning.’, In Proceedings of the 1999 IEEE International Symposium on Assembly and Task Planning, 57–62, (1999). [19] A. Cesta and A. Oddi, ‘Gaining efficiency and flexibility in the simple temporal problem’, In TIME, (1996). [20] Y. Chen, C. Hsu and B. Wah ‘Temporal planning using subgoal partitioning and resolution in SGPlan’, Journal of Artificial Intelligence Research, 26, 323–369, (2006). [21] T. Dean, L. Kaelbling, J. Kirman and A. Nicholson, ‘Planning under time constraints in stochastic domains.’, AI, 76, 35–74, (1995). [22] T. Dean and S. Kambhampati, ‘Planning and scheduling.’, In CRC Hnadbook of Computer Science and Engineering (1996). [23] K. Deb, ‘Introduction to evolutionary multiobjective optimization.’, Lecture Notes in Computer Science 5252 LNCS, 59–96, (2008). [24] R. Debruyne and C. Bessière ‘Some practicable filtering techniques for the constraint satisfaction problem ’, In proceedings of the 15th IJCAI , 412–417, (1997). [25] R. Dechter, I. Meiri, and J. Pearl, ‘Temporal constraint networks’, Artificial Intelligence, 49, 61–95, (1991). [26] R. Dechter and I. Meiri, ‘Experimental evaluation of preprocessing algorithms for constraints satisfaction problems’, Artificial Intelligence, 68, 211–241, (1994). [27] R. Dechter, Constraint Processing, Morgan Kaufmann Publishers, 2003. [28] T.L. De Fazio and D.E. Whitney, ‘Simplified generation of all mechanical assembly sequences’, IEEE Journal of Robotics and Automation, RA-3(6), 640–658, (1987). [29] R. Dekker, F.A. Duyn, and R.E. Wildeman, ‘A Review of Multi-Component Maintenance Models with Economic Dependence’, Mathematical Methods of Operations Research, 45, 411–435, (1997). [30] P. De Lit, P. Latinne, B. Rekiek and A. Delchambre ‘Assembly planning with an ordering genetic algorithm’, International Journal of Production Research, 39(16), 3623– 3640, (2001). [31] Y. Dimopoulos,A. Gerevini,P. Haslum, and A. Saetti, The fifth International Planning Competition, hosted at the International Conference on Automated Planning and Scheduling (ICAPS-06)), Cumbria, UK(2006). [32] M.B. Do and S. Kambhampati ‘Planning as constraint satisfaction: Solving the planning graph by compiling it into CSP’, Artificial Intelligence, 132, 151–182, (2001). [33] B. Drabble and A. Tate, ‘The use of optimistic and pessimistic resource profiles to inform search in an activity based planner’, Proc. 2nd Int. Conf. on AI Planning Systems, 243–248, (1994). [34] M. Ernst, T. Millstein and D. Weld, ‘Automatic SAT compilation of planning problems.’, Proc. 15th Ont. Joint Conf. on AI, 1169–1176, (1997).

BIBLIOGRAFÍA

83

[35] E. Freuder, ‘A sufficient condition for backtrack-free search’, Journal of the ACM, 29, 24–32, (1982). [36] D. Frost and R. Dechter, ‘Dead-end driven learning’, In Proc. of the National Conference on Artificial Intelligence, 294–300, (1994). [37] M. R. Garey, D. S. Johnson, and R. Sethi, ‘The complexity of flowshop and jobshop scheduling’, Math. Oper. Res., 1(2), 117–129, (1976). [38] J. Gaschnig, ‘Performance measurement and analysis of certain search algorithms’, Technical Report CMU-CS-79-124, Carnegie- Mellon University (1979). [39] A. Gerevini and L. Schubert ‘Efficient Algorithms for Qualitative Reasoning about Time ’, Artificial Intelligence, 74, 207–248, (1995). [40] M. Ghallab, M. Alaoui, ‘Managing Efficiently Temporal Relations through Indexed Spanning Trees’, In IJCAI, 1297–1303,(1989). [41] M. Ghallab, D. Nau and P. Traverso, ‘Automated Planning: Theory and Practice’, Elsevier, (2004). [42] F. Glover, ‘Tabu Search Part I’, Orsa Journal on Computing, 1(3), 190–206, (1989). [43] F. Glover and M. Laguna, Tabu Search, Blackwell Scientific Publishing, Oxford, England, 1993. [44] M.H. Goldwasser and R. Motwani ‘Complexity measures for assembly sequences’, International Journal of Computational Geometry and Applications, 9, 371–418, (1999). [45] Y.Y. Haimes, L.S. Lasdon and D.A. Wismer, ‘On a bicriterion formulation of the problems of integrated system identification and system optimization.’, IEEE Transactions on Systems, Man, and Cybernetics, 1, 296–297, (1971). [46] F. Rossi, P. van Beek, and T. Walsh, Handbook of Constraint Programming, Elsevier, 2006. [47] R. Haralick and G. Elliot, ‘Increasing tree efficiency for constraint satisfaction problems’, Artificial Intelligence, 14, 263–314, (1980). [48] L.S. Homem de Mello, A.C. Sanderson, ‘And/or graph representation of assembly plans’, IEEE Transactions on Robotics and Automation, 6(2), 188–189, (1990). [49] L.S. Homem de Mello and A.C. Sanderson, ‘A correct and complete algorithm for the generation of mechanical assembly sequences’, IEEE Transactions on Robotics and Automation, 7(2), 228–240, (1991). [50] H. H. Hoos and T. Stutzle, Stochastic Local Search. Foundations and Applications, Morgan Kaufmann, 2005. [51] H.H. Huang, M.H. Wang, and M.R. Johnson ‘Disassembly sequence generation using a neural network approach’, Journal of Manufacturing Systems, 19(2), 73–82, (2000). [52] ILOG, ‘Ilog JSolver’, (2003). [53] A. Jain and S. Meeran, ‘Deterministic job-shop scheduling: Past, present, and future’, European Journal of Operational Research, 113 (2), 390–434, (1999). [54] T. Kanehara, T. Suzuki, A. Inaba, and S. Okuma ‘On algebraic and graph structural properties of assembly Petri net’, Proceedings of 1993 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2286–2293, (1993).

84

BIBLIOGRAFÍA

[55] J.G. Kang, D.H. Lee, P. Xirouchakis, and J.G. Persson ‘Parallel disassembly sequencing with sequence dependent operation times’, Annals of the CIRP, 50(1), 343–346, (2001). [56] H. Kautz and P. Ladking, ‘Integrating Metric and Qualitative Temporal Reasoning ’, In AAI, 241–246, (1991). [57] H. Kautz and B. Selman, ‘Pushing the envelope: planning, propositional logic.’, Proc. 13th Nat. Conf. on AI, 1194–1201, (1996). [58] S. Kirkpatrick, C.D. Gelatt and M.P. Vecchi, ‘Optimization by Simulated Annealing’, Science, 220(4598), 671–680, (1983). [59] J. Koehler, ‘Planning under resource constraints.’, Proc. 13th European Conf. on AI, 489–493, (1998). [60] M. Kovalyov, M. Portmann, and A. Oulamara, ‘Optimal testing and repairing a failed series system’, J Comb Optim, 12, 279–295, (2006). [61] A.A. Krokhin, P. Jeavons, and P. Jonsson, ‘Constraint satisfaction problems on intervals and lengths ’, SIAM Journal on Discrete Mathematics, 17(3), 453–477, (2004). [62] P. Laborie and M. Ghallab, ‘Planning with sharable resource constraints.’, Proc. 14th Int. Joint Conf. on AI, 1643–1649, (1995). [63] P.B. Ladkin and A. Reinefeld, ‘Effective solution of qualitative interval constraint problems ’, Artificial Intelligence, 57(1),105–124, (1992). [64] A.J.D. Lambert, ‘Optimal disassembly of complex products’, International Journal of Production Research, 35(9), 2509–2523, (1997). [65] A.J.D. Lambert ‘Optimal disassembly sequence generation for combined material recycling and part reuse’, In Proceedings of the 1999 IEEE International Symposium on Assembly and Task Planning, 146–151, (1999). [66] A.J.D. Lambert ‘Disassembly sequencing: a survey’, International Journal of Production Research, 41(16), 3721–3759, (2003). [67] J. Larrosa ‘Boosting search with variable elimination’, In Proc CP, 291–305, (2000). [68] J. Larrosa and P. Meseguer ‘Algoritmos para Satisfacción de Restricciones’, Inteligencia Artificial: Revista Iberoamericana de Inteligencia Artificial , 20, 31–42, (2003). [69] W. Li, C. Zhang, H.P.B. Wang and S.A. Awoniyi ‘Design for disassembly analysis for environmentally conscious design and manufacturing’, Proceedings of ASME International Mechanical Engineering Congress and Exposition, 2, 969–976, (1995). [70] W. Li and C. Zhang ‘Design for disassembly analysis for environmentally conscious design and manufacturing’, In Proceedings of the 1995 ASME International Mechanical Engineering Congress, 2, 969–976, (1995). [71] S. Lye, S.G. Lee and M.K. Khoo ‘An algorithm for optimising the servicing of products with constrained, multiple defects’, International Journal of Production Research, 38(10), 2185–2200, (2000). [72] A.K. Mackworth, ‘Consistency in networks of relations’, Artificial Intelligence, 8, 99–118, (1977). [73] A. Marquez, C. Del Valle, R.M. Gasca and M. Toro ‘A constraint-based algorithm for planning the substitution of faulty parts’, In Frontiers in Artificial Intelligence and Applications, 117, 79–88, (2005).

BIBLIOGRAFÍA

85

[74] M. Martinez, V.H. Pham and J. Favrel ‘Dynamic generation of disassembly sequences’, Proceedings of 6th IEEE International Conference on Emerging Technologies and Factory Automation, 177–182, (1997). [75] I. Meiri,‘Combining qualitative and quantitative constraints in temporal reasoning’, Artificial Intelligence, 87(1-2), 343–385, (1996). [76] S. Minton, M.D. Johnston, A.B. Philips and P. Laird, ‘A heuristic repair method for constraint-satisfaction and scheduling problems’, Artificial Intelligence, 58, 161–205, (1992). [77] M. Mitchell, ‘An Introduction to Genetic Algorithms’, MIT Press, (1998). [78] S. Mittal and B. Falkenhainer ‘Dynamic constraint satisfaction problems’, In Proceedings of the Eighth National Conference on Artificial Intelligence, AAAI Press, 25–32, (1990). [79] A. Nareyek, E.C. Freuder, R. Fourer, E. Giunchiglia, R.P. Goldman, H.A. Kautz, J. Rintanen, and A. Tate ‘Constraints and AI planning’, IEEE Intelligent Systems, 20(2), 62–72, (2005). [80] D. Nau, S. Gupta and W. Regli, ‘Artificial Inteligence planning versus manufacturing operation planning: a case study’, Proc. 14th Int. Joint Conf. on AI, 1670–1676, (1995). [81] D. Navin-Chandra ‘The recovery problem in product design’, Journal of Engineering Design, 5(1), 65–86, (1994). [82] R. Nicolai and R. Dekker, ‘A review of multi-component maintenance models’, Proceedings of the European Safety and Reliability Conference 2007, ESREL 2007 - Risk, Reliability and Societal Safety, 1, 289–296, (2007). [83] E. Nowicki and C. Smutnicki, ‘A fast taboo search algorithm for the job-shop problem’, Management Science, 42 (6), 797–813, (1996). [84] W. Nuijten and E. Aarts, ‘Sequencing with earliness and tardiness penalties: a review’, European Journal of Operational Research, 90(2), 269–284, (1996). [85] E. Pednault, ‘ADL: Exploring the middle ground between STRIPS and the situation calculus.’, Proc. 1st Int. Conf. on Principles of Knowledge Representation and Reasoning, 324–332, (1989). [86] J. Penberthy, and D. Weld, ‘UCPOP: a sound, complete, partial order planner for ADL’, Proc. 3rd Int. Conf. on Principles of Knowledge Representation and Reasoning., 103–114, (1992). [87] J. Penberthy and D. Weld, ‘Temporal planning with continuous change’, Proc. 12th National Conf. on AI, 1010–1015, (1994). [88] K.D. Penev, and A.J. De Ron ‘Determination of a disassembly strategy’, International Journal of Production Research, 34(2), 495–506, (1996). [89] P. Prosser, ‘An empirical study of phase transitions in binary constraint satisfaction problems’, Artificial Intelligence, 81, 81–109, (1993). [90] P.W. Purdom, ‘Search rearrangement backtracking and polynomial average time’, Artificial Intelligence, 21, 117–133, (1983). [91] M. Puterman, ‘Markov Decision Processes: Discrete Stochastic Dynamic Programming’, Wiley, (1994).

86

BIBLIOGRAFÍA

[92] D. Sabin and E.C. Freuder, ‘Contradicting convectional wisdom in constraint satisfaction’, In Proc. ECAI, 125–129, (1994). [93] I. Sabuncuoglu and M. Bayiz, ‘Job shop scheduling with beam search’, European Journal of Operational Research, 118(2), 390–412, (1999). [94] M.A. Salido and F. Barber ‘A constraint ordering heuristic for scheduling problems’, In Proceeding of the 1st Multidisciplinary Inter- national Conference on Scheduling : Theory and Applications, 476–490, (2003). [95] M. Sanseverino and F. Cascio, ‘Model-based diagnosis for automotive repair’, IEEE Expert-Intelligent Systems and their Applications, 12(6), 33–37, (1997). [96] B. Scholz-Reiter, H. Scharke, and A. Hucht ‘Flexible robot-based disassembly cell for obsolete TV-sets and monitors’, Robotics, Computers and Integrated Manufacturing, 19, 247–255, (1999). [97] D.D. Sheu and J.Y. Kuo, ‘A model for preventive maintenance operations and forecasting’, Journal of Intelligent Manufacturing, 17(4), 441–451, (2006). [98] D. Smith and D. Weld, ‘Temporal planning with mutual exclusion reasoning.’, Proc. 16th Int. Joint Conf. on AI, 139–144, (1999). [99] D. Smith, J. Frank and A. Jónsson ‘Bridging the gap between planning and scheduling’, Knowledge Engineering Review, 15(1), 47–83, (2000). [100] S. Staab, ‘From binary temporal relations to non-binary ones and back’, Artificial Intelligence, 128(1-2), 1–29, (2001). [101] K. Stergiou and M. Koubarakis, ‘Backtracking algorithms for disjunctions of temporal constraints’, Artificial Intelligence, 120(1), 81–117, (2000). [102] A.K. Subramani, and P. Dewhurst ‘Automatic generation of product disassembly sequences’, CIRP Annals, 40(1), 115–118, (1991). [103] E. Taillard, ‘Parallel Taboo Search Techniques for the Job-Shop Scheduling Problem’, ORSA Journal on Computing, 16 (2), 108–117, (1994). [104] Y. Tang, M.C. Zhou, and R.J. Caudill ‘An integrated approach to disassembly planning and demanufacturing operation’, Proceedings of 2000 IEEE International Symposium on Electronics and the Environment, 354–359, (2000). [105] L.C. Thomas, ‘A survey of maintenance and replacement models for maintainability and reliability of multi-item systems’, Reliability Engineering, 16, 297–309, (1986). [106] J. Thornton, M. Beaumont, A. Sattar and M.J. Maher, ‘A local search approach to modelling and solving Interval Algebra problems’, Journal of Logic and Computation, 14(1), 93–112, (2004). [107] J.S. Usher, A.H. Kamal and W.H. Syed, ‘Cost optimal preventive maintenance and replacement scheduling’, IEEE Transactions, 30(12), 1121–1128, (1998). [108] R. Vaessens, E. Aarts, and J. Lenstra, ‘Job-shop scheduling by local search’, INFORMS Journal on Computing, 8, 302–317, (1994). [109] C. Del Valle,A. Márquez and I. Barba ‘A CSP model for simple non-reversible and parallel repair plans’, Journal of Intelligent Manufacturing, To appear (DOI 10.1007/s10845-008-0162-9)., (2008).

BIBLIOGRAFÍA

87

[110] P. Van Hentenryck and L. Michel, Constraint-Based Local Search, The MIT Press, 2005. [111] M. Vilain, and H. Kautz, ‘Constraint Propagation Algorithms for Temporal Reasoning’, In AAAI, 377–382, (1986). [112] S. Viswanathan and V. Allada ‘A framework for the flexible grouping of products for disassembly’, Journal of Electronics Manufacturing, 9(1), 53–66, (1999). [113] T. Vossen, M. Ball, A. Lotem and D. Nau, ‘On the use of integer programming models in AI planning’, The Knowledge Engineering Review, 15(1), (1999). [114] J.P. Wang and V. Allada ‘Serviceability evaluation using weighted fuzzy attributes’, Engineering Design Automation, 4(3), 189–201, (1998). [115] D. Weld, ‘Recent advances in AI planning.’, AI Magazine, 20(2), 93–123, (1999). [116] D. Wilkins, ‘Can AI planners solve practical problems?’, Computational Intelligence, 6(4), 232–246, (1990). [117] S. Wolfman and D. Weld, ‘Combining linear programming and satisfiability solving for resource planning.’, The Knowledge Engineering Review, 15(1), (1999). [118] L. Xu and B.Y. Choueiry, ‘Improving backtrack search for solving the TCSP ’, In CP, 754–768, (2003). [119] L. Zadeh, ‘Optimality and non-scalar-valued performance criteria.’, IEEE Transactions on Automatic Control, 8, 59–60, (1963). [120] G. Zülch, E.F. Schiller and R. Müller ‘A disassembly information system’, Proceedings of 4th CIRP International Seminar on Life Cycle Engineering, 400–412, (1997). [121] M. Zweben and M. Fox, ‘Intelligent Scheduling’, Morgan Kaufmann, (1994).