Vous êtes sur la page 1sur 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 3
1.1. Estado del arte de los temas estudiados . . . . . . . . . . . . . . . . . . . . 3
1.1.1. Programación con restricciones . . . . . . . . . . . . . . . . . . . 4
1.1.2. Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4. Planes de mantenimiento y reparación de sistemas . . . . . . . . . 5
1.2. Nuestras propuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1. Un Modelado CSP para Planes de Reparación. . . . . . . . . . . . 5
1.2.2. Un Modelado del JSSP para Búsqueda Local Basada en Restric-
ciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Hipótesis y objetivos 7
2.1. Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3. Trabajo relacionado 9
3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2. Programación con Restricciones . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.2. Modelado del Problema como un CSP . . . . . . . . . . . . . . . . 10
3.2.3. Resolución del CSP . . . . . . . . . . . . . . . . . . . . . . . . . 12
Algoritmos de búsqueda . . . . . . . . . . . . . . . . . . . . . . . 12
Técnicas de consistencia . . . . . . . . . . . . . . . . . . . . . . . 14
Técnicas híbridas . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.4. Heurísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Ordenación de variables . . . . . . . . . . . . . . . . . . . . . . . 18
Ordenación de valores . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.5. CSP Temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Razonamiento temporal cualitativo . . . . . . . . . . . . . . . . . 19
Razonamiento temporal métrico . . . . . . . . . . . . . . . . . . . 20
Combinación de razonamientos cualitativo y métrico . . . . . . . . 21
Algoritmos eficientes para CSPs temporales . . . . . . . . . . . . . 21
3.3. Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.2. Definición del Job Shop Scheduling Problem . . . . . . . . . . . . 23
Grafo disyuntivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Funciones objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.3. Camino Crítico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.4. Programación matemática . . . . . . . . . . . . . . . . . . . . . . 26
3.3.5. Heurística basada en cuellos de botella (Shifting Bottleneck Heuris-
tic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.6. Programación con restricciones . . . . . . . . . . . . . . . . . . . 28

I
II ÍNDICE GENERAL

3.3.7. Métodos heurísticos . . . . . . . . . . . . . . . . . . . . . . . . . 29


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

4. Conclusiones 79
4.1. Conclusiones obtenidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Índice de figuras

3.1. Problema de coloración del mapa . . . . . . . . . . . . . . . . . . . . . . . 11


3.2. Un grafo disyuntivo para problemas Job Shop . . . . . . . . . . . . . . . . 24
3.3. Ratio de ocurrencia de fallos en un sistema ROCOF . . . . . . . . . . . . . 41
3.4. Diagrama de las etapas para la sustitución/reparación de componentes de-
fectuosos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5. El grafo And/Or para el sistema ABCDE . . . . . . . . . . . . . . . . . . . 45
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 49
3.7. El grafo And/Or de ensamblaje para el sistema ABCDE . . . . . . . . . . . 52
3.8. El grafo And/Or simplificado de desensamblaje para el sistema ABCDE
cuando la pieza defectuosa es D . . . . . . . . . . . . . . . . . . . . . . . 54
3.9. El grafo And/Or simplificado de reparación para el sistema ABCDE cuan-
do la pieza defectuosa es D . . . . . . . . . . . . . . . . . . . . . . . . . . 55
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 . . . . . . . . . . . . . . . . . . . . . . . . . . 57
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.12. Un grafo disyuntivo para el problema Job Shop. . . . . . . . . . . . . . . . 65
3.13. Ejemplo de una solución satisfactible . . . . . . . . . . . . . . . . . . . . . 67
3.14. Ejemplos de ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.15. Un ciclo en un grafo disyuntivo . . . . . . . . . . . . . . . . . . . . . . . . 68
3.16. Casos para la prueba del teorema 1 . . . . . . . . . . . . . . . . . . . . . . 70
3.17. Intercambios posibles para una variable v . . . . . . . . . . . . . . . . . . 71
3.18. Intercambios permitidos para δ = 2 . . . . . . . . . . . . . . . . . . . . . 71
3.19. Intercambio entre variables . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.20. El algoritmo de búsqueda local parametrizado . . . . . . . . . . . . . . . . 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 . . . . . . . . . . 46


3.2. Número de nodos And/Or y planes para cada problema . . . . . . . . . . . 54
3.3. Conjunto de restricciones de tipo (1) para el grafo And/Or de reparación de
la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4. Conjunto de restricciones de tipos (2) y (3) para el grafo And/Or de repa-
ración de la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.5. Conjunto de restricciones de tipo (4) para el grafo And/Or de reparación de
la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.6. Conjunto de restricciones de tipo (5) para el grafo And/Or de reparación de
la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7. Conjunto de restricciones de tipo (6) para el grafo And/Or de reparación de
la figura 3.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.8. Resultados Comparativos (cualidad de las soluciones) . . . . . . . . . . . . 76
3.9. Resultados comparativos (tiempo de ejecución) . . . . . . . . . . . . . . . 77
3.10. Resultados sobre un conjunto de instancias JSS . . . . . . . . . . . . . . . 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 sis-
temas 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 funda-
mental a tener en cuenta en cualquier sistema.
En el presente trabajo se consideran sistemas formados por un conjunto de compo-
nentes 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 susti-
tució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 planifica-
ció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, Plani-
ficació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 sec-
ciones. 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 profundi-


dad 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 pla-
nificació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 combi-


nació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 rela-
cionadas con el presente trabajo, incluyendo los aspectos y los trabajos más rele-
vantes 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 re-


sumen de las conclusiones obtenidas. También se detallan algunas ideas que se con-
sideran 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 ade-
cuada, 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 reso-
lució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 proble-
mas: 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 ma-
yorí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 nece-
sario determinar un plan de ejecución para un conjunto de tareas, que pueden estar rela-
cionadas 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 prece-
dencia 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 promete-
dores que se deben realizar para conseguir el objetivo perseguido.
Existen multitud de propuestas para resolver el JJSP. Entre las más conocidas y refe-
renciadas 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 Net-
work. 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 al-
gunas 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 de-
tecta 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 compar-
tidos. 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 (plani-
ficación) como ordenarlas, resolviendo los conflictos que puedan surgir por el uso compar-
tido 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 Res-


tricciones.
Este trabajo ha sido presentado en el workshop internacional Iberamia 2008 Work-
shop 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 en-
cuentran 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 prede-
cesora 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 operacio-
nes, 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 conoci-
dos.
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 compo-
nentes 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 compo-
nente/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 funcio-
nando 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 objeti-
vo 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 concre-
tamente 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 utiliza-
da 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óri-
camente) de que es posible conseguir resultados competitivos y prometedores para el man-
tenimiento y la reparación de sistemas a partir de modelos y algoritmos basados en restric-
ciones 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 re-
sultados 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 pro-
puestas 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 previ-
amente, 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 repa-
ració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 con-
flicto 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 erro-


