$PF^n$ - PowerPoint PPT Presentation

About This Presentation
Title:

$PF^n$

Description:

Title $PF^n$ Author: Sonia E Last modified by: Fernando S enz P rez Created Date: 9/18/2006 1:35:15 PM Document presentation format: Presentaci n en pantalla – PowerPoint PPT presentation

Number of Views:34
Avg rating:3.0/5.0
Slides: 89
Provided by: Soni153
Category:

less

Transcript and Presenter's Notes

Title: $PF^n$


1
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

2
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

3
1. Arquitectura
Toy
FD
R
store
H
store
store
FD
R
SICStus Prolog
4
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

5
2. Restricciones de reales
  • Programación lineal.
  • Programación lineal entera mixta (MIP).
  • Optimización.
  • MIP en TOY.

6
Programación lineal
Minimizar (Maximizar)
Sujeto a
Ejemplo
Maximizar
Sujeto a
7
Programación entera/mixta
Minimizar (Maximizar)
Sujeto a
Ejemplo
Maximizar
Sujeto a
8
Programación lineal Algoritmo del Simplex
(Dantzing 1947) Algoritmo de barrera (punto
interior Karmarkar 1984)
Programación entera/mixta Algoritmo de
ramificación y acotación (branchbound,
branchcut, )
BB
9
MIP en Toy
minimize, maximize real -gt real Toy(R)gt 2XY
lt 16, X2Y lt 11, X3Y lt 15,
Z30X50Y, maximize Z Z X -gt
7.00000000000001, Y -gt 1.9999999999999956, Z
-gt 310.00000000000006 Elapsed time 0
ms. sol.1, more solutions (y/n/d/a)
y? no Elapsed time 0 ms.
10
MIP en Toy
bb_minimize, bb_maximize real -gt real -gt
real Toy(R)gt E40G50C,GClt50,3G4Clt180,
Clt40,Cgt0,Ggt0,bb_maximize E C,G E
     E -gt 2300,        G -gt 20,        C -gt
30      Elapsed time 31 ms. sol.1, more
solutions (y/n/d/a) y?      no      Elapsed
time 0 ms.
11
Resumen de funciones
minimize, maximize bb_minimize, bb_maximize
12
Implementación CFLP(R)
  • Módulos

13
Implementación Compilación de programas
  • Compilación

Archivos
Declaraciones Toy (usuario y predefinidas)
Unión de archivos
Traducción a primer orden
Análisis léxico, sintáctico y (parte del)
semántico
Módulos
Outgenerated
Inferencia de tipos y última etapa de compilación
plgenerated
14
Implementación Carga de programas
  • Carga

plgenerated
- consult(program)
  • toycomm.pl Predicados comunes (e.g., hnf)
  • primFunct.pl Declaraciones de funciones
    predefinidas
  • primitivCod.pl Implementación de funciones
    predefinidas

15
Implementación Carga de la biblioteca R
/cflpr /nocflpr
Módulos Sicstus
Archivos Prolog
16
Implementación Implementación de funciones
primitivCod.pl
lt(X,Y,H,Cin,Cout)- hnf(X,HX,Cin,Cout1),
hnf(Y,HY,Cout1,Cout), (number(HX),number(HY)
-gt (HXltHY,HtrueHXgtHY,Hfalse)
errPrim).
primitivCodClpr.pl
  • lt(X,Y,H,Cin,Cout)-
  • hnf(X,HX,Cin,Cout1),
  • hnf(Y,HY,Cout1,Cout2),
  • (Htrue,HXltHYHfalse,HXgtHY),
  • toSolver(HX,Cout2,Cout3),
  • toSolver(HY,Cout3,Cout4),
  • toSolver(H,Cout4,Cout).

17
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

18
2. Restricciones de dominio finito
  • Abstracción operacional
  • e.g. x ? y z (asignación) es xyz
    (relación),
  • Carácter multi-disciplinar
  • Resolución de problemas de naturaleza diversa
    (no-lineal, cooperativa, optimización,
    scheduling, timetabling, etc.)
  • Restricción relación (ecuacional, simbólica,
    primitiva, etc.)

