Académique Documents
Professionnel Documents
Culture Documents
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
4. Conclusiones 79
4.1. Conclusiones obtenidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Índice de figuras
III
IV ÍNDICE DE FIGURAS
Índice de cuadros
V
VI ÍNDICE DE CUADROS
Agradecimientos
VII
VIII ÍNDICE DE CUADROS
Abstract
1
2 ÍNDICE DE CUADROS
Capítulo 1
Introducción
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.
3
4 CAPÍTULO 1. INTRODUCCIÓN
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.
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
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:
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
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:
{r,v,a} {r,v,a}
x y
y
x
z w
z w
{r,v,a} {r,v,a}
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.
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.
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:
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:
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),
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].
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.
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.
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.
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
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.
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:
a1 ≤ xi − xj ≤ b1 ∨ . . . ∨ an ≤ xi − xj ≤ bn
a1 ≤ x1 − y1 ≤ b1 ∨ . . . ∨ an ≤ xn − yn ≤ bn
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.
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.
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:
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.
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.
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
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.
stij − strs ≥ prs or strs − stij ≥ pij for all (i, k), (r, s) ∈ Ops | µij = µrs
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.
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. 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.
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.
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.
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.
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.
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:
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].
cada posible acción en cada paso. Indica la presencia o ausencia de dicha acción en
ese paso.
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.
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.
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:
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 técnicas de aproximación que expandan sólo las porciones del espacio de
estados que posean una mayor probabilidad de ser útiles.
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.
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
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.
ls
ti deocurenciadefao
Rao
Diagnosis
Plan sustitución/
reparación
Desconexión de los
componentes
defectuosos
Sustitución/reparación
de los componentes
defectuosos
Recomposición del
sistema
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).
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:
ABCDE (1)
T1 T2
ABCD (2)
T3
ACD (3)
T4 T5
T6 T7 T8
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
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.
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.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.
ABCDE
T1 T2
ABCD
T3
ACD
T4 T5
AC AD BE
T6 T7 T8
A B C D E
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.
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.
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.
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.
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
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.
debido al uso de los recursos compartidos por las tareas (restricción de tipo 5, que
será comentada más adelante).
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
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
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:
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
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:
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 ) ≥
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.
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.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.
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.
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 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 }.
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
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
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 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
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:
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
op2k op2l op1i op1j
op2k op2l
(1a) (1b)
(2a) (2b)
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:
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:
...
S ... PJ(v) ... PM 2 (v) ... PM(v) ... v ...
...
S ... PM2 (v) ... PJ(v) ... PM(v) ... 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:
S' ... v ... SM(w) ... SM2(w) ... SM ...(w) ... w ...
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
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.
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 ))
Conclusiones
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
• 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.
[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).
[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).
[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).
[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).
[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).
[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).
[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).
[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).
[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).