res (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 mantenimien-
to 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 rela-
cionados 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 poste-
riormente obtener una solución que satisfaga dichas restricciones. En el caso de problemas
de optimización (Constraint Optimization Problem, COP) se persigue encontrar una solu-
ción que, además de satisfacer las restricciones, optimice una determinada función obje-
tivo. 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 Satis-
faction 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 algo-
ritmos 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 me-
diante programación con restricciones, el primer paso es definir un modelado de restriccio-
nes 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 restric-
ciones 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

y
x

z w

z w
{r,v,a} {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 consis-


ten 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 0 equiva-
lente 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 0 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 me-


diante la combinación de algoritmos de búsqueda y técnicas de inferencia. Las com-
binaciones 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 sis-
temá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 lu-
gar 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 con-
junto 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 profun-
didad 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 ine-
ficiente. 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 com-
pletas (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 determina-
da 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 pro-
blema 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 si-
guientes:
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 ac-
tuar 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 (movimien-
tos 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 par-
tir 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 im-
plícita. En general, esta nuevas restricciones pueden englobar a algunas restricciones an-
teriores, 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 res-
tricciones 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 com-
pleta 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 res-
tricció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 va-
riables 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 6= j cualquier par de valores para (xi , xj ) localmente con-
sistentes, 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 varia-
bles, 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úsque-
da 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 ini-
ciales. 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 estu-
dio 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 0 , D0 , C 0 ) de una red de restric-
ciones (X, D, C) está definida por un conjunto de variables X 0 = {x1 , . . . , xk }, X 0 ⊂ X,
sobre los dominios originales D0 = {D1 , . . . , Dk }, bajo el conjunto de restricciones
C 0 = {c | c ∈ C ∧ var(c) ⊆ X 0 } [68]. Gracias al estudio de subredes de restriccio-
nes que sólo consideran ciertas variables se pueden obtener diferentes resultados:

Si se detectan valores o combinaciones de valores que no aparecen en ninguna solu-


ció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), consis-
tencia 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 conside-
rado 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 mecan-
ismo 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 combi-
nació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 resolu-
ció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 cro-
noló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 varia-
bles 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 crono-
ló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 momen-
to 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 varia-
bles 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 va-
riables 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 for-
mar 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 gene-
rado 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 eli-
minarla 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 fac-
tores 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 du-
rante 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 tratamien-


to 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ís-
tica 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ís-
ticas 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 lle-
varnos 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 pla-
nificació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 tem-
porales 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 for-
malismos 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 impor-


tante, 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] intro-
dujo 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 propa-
gació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 bina-
rias disyuntivas, que combinan las tres relaciones anteriores mediante operaciones
de conjunción y disyunción. Para representar un CSP temporal mediante este mode-
lado 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 distin-
tos 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 solu-


ció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 bina-
rias. Un aspecto importante es que la verificación de la consistencia de redes DBD es NP-
completo [25].
Otra clase de restricciones temporales más expresivas, que han sido ampliamente es-
tudiadas 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 con-
sistencia 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 tan-
to 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étri-
ca 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 tempo-
rales, 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 razona-
miento 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 or-
ganizan 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 operacio-
nes 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 com-
parten 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 in-
formació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 secuen-
cia 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 sumi-
nistros, 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 ope-


raciones que deben ser ejecutadas en un orden determinado, de forma que una ope-
ración no puede comenzar hasta que no hayan finalizado todas las operaciones pre-
decesoras.

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 ope-
raciones 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 restric-
ciones, 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 re-
curso. 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 de-
nominado 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 finali-
zació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 di-
recció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 st0ij
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 ct0ij es el tiempo máximo en el que una operación puede finalizar sin provocar un
aumento en el makespan (ct0ij = st0ij + pij ). Sea oprs la operación sucesora de opij en
máquina. Se definen st0ij y ct0ij de la siguiente forma:
Si es la última en su máquina y la última en su trabajo, ct0ij = Cmax .
Si es la última en su máquina, pero no en su trabajo, ct0ij = st0i,j+1 .
Si no es la última en su máquina, pero sí en su trabajo, ct0ij = st0r,s .
Si no es la última en su máquina, ni en su trabajo, ct0ij = min{st0i,j+1 , strs
0
}.
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 = st0 , 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 < st0 , es decir, un retraso
en su tiempo de comienzo de no más de st0 − 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 pertene-
ciente 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 cambian-
do 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, te-
niendo 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 sen-
cilla 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 Heuris-


tic)
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 con-
junto 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 espe-
rado 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 st00ij (st0ij ) el tiempo posible de comienzo más temprano (más
tardío) de la operación opij y ct00ij (ct0ij ) 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 prece-
dencia dado. El tiempo posible de comienzo más temprano st00ij 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 ct0ij puede ser considerado como el tiempo de finaliza-
ció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 ) = st0rs − ct00ij


