Sei sulla pagina 1di 82

CLP

Programacin Lgica con Restricciones


Introduccin

Limitaciones de la programacin lgica

Propiedad esencial de la programacin lgica:


LGICA + CONTROL = QU + CMO

- QU:

Lgica de primer orden - CMO: Resolucin + Bsqueda en profundidad de izquierda a derecha


2

Limitaciones de la programacin lgica

Los objetos son estructuras sin interpretacin semntica. La igualdad entre objetos es la identidad sintctica. Control basado en una regla simple y uniforme.

Propuesta de la programacin lgica con restricciones

Utilizacin explcita de las propiedades semnticas de los objetos.


La igualdad entre objetos se transforma de sintctica en semntica. Se incorporan tcnicas de consistencia para superar las limitaciones de control.
4

Propuesta de la programacin lgica con restricciones

Sustitucin de unificacin (sintctico) por satisfacibilidad (semntico). El esquema CLP(X) sustituye cada X por R, Z, Q, etc. Aplicacin de tcnicas de consistencia. El rbol de bsqueda se poda integrando la evaluacin de restricciones y la bsqueda indeterminista.
5

Ejemplo

Trabajamos en N con el programa


suma(X,Y,Z):- X+Y =:= Z

Su comportamiento debera ser:


?- suma(2,3,5) ?- suma(2,3,Z) ?- suma(X,3,5) ?- suma(X,Y,5)

Ejemplo

Varias clusulas preguntando si las variables estn o no instanciadas


Usar la primitiva is

Mtodo generar y comprobar

Ejemplo

Hechos:

v(3). v(2). v(1).

Reglas:

mayor(X,Y) :- X>Y. Triple(X,Y,Z) :- v(X), v(Y), v(Z), mayor(X,Y), mayor(Y,Z).

Objetivo:

?- triple(A,B,C)

Ejemplo

?-triple(A, B, C) | A := X, B := Y, C := Z ?- v(X), v(Y), v(Z), mayor(X, Y), mayor(Y, Z). | A := 3, B := Y, C := Z ?-v(Y), v(Z), mayor(3, Y), mayor(Y, Z). | A := 3, B := 2, C := Z ?- v(Z), mayor(3, 2), mayor(2, Z). | A := 3, B := 2, C := 1 ?- mayor(3, 2), mayor(2, 1). | A := 3, B := 2, C := 1 ?- mayor(2, 1). | A := 3, B := 2, C := 1 ?- EXITO

Ejemplo

PROLOG puede verse como un lenguaje de programacin lgica con restricciones.


Tripleinv(X,Y,Z):- mayor(X,Y), mayor(Y,Z), v(X), v(Y), v(Z).

Expresa lo mismo que triple Inverna las variables hasta conseguir valores buenos con los que avanzar.

10

Estructuras y programas con restricciones


Qu necesitamos conocer? Restricciones: Predicados especiales cuyos argumentos son trminos sobre el dominio Los predicados usuales Un programa de Horn Objetivos con restricciones

11

Estructuras y programas con restricciones


Resolutores de restricciones

Definicin explcita de sistema de restricciones en forma resuelta, que tiene que ser satisfacible en la teora.

Un algoritmo resolutor de restricciones


12

Estructuras y programas con restricciones


Caractersticas deseables para un resolutor
Debe ser incremental Debe ser eficiente Debe ser correcto Debe ser completo

13

Ventajas de la Programacin Lgica con Restricciones

Mayor expresividad en el tratamiento de problemas Diseo mas uniforme y mayor efectividad Aumento de la eficiencia
14

Inconvenientes de la Programacin Lgica con Restricciones

Encontrar tcnicas especficas para el tratamiento de los objetos Estudiar las heursticas y usar la ms adecuada Los resolutores completos son ineficientes Necesario aadir restricciones redundantes para ayudar a los resolutores incompletos

15

Algunas instancias interesantes del esquema CLP


Descripcin y comparativas

16

Clasificacin

Distinguiremos los lenguajes haciendo uso de dos categoras principales: Lenguajes de caja negra o de caja transparente. Por lenguaje de caja transparente entendemos, aquellos lenguajes que proporcionan restricciones muy simples y primitivas, cuyo esquema de propagacin puede ser formalmente especificado. Estas restricciones pueden ser usadas para construir restricciones de alto nivel especializadas, adecuadas para cada aplicacin. Los lenguajes de caja negra, sin embargo, son aquellos que proporcionan un amplio rango de restricciones de alto nivel cuya implementacin queda oculta al usuario. Estas restricciones llevan a cabo tareas especficas de forma muy eficiente. En estos lenguajes, es difcil para un usuario aadir nuevas restricciones, ya que tienen que ser definidas a bajo nivel, requiriendo un detallado conocimiento de la implementacin.
17

Lenguajes de caja transparente


Lenguajes

con ndices:

Un ndice es una regla reactiva funcional de la forma X en R donde X es una variable de dominio. R es una expresin de rango de la forma f1...f2 cuyos trminos f1 y f2 son rangos singulares, parmetros, enteros, combinacin de trminos usando operadores aritmticos en rangos por ndices. Las formas permitidas para un rango por ndices depende del lenguaje pero, normalmente, es una de las siguientes:

Min(Y): representa el mnimo valor de la variable de dominio Y. Max(Y): representa el mximo valor de la variable de dominio Y. Val(Y): representa en valor de Y tan pronto como es establecido. Dom(Y): representa el dominio actual de Y.

18

Lenguajes de caja transparente (Lenguajes con ndices)

SICStus:

Permite dos modos: el primero, "iso mode" cumple estrictamente la norma ISO/IEC 13211-1 (1995) que estandariza el lenguaje Prolog a nivel internacional. En el segundo modo de trabajo, "sicstus mode", se aaden extensiones que dotan a este intrprete de mayor potencia. Tiene un entorno de desarrollo con facilidades para hacer interfaces grficas.

clp(FD):
Bsicamentre trata solo con restricciones del tipo X en R (R no solo tiene que ser de tipo {1..10} sino que puede ser indexado. Pueden crearse restricciones de alto nivel (restricciones de usuario). Cada restriccin especifica como una variable restringida es actualizada cuando el dominio de otra variable cambia. IF/Prolog: Otro sistema que cumple la ISO para Prolog y que tiene interfaces con Java, C/C++, y bases de datos relacionales.
19

Lenguajes de caja transparente


Lenguajes

con reglas de manejo de restricciones:

Para CHR (constraint handling rules) se usa una librera que est construida sobre ECLiPSe, aadiendo las reglas para manejo de restricciones. Una regla de manejo de restricciones puede definir unas simplificaciones y propagaciones sobre restricciones definidas por el usuario. Una regla de simplificacin sustituye restricciones por otras ms simples mientras conserven la equivalencia lgica. Por ejemplo: X > Y; Y > X <==> false Una regla de propagacin aade nuevas restricciones que son lgicamente redundantes, pero puede provocar futuras simplificaciones. Por ejemplo: X > Y; Y > Z ==> X > Z Aplicar repetidamente reglas de manejo de restricciones incrementar la simplificacin y, posiblemente, resolver las restricciones definidas por el usuario.

20

Lenguajes de caja negra


Oz:

Basado en la programacin funcional de orden superior y la programacin lgica con restricciones. Combina funciones con relaciones. Oz proporciona algoritmos para decidir la satisfacibilidad de restricciones bsicas con la siguiente forma: X = n; X = Y o X :: D donde X e Y son variables, n es un entero no negativo y D es un dominio finito. Las restricciones bsicas residen en el almacn de restricciones. Las restricciones no bsicas, como X + Y = Z, no estn contenidas en el almacn pero son impuestas por propagadores. Un propagador Oz es un agente que lee en el almacn de restricciones e intenta reducir los dominios fijados ah aadiendo restricciones bsicas al almacn. Por ejemplo, suponiendo que hay un almacn de restricciones que contiene las variables X; Y con dominio {1,...,10}. El propagador para X + Y = 5 reduce el dominio de X e Y a {1,...,4}. El propagador X + Y = 5 restringe las variables X e Y. Aadiendo la restriccin Y = 1 reduce el dominio de Y a 1 y el dominio de X a 4. Proporciona objetos y concurrencia. Pertenece a la familia de los CCPLs (Concurrent Constraint Programming Languages) Implementado en mOzArt.
21

Lenguajes de caja negra


ECLiPSe:

Incluye las restricciones en dominio finito tradicionales. Permite adems la escritura de extensiones como restricciones definidas por el usuario o resolutores completamente nuevos como CHR. Estas extensiones estn basadas en un mecanismo de suspensin y reanimacin de objetivos proporcionado por ECLiPSe. Para hacer una extensin, el usuario necesita un buen conocimiento del funcionamiento interno del sistema. Adems de enteros, la librera de dominios finitos permite elementos atmicos (pej. atoms, strings, floats) y elementos compuestos bsicos (pej. f(a,b)).
22

Lenguajes de caja negra


Ilog

SOLVER:

Ilog SOLVER es una librera de C++ para programacin con restricciones; por lo que los datos y las estructuras de control deben ser definidas en C++. En Ilog SOLVER, una restriccin puede ser un objeto o una expresin booleana con valores falso (IlcFalse) o true (IlcTrue). El valor depende de la satisfacibilidad de la restriccin. Estas expresiones pueden combinarse con operadores lgicos (and, or y not) para crear restricciones ms complejas. Cuando una restriccin es postergada (usando la funcin IlcPost), la restriccin es usada inmediatamente para reducir los dominios de las variables restringidas que involucra. Est desarrollado pensando en la eficiencia.

23

Lenguajes de caja negra


B-Prolog:

Como con ECLiPSe, su sistema proporciona un conjunto de predicados de dominio finito como los aritmticos o las restricciones booleanas y un conjunto de primitivas para procesar las variables de dominio. Este conjunto de predicados de restricciones contenidos es menor para el B-Prolog que el que a su vez provee ECLiPSe.

Provee un interfaz bidireccional con C y Java.


24

Comparativa

Vamos a presentar una comparativa del rendimiento de los 8 lenguajes de programacin lgica con restricciones mencionados. La comparativa ha sido realizada usando algoritmos para cada uno de los lenguajes para resolver los siguientes problemas (bastante conocidos).

SRQ (Self Referential Quizzes) sendmore: Es un problema aritmtico con 8 variables entre 0...9, con un una ecuacin lineal y 36 desigualdades. Alpha: Un problema de cifrado que involucra 26 variables entre 1..26, con 20 ecuaciones y 325 desigualdades. Ecuacin 10: Resolucin de un sistema de 10 ecuaciones lineales con 7 variables entre 0..10. Ecuacin 20: Resolucin de un sistema de 10 ecuaciones lineales con 7 variables entre 0..10. N Reinas: Consiste en colocar N reinas de ajedrez en un tablero NxN de forma que ninguna de ellas amenace a cualquiera de las dems. Secuencias mgicas (N): calcula secuencias mgicas de N nmeros.
25

Comparativa

Los programas sendmore, alpha, ecuacin 10 y ecuacin 20 ponen a prueba la eficiencia de los sistemas para resolver problemas de ecuaciones lineales. Como los problemas de las N reinas y las secuencias mgicas son escalables, nos sern tiles para probar como trabaja cada sistema con instancias ms grandes del mismo problema. El nmero de variables y el nmero de valores para cada una de ellas crece linealmente con N (tomando un valor N, por lo menos N variables de dominio finito deben ser declaradas con un rango de dominio entre 0 o 1 y N).
26

SRQ (cuestionario autoreferenciado)


1) 2) 3) 4) 5) 6)