19
Motivaciones
  • Marco natural Declarative Programming
  • DP LP o FP

Objeto
Objeto
Relación
Objeto
Constraint
20
Estructura de un programa de restricciones (DF)
Definición de los parámetros
Declaración de las variables de decisión
Acotación de dominios (domain)
Declaración de las restricciones
Especificación del proceso de búsqueda (Optimizaci
ón)
21
Problema de satisfacción de restricciones
X ? X1 , X2 , , Xn ? conjunto de variables
que toma valores de los respectivos dominios
finitos del conjunto D ? D( X1), D( X2) ,
, D( Xn) ? Una asignación a las variables X1 ,
X2, , Xn es una n-tupla de valores (d1, d2,
, dn) con di ? D(Xi) i 1,...n. Una
restricción R(V) con V ? X, es un subconjunto
del producto cartesiano de los dominios R(
X1, X2, , Xm) ? D( X1) x D( X2) x x D(
Xm). Una asignación (d1, d2, , dm) satisface
la restricción R si R(d1 , d2, , dm) ? R(
X1 , X2, , Xm) Una restricción es
satisfacible si existe al menos una asignación
que la satisface
22
Problema de satisfacción de restricciones
(DOMINIOS FINITOS)
Ejemplo Variables X, Y, Z Dominios D(X)
?1, 2, 5?, D(Y) ?1, 2, 3, 4, 5?, D(Z) ?1, 2,
5, 7? Restricción R(X, Y, Z) X lt Y ? Ylt
Z Asignaciones (1, 1, 1) insatisfacible
(1, 2, 5) satisfacible
23
Problema de satisfacción de restricciones
(representación)
PSR
Soluciones del PSR
Solution 7 X 9 Y 1 Z 1 T 7 W 2
Solution 1 X 9 Y 1 Z 1 T 1 W
8 Solution 2 X 9 Y 1 Z 1 T 2 W
7 Solution 3 X 9 Y 1 Z 1 T 3 W 6
Solution 4 X 9 Y 1 Z 1 T 4 W
5 Solution 5 X 9 Y 1 Z 1 T 5 W
4 Solution 6 X 9 Y 1 Z 1 T 6 W 3
D(X) 1..9 D(Y) 1..9 D(Z) 1..9 D(T)
1..9 D(W) 1..9
X gt Y Z 6 Y lt T Z W ? Y X W T X
lt Z
24
Arquitectura del resolutor de restricciones de
dominios finitos
Propagador de X gt Y Z 6
Dominios
D(X) 1..5
D(Z) 1..9
D(Y) 3..7
Propagador de X ltgt Z
Propagador de Y lt T Z
D(T) 1..5
D(W) 2..5
Propagador de X W T
Propagador de W ltgt Y
25
Arco consistencia
  • Una restricción primitiva r es arco-consistente
    con dominio D si vars(r) 2 o vars(r) x,y y
    para cada d in D(x) existe e en D(y) tal que

    , y análogamente para y
  • Un PSR es arco consistente si todas sus
    restricciones primitivas son arco_consitentes

26
Consistencia de límites
  • Una restricción primitiva r es límite_consistente
    con dominio D si para cada variable x en vars(r)
    existen números reales d1, ..., dk para el resto
    de variables x1, ..., xk tal que

    es una solución de r, y análogamente
    para
  • Un PSR aritmético es límite_consistente si lo son
    todas sus restricciones primitivas