= ct0rs − st00ij − 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 pa-
so, 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, encon-
trar 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 solu-
ciones 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éto-
do 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 an-
nealing, 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 prio-
ridades, 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-In-
First-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 decre-
ciente 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 si-
guiente: 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 con-
junto de m máquinas, denominado Mj . En cuanto una máquina es liberada, se selec-
ciona el trabajo que puede ser procesado en el menor número de máquinas alternati-
vas 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 traba-
jos 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 cuidadosa-
mente 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íci-
ta 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 Pla-
nificació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 distin-
ta 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 com-
plejas 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 apli-
cada. 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 nega-
tivos y que representan los objetivos perseguidos.

Un conjunto de literales del cálculo proposicional que pueden ser positivos o nega-
tivos y que representan el estado inicial, también conocidos como condiciones ini-
ciales.

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 nece-
saria la existencia de los literales de precondición. Por lo tanto, en cada momento, en fun-
ció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, evolu-
cionando 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 es-
pecificar 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 con-
junto 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), pudien-
do 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 sim-
ple 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 or-
den 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 con-
seguido 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 planifica-
ció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 proble-
ma 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 di-
ferentes 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 mis-
mo tiempo. Del mismo modo, existen acciones incompatibles. Para obtener toda esta infor-
mació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 satisfactibil-


idad 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 pro-
ceso. 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 precondi-
ciones 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, en-