7) 8) 9) 10)

La primera pregunta cuya respuesta es A es: (A) 4 (B) 3 (C) 2 (D) 1 (E) ninguna de las respuestas es cierta Las nicas dos preguntas consecutivas con igual respuesta son: (A) 3 y 4 (B) 4 y 5 (C) 5 y 6 (D) 6 y 7 (E) 7 y 8 La prxima pregunta con respuesta A es: (A) 4 (B) 5 (C) 6 (D) 7 (E) 8 La primera pregunta par con respuesta B es: (A) 2 (B) 4 (C) 6 (D) 8 (E) 10 La nica pregunta impar con respuesta C es: (A) 1 (B) 3 (C) 5 (D) 7 (E) 9 Una pregunta con respuesta D: (A) viene antes de esta, pero no despus. (B) viene tras esta, pero no antes. (C) viene antes y despus de esta. (D) no hay ninguna. (E) ninguna de las respuestas es cierta. La ltima pregunta con respuesta E es: (A) 5 (B) 6 (C) 7 (D) 8 (E) 9 El nmero de preguntas con respuesta consonante es: (A) 7 (B) 6 (C) 5 (D) 4 (E) 3 El nmero de preguntas con respuesta vocal es: (A) 0 (B) 1 (C) 2 (D) 3 (E) 4 La respuesta a esta pregunta es: (A) A (B) B (C) C (D) D (E) E 27

Implementaciones del SRQ:

SICStus clp(FD) IF/Prolog CHR Oz ECLiPSe Ilog SOLVER B-Prolog


28

Expresividad

Oz, IF/Prolog y SICStus:

Son los que dan una solucin ms clara:

Utilizan propagadores con notacin infija. Admite encadenamiento de propagadores. Los propagadores trabajan sobre variables booleanas o restricciones. Oz y SICStus tiene operadores menos intuitivos que IF/Prolog. (Pej: AND IF/Prolog ( /\ ), SICStus( #/\ ) y Oz ( * ) NOT IF/Prolog ( ~ ), SICStus( #\ ) y Oz ( ~ ) ) Para variables no booleanas, habr que usar meta-resticciones combinadas con restricciones reificadas.

Ilog y ECLiPSe:

Son bastante claros pero menos que los anteriores:


Tambin usan propagadores con notacin infija y concatenados. Los propagadores no pueden trabajar directamente sobre las variables booleanas, sino que ha de ser con restricciones sobre estas variables. (Pej: IF/Prolog ( A1 <=> A2 /\ (~A3) /\ (~A4) ) ECLiPSe ( (A1#=1) #<=> (A2#=1) #/\ (A3#=0) #/\ (A4#=0) ) )
29

Expresividad

clp(FD) y B-Prolog:

Son muy poco claros en comparacin con todos los vistos antes:

Los propagadores usan notacin infija. Tampoco admite en encadenamiento de propagadores. Aade muchas variables intermedias. (Pej: IF/Prolog ( A1 <=> A2 /\ (~A3) /\ (~A4) ) clp(FD) ( not (A3, A3n) not (A4, A4n) and(A2,A3n,A23) and(A23,A4n,A1) ) Clp(FD) adems, no puede considerarse como un lenguaje plenamente declarativo, ya que algunas funciones hen de ser definidas en C. (Pej: IF/Prolog Bef <=>(Q1?=4)\/(Q2?=4)\/(Q3?=4)\/(Q4?=4)\/(Q5?=4) clp(FD) 'x=a <=> b'(Q1,4,Q14),/* x=a <=> b est definida usando C */ 'x=a <=> b'(Q2,4,Q24), 'x=a <=> b'(Q3,4,Q34), 'x=a <=> b'(Q4,4,Q44), 'x=a <=> b'(Q5,4,Q54), or6(Q14,Q24,Q34,Q44,Q54,BeforeQ4),

30

Rendimiento

En las prximas tablas se compara el rendimiento en tiempo de ejecucin de los 8 lenguajes que estamos estudiando. Para la comparacin se utilizan los cdigos de los problemas citados anteriormente.

Estos cdigos siguen los mismos algoritmos para todos los lenguajes Han sido aceptados por los propios miembros de las empresas desarrolladoras de los lenguajes. Son problemas simples (quiz debera haberse usado en la comparativa algn problema de ms entidad).

La primera tabla mostrar medidas de tiempo, mientras que las otras dos, estn normalizadas con el resultado de ECLiPSe (pej: 2 tarda la mitad de tiempo que ECLiPSe )
31

bsqueda de la primera solucin (Usando first-fail labeling)

32

Tabla normalizada para la bsqueda de la primera solucin (Usando first-fail labeling)


Benchmarks SRQ (10 vars) SRQ (50 vars) 64 reinas 100 reinas sendmore alpha equation 10 equation 20 magic seq. (10) magic seq. (50) magic seq. (100) magic seq. (130) magic seq. (150) magic seq. (200) Ilog 15.0 11.5 98.3 24.1 3.3 12.6 4.2 4.4 16.7 74.9 clp(FD) 18.0 11.5 4.0 Error1 1.7 5.4 3.1 2.9 8.3 7.6 Oz 3.1 3.4 2.6 4.4 1.7 3.4 1.8 2.3 3.3 4.4 3.1 2.5 -1.1 CHR SICStus IF/Prolog ECLiPSe -8.4 -6.7 3.3 3.0 1.6 1.0 2.0 1.8 1.2 1.4 1.5 2.3 3.6 4.3 1.6 3.2 10.0 6.0 2.7 1.1 2.0 -67.4 5.5 7.0 1.5 2.2 2.4 2.7 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Error3 Error3 BProlog 18.0 4.1 54.1 -21.6 3.3 7.0 2.3 1.3 1.2 1.56 Error4 Error4 Error4 Error4

177.5 11.5 216.0 Error1 87.1 Error1

195.0 Error1

Error2} -

33

Tabla normalizada para la bsqueda de todas las soluciones (Usando first-fail labeling)
Benchmarks 8 reinas 9 reinas 10 reinas 11 reinas 12 reinas 6.4 6.6 6.4 7.0 7.1 Ilog clp(FD) Oz SICStus IF/Prolog ECLiPSe 5.9 6.3 6.5 6.9 7.0 5.7 6.4 6.8 Error1 Error1 1.0 1.4 1.5 1.1 1.5 1.1 1.5 1.1 1.0 1.5 5.7 2.6 5.7 3.9 5.1 4.7 1.2 1.4 1.1 1.5 4.5 4.1 4.2 4.2 4.2 3.0 3.6 3.7 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Error3 Error3 BProlog 10.9 11.0 10.7 11.3 11.6 -1.2 -1.8 Error4 Error4 Error4
34

magic seq. (30) 31.6 magic seq. (75) 43.0 magic seq. (100) magic seq. (130) magic seq. (150) 46.7 11.1 11.5

Robustez
Nmero de variables de dominio finito manejadas en el problema de las secuencias mgicas (con el recolector de basura activo).

Ilog

clp(FD)

Oz

ECLiPSe

SICStus

IF/Prolog B-Prolog 82-83

1624-1625 111-112 194-200 230-???

1000-1200 300-600

35

Resultados analizados

Ilog SOLVER. En general, Ilog fue, con mucho, el sistema ms rpido. Ilog fue adems extremadamente robusto, resolviendo el problema de las secuencias mgicas con 1600 variables. clp(FD). Dio buenos resultados, pero no fue tan rpido como Ilog. Desafortunadamente, gener mensajes de error cuando el tamao del problema fue incrementando. Esto indica que no escala bien con respecto al nmero de variables de dominio finito. Podemos resolver grandes problemas cambiando el tamao de ciertas variables de entorno, pero el rendimiento ser realmente pobre. Oz. Oz fue ms rpido que ECLiPSe encontrando tanto la primera como todas las soluciones. Obteniendo todas las soluciones fue tan rpido como clp(FD). Adems Oz fue ms robusto que clp(FD) y solo fall al obtener la solucin del problema de la secuencia mgica (200).
36

Resultados analizados

SICSTUS y IF/Prolog. Tuvieron resultados muy parecidos en rendimiento y fueron dos o tres veces ms rpidos que ECLiPSe. Aunque IF/Prolog trabaj particularmente mal con el benchmark Alpha, obsrvese que trabaja muy bien para la bsqueda de la primera solucin (algunas veces mejor que clp(FD) e Ilog). SICStus e IF/Prolog fueron ms robustos que clp(FD), Oz y ECLiPSe. SICStus ha tenido la mayor robustez porque ha resuelto el problema de las secuencias mgicas con 1000 variables de dominio finito cuando IF/Prolog fall al resolver el mismo problema con 600 variables.
37

Resultados analizados

B-Prolog. Este sistema trabaj bien con problemas que involucran un pequeo nmero de variables de dominio finito. En este caso, la eficiencia es comparable con la de clp(FD). De todos modos, cuanto mayor es en nmero de variables, peor es el rendimiento comparado con otros sistemas. Por ejemplo, las 100 reinas para la primera solucin dio un rendimiento particularmente malo, mostrando que el sistema no escala bien. Esto es una consecuencia directa de que la versin de BProlog usada para el benchmark no tiene recolector de basura. ECLiPSe. Tiene los peores resultados (excepto, obviamente, para CHR). Para obtener su mejor resultado de rendimiento posible, ECLiPSe tena deshabilitada la recoleccin de basura. Con recoleccin de basura se pueden llegar a obtener resultados tres veces peores. CHR. Es el peor por dos razones bsicas. (1) est construido sobre ECLiPSe (2) no fue diseado, en principio, para la eficiencia; sino para definir resolutores adecuados de restricciones para problemas particulares en dominios especficos.
38

Documentos consultados

Constraints, 5, 275301 (2000) Kluwer Academic Publishers A Comparative Study of Eight Constraint Programming Languages Over the Boolean and Finite Domains ANTONIO J. FERNNDEZ y PATRICIA M. HILL

University of Leeds School of Computer Studies Research Report (Report 97.03) Finite Domain Solvers Compared Using Self Referential Quizzes ANTONIO J. FERNNDEZ y PATRICIA M. HILL
Constraints, 9, 5 34, (2004) Kluwer Academic Publishers On Benchmarking Constraint Logic Programming Platforms. Response to Fernandez and Hills A Comparative Study of Eight Constraint Programming Languages over the Boolean and Finite Domains MARK WALLACE, JOACHIM SCHIMPF, KISH SHEN y WARWICK HARVEY
39

Programacin con restricciones


Problemas de satisfaccin de restricciones

40

Problemas de satisfaccin de restricciones


Definicin Restricciones Resolucin de problemas

Modelar
Procesar

Reduccin de problemas: Consistencia Algoritmos de bsqueda

Heuristicas
41

Definicin: problemas de satisfaccin de restricciones

Llamamos problema de satisfaccion de restricciones (CSP: Constraint SatisfactionProblem) a un triple formado por:

Un conjunto de variables V = {X1,...,Xn}. Para cada variable de V un conjunto de posibles valores Di, que llamaremos dominio de Xi. Un conjunto de restricciones, normalmente binarias, Cij(Xi,Xj) que determinan los valores que las variables pueden tomar simultneamente.
42

Definicin: problemas de satisfaccin de restricciones

El objetivo es encontrar un valor para cada variable de manera que se satisfagan todas las restricciones del problema. Las estrategias de bsqueda de soluciones tratan de encontrar las tuplas de valores (v1,...,vn) de las variables X1,...,Xn que satisfacen las restricciones. Una restriccin entre varias variables determina el subconjunto del producto cartesiano.
43

Restricciones
Cada restriccin limita el conjunto de asignaciones para las variables implicadas Pueden darse de dos formas:

Explcita Implcita

(mediante tablas)

X1 > x2
44

Aridad de las restricciones

Restriccin unitaria: Tiene una sola variable afectada. La restriccin puede usarse para excluir un valores del dominio de definicin, por ejemplo, X > 5. Restriccin binaria: Tiene dos variables afectadas. Una restriccin binaria entre variables de dominios de tamao m y n, puede ser representada mediante una matriz de tamao m x n con valores: 1 si la restriccin se satisface para ese par de valores. 0 si la restriccin no se satisface para ese par de valores.
45

Resolucin del CSP


Modelar el problema como un problema de satisfaccin de restricciones ( mediante un conjunto de variables, dominios y restricciones) Procesar el problema de satisfaccin de restricciones resultante.

Tcnicas

de consistencia Algoritmos de bsqueda


46

Tcnicas de consistencia

Formas de mejorar la eficiencia de los algoritmos de bsqueda. Borran valores inconsistentes de las variables y ayudan a podar el espacio de bsqueda. Estas tcnicas de consistencia local se usan como etapas de preproceso donde se detectan y se eliminan las inconsistencias locales antes de empezar o durante la bsqueda con el fin de reducir el rbol de bsqueda.
47

Tcnicas de consistencia
Llamadas improductivas: asignacin parcial consistente pero que no puede llegar a ninguna solucin. Profundidad del rbol

Cuando

hay muchas variables es alta.

Orden de ramificacin
Cuando

las vbles pueden tomar muchos valores distintos.


48

Tcnicas de consistencia
Procedimiento De Consistencia CSP k-consistente (simplificado) Algoritmo De Bsqueda Solucin

CSP

49

Niveles de Consistencia Local

Consistencia de Nodo (1-consistencia)


Sobre

restricciones de aridad 1
X = {2,15} X = {2,7}

X7

Dominio original

Dominio nodoconsistente
50

Niveles de Consistencia Local

Consistencia de Arco (2-consistencia)


Sobre
X = {1,2,3}

restricciones de aridad 2
X = {1,2}

X<Y
2-consistencia Y = {1,2,3}

X<Y

Y = {2,3}

51

Algoritmos para resolver problemas de satisfaccin de restricciones

Algoritmo de genera y comprueba Algoritmo de backtracking simple Algoritmo de backtracking con chequeo previo
52

Algoritmo de genera y comprueba

Se asigna un valor del dominio permitido a cada una de las variables de la tupla que se va a evaluar, y despus se comprueba que forman una solucin, es decir, si verifican todas las restricciones. Si no las verifica entonces se desecha esa tupla y genera la siguiente. El proceso se repite hasta encontrar una solucin, o hasta que se hayan generado y comprobado todos los casos posibles. Problema: Este algoritmo evala cada vez las restricciones entre todas las variables.
53

Algoritmo de backtracking simple


Se asigna un valor del dominio permitido a la siguiente variable a evaluar, y se comprueba si forma parte de la solucin parcial Si no verifica las restricciones entonces se desecha ese valor y se toma el siguiente valor del dominio permitido para la variable.

54

Algoritmo de backtracking simple

Si se intentan todos los valores de la variable y ninguno forma parte de la solucin, entonces se pasa a eliminar el valor de la variable anterior evaluada y se toma el siguiente valor para esa variable. El proceso se repite hasta encontrar una solucin, o hasta que se hayan probado todos los casos posibles. Este algoritmo solo computa las restricciones entre la nueva variable a evaluar y las variables computadas previamente.
55

Algoritmo de backtracking con chequeo previo

Se asigna un valor de su dominio a la nueva variable a evaluar, y se comprueba no solo si forma parte de la solucin parcial sino que adems se mira si algn valor de una futura asignacin tiene conflicto con este valor y si es as se elimina temporalmente del dominio de esa futura variable. La ventaja de este mtodo es que si el dominio de una futura variable llega a ser vaco, esto significa que la solucin parcial es inconsistente, con lo cual se prueba con otro valor de la variable activa o se vuelve atrs y el dominio de las futuras variables restaurado.
56

Algoritmo de backtracking con chequeo previo


Con el backtracking simple no se habra detectado la inconsistencia hasta que no se hubieran evaluado todas las futuras variables. En el algoritmo de backtracking con chequeo previo las ramas de los rboles que van a dar inconsistencia son podadas con anterioridad.

57

Ordenacin de variables

El algoritmo de bsqueda en un rbol que satisface ciertas restricciones, requiere que las variables que van a ser consideradas estn ordenadas, puesto que hemos de tener claro en todo momento como realizar la vuelta atrs. El orden puede ser: Esttico: Ha de ser especificado al comienzo. Dinmico: La prxima variable a considerar depende del estado de la bsqueda.
58

Heursticas de bsqueda

principio de fail-first
primero

probemos valores que tengan un dominio pequeo Seguramente alguno de esos valores, que son pocos, deba formar parte de la solucin si la solucin parcial conduce a una rama muerta cuanto antes lo descubramos mejor

59

Heursticas de bsqueda

principio de fail-first
Podr

reducirse la media de la profundidad de las ramas de los rboles provocando fallos tempranamente. para las variables con dominios de igual tamao, elegimos primero las que aparecen en ms restricciones, pues fuerzan ms la solucin del problema.
60

Ordenacin de los valores

cmo seleccionar los valores a asignar a dichas variables.


Si

no hay conflictos lo ms sencillo es considerar el orden natural de los dominios y asignar desde el menor valor hasta el mayor. Tiene importancia si queremos una nica solucin. Para todas las soluciones o saber si tiene solucin nos es indiferente el orden.
61

Solucin ptima

Hay un tipo particular de problemas de satisfaccin de restricciones, que son aquellos que aaden a las tres componentes normales del problema P= (Z, D,C) una cuarta componente f que es una funcin de optimizacin, de forma que no slo buscamos una tupla que satisfaga el problema si no que adems debe hacerlo con coste mximo o mnimo, segn indique f. Normalmente, para lograr la mejor, se repite el proceso de evaluar el coste de una solucin y si el de la siguiente es mejor se toma sta como posible ptima hasta encontrar otra que pudiere ser mejor.
62

Programacin con restricciones.

Aplicacin a nmeros reales.

63

CLP (R)
Conceptos Bsicos: La estructura de R est compuesta por dos clases de objetos: -Trminos de los reales,TR: Nmeros reales y operaciones sobre estos {+,-,*,/} t E TR : { r e R | x e R | t1 + t2| t1 * t2| t1 t2| t1 / t2} e TR
-Trminos no interpretados utilizo UH (universo de UH ::= {X VAR | const | f( th1, th2,, thn)} Herbrand) th e

- t e Trminos ::= f(t1,.tn) para cada ti e {UH U TR}=T T es el conjunto de los trminos herbrand y los trminos reales.

64

CLP (R)
Restricciones:
-Restriccin Primitiva (r) : r es resoluble sii Existe sustitucin de variables por reales que satisfacen la restriccin. -Restriccin Aritmtica(r) : t1>=t2 , t1<t2, t1=t2,. -Restriccin no Aritmtica(r): Unificacin . th1=th2 donde th1 y th2 son trminos no interpretados Programa CLP(R ): Es un conjunto finito de reglas: - A:-p(t1,,tn) para todo ti eT y p /e {<=,>=,/=} trminos. - A:- A1, A2,, Ak donde Ai(i>=1) son tomos o restricciones primitivas.

65

CLP (R)
ejemplo:Fibbonaci(n) fib(0,1). fib(1,1). Fib(N,x1+x2):- N>1, fib(N-1,x1),fib(N-2,x2).
Si deseo obtener una solucin para b especial 80<=b, b<=90 solo tengo que anteponer las restricciones sobre la funcin. ?- 80<=b, b<=90,fib(a,b). Solucin a=10,b=89. CLP(R) objetivo: ?-B1,B2,,,,Br donde cada Bj son tomos o restricciones primitivas( Las que se resuelven, las que se duermen), Se debe indicar claramente cuando se despierta o cuando se duerme una restriccin y cual es el tomo a resolver. {A1,AN} N>=0, son los objetivos a resolver. {S1,,SM} M>=0, son las restricciones ya resueltas. {D1,,DK} K>=0, restricciones dormidas.

66

CLP( R )
Objetivo: G-? {A1,,AN},{S1,,SM},{D1,.,DK}
Nuevo objetivo G-? {A1,..,AN},{S1,,SM,Di},{{D1,DK}-{Di}} se aade una restriccin dormida a las resultas. O bien: G-?{A1,.Ai-1,B1,.,BS,Ai+1,AN} resultante de colocar los tomos de la clusula usada {S1,..,SM} No varia {D1,Dk,Ai B, D11, Dp1} y uso la regla B:-{B1,,Bs},{D11,.,D12} Generado al aadir las restricciones de la clusula y la unificacin con el tomo de la cabeza.

67

Problemas
PROBLEMAS:
En caso de admitir restricciones no lineales aparecen dos problemas indecidibles: - Proseguir con las derivaciones indefinidamente aunque exista xito ===> Incompletitud Relativa denominado as porque aunque no he terminado el programa he encontrado una solucin. - Devolver el conjunto de restricciones respuesta y Informa que tengo una respuesta Irresoluble. ejemplo: solucin en simplex de infinitas soluciones ( semirrecta) o tengo un problema no factible o no satisfacible Si entramos en contradiccin de cual es la mejor solucin: -Utilizo heursticas buscando una solucin parcial y obtencin rpida. -Recorrer todo el espacio de bsqueda invirtiendo mucho tiempo en encontrar la solucin: -Mezcla: Ofrecer una solucin rpida pero en segundo plano continuar buscando por si puedo mejorar.
68

Simplex
RESTRICCIONES CON REALES SIMPLEX. Tipo Problema: {MAX,MIN} f=(s)a(i)x(i) con s={-1, 1} y ai Reales. sujeto a: r(p): (s)*c(j)* x(j)(op relacional) b con 1<=p<=m, 1<=j<=t, s={-1, 1} y ci Reales, x(i) E Reales, op relacional={<,<=,>,>=} y b E Reales. 1 Paso Colocar el problema en forma Cannica. - MAX f - Restricciones con los operandos relacionales del tipo {<,< =} - Variables no negativas. 2 Paso Transformar el problema en forma estndar. - MAX f - Restricciones son ecuaciones con el smbolo {=} - Variables no negativas.

69

Simplex(I)
Ejemplo:
Maximizar 4 x1 + x2 + 6 x3 Sujeto a - 2 x1 - x2 + 2 x3 >= 1 x1 + x2 + x3 >= 6 x1 , x2 , x3 >= 0

Documento DecAv1.sim decav1.sim Ejemplo convertido a forma cannica:


Maximizar 4x1+x2+6x3 sujeto a: -2x1-x2+2x3-s1+x1=1 x1+x2+x3-s2+x2=6 x1,x2,x3>=0.

Este Problema tiene solucin no acotada.


70

Simplex(II)
Ejemplo 2: Maximizar - 2x1 - x2 Sujeto a 3x1 + x2 >= 3 4x1 + 3x2 >= 6 x1, x2 >= 0

Documento DecAv2.sim decav2.sim Ejemplo convertido a forma cannica:


Maximizar -2x1-x2 Sujeto a 3x1+x2-s1+x1=3 4X1+3X2-S2+X2=6 X1,X2,S1,S2,X1,X2>=0. El problema es factible, tiene solucin y es: F=-2.4 x1=0.6, x2=1.2.

71

Sistema grafico
Max f = 2x1 + x2 sujeto a: 5*x1 + 2*x2 <=10; 3*x1+5*x2<=15 x1,x2>=0.
Si en lugar de maximizar deseo minimizar en el puedo obtener la solucin y sera el punto (0,0).-

Introduciendo mas restricciones o menos y cambiando la funcin de maximizar la solucin va cambiando. Para un mismo problema o funcin.

72

Solucin Matricial
Ejemplo: max -2x1-x2 sujeto a: 3x1 + x2 >=3; 4x1+3x2>=6 x1,x2>=0 Matriz del problema B=(3 1) (4 3) B-1=(3/5 -1/5) (-4/5 3/5)

En el mtodo simplex me interesa saber el valor de la variable x1 y x2 que se encuentra almacenado en las columnas que hacen referencia a p1 y p2 y para obtener el valor de F me interesa conocer el valor de p0. Mtodo matricial: PO=(B-1)*P0=(3/5 6/5) P1=(B-1)*P1=(1 0) P2=(B-1)*P2=(0 1) (X1 X2)=P0=(3/5 6/5)

F=(-2)*(3/5)-6/5=-12/5

73

Posibles soluciones y simplex modificado.


Posibles soluciones:
- Infinitas soluciones: en la tabla zk-ck=0 y pk no es bsico, la solucin (segmento) solunica.sim -Ilimitada: no tiene solucin: el vector que entra tiene todas sus componentes <= 0 nofactib.sim -Solucin es una semirrecta en la que tengo una solucin base: zk-ck=0 , pk no bsico, para todo i pk(i)<=0. multiple.sim Simplex Modificado: Paso 1: Busco una solucin bsica. Repeat Paso 2: si solucin bsica factible que mejora solucin voy a p3 sino doy solucin bsica. Paso 3: Encontrar solucin mejor. Voy al paso 2. Hasta que (solucin No factible).
74

MOTOR DE INFERENCIA.
Eleccin del elemento que entra y sale: Entra el Pi tal que {pi= 1<=k<=n |zk-ck| ^ [zk-ck<0] max Sale aquel tal que min{ P0(1) /Pi(1), P0(2)/Pi(2),P0(n)/Pi(n) } Pero se toman aquellos elementos que cumplen que P0(i), Pk(i) son positivos. decav1.sim
SISTEMA DE MODULOS CLP( R ). MOTOR DE INFERENCIA E INTERFAZ. Este motor de inferencia manipula las restricciones sencillas sin usar un resolutor y mantiene las ligaduras implcitas, controla la creacin de puntos de tipo normal o resolutor. I Unificacin: R-Variables Conjunto de variables que aparecen en la coleccin de restricciones usadas por el resolutor. El resto son variables normales.
75

Tabla de Unificacin
t2|t1 Var var Unifica R-var Num Term R-term

R-var
Num Term RTerm

T1T2
T1T2 T1T2 Interface

Resolver
Resolver Error Interface T1=T2? Error Interface T1=T2? Error T1=T2?

Unificacin representa la relacin (Variable Numero) El resolutor y e interface hacen la unificacin de forma Explicita. El resolvedor de ecuaciones y el de inecuaciones lo hace de forma implcita Si no se puede Unificar se produce un error.

76

Sincronizacin de vuelta atrs.


ACCESO RAPIDO.

Necesito almacenar las ligaduras, establecidas en la tabla anterior, pero estas ligaduras no las necesito entre los trminos aritmticos y las variables. Cuidado con las ligaduras cclicas: - Si las ligaduras cclicas entre variables toman en un instante de la Unificacin un valor numrico no se produce inconsistencia. II. Sincronizacin de vuelta atrs del motor de inferencia con el resolutor de restricciones. Puntos de Eleccin: * Del Motor de Inferencia : Si tengo varias posibilidades de eleccin de una regla este se encarga de elegir una. * Del Resolutor: (Restaura las restricciones por los puntos de eleccin usados. Hay una relacin entre ambos, Necesito: -Reducir los P de Eleccin del resolutor debido al tamao y el tiempo que pierdo generar los datos. -Crear un P, de Eleccin del resolutor si y solo si hay nuevas restricciones que aadir desde el ltimo Punto de Eleccin del resolutor.
77

Resolutor de ecuaciones
III. El Interfaz. Llamado por el motor de inferencia. Si la restriccin tiene un termino aritmtico. Paso1:Evalua la expresin Aritmtica. Paso2:Si bsica ( restriccin) Evalua(Expresion). Sinosi (nvar(restricion)=1) ^ (es-ecuacion(restriccion))Ligagura Implitita. Sino Proceso esta Restriccin y llamo al resolutor. Ejemplo: ejemplodeInterfaz.doc RESOLUTOR DE ECUACIONES. La coleccin de ecuaciones lineales consistente se mantienen en el Modulo. Para introducir una compruebo consistencia con las dems y si se mantiene la aado e intento resolver el problema en caso contrario puedo comunicar que el problema no tiene solucin con estas restricciones. Hay una prioridad mxima: responder a la consistencia:( devuelve si las ecuaciones almacenadas con la nueva son consistentes.

78

Resolutor de ecuaciones
Matriz de ecuaciones: solo las R-variables. Xi=bi+ci1*ti1+ci2*ti2+ci3*ti3+. Xi es la variable no parametrica y cij, j {1,..n} son coeficientes reales y tij j {1,..n} son variables parametricas. Cmo se aade una restriccin lineal? Partiendo de la forma resuelta Inicial: Tenemos FRPJ-1 la ecuacin EJ(j>=1) 1 (FRPJ-1 ^ Ej)es consistente? si, construyo (FRPj). Rj es el resultado de sustituir las vars no parametricas x de FRPj-1 en Ej 1)si Rj es (0=0) entonces (FRPJ=FRPJ-1) devuelve cierto. 2)si Rj es (c=0) ^(c!= 0) no hay FRPj y devuelvo falso. 3)si hay var no parametricas {x1,..xm} tomo xk 1<=k<=m como no parametrica y el resto como parametricas. FRPJ=FRPJ-1 U {nueva ecuacin} si M=1 se despiertan restricciones lineales no dormidas sino devuelvo cierto 4)si Rj solo tiene vars parametricaselijo una cualquiera como sujeto de la ecuacin. AADIR RESTRICCION LINEAL.doc
79

Resolutor de inecuaciones y ejemplos de dominios finitos.


RESOLUTOR DE INECUACIONES. Adaptacin del Simplex. Utilizo Variables de holgura, manipulo las restricciones, admite ecuaciones e inecuaciones. Lo he visto antes.(Ejemplo transparencia Simplex(I) y Simplex(II) Una vez obtenidas las ecuaciones aplico el resolutor de ecuaciones.

DOMINIOS FINITOS, CLP( R). Ejemplo: SEND + MORE = MONEY Metodologa: 1)Dominio: ([S,E,N,D,M,O,R,Y], 0, 9). Representa la s variables y el dominio asociado a ellas. 2)Restricciones: Restrict([S,E,N,D,M,O,R,Y]):- S#>0, M#>0,
AllDiferent([S,E,N,D,M,O,R,Y]). SUM([S,E,N,D,M,O,R,Y]). Siendo: Sum([S,E,N,D,M,O,R,Y]):-1000*S+100*E+10*N+D+1000*M+100*O+10*R+E #=10000*M+1000*O+100*N+10*E+Y.
80

Ejemplos de dominios finitos.


3) Genero los valores de las variables: Labeling(Type,[S,E,N,D,M,O,R,Y]).
El programa seria: Send([S,E,N,D,M,O,R,Y],Type):- domain([S,E,N,D,M,O,R,Y],0,9), restrict([S,E,N,D,M,O,R,Y]), labeling(Type, [S,E,N,D,M,O,R,Y]). Lo ejecutamos: ?- Send([S,E,N,D,M,O,R,Y],[]) y produce: D=7,E=5,M=1,N=6,O=0,R=8,S=9,Y=2. EN CLP(R ) DENTRO DE CLP( R) Dominio(S,E,N,D,M,O,R,Y):= S>0 , E>=0 , N>=0 , D>=0 , M>=0,O>=0,R>=0 Y>=0,S<=9,E<=9,N<=9,D<=9,M<=9,O<=9,R<=9,Y<=9.

81

Ejemplos de dominios finitos


Restrict(S,E,N,D,M,O,R,Y):S#>0 , M#>9 , D+E=Y+10*C1 , C1+N+R=E+10*C2 , C2+E+0=N+10*C3, C3+S+M=0+10*M, carry(C1,C2,C3),Dig(s),Dig(E), Dig(N),Dig(D),Dig(M),Dig(O),Dig ( R) , Dig(y),difflist([S,E,N,D,M,O,R,Y]); Carry(1,1,1) carry(1,0,0) carry(0,0,1) carry(1,1,0) carry(0,1,1) carry(0,0,0) carry(1,0,1) carry(0,1,0) dig(9),.,..dig(0). Diflist([]). Diflist([X|T]):- no miembro(X,T),Difflist(T). NoMiembro(X,[Y|T]) :-X<Y,NoMiembro(X,Z). NoMiembro(X,[Y,Z]):->X>Y,NoMiembro(X,Z). NoMiembro(X,[]). Si ejecuto Send(S,E,N,D,M,O,R,Y):-dominio(S,E,N,D,M,O,R,Y), Restrict(S,E,N,D,M,O,R,Y). SEND(S,E,N,D,M,O,R,Y) produce S=9 , E=5 , N=6 , D=7 , M=1 , O=0 , R=8 , Y=2

82

Potrebbero piacerti anche