27
Ejemplos de consistencia de límites
No es límite-consistente, ya que para Z2
(max(D(Z)) no existe solución de X-3Y10 en D(X)
y D(Y) En cambio, sí es límite-consistente el
siguiente dominio
28
Obtención de la consistencia de límites
  • Dado un dominio actual D se modifican los puntos
    extremos de las variables para que resulte
    límite_consistente
  • los propagadores o reglas de propagación se
    encargan de esta tarea

29
Reglas de propagación (propagadores)
Consideremos la restricción primitiva X Y Z
que es equivalente a las tres formas
Razonando sobre los valores mínimo y máximo
obtenemos las siguientes reglas de propagación
30
Reglas de propagación (propagadores)
Las reglas de propagación determinan que
Por lo que los dominios pueden reducirse a
31
Reglas de propagación (propagadores)
Si el dominio inicial es
Determinamos que y el nuevo dominio será
32
Desigualdades
Las reglas de las desigualdades proporcionan una
propagación débil. Sólo hay propagación cuando
un miembro toma un valor fijo e igual al mínimo o
máximo del otro miembro.
33
Multiplicación
Si todas las variables son positivas, el
propagador sería
Ejemplo se convierte en
34
Algoritmo general del resolutor
35
Motivaciones
C(L)P ? (Jaffar y Lassez, 87)
CLP ? Expresividad LP
Eficiencia CP Instancias según dominio de
computación CLP(FD), CLP(Sets), CLP(?),
CLP(Bool),....
LP - Unificación
Resolución de restricciones CLP
36
CFP ?
  • Ningún intento convincente en FP, sí en en el
    contexto multiparadigma.
  • (Arenas et. al, 1996)l
  • (López-Fraguas y Sánchez Hernández,1999)
  • (Lux, 2001)
  • (Smolka,1994)
  • (Antoy y Hanus, 2000)
  • Y DOMINIOS FINITOS (FD) ?

37
Nuestra propuesta
Antonio J. Fernández, Teresa Hortalá-González,
Fernando Sáenz-Perez PADL2003, ES2002
Antonio J. Fernández, Teresa Hortalá-González,
Fernando Sáenz-Perez y Rafael del Vado
Vírseda TPLP07
38
El Modelo Opaco
(Black box!) Ventajas Eficiencia
Específico de la aplicación Semántica
operacional oculta


Desventajas
Restricciones hard wired Carencia
adaptabilidad
Constraint
Salida
Entrada
Restricción Opaca
39
Variables Lógicas
No determinismo
Propagación restricciones
C F L P sobre FD
Labeling
Funciones
FD
HO
Pereza
Composición restricciones
Patrones
Tipos
Aplicacionesparciales
40
TOY(FD)
Modelado problema Evaluación perezosa
Lenguaje fuente FLP TOY
Almacén de restricciones Resolución restricciones
Resolutor (SICStus)
41
TOY(FD) Restricciones FD Funciones
42
TOY(FD)
43
Resolución CFLP(FD)
  • Resolución (tres fases)
  • narrowing (reducción
    de dominios)
  • propagación
  • técnicas de
    splitting (labeling)

Fases (1) selección variable (2)
selección valor
44
CFLP(FD) vs. CLP(FD)
CLP(FD) ? CFLP(FD)
smm int ? int ? int ? int ? int ? int ? int
? int ?labelType ? bool smm S E N D M
O R Y Label - domain S,E,N,D,M,O,R,Y
0 9, S gt 0, M gt 0,
all_different S,E,N,D,M,O,R,Y, add S E
N D M O R Y, labeling Label
S,E,N,D,M,O,R,Y add int ? int ? int ? int ?
int ? int ? int ? int ? bool add S E N D M O R Y
- 1000S 100E 10N D
1000M 100O 10R E
10000M 1000O 100N 10E Y
45
CFLP(FD) vs. CLP(FD)
CFLP(FD) Capacidades adicionales
  • Tipos ventajas ya conocidas
  • Notación funcional domain X 1 (10-N)
  • Aplicaciones parciales, HO y polimorfismo
  • map (3lt) X,Y 3ltX, 3lt Y
  • true,true

map (A ? B) ? A ? B map F map F
XXs (F X) (map F Xs)
X,Y ?4,sup
46
CFLP(FD) vs. CLP(FD)
CFLP(FD) Capacidades adicionales
PerezaAbre nuevas posibilidades a la
Resolución de restricciones
generateFD int -gt int generateFD N X
generateFD N lt domain X 0
(N-1) lazymagic int -gt int lazymagic N L
lt take N (generateFD N) L,
constrain L L 0 Cs, sum L ()
N, scalar_product Cs L () N,
labeling ff L
Evaluación perezosa. Listas infinitas !!
47
CFLP(FD) vs. CLP(FD)
CFLP(FD) Pereza
(.) (B -gt C) -gt (A -gt B) -gt (A -gt C) (F . G) X
F (G X) from int ? int from N Nfrom
(N1) lazyseries int ? int lazyseries
map lazymagic.from take 3 (lazyseries 7)
3,2,1,1,0,0,0, 4,2,1,0,1,0,0,0,
5,2,1,0,0,1,0,0,0
48
CFLP(FD) vs. CLP(FD)
Sumario
  • CLP(FD) ? CFLP(FD)
  • notación funcional,
  • tipos,
  • HO,
  • Parcialización,
  • Evaluación perezosa,
  • composición de funciones
  • (restricciones)
  • ????

49
Aplicaciones
50
Planificación
data taskName t1 t2 t3 t4 t5 t6 data
resourceName m1 m2 type precedencesType
taskName type resourcesType
resourceName type task (taskName,
durationType, precedencesType,
resourcesType, startType)
Tasks (t1,3,, m1,S1),
(t2,8,, m1,S2),
(t3,8,t4,t5,m1,S3), (t4,6,,
m2,S4), (t5,3,t1, m2,S5),
(t6,4,t1, m2,S6), schedule Tasks 1
20, labeling S1,S2,S3,S4,S5,S6
SOLVE!!
51
Planificación
scheduleTasks task -gt task -gt
bool scheduleTasks TL true scheduleTasks
(N, D, P, R, S)Ts TL - precedeList (N, D,
P, R, S) P TL, requireList (N, D, P, R, S) R
TL, scheduleTasks Ts TL precedeList task
-gt taskName -gt task -gt bool precedeList T
TL true precedeList T1 TNTNs TL -
belongs (TN, D, P, R, S) TL, precedes (TN, D, P,
R, S) T1, precedeList T1 TNs TL precedes
task -gt task -gt bool precedes T1 T2 (start T1)
(duration T1) lt (start T2)
Recursión
Restricciones FD
52
A Hardware Design Problem
  • NOT, AND, and OR gates
  • Three-input, one-output circuits

53
Circuitos Simples FLP (1)
  • type behavior bool -gt bool -gt bool -gt bool
  • i0,i1,i2 behavior
  • i0 I2 I1 I0 I0 -- Input 0 Module
  • i1 I2 I1 I0 I1 -- Input 1 Module
  • i2 I2 I1 I0 I2 -- Input 2 Module
  • notGate behavior -gt behavior
  • notGate B I2 I1 I0 not (B I2 I1 I0)
  • andGate,orGate behavior -gt behavior -gt
    behavior
  • andGate B1 B2 I2 I1 I0
  • and (B1 I2 I1 I0) (B2 I2 I1 I0)
  • orGate B1 B2 I2 I1 I0
  • or (B1 I2 I1 I0) (B2 I2 I1 I0)

54
Circuitos Simples FLP
55
Circuitos Simples FLP
P orGate (andGate i0 (notGate i2)) (andGate i1
i2), O P true false true
Pattern ciudadano de primera Clase y HO
se evalua a verdadero y produce 0 false
56
Factores Físicos Disipación de Potencia (1)
  • power behavior -gt int
  • power i0 0
  • power i1 0
  • power i2 0
  • power (notGate C) notGatePower (power C)
  • power (andGate C1 C2)
  • andGatePower (power C1) (power C2)
  • power (orGate C1 C2)
  • orGatePower (power C1) (power C2)

Reglas para limitar la disipación de potencia
57
Factores Físicos Disipación de Potencia (2)
  •       Construcción de circuitos con potencia
    limitada
  •   power B P, P lt maxPower
  •  
  •   

power/1 usado como Generador de comportamiento
58
Un enfoque restringido
 Circuito caracterizadom por el
estado Idea Empareja un estado a un
circuito en construcción de manera que las
variables de estado reflejen el estado actual del
circuito durante su generación Estado
representado por variables de dominio ? reducción
de dominios por la limitación de factores durante
la generación
lt area, power, cost, delay gt
No (Generate and Test) ? Test when Generating
59
Ejemplo el factor área
type area, power, cost, delay int type state
(area, power, cost, delay) type circuit
(behavior, state) genCir state -gt
circuit genCir (A, P, C, D) (i0, (A, P, C,
D)) genCir (A, P, C, D) (i1, (A, P, C,
D)) genCir (A, P, C, D) (i2, (A, P, C,
D)) genCir (A, P, C, D) (notGate B, (A, P, C,
D)) lt domain A ((fd_min A) notGateArea)
(fd_max A), genCir (A, P, C, D) (B, (A, P,
C, D)) genCir (A, P, C, D) (andGate B1 B2, (A,
P, C, D))lt domain A ((fd_min A)
andGateArea) (fd_max A), genCir (A, P, C, D)
(B1, (A, P, C, D)), genCir (A, P, C, D)
(B2, (A, P, C, D)) genCir (A, P, C, D) (orGate
B1 B2, (A, P, C, D)) lt domain A ((fd_min
A) orGateArea) (fd_max A), genCir (A, P, C,
D) (B1, (A, P, C, D)), genCir (A, P, C, D)
(B2, (A, P, C, D))
Funcion de reflexión
Constraint
60
Switching Function Ejemplo
Devuelve el resultado de uncomportamiento B
para todas sus combinaciones de entrada data
functionality bool switchF behavior -gt
functionality switchF Behavior
Out1,Out2,Out3,Out4,Out5,Out6,Out7,Out8 lt
(Behavior false false false) Out1,
(Behavior false false true) Out2,
(Behavior false true false) Out3,
(Behavior false true true) Out4,
(Behavior true false false) Out5,
(Behavior true false true) Out6,
(Behavior true true false) Out7,
(Behavior true true true) Out8
61
Generando un Circuito NOR
domain A 0 maxArea, domain P 0 maxPower,
domain C 0 maxCost, domain D 0 maxDelay,
genCir (A,P,C,D)(B,S), switchF B
true,false,false,false,false,false,false,false
Algunas respuestas calculadas (entre 24
posibles) para maxFactor 6 B (notGate
(orGate i0 (orGate i1 i2))), B (notGate
(orGate (orGate i2 i1) i0)) B (andGate
(notGate i0) (notGate (orGate i1 i2))) B
(andGate (notGate (orGate i2 i1)) (notGate
i0)) ........................
Puerta Area Potencia Coste Retraso NOT 1
1 1 1 AND 2 2
1 1 OR 2 2
2 2
62
Implementación Carga de la biblioteca FD
/cflpfd
Compilación
/nocflpfd
63
Implementación Biblioteca FD compilación
Compile
64
Comparaciones
  • TOY(FD) se comporta como SICStus
  • excepto en la resolución de ecuaciones
    lineales -(
  • TOY(FD) es de 2 a 5 veces más rápido que PAKCs
  • (La implementación de Curry, sin publicar
    )
  • Cfr. TPLP07

65
Conclusiones
  • TOYFD proporciona declaratividad
  • Resolución de restricciones FD
  • No-determinismo
  • Variables lógicas
  • Sintaxis relacional
  • Funciones
  • Orden superior
  • Aplicaciones parciales
  • Notación funcional
  • Tipos
  • Evaluación perezosa

66
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

67
API para restricciones FD de Prolog
68
Ejemplos de uso
queens(N, L) - length(L, N), domain(L,
1, N), constrain_all(L), labeling(,
L). constrain_all(). constrain_all(XXs) -
constrain_between(X, Xs, 1),
constrain_all(Xs). constrain_between(X,,N). con
strain_between(X,YYs,N) - no_threat(X, Y,
N), N1 is N1, constrain_between(X,Ys,N1).
no_threat(X, Y, I) - X \ Y, XI
\ Y, X-I \ Y.
evalfd "queens" 4 L L 2,4,1,3 L
3,1,4,2 evalfd "queens" 13 (append 2,4
1,3) yes evalfd "queens" X 2,4,1,3, X
4 yes evalfd "queens" X 2,XY X 4,
Y 1,3 X 5, Y 3,1,4
69
Implementación
evalfd char -gt int -gt int.
evalfd(CL, PL, H, Cin, Cout)- nf(CL, HCL, Cin,
Cout1), hnf(PL, HPL, Cout1, Cout), toyListToIntP
rologList(HPL, PrologList), toyStringToProlog(HCL
, PrologString), name(Predicate,
PrologString), FDGoal .. Predicate,
PrologList, Result, call(FDGoal), intPrologList
ToToyList(Result,H).
70
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

71
ACIDE
  • A Configurable Integrated Development
    Environment.
  • Multiplataforma.
  • Configurable
  • Coloreado léxico.
  • Gramáticas para parsing on-the-fly.
  • Barras de herramientas.
  • Menús,

72
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores

73
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

74
Cooperación en TOY
TOY
TOY Resolutor de dominios finitos
TOY Resolutor de reales
Puente
TOY cooperación de los resolutores de reales y
dominios finitos vinculación y propagación
75
Ejemplo de cooperación (I)
(N,N)
Calcular la intersección entre
. . .
. . .
. . .
  • Una cuadrícula discreta de puntos de dimensión N
  • domain X, Y 0 N

. . .
(0,0)
  • Una región continua determinada por los
    semiplanos
  • RYgtRY0-H, RY-RXltRY0-RX0, RYRXltRY0RX0

(RX0,RY0)
H
(RX0H,RY0-H)
(RX0-H,RY0-H)
H
76
Ejemplo de cooperación (II) código en TOY
(N,N)
. . .
type dPoint (int, int) type cPoint (real,
real) type setOf A (A ? bool) isIn (setOf
A) ? A ? bool isIn Set Element Set
Element type grid setOf dPoint square int ?
grid square N (X, Y) - domain X, Y 0 N type
region setOf cPoint triangle cPoint ? real
? region triangle (RX0, RY0) H (RX, RY) -
RYgtRY0-H, RY-RXltRY0-RX0, RYRXltRY0RX0 bothIn
region ? grid ? dPoint ? bool bothIn Region
Grid (X, Y) - XRX, YRY, isIn Region
(RX,RY), isIn Grid (X,Y), labeling X,Y
. . .
. . .
. . .
(0,0)
(RX0,RY0)
H
(RX0H,RY0-H)
(RX0-H,RY0-H)
H
77
Ejemplo de cooperación (III) posibles objetivos
Objetivos y respuestas que devuelve el sistema
TOY
0,5
1
78
Ejemplo de cooperación (IV) posibles objetivos
2
79
Ejemplo de cooperación (V)
PROBLEMA Qué ocurre si la rejilla es muy muy muy
grande ?
Tarda demasiado !!!
MEJORA Usar puentes para PROPAGAR Reduce
significativamente el espacio de búsqueda de FD
RYgtRY0-H RY-RXltRY0-RX0 RYRXltRY0RX0
domain X, Y 0 N labeling X,Y
XRX YRY
80
Ejemplo de cooperación (VI) Efecto de la
propagación
Sin propagación
XRX YRY
RYgtRY0-H RY-RXltRY0-RX0 RYRXltRY0RX0
domain X, Y 0 N labeling X,Y
Con propagación
0ltRX , RXltN 0ltRY, RYltN RYgtRY0-H
RY-RXltRY0-RX0 RYRXltRY0RX0
XRX YRY
Y gt ?RY0-H? Y - X lt ?RY0-RX0? Y X lt
?RY0RX0 ? domain X, Y 0 N labeling X,Y
81
Arquitectura
Sistema de partida (TOY 2.2)
Sistema Cooperativo (TOY 2.3)
Toy
Toy
FD
R
store
store
FD
R
store
H
M
H
store
store
store
store
FD
R
FD
R
SICStus Prolog
SICStus Prolog
82
Código prolog inicial del puente
(L, R, true, Cin, Cout)- hnf(L, HL,
Cin, Cout1), hnf(R, HR, Cout1, Cout),
freeze(HL, HR is float(HL)), freeze(HR, HL is
integer(HR)).
Problema
Imprecisión del resolutor de reales, a veces HR
tomo un valor aproximado a un entero
Solución aplicar tolerancia a la var real en
los puentes
Toy(RFD)gt X RX, X 1, RX 0.999999
no Toy(RFD)gt /tolerance(0.000001)
Tolerance1.0E-06 Toy(RFD)gt X RX, X 1, RX
0.999999 X -gt 1, RX -gt
0.999999 Elapsed time 0 ms.
83
Más problemas
En ocasiones.... Necesitamos estar seguros que
las variables toman un valor real y no
entero Apaño... (number(HRaux) -gt HR is
HRaux1.0 HR HRaux)
84
Código prolog actual del puente
(L, R, Out, Cin, Cout)- hnf(L, HL,
Cin, Cout1) hnf(R, HRaux, Cout1, Cout2)
(number(HRaux) -gt HR is HRaux1.0 HR
HRaux) (tolerance_active(E) -gt Epsilon is
E Epsilon is 0.0) ((Outtrue, Cout3
''(HL,HR)Cout2 freeze(HL,
HL - Epsilon lt HR, HR lt HL Epsilon )
freeze(HR, (HLaux is round(HR), HL is
integer(HLaux)) ) ) (Outfalse,
Cout3 '/'(HL,HR)Cout2
freeze(HL, (F is float(HL), HR \ F))
freeze(HR, (0.0 is float_fractional_part(HR
) -gt (I is
integer(HR), HL \ I)
true)) )
),cleanBridgeStore(Cout3,Cout)
La implementación de / es semejante
85
Código prolog de la propagación
gt(X,Y,H,Cin,Cout)- hnf(X,HX,Cin,Cout1),
hnf(Y,HY,Cout1,Cout2), toSolver(HX,Cout2,Cout3
), toSolver(HY,Cout3,Cout4), toSolver(H,Cout4,Cout
), (Htrue,HXgtHYHfalse,HXltHY),
(prop_active -gt ( searchVarsFD(HX,Cout,Out1
,HXFD), searchVarsFD(HY,Cout,Out2,HYFD),
( (Out1 true, Out2 true, H
true,!, HXFD gt HYFD) (Out1 true,
Out2 true, H false,!, HXFD lt HYFD)
(Out1 true, Out2 false, H true,!,
HXFD gt HYFD) (Out1 true, Out2
false, H false,!, HXFD lt HYFD)
(Out1 false, Out2 true, H true,!, HXFD
gt HYFD) (Out1 false, Out2
true, H false,!, HXFD lt HYFD)!))true).
86
Código prolog de la propagación
gt(L, R, Out, Cin, Cout)- hnf(L, HL, Cin,
Cout1), hnf(R, HR, Cout1, Cout2),
toSolverFD(HL,Cout2,Cout3), toSolverFD(HR,Cout3,Co
ut4), ((Outtrue, HL gt HR) (Outfalse,
HL lt HR)), (prop_active -gt (
searchVarsR(HL,Cout4,Cout5,HLR),
searchVarsR(HR,Cout5,Cout,HRR), ((Out
true, HLR gt HRR ,!) (Out false, HLR lt
HRR ,!)) ) CoutCout4 ).
87
Algunos aspectos de la implementación de TOY
  1. Arquitectura
  2. Restricciones de reales
  3. Restricciones de dominio finito
  4. Carga de bibliotecas
  5. API para restricciones Prolog
  6. ACIDE
  7. Cooperación de resolutores
  8. Trabajo futuro

88
Más madera!
  • Bases de datos
  • Lenguaje de especificación de estrategias de
    cooperación
  • Resolutores de ILOG
  • Front-end Web
  • Mejorar ACIDE
  • Publicación TOY 2.3.0
  • Lenguaje de especificación de restricciones
  • Sobrecarga de funciones
  • Nuevos tipos de datos
  • Array
  • Tipos enumerados con FD
  • Lenguaje algebraico para restricciones
  • Integración con .NET, API C, API Java
  • Clases de tipos/Jerarquías
Write a Comment
User Comments (0)
About PowerShow.com