tonces 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 proposi-
cional, 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 especi-
fica 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 (expan-
sió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 relativa-
mente 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 utiliza-
da 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 descrip-
ció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 fundamen-


tal 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 conside-
rable 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 dis-
tintos 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 orien-
tació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 ininterrum-
pibles. 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 planifica-
ció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 nece-
sario 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 consi-
deran formados por un conjunto de componentes, los cuales se encuentran vinculados o
conectados formando un sistema completo. Este tipo de problemas se incluyen en multi-
tud 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 compo-
nentes del mismo bloque.
Dependencia estocástica: ocurre si el estado de un componente influye en la distribu-
ció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 sis-
tema, que suele consistir en la inspección cada cierto tiempo de los componentes, conlle-
vando 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 com-
portamiento 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 de-
fectuosos, 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 pro-
puestas 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 defectu-
oso, 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 manteni-
miento de sistemas, incluyendo aspectos relevantes tales como el mantenimiento preven-
tivo, 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 pro-
puestos 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 com-
ponente, 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 sis-
tema. 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

ls
ti deocurenciadefao
Rao

Periodo j Periodo j+1

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


ls
ti deocurenciadefao
Rao

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 defec-


tuosos

Maintenance: el sistema debe ser mantenido. Esta actividad se sitúa entre do no-
thing 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 realiza-


ció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 manteni-
miento, 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 defectuo-


sos, es decir, los responsables del comportamiento erróneo del sistema. Puede ser
que se realice con un grado de incertidumbre determinado, otorgando una probabili-
dad 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 em-
pí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 compo-
nente 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 ge-
neral, intentando minimizar el tiempo total de ejecución. Este proceso no es necesa-
riamente 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 sis-


tema, 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 mantenimien-


to 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 basa-
da 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 com-
ponentes 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 com-
portamiento 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 íntima-
mente 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 ac-
ción se determina, normalmente, desde un punto de vista de la ingeniería, es decir, la sepa-
ració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 ensam-


blajes 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 progra-
mació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 45

ABCDE (1)

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óti-
ca 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 secuen-
cias 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 des-
conexió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 separa-
ció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 se-
paració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 -1 -1 . . . . . .
2 1 . -1 . . . . .
3 . 1 1 -1 -1 . . .
4 . . . 1 . -1 . .
5 . . . . 1 . -1 .
6 . 1 . . . . . -1
7 . . . . . 1 1 .
8 . . 1 . . . . 1
9 . . . . 1 1 . .
10 . . . 1 . . 1 .
11 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 hipe-
rarco, 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 restriccio-
nes:
X
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 ele-
mento 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 apli-
cados 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, frecuente-
mente, 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 repa-
ració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 eje-
cució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 suminis-
tro, 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 dis-
cuten 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 eje-
cució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 opera-
ciones 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 desensam-
blaje 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áti-
ca, sino que se basan en sofisticados métodos pertenecientes al área de la Inteligencia Arti-
ficial. Entre ellos, se incluyen trabajos que hacen uso de simulated annealing [69], o algo-
ritmos 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 acti-


vas, 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 in-
certidumbre es inherente al desensamblaje, aparece una incertidumbre adicional de-
bida 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 neu-
ronal 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. Es-
tas redes son particularmente útiles para distinguir los elementos de los conjuntos
difusos. Las redes neuronales han sido utilizadas para la categorización de los distin-
tos 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 impi-
de su uso para cálculo online. En general, se obtienen como resultado soluciones subópti-
mas.

3.5.8. Redes de Petri


La representación mediante redes de Petri es una herramienta muy utilizada en el mode-
lado 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 apli-
can 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 modifica-
ciones en el diseño del producto.
Las redes de Petri están formadas por 4 tipos de elementos: lugares, transiciones, cam-
bios de estados y arcos, como se puede observar en la figura 3.6. En el grafo correspon-
diente And/Or, estos elementos se corresponden con nodos (subsistemas), hiperarcos (ac-
ciones), matrices de transición y arcos. Los tokens son conceptualmente entidades que rep-
resentan 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 49

TOKEN

AB PLACE AB

ARC

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 pla-
nificació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 com-
ponente 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, con-
sideramos que es una línea prometedora y de gran interés, por lo que continuaremos plante-
ando 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 plani-
ficació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 config-
uració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 defectu-
osa 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 repre-
sentar 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 apli-
caciones 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 (prin-
cipalmente 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 cer-
canos 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 in-
tegrar 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 fa-
bricació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 especifica-
dos por sus efectos en las piezas. La identificación de operaciones de ensamblaje y desen-
samblaje 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 distin-
tos 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 uti-
lizado 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 ensambla-
je y desensamblaje es a través de grafos And/Or [48]. En estos grafos, cada plan de ensam-
blaje/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 restric-
ciones 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 alter-
nativas 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 mues-
tra 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 auxilia-
res que se exponen a continuación:

operaciones de configuración (cambian la configuración de la máquina).


∆cht (M, C, C 0 ) denota el tiempo necesario para cambiar la configuración de la
máquina M de C a C 0

transporte de submontajes entre diferentes máquinas.


∆mov (SA, M, M 0 ) denota el tiempo requerido para transportar el submontaje SA
desde la máquina M a M 0 .

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 eje-
cutar 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 artifi-
cial, 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 sub-
montajes 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, permi-
tiendo 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 con-
tiene las tareas de ensamblaje y desensamblaje (y los correspondientes submontajes) que
podrían ser necesarios para reparar algunas piezas, de acuerdo con el modelado simplifica-
do 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 correspon-


diente tarea de desensamblaje (ensamblaje) T 0 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 en-
samblaje está incluida.
El modelado de planificación desarrollado en este trabajo supone las siguientes condi-
ciones:
(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 de-
fectuosas, 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 con-
tener 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, uti-
lizando 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 restriccio-
nes de tiempo y recursos de scheduling podrían ser transformadas en restricciones condi-
cionales 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 sec-
ció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 submon-
tajes 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 cuan-
do la pieza defectuosa es D

es posible observar tanto los procesos de ensamblaje como los de desensamblaje. Por cla-
ridad, 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 Grafo And/Or simplificado


Problema #Or #And #Or #And #And’ #Planes Des. #Planes Rep.
30d 408 837 294 506 365 3071 9414
30c 415 863 310 546 384 3634 12846
30b 404 828 303 520 365 3045 9200
30a 348 630 223 327 240 623 1213
40d 756 2060 598 1400 925 54449 197551
40c 770 2143 621 1489 984 70980 248408
40b 759 2086 604 1433 947 76171 405661
40a 649 1518 433 833 575 9370 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 0 respectivamente: sus duraciones dur(T ) y dur(T 0 ); 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 0 ); y la configuración necesaria que deben tener, C(T ) y C(T 0 ); sus


tiempos de comienzo, ti (T ) y ti (T 0 ); sus tiempos de finalización tf (T ) y tf (T 0 );
y dos variables booleanas representando si las tareas son seleccionadas o no para la
solución, s(T ) y s(T 0 ) 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, t0OR (SA);
y dos variables booleanas representando si el submontaje SA aparece en el proceso
de desensamblaje y ensamblaje, s(SA) y s0 (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 planifi-


cació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 0 ) denotará el
tiempo requerido para cambiar la configuración de la máquina M de C a C 0 .

El transporte de submontajes intermedios supondrá un retraso adicional que debe ser


considerado en las restricciones de precedencia; mov(SA, M, M 0 ) denotará el tiempo
necesario para el transporte del submontaje SA de la máquina M a M 0 .
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, correspon-
diente 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 (T10 -T30 -T40 en el ejem-
plo) 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 (1)
C3 T’1 T’2 ...

(2)
ABCD

M1
T’3 (3)
C2

ACD

(4)
M1
M2 T’4 T’5 C2
C3

(5)
AC AD BE

M3
T’7 C6

A B C D E

M2 M1 M2
T6 T7 T8
C4 C2 C4

AC AD BE

M2 M1
T4 T5
C5 C2

ACD

M3
T3
C6

ABCD

M2 T1 M2
T2
C4 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
T’1
C7

ABCD

M2
T’3
C3

ACD

M1
T’4
C2

AC

B D E

M2
T8 C5

AC BE

M2
T4 C5

ACD

M2
T3
C4

ABCD

M2 M2
T1 C3
T2
C4

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 0 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:

s0 (SA) ⇔ XORTi0 ∈succ(SA) (s(Ti0 ))

s(SA) ⇔ XORTi ∈succ(SA) (s(Ti ))


Por otro lado, estas restricciones establecen los tiempos de desensamblaje t0OR y de
ensamblaje tOR de los nodos Or relativos a los tiempos de comienzo de las tareas de de-
sensamblaje o a los tiempos de finalización de tareas de ensamblaje:

s(Ti0 ) ⇒ ti (Ti0 ) ≥ t0OR (SA) + ∆mov (SA, m0 (SA), m(Ti0 ))

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) t0OR 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 va-
riable t0OR 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 restriccio-
nes 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 0 ) ⇒ s0 (SA1 ) ∧ s0 (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) = s0 (D) = s(D) = true ∧ t0OR (ABCDE) = 0
0

