Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Este artículo se publicó por primera vez en el Boletín Interno Tecnológico (Bit) nº 6 de Marzo de
1995 de la empresa Eritel, actualmente Indra.
1
• Las restricciones de obligado cumplimiento, no relajables, son las que definen el espacio de las
soluciones admisibles. Ejemplos de estas restricciones son: cumplimiento de la normativa de
convenios laborales; máquinas disponibles; tiempo mínimo de operaciones; intervalo de seguridad
entre operaciones; tiempos de parada para mantenimiento preventivo; disponibilidad de materia
prima; orden de operaciones; etc.
• Las restricciones aconsejables o preferencias, relajables, son las que caracterizan la calidad de las
decisiones de planificación que adoptemos. Estas restricciones, como por ejemplo: cumplimiento
de las fechas de entrega, frecuencia de cambio de herramientas, etc., inducen a la adopción de
prioridades entre servicios u órdenes de fabricación, definición de rutas de transporte o de
producción alternativas, uso de recursos de distinto coste, etc.
De esta forma, mientras que las restricciones no relajables definían el espacio de las soluciones
admisibles, las preferencias definen el espacio de la optimización de la solución. Es decir, una vez
asegurado el cumplimiento de las restricciones obligatorias, y si se dispone de más de una solución,
tendremos que elegir cuáles de las soluciones disponibles se ajusta más a los objetivos del sistema.
Puesto que estas restricciones normalmente entran en competencia unas con otras, siendo imposible
satisfacerlas todas al mismo tiempo, el problema de la planificación también consiste en decidir qué
preferencias hay que cumplir y cuáles no.
La realización de las funciones de planificación (y diseño) está reservada en las organizaciones a
personal con una amplia experiencia, dedicado habitualmente casi por entero a estas tareas, dada su
complejidad e importancia. Se trata habitualmente de jefes de operaciones, responsables de logística, o
jefes de servicio o de planta. Su medio de trabajo habitual -no mecanizado- es una gran planilla en la
que van situando los distintos servicios, recursos -materiales y humanos-, distribuyéndolos en el
tiempo y optimizando su uso.
La complejidad de la tarea obliga a que se apoyen habitualmente en planes anteriores y que sólo se
lleven a cabo pequeñas modificaciones para adecuarlos a las necesidades diarias. Los sistemas clásicos
de programación matemática resultaban, en general, demasiado pesados e ineficientes para estas
tareas, sobre todo para hacer frente a las incidencias del día a día, y sólo ahora se dispone de técnicas
eficaces.
Aunque resulta fácil identificar un problema como susceptible de ser tratado desde el punto de vista de
resolución de restricciones, no es posible disponer de una solución generalmente aplicable a todos
ellos. Incluso dentro de cada categoría de problemas de planificación podemos encontrar grandes
diferencias. Por ejemplo, en un caso la planificación de una planta de fabricación puede requerir que
sólo las máquinas sean consideradas como recursos, mientras que en otro podemos encontrarnos con
que debemos tener en cuenta, además, la mano de obra. El número de actividades a planificar puede
oscilar de unas decenas a cientos. En algunos casos, el tiempo de espera a la respuesta no es relevante,
mientras que en otros, se deberán tener en cuenta nuevas incidencias que puedan forzar una
replanificación y en tiempo casi real. Esta variabilidad pone de relieve el papel central de una
estrategia de análisis, sólo a partir de la cual cabe pensar en herramientas especializadas de
implementación.
Todas las tareas de configuración pueden ser analizadas provechosamente en términos de problemas
de resolución de restricciones (Constraint Solving Problems -CSP-). Típicamente, el resultado de
dicho análisis conduce a la identificación de tres conjuntos de elementos: variables, valores y
restricciones. El objetivo consiste en encontrar todas las asignaciones de valores a las variables que
satisfacen todas las restricciones.
Genéricamente, para analizar un problema en términos de restricciones tenemos que identificar:
2
a) Los parámetros o variables que forman la solución del problema. Por ejemplo:
• Vehículos
• Conductores
• ...
b) El tipo y rango de valores que cada variable puede tomar. Por ejemplo:
• días_laborable={lunes,..., viernes}
• horario_recepción = (13h, 16h)
• x,y,z enteros
• x < 10
c) Las condiciones adicionales que una variable debe cumplir respecto a otra. Por ejemplo:
• color_país1 <>color_país2
• y<z
Las restricciones pueden expresarse bajo una amplia variedad de formas: una relación sobre un
producto cartesiano de conjuntos, un predicado booleano, una relación borrosa, una ecuación
algebraica, una desigualdad, una cláusula de Horn, etc. De ello se sigue que, como mínimo un sistema
de resolución de restricciones debería llevar a cabo razonamientos de dos tipos:
• Cualitativo, no numérico o simbólico, en el que el rango de las variables cualitativas normalmente
es un conjunto finito de valores, lo que permite el uso de la búsqueda exhaustiva, si falla la
propagación de restricciones.
• Cuantitativo o numérico, en el que normalmente el rango es un conjunto infinito de valores. En
este caso, la estructura interna de los objetos que se manejan permite utilizar una serie de
propiedades específicas para expresar las restricciones (positivo/negativo, par/impar, límite
superior/inferior, ...).
Teniendo en cuenta los formalismos requeridos para expresar las restricciones, podemos identificar ya
dos categorías de problemas de resolución de restricciones:
• Problemas de satisfacción booleana de restricciones (problema CSP booleanos): las restricciones
booleanas limitan el conjunto de los valores permitidos a subconjuntos especificados de variables.
Para el tratamiento de estos problemas se aplican técnicas genéricas de búsqueda, basadas en
algoritmos de backtracking o de análisis de consistencia. De hecho, existe un fuerte paralelismo
entre las técnicas CSP utilizadas en este tipo de problemas y las técnicas de mantenimiento de la
consistencia, como el algoritmo A TMS.
• Problemas de optimización númérica de restricciones: se plantean cuando tratamos de diseñar un
sistema que maximice soluciones que satisfacen un gran número de restricciones locales. En este
caso se aplican algoritmos generalizados de análisis de la consistencia que, en ocasiones, se
combinan con estrategias heurísticas o con técnicas tradicionales de programación entera.
Dada la naturaleza declarativa de las restricciones, no es de extrañar que los primeros sistemas de
resolución de restricciones utilizaran lenguajes declarativos como Prolog. De hecho, Prolog puede ser
considerado como un sistema de resolución de restricciones, pero con una estrategia de resolución
poco eficiente: búsqueda exhaustiva depth-first por backtracking cronológico, que utiliza en cada paso
los mecanismos lógicos de unificación y resolución. No obstante, la ineficiencia de Prolog ha llevado
a buscar nuevos algoritmos que permitieran abordar estos problemas de forma más eficiente.
3
Normalmente, el proceso de resolución de problemas basado en tratamiento de restricciones se ha
representado mediante redes de propagación de valores. La idea de propagación de valores es
antigua, y se ha utilizado profusamente en aplicaciones tales como las hojas de cálculo. En una red de
propagación de valores hay objetos de dos tipos:
• Nodos, que denotan variables, etiquetados con el rango de valores que cada variable puede
tomar;
• Arcos, que denotan restricciones. Estas restricciones expresan las relaciones que deben darse
entre los valores de las variables representadas en los nodos para que la solución sea
aceptable.
En las redes de propagación clásicas, dados determinados valores para algunos nodos de la red, y
restricciones formuladas como ecuaciones, se calculan los valores para los demás nodos de la red,
propagando dichos valores de acuerdo con lo prescrito por las ecuaciones correspondientes. Así, si
tenemos que:
• x =15
• y =25
• z=x*y
• w=z-y
x y
z
w
4
podemos fácilmente obtener los valores para z y w.
No obstante, los problemas interesantes aparecen cuando tenemos un sistema de inecuaciones. El
papel de los procedimientos de propagación de restricciones en red consiste en podar el espacio de
búsqueda de forma que, al final del proceso, cada nodo de la red tenga en su etiqueta sólo los valores
que son admisibles en una solución, de acuerdo con las restricciones expresadas. Podemos considerar
que la tarea que lleva a cabo dicho proceso es la de eliminación de inconsistencias mediante la
progresiva reducción del dominio de cada variable. Se distinguen básicamente dos niveles de
inconsistencia en las redes:
• Inconsistencia de nodo. Si existe una restricción de nodo, que impone un valor dado para
el nodo, o acota su valor a un rango dado, eliminamos la inconsistencia del nodo quitando
de su etiqueta aquellos valores distintos al de la restricción. Así, si suponemos que x ha de
ser un entero, y tenemos la restricción de nodo x >10, modificaremos la etiqueta del nodo
x de forma que el extremo inferior de su rango de valores sea 11.
• Inconsistencia de arco. Las restricciones que etiquetan cada arco entre dos nodos
(diádicas) especifican las relaciones que han de darse entre los valores de ambas variables.
Tendremos inconsistencias de arco en una red si hay valores en alguno de los nodos del
arco que son incompatibles con valores en el otro nodo. Supongamos que tenemos un
problema según el cual las dos variables x e y tienen un rango de valores de 1 a 10, Y la
etiqueta del arco especifica la siguiente restricción:
• y>x+2
Los algoritmos que facilitan la resolución de restricciones, construidos todos ellos sobre algoritmos
básicos de movimiento en grafos, son numerosos y siguen perfeccionándose continuamente. Lo más
importante es ser consciente de que esta tecnología, que aquí sólo se ha presentado en sus
5
fundamentos más básicos, nos permite abordar con garantías la resolución de problemas complejos,
modelizados de una forma sencilla y difícilmente tratables por otros medios.
Herramientas
La tecnología de resolución de restricciones está siendo utilizada ya desde hace algunos años para el
tratamiento de problemas de complejidad media/alta. Los primeros dominios de aplicación fueron los
sistemas gráficos y las actividades de simulación (Sketchpad en 1965 y ThingLab en 1979). Desde
entonces se han desarrollado un gran número de sistemas, y hoy en día se cuenta ya con herramientas
comerciales que facilitan el uso de esta tecnología, sin tener que implementar algoritmos específicos.
Podemos identificar dos grupos de herramientas de estas características:
• Programación lógica por restricciones (sistemas CLP): Se trata de sistemas Prolog que
aumentan la eficiencia de sus algoritmos tradicionales de unificación y resolución mediante
algoritmos de tratamiento de restricciones. Su ventaja específica es que facilitan la adopción de un
enfoque declarativo puro -y más adecuado para la implementación del resultado de un análisis
orientado a la resolución de restricciones- sin incurrir en las ineficiencias tradicionales de la
programación lógica. Se pueden mencionar dos herramientas: Prolog 11I (Prologia) y CHIP
(Cosytec).
En tanto que Prolog III maneja restricciones lineales en dominios continuos, Solver, Charme y CHIP
se especializan en el tratamiento de dominios finitos, y disponen de los mecanismos de control de la
consistencia de arco.
Bibliografía