Download Programación por Restricciones Clase 2

Document related concepts
no text concepts found
Transcript
Programación por
Restricciones
Clase 2
Camilo Rueda
Universidad Javeriana-Cali
Programación por RestriccionesClase 2-- p.1/16
CP
Estrategia alternativa de programación
Descansa sobre combinación de razonamiento y computación
Restricción sobre variables: relación sobre sus dominios
CSP: Un conjunto finito de restricciones
Programación por RestriccionesClase 2-- p.2/16
CP
Estrategia alternativa de programación
Descansa sobre combinación de razonamiento y computación
Restricción sobre variables: relación sobre sus dominios
CSP: Un conjunto finito de restricciones
El camino de la programación por restricciones:
Formular el problema como CSP (modelamiento)
Resolverlo usando:
Métodos específicos de un dominio
Métodos generales
Programación por RestriccionesClase 2-- p.2/16
Resolver un CSP
Determinar si tiene una solución (es consistente)
Encontrar una solución
Encontrar todas las soluciones
Encontrar una solución optimal
Encontrar todas las soluciones optimales
Programación por RestriccionesClase 2-- p.3/16
Métodos específicos para un dominio
Algoritmos especializados (resolvedores de restricciones)
Ejemplos:
Resolvedores de ecuaciones lineales
Paquetes de programación lineal
Implementación del algoritmo de unificación
Programación por RestriccionesClase 2-- p.4/16
Métodos específicos para un dominio
Algoritmos especializados (resolvedores de restricciones)
Ejemplos:
Resolvedores de ecuaciones lineales
Paquetes de programación lineal
Implementación del algoritmo de unificación
Métodos generales
Algoritmos de propagación de restricciones
Métodos de búsqueda
Programación por RestriccionesClase 2-- p.4/16
Características básicas de CP
Proceso de programación de dos fases
Generación de la representación del problema como CSP
Resolverlo
Representación flexible: Las restricciones se pueden agregar,
remover o modificar
Ofrece soporte en forma de built-ins:
Resolvedores de restricciones
Algoritmos de propagación
métodos de búsqueda
Programación por RestriccionesClase 2-- p.5/16
La noción de CSP
Dados:
Variables: Y = y1 , y2 , ..., yk
Dominios: D1 , D2 , ..., Dk
Restricción C sobre Y : Subconjunto de D1 × D2 × ... × Dk
Dados:
variables x1 , ..., xn ,
Dominios D1 , ..., Dn ,
Problema de satisfacción de restricciones (CSP):
P = {C; x1 ∈ D1 , ..., xn ∈ Dn }
C: restricciones, sobre subsecuencias de x1 , ..., xn
(d1 , ..., dn ) ∈ D1 × ... × Dn es solución de P
si para cada restricción C ∈ C sobre xi1 , ..., xim
(di1 , ..., dim ) ∈ C
Programación por RestriccionesClase 2-- p.6/16
Ejemplo: SEND+MORE=MONEY
Reemplazar cada letra por un dígito, tal que:
SEND
+
MORE
MONEY
Solución única:
9567
+
1085
10652
Variables: S, E, N, D, M, O, R, Y
Dominios: [1.,9] para S, M
[0.,9] para E, N, D, O, R, Y
Programación por RestriccionesClase 2-- p.7/16
Alternativas para restricciones
Una restricción de igualdad 1000.S + 100.E + 10.N + D
1000.M + 100.O + 10.R + E
= 10000.M + 1000.O + 100.N + 10.E + Y
5 restricciones de igualdad Usar variables de carry,
C1 , ..., C4 ∈ [0.,1]
Programación por RestriccionesClase 2-- p.8/16
Alternativas para restricciones
Una restricción de igualdad 1000.S + 100.E + 10.N + D
1000.M + 100.O + 10.R + E
= 10000.M + 1000.O + 100.N + 10.E + Y
5 restricciones de igualdad Usar variables de carry,
C1 , ..., C4 ∈ [0.,1]
D + E = 10.C1 + Y ,
C1 + N + R = 10.C2 + E,
C2 + E + O = 10.C3 + N ,
C3 + S + M = 10.C4 + O,
C4 = M
Programación por RestriccionesClase 2-- p.8/16
Alternativass para inecuaciones
1.
2.
3.
28 restricciones x 6= y para
x, y ∈ {S, E, N, D, M, R, O, Y } (en orden)
Una sola restricción
AllDif f erent(x1 , ..., xn )
= {(d1 , ..., dn )|di 6= dj para i 6= j}
Modelarlo como problema de programación entera:
Transformar x 6= y en:
x − y ≤ 10 − 11zx,y ,
y − x ≤ 11zx,y − 1,
donde zx,y ∈ [0.,1]
Desventaja: 28 nuevas variables
Programación por RestriccionesClase 2-- p.9/16
ZEBRA
Una calle tiene 5 casas de color diferente. Cinco hombres
de diferente nacionalidad viven en ellas. Cada hombre tiene una profesión diferente. Cada hombre prefiere una bebida diferente. Cada uno tiene una mascota diferente
Programación por RestriccionesClase 2-- p.10/16
ZEBRA (2)
El inglés vive en la casa roja. El español tiene un perro
El japonés es pintor. El italiano toma té
El noruego vive en la primera casa de la izquierda
El dueño de la casa verde bebe café
La casa verde está a la derecha de la casa blanca
El escultor cría caracoles. El diplomático vive en la casa amarilla
Se toma leche en la casa del medio
El noruego vive al lado de la casa azul. El violinista toma jugo de fruta
El zorro está en la casa junto a la del médico
El caballo está en la casa junto a la del diplomático
Quién tiene la zebra? quién bebe agua?
Programación por RestriccionesClase 2-- p.11/16
ZEBRA(3)
25 variables
Nacionalidad: inglés, español, japonés, italiano, noruego
mascota: perro, caracol, zorro, caballo, zebra
profesión: pintor, escultor, diplomático, violinista, médico
bebe: te, café, leche, jugo, agua
color: roja, verde, blanca, amarilla, azul,
Dominios: [1.,5]
Restricciones:
AllDif f erent(rojo, verde, blanca, amarilla, azul)
AllDif f erent(ingles, espanol, ..., noruego)
AllDif f erent(pintor, ..., medico)
AllDif f erent(te, caf e, leche, jugo, agua)
Programación por RestriccionesClase 2-- p.12/16
Restricciones Zebra(2)
El inglés vive en la casa roja: ingles = rojo
El español tiene un perro: espanol = perro
El japonés es pintor: japones = pintor
El italiano bebe té: italiano = te
El noruego vive en la primera casa a la izquierda: noruego = 1
El dueño de la casa verde bebe café:verde = caf e
la casa verde está a la derecha de la casa blanca: verde = blanco + 1
El escultor cría caracoles: escultor = caracol
El diplomático vive en la casa amarilla: diplomatico = amarilla
Se bebe leche en la casa del medio:leche = 3
El noruego vive al lado de la casa azul: |noruego − azul| = 1
El violinista bebe jugo:violinista = jugo
Programación por RestriccionesClase 2-- p.13/16
Zebra restricciones(3)
El zorro está en la casa al lado del médico:|zorro − medico| = 1
El caballo está en la casa al lado del diplomático:
|diplomatico − caballo| = 1
Programación por RestriccionesClase 2-- p.14/16
Crucigrama
1
2
3
N
N
N
N
4
5
6
N
7
N
N
8
N
Llenar con palabras de las siguientes:
HOSES, LASER, SAILS, SHEET, STEER
HEEL, HIKE, KEEL, KNOT, LINE
AFT, ALE, EEL, LEE, TIE
Programación por RestriccionesClase 2-- p.15/16
Crucigrama (2)
Variables: x1 , ..., x8
Dominios: x7 ∈ {AF T, ALE, EEL, LEE, T IE}, etc.
Restricciones: Una por cruce:
C1,2 =
{(HOSES, SAILS), (HOSES, SHEET ), (HOSES, ST EER),
(LASER, SAILS), (LASER, SHEET ), (LASER, ST EER)}.
etc
Programación por RestriccionesClase 2-- p.16/16