s0 (ABCDE) ⇒ (s(T10 )XORs(T20 ))


s(T10 ) ⇒ (m0 (ABCD) = m0 (E) = M2 ∧ t0OR (ABCD) = t0OR (E) = tf (T10 ))
s(T20 ) ⇒ (m0 (ACD) = m0 (BE) = M1 ∧ t0OR (ACD) = t0OR (BE) = tf (T20 ))
..
.
s0 (SA) ⇒ (s(SA) ∧ m(SA) = m0 (SA) ∧ tOR (SA) = t0OR (SA)),
SA ∈ {A, B, C, E, AC, BE}
(1) s0 (D) ⇒ (m(D) = m0 (D) ∧ tOR (D) = t0OR (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 ))

s(T ) ⇒ s(SA1 ) ∧ s(SA2 )

incluyen restricciones de igualdad entre los tiempos de desensamblaje de los nodos Or


t0OR y los tiempos de finalización de las tareas de desensamblaje T 0 que aparece sobre
dicho nodo Or en el grafo And/Or original,

s(Ti0 ) ⇒ tf (Ti0 ) = 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 m0 en la que un submontaje se genera tras una tarea de desensamblaje,


es la máquina usada por dicha tarea de desensamblaje:

s(Ti0 ) ⇒ m0 (SA1 ) = m(Ti0 )

