1 / 38

Relajación y Procesamiento híbrido de restricciones

Relajación y Procesamiento híbrido de restricciones. Diferentes técnicas de relajación Algunas técnicas híbridas populares. Relajación. Consistencia de nodo Forward check Lookahead check AC1 AC3 Path-consistency. Ejemplo. El enigma de las 4 casas:.

giulio
Download Presentation

Relajación y Procesamiento híbrido de restricciones

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Relajación y Procesamiento híbrido de restricciones Diferentes técnicas de relajación Algunas técnicas híbridas populares

  2. Relajación Consistencia de nodo Forward check Lookahead check AC1 AC3 Path-consistency

  3. Ejemplo • El enigma de las 4 casas: • 4 familias A, B, C y D viven unas junto a otras en casas numeradas 1, 2, 3 y 4. • Dvive en una casa con número más bajo queB, • Bvive al lado deAen una casa con número mayor, • Hay al menos una casa entreByC, • Dno vive en la casa con número2, • Cno vive en la casa con número4. • ¿Cuál familia vive en cuál casa ?

  4. Representación: • Las variables: A, B, C y D • Los dominios: dA = dB = dC = dD = { 1, 2, 3, 4} • Restricciones: • unaria: • r(C) =C 4 • r(D) =D 2 • binaria: • r(A,B) =B=A + 1 • r(A,C) =A  C • r(B,D) =DB • r(A,D) = A  D • r(B,C) = |B-C|  1 • r(C,D) = C  D

  5. dC = { 1, 2, 3} dD = { 1, 3, 4} Consistencia de nodos: • O: consistencia-1 • (solo 1 variable involucrada) • Las restricciones unarias son eliminadas por reducción del dominio: • r(C) =C 4 • r(D) =D 2

  6. { 1, 2, 3, 4} { 1, 2, 3, 4} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} Red de restricciones:

  7. Relajación débil Forward Check Lookahead Check

  8. { 1, 2, 3, 4} {2} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} Forward Check: • Asuma que fijamos el valor de 1 variable zi: zi = a • Forward Check(zi) = • activar cada restricción r(zi, zj) o r(zj, zi) una vez para remover los valores inconsistentes con zi = a • Nuestro ejemplo: asumir A = 2 :

  9. { 1, 2, 3, 4} {2} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} Forward check: consistencia débil • Requiere que 1 variable ya haya obtenido un valor • sugiere el uso en combinación con backtracking • No produce un estado consistente • no se realiza toda la relajación

  10. Look ahead check Método de relajación más fuerte (débil)

  11. { 1, 2, 3, 4} { 1, 2, 3, 4} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} Look ahead Check: • Look Ahead Check = • activar cada restricción r(zi, zj) exactamente una vez para remover los valores inconsistentes de los dominios Di y Dj. • Nuestro ejemplo:

  12. { 2, 3, 4} { 1, 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} Ejemplo (continuac.): • Las otras 3 restricciones:

  13. { 3, 4} { 1, 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2} { 1, 3} Look ahead: resultados finales: • Aun no produce un estado consistente • no se realiza toda la relajación • El resultado puede depender del orden en el cual se procesan las restricciones. • La remoción de algunos valores inicialmente puede permitir hallar otros inconsistentes.

  14. Técnicas de consistencia de arco Técnicas que reducen los dominios a estados consistentes para cada restricción (o arco). También llamadas: técnicas consistencia-2

  15. AC 1 (Mackworth) AC1: Repeat Ocurrió_borrado:= falso ; Look ahead check; If algún valor fue removido de algún dominio then Ocurrió_borrado:= verdad Until(notOcurrió_borrado) • Fuerza a que Look ahead alcance un estado consistente • por reactivación de Look ahead hasta consistencia

  16. { 3, 4} { 1, 2, 3, 4} { 1, 2, 3, 4} { 1, 2, 3} B=A + 1 B=A + 1 A B A B A  D A  D A  C A  C DB DB |B-C|  1 |B-C|  1 C D C D C  D C  D { 1, 2} { 1, 2, 3} { 1, 3} { 1, 3, 4} El ejemplo (1): • Primera pasada (== Look ahead check): • Ocurrió_borrado:= verdad

  17. { 3, 4} { 3, 4} { 1, 2, 3} { 2, 3} B=A + 1 B=A + 1 A A B B A  D A  D A  C A  C DB DB |B-C|  1 |B-C|  1 C C D D C  D C  D { 1, 2} { 1, 2} { 1, 3} { 1, 3} El ejemplo (2): • Segunda pasada: • Ocurrió_borrado:= verdad

  18. { 3, 4} { 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2} { 1, 3} El ejemplo (3): • Tercera pasada: • Ocurrió_borrado:= falso • Resultado: A (2 o 3) , B (3 o 4), C (1 o 2), D (1 o 3) • Consistente, pero ¡¡ NO REALMENTE UNA SOLUCIÓN !!

  19. Whilenot vacia(COLA) DO If algún valor fué removido de Dx (o Dy) thenagregar todas las otras restricciones que involucran x (o y) a COLA; AC-3 (Mackworth)Consistencia de arco más eficiente: AC3: COLA:= {todas las restricciones en el problema} Remover r(x,y) de COLA; Remover todos los valores inconsistentes de los dominios Dx y Dy con respecto a r(x,y); End-While

  20. { 1, 2, 3, 4} { 1, 2, 3, 4} B=A + 1 A B A  D A  C DB |B-C|  1 Todo ya enCOLA ! C D C  D { 1, 2, 3} { 1, 3, 4} El ejemplo (1): • COLA = {r(A,B), r(A,C), r(A,D), r(B,C), r(B,D), r(C,D)}: • Para agregar: r(A,C), r(A,D), r(B,C), r(B,D) • COLA = {r(A,C), r(A,D), r(B,C), r(B,D), r(C,D)}

  21. { 2, 3, 4} { 1, 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} El ejemplo (2): • COLA = {r(A,C), r(A,D), r(B,C), r(B,D), r(C,D)}: • COLA = {r(B,C), r(B,D), r(C,D)}

  22. { 2, 3, 4} { 1, 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} El ejemplo (3): • COLA = {r(B,C), r(B,D), r(C,D)}: • Para agregar: r(A,B), r(A,C), r(B,D), r(C,D) • COLA = {r(B,D), r(C,D), r(A,B), r(A,C)}

  23. { 3, 4} { 1, 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2} { 1, 3, 4} El ejemplo (4): • COLA = {r(B,D), r(C,D), r(A,B), r(A,C)}: • Para agregar: r(A,D), r(C,D) • COLA = {r(C,D), r(A,B), r(A,C), r(A,D)}

  24. { 3, 4} { 1, 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2} { 1, 3} El ejemplo (5): • COLA = {r(C,D), r(A,B), r(A,C), r(A,D)}: • Para agregar: r(A,C), r(A,D) • COLA = {r(A,C), r(A,D)}

  25. { 3, 4} { 2, 3} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2} { 1, 3} El ejemplo (6): • COLA = {r(A,C), r(A,D)}: • COLA = vacía ¡ PARAR !

  26. Comparación: • Igual resultado: completa consistencia de arco: • A = {2,3}, B = {3,4}, C= {1,2}, D = {1,3} • Eficiencia: • AC1: • 3 veces 6 verificaciones = 18 • AC3: • 9 verificacíones de restricciones

  27. { 1, 2, 3, 4} { 1, 2, 3, 4} B=A + 1 A B A  D A  C DB |B-C|  1 C D C  D { 1, 2, 3} { 1, 3, 4} Consistencia-k: • consistencia-1 (consistencia de nodo): • restricciones unarias (en 1 variable) son consistentes • consistencia-2 (consistencia de arco): • restricciones binarias (en 2 variables) son consistentes • consistencia-3: • todas las restricc. que involucran 3 variables son consist. Ejemplo: • Un valor se mantiene en el dominio si hay valores consistentes en los dominios de las otras 2 variables (para todas las restricciones que las conectan)

  28. Practicidad de la consistencia k: • Verificar la consistencia-k para k  2 es muy dificil de realizar eficientemente !! • Ejemplo: consistencia-4 para el enigma de las 4 casas es equivalente a hallar soluciones del problema original.

  29. Procesamiento híbrido de restricciones Combina el poder de la búsqueda exhaustiva (backtrack) con (relajación) poda

  30. Forward checking Backtracking combinado con Forward Check

  31. Forward checking: Forward Checking: ExecuteStandard Backtracking BUT After cada asignación de un valor a una variable ziDO Forward Check(zi)

  32. A 1 3 2 {3} {2} {1} {1,2,3,4} {1,2,3,4} {1,2,3,4} B=A+1 B=A+1 A A A B B B AC AC B=A+1 AD AD AC AD C C C D D D {1,3,4} {1,3,4} {1,3,4} {1,2,3} {1,2,3} {1,2,3} B B B 3 4 2 {2} {3} A B |B-C|1 D B C D {3} {1} {2} {4} {1,3,4} {1,3} A A B B |B-C|1 |B-C|1 C C 1 2 D B D B C C D D 1 {1,4} {3,4} {2,3} {1,2} {3} {3} {4} {4} {4} {3} A B A A B B CD CD CD D C {1} {1} D D C C {2} {1} {1} {1} Funcionamiento de forward checking falla falla falla exito

  33. Lookahead checking Backtracking combinado con Look ahead check

  34. After cada asignación de un valor a alguna variable DO Lookahead checking: Lookahead Checking: Look Ahead Check ; ExecuteStandard Backtracking BUT Look Ahead Check

  35. {1,2,3,4} {1,2,3,4} B=A+1 A B AC AD D B |B-C|1 {3} {3,4} C CD D B=A+1 {1,2,3} {1,3,4} A B AC AD D B A |B-C|1 1 3 C CD D {1,2} {1,3} {1} {3,4} 2 B=A+1 B A B 4 C D {3} {4} A B |B-C|1 {1,3} {1,2} D B C CD D {2} {1} C {2} {3,4} 2 B=A+1 A B AC {3} {4} AD D B A B |B-C|1 C CD D {1,2} {1,3} C CD D {2} {1} Funcionamiento de lookahead checking falla falla exito

  36. ¿Cuál es mejor? • Forward checking: • hace menos verificación de consistencia • tiene mas ramificación • más cercano a backtracking • Lookahead checking: • lleva más tiempo con consistencia • intenta menos valor alternativos • Usualmente: forward checking es la mejor solución de compromiso • Para problemas MUY restringidos: • Lookahead checking es necesario para podar más

  37. Aplicaciones: • Todos los problemas de búsqueda combinatorios • Problemas de distribución de tareas: • Ej.: redistribución de horario de trenes cuando ha ocurrido algun problema en las vías. • Problemas de distribución de trabajos: • Ej.: computar turnos de trabajo, dadas varias res- tricciones de expertise y preferencias personales • Planeamiento de producción: • Ej.: planificar el flujo óptimo de trabajo • Problemas de carga: • Ej.: optimizar el espacio en un camión dados varios tipos de cargas

  38. 4*X - 3*Y  Z + 2 ¡ SI ! X3 - 3*Y  Z2 + 2 ¡ NO ! Técnicas alternativas • Programación lineal • técnicas numéricas para la resolución de sistemas de ecuaciones lineales (e inecuaciones) + problemas de optimización • Ej.: algoritmo simplex • Funciona MUY bien para restricciones ‘lineales’ • Funciona, pero no MUY bien, para problemas discretos • En tales casos: Procesam. de Restricc. es una mejor opción • También: para problemas de restricciones en datos no-numericos !

More Related