s(Ti0 ) ⇒ m0 (SA2 ) = m(Ti0 )


La tabla 3.4 muestra algunos ejemplos indicativos de restricciones de tipo 2 y 3 corres-
pondientes 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 to-
dos 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

s0 (SA) ⇔ XORTi0 ∈pred(SA) (s(Ti0 ))

s(SA) ⇔ XORTi ∈pred(SA) (s(Ti ))


La tabla 3.5 muestra algunos ejemplos indicativos de restricciones de tipo 4 correspon-
dientes 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
T30 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 sim-
plificado de la figura 3.10.
Por último aparece un nuevo tipo de restricciones, tipo 6, teniendo en cuenta que al-
gunas 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 mis-
mo 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 T40 y con la tarea T4 en el grafo de reparación compuesto por T10 -T30 -T40 -T8 -
T4 -T2 , mostrando que la tarea de ensamblaje T8 puede ser ejecutada antes o después de T40
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 di-
ferentes 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 varia-
bles 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 Internation-
al 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 co-
mo 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 consider-
adas 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 correspondien-
tes.
Como trabajo futuro, además del uso de diferentes algoritmos para resolver el proble-
ma, 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 Work-
shop 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 inter-
cambiables 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 modela-
dos 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 restriccio-
nes (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 conjun-
to 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 se-
leccionadas 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 algo-
ritmo 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 ope-
raciones 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 mis-
mo 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 compo-
nentes:

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 siguien-
tes 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 proce-
sar 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 restric-
ciones, 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 se-
cuencia, 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 67

v11 = 2 v12 = 6 v13 = 8 op 11 op 12 op13


v21 = 4 v22 = 5 v23 = 9
v31 = 1 v32 = 3 v33 = 7

S op 31 op 11 op 32 op 21 op 22 op 12 op 33 op 13 op 23
1 2 3 4 5 6 7 8 9 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 prede-
cesoras y sucesoras de v en su máquina, y de forma similar P J(v) y SJ(v) en su tra-
bajo. 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 di-
rigidos 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 resolu-
ció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á ci-
clos.
Demostración. Sean op1i , op1j , op2k y op2l cuatro operaciones con las siguientes ca-
racterí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 opera-
ciones 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 secuen-
cia 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 res-
tringido 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 intercam-
bios 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 CAPÍTULO 3. TRABAJO RELACIONADO

op1i ... op1j op1i ... op1j

op2k ... op2l op2k ... op2l

op1i op1j
op2k op2l op1i op1j

op2k op2l

(1a) (1b)

op1i ... op1j op1i ... op1j

op2k ... op2l op2k ... op2l

op1i op1j op2k op2l op1i op1j op2k op2l

(2a) (2b)

opab opcd significa vab < vcd

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 in-
tercambio 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 solu-
ciones 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 posibili-
dades 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 va-
riable 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 permi-
tidos 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λ , di-
ferentes 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 con-
junto 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 CAPÍTULO 3. TRABAJO RELACIONADO

S ... w ... v ...

S' ... v ... w ...

S(m(v)) ... w v ...

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


a) Intercambio entre variables correspondientes a operaciones ejecutadas en la misma máquina

S ... w ... SM(w) ... SM 2(w) ... SM ...(w) ... v ...

S' ... v ... SM(w) ... SM2(w) ... SM ...(w) ... w ...

S(m(v)) ... PM(v) v ...

S'(m(v)) ... v PM(v) ...

S(m(w)) ... w SM(w) SM 2(w) ... SM ...(w) ...

S'(m(w)) ... SM(w) SM 2(w) ... SM ...(w) w ...


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

Figura 3.19: Intercambio entre variables

2. Si w 6= P M (v), es decir m(w) 6= m(v), tendrán lugar otros cambios. Si SM (w) <
v, entonces los órdenes de ejecución de todas las operaciones w0 que satisfacen que
m(w0 ) = m(w) y w < w0 < 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 intercam-
bio 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 con-
ducen 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 0 .

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 dife-
rentes 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 73

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 0 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 0 en N1λδ
;
else
λ := λ + 1;
end
until S 0 ha sido seleccionado o λ > maxBlockSize(S)/2 ;
if S 0 no ha sido seleccionado (todos los N1λδ
están vacíos) then
0 δ
selecciona un vecino S de S en N2 aleatoriamente;
end
end
S := S 0 ;
if S mejora best then
best := S;
end
end
end

Figura 3.20: El algoritmo de búsqueda local parametrizado

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 lo-
cal 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 esti-
mació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 pro-
blema 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 es-
cenario 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 bench-
marks 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 uti-
lizado 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 proba-
do 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 computa-
cional 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 espe-
rar, 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, conside-
rado 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 ope-
raciones 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 Smut-
nicki. 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 secuen-
ciació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
s(Ti0 ) ⇒ tf (Ti0 ) = ti (Ti0 ) + dur(Ti0 ), Ti0 ∈ {T10 , T20 , T30 , T40 , T50 , T70 }
(2) s(Ti ) ⇒ tf (Ti ) = ti (Ti ) + dur(Ti ), Ti ∈ {T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 }
s(T10 ) ⇒ (s0 (ABCD) ∧ s0 (E) ∧ ti (T10 ) ≥ t0OR (ABCDE))
s(T20 ) ⇒ (s0 (ACD) ∧ s0 (BE) ∧ ti (T20 ) ≥ t0OR (ABCDE))
3.7. MODELADO JSS PARA CBLS

s(T30 ) ⇒ (s0 (B) ∧ s0 (ACD) ∧ ti (T30 ) ≥ t0OR (ABCD) + ∆mov (ABCD, m0 (ABCD), M10 ))
(m0 (ABCD) = M2 )
..
.
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
(3) 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
s0 (ACD) ⇔ (s(T30 ) XOR s(T20 ))
s0 (D) ⇔ (s(T40 ) XOR s(T70 ))
..
(4) .
s(A) ⇔ (s(T6 ) XOR s(T7 ))
s(ACD) ⇔ (s(T3 ) XOR s(T2 ))

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(T10 ) ∧ s(T1 )) ⇒ ti (T1 ) ≥ tf (T10 ) + ∆cht (M2 , C3 , C4 )
(s(T10 ) ∧ s(T6 )) ⇒ ti (T6 ) ≥ tf (T10 ) + ∆cht (M2 , C3 , C4 )
..
(5) .
(s(T8 ) ∧ s(T2 )) ⇒ ti (T2 ) ≥ tf (T8 ) + ∆cht (M2 , C4 , C5 )
(s(T4 ) ∧ s(T1 )) ⇒ ti (T1 ) ≥ tf (T4 ) + ∆cht (M2 , C5 , C4 )

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(T40 ) ∧ s(T8 )) ⇒
(ti (T40 ) ≥ tf (T8 ) + ∆cht (M2 , C4 , C3 ) ∨ ti (T8 ) ≥ tf (T40 ) + ∆cht (M2 , C3 , C4 ))
(6) (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 ))

Tabla 3.8: Resultados Comparativos (cualidad de las soluciones)

Mejor ∆Mejor #opt


Problema SGPlan ALG-1 ALG-2 SGPlan ALG-1 ALG-2
30d 0.075 1 0 0.116 0 0.457 0
30c 0.05 1 0 0.101 0 0.620 0
30b 0.05 0.562 0.425 0.102 0.024 0.023 0
30a 0.012 0.037 1 0.118 0.016 0 58
40d 0.137 1 0 0.093 0 0.153 0
40c 0.012 0.212 0.85 0.178 0.020 0.011 44
40b 0.15 0.45 0.55 0.043 0 0.500 44
40a 0.087 1 0 0.088 0 0.521 0
3.7. MODELADO JSS PARA CBLS 77

Tabla 3.9: Resultados comparativos (tiempo de ejecución)


Tiempo Medio
Problema SGPlan ALG-1 ALG-2
30d 0.598 0.108 300
30c 0.604 0.091 300
30b 0.485 0.097 300
30a 0.193 0.044 120.9
40d 1.788 0.275 300
40c 1.407 0.193 136.2
40b 2.063 0.264 136.1
40a 1.395 0.157 300
CAPÍTULO 3. TRABAJO RELACIONADO

Tabla 3.10: Resultados sobre un conjunto de instancias JSS


Modelo Propuesto NS
Inst. n m UB BRE M RE SDRE RT BRE RT BRE104 RT104
FT10 10 10 930 2.25 3.95 0.96 8.72 0 0.68 0 0.25
ABZ7 20 15 656 9.90 13.98 2.16 64.40 2.28 4.62 3.20 0.84
LA02 10 5 655 0.45 3.80 1.83 3.02 0 0.10 0 0.11
LA19 10 10 842 2.49 6.25 1.82 10.52 0.11 0.83 0.11 0.35
LA21 15 10 1046 5.16 8.23 1.05 18.76 0.86 0.86 0.86 0.42
LA24 15 10 935 3.85 6.56 1.13 18.72 1.39 1.33 1.50 0.45
LA25 15 10 977 7.26 11.24 1.84 20.65 1.12 1.39 2.04 0.45
LA27 20 10 1235 6.96 12.07 2.03 30.73 1.94 1.27 1.94 0.51
LA29 20 10 1152 8.42 12.57 2.22 33.24 3.13 3.40 4.51 0.48
LA36 15 15 1268 7.09 11.42 1.25 38.61 0.79 3.66 2.76 0.62
LA37 15 15 1397 9.09 14.59 2.30 41.80 1.50 2.74 3.29 0.78
LA38 15 15 1196 5.85 8.09 0.99 41.72 1.84 2.75 2.59 0.65
LA39 15 15 1233 7.94 10.44 0.90 41.04 0.89 3.50 1.62 0.79
LA40 15 15 1222 7.03 10.28 1.02 36.52 1.64 2.40 2.13 0.62
TA02 15 15 1244 6.35 10.49 1.64 36.47 2.73 2.83 2.73 0.70
TA18 20 15 1396* 12.60 15.25 1.32 57.82 3.65 4.64 5.73 0.97
TA26 20 20 1645* 9.36 13.14 1.34 93.66 3.10 10.64 3.28 1.58
TA32 30 15 1795* 14.20 17.84 1.30 116.93 3.12 18.36 6.85 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 forma-
ció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 previa-
mente 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 pro-
puestas 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 refe-
rencia 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 tiem-
po 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
Pk
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 otor-
gado a la función objetivo fi (x). Es aconsejable normalizar las funciones obje-
tivos 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 6=
l, x ∈ S.
• Trabajar con un conjunto de soluciones óptimas (denominadas Pareto ópti-
mas), tal como Evolutionary Multiobjective Optimization [23], que parte de una
población inicial de individuos-soluciones e iterativamente crea nuevas pobla-
ciones 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 modifica-


ciones 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 ocurren-


cia de errores se ve incrementada a medida que transcurre el tiempo de vida del
mismo. Para ralentizar el deterioro, es conveniente realizar tareas de mantenimien-
to 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 al-
gú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 Tech-
nology 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 knowled-
ge 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 Constraint-
Based Local Search’, Iberamia 2008 Workshop on Planning, Scheduling and Con-
straint Satisfaction, 7–18, (2008).
[10] J.C. Beck and M.S. Fox ‘A generic framework for constraint-directed search and sche-
duling’, 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 automa-
tisé: 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 plan-
ning.’, 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 pro-
blem’, In TIME, (1996).

[20] Y. Chen, C. Hsu and B. Wah ‘Temporal planning using subgoal partitioning and res-
olution 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 Com-
puter 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 Intelli-
gence, 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 Main-
tenance 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 orde-
ring 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 Plan-
ning 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 plan-
ning 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 in-
form 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 pro-
blems.’, 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 Confe-
rence 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, Eng-
land, 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 pro-
blems 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 pro-
blems’, 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 Confe-
rence 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 sequen-
cing 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 inter-
vals 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 re-
cycling 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 Pro-
duction 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’, Inteligen-
cia 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 Interna-
tional 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 Mechani-
cal 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 Re-
search, 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 se-
quences’, Proceedings of 6th IEEE International Conference on Emerging Technolo-
gies 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 Procee-


dings 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’, Pro-


ceedings 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 pro-
blem’, 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 Reaso-
ning, 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’, Ar-
tificial Intelligence, 21, 117–133, (1983).

[91] M. Puterman, ‘Markov Decision Processes: Discrete Stochastic Dynamic Program-


ming’, Wiley, (1994).
86 BIBLIOGRAFÍA

[92] D. Sabin and E.C. Freuder, ‘Contradicting convectional wisdom in constraint satis-
faction’, 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 fore-
casting’, 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 schedu-
ling’, 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 tem-


poral 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 Pro-
blem’, ORSA Journal on Computing, 16 (2), 108–117, (1994).

[104] Y. Tang, M.C. Zhou, and R.J. Caudill ‘An integrated approach to disassembly plan-
ning and demanufacturing operation’, Proceedings of 2000 IEEE International Sym-
posium 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’, IN-
FORMS 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 Reaso-
ning’, 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 Intelli-


gence, 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 Transac-


tions on Automatic Control, 8, 59–60, (1963).
[120] G. Zülch, E.F. Schiller and R. Müller ‘A disassembly information system’, Procee-
dings of 4th CIRP International Seminar on Life Cycle Engineering, 400–412, (1997).
[121] M. Zweben and M. Fox, ‘Intelligent Scheduling’, Morgan Kaufmann, (1994).

Vous aimerez peut-être aussi