Solución de Problemas con CCP restricción de...

38
Soluci ´ on de Problemas con CCP restricci ´ on de canal slides basados en el curso “constraint Programming” de Christian Schulte 2 Profesor: Camilo Rueda 1 1 Universidad Javeriana-Cali, 2 KTH Royal Institute of Technology, Sweden PUJ 2008

Transcript of Solución de Problemas con CCP restricción de...

Page 1: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Solucion de Problemas con CCPrestriccion de canal

slides basados en el curso “constraint Programming” deChristian Schulte 2

Profesor: Camilo Rueda 1

1Universidad Javeriana-Cali,2KTH Royal Institute of Technology, Sweden

PUJ 2008

Page 2: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Restriccion de canal: problema

Dada una baraja de 52 cartaspintas: espada, trebol, corazon, diamanteorden: As,2,3,4,5,6,7,8,9,10,J,Q,K

Repartir las cartas ası:poner el as de espadas en una sola pila (“hueco negro”)otras cartas: 17 pilas con tres cartas cada una

Movidatomar carta del tope de una de las 17 pilasmoverla al hueco negro, siempre y cuando la carta seaadyacente a la del tope del hueco negro

Page 3: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Juego del “hueco negro”

Adyacenteindependientemente de pintala siguiente mayor o menor (continua en ciclo)ejemplo: 9♣ ↔ 10♣, 9♣ ↔ 8♣, 9♥ ↔ 10♦, A♥ ↔ K♣

Objetivo:mover todas las cartas de las 17 pilas al hueco negro

Page 4: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelo: restricciones

A: las cartas deben estar adyacentes en la pila del hueconegro

asociar posicion en la pila con cartamodelar el hecho de ser adyacente

B: las cartas deben tomarse en orden de las 17 pilasasociar carta con posicion en la pila de hueco negromodelar que las posiciones estan oredenadasorden en la pila hueco negro: cartas movidas en orden delas 17 pilas

C: la primera carta en el hueco negro es el as de espadas.

Page 5: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Cartas adyacentes

numere las cartas de 0 a 51♠ : 0− 12,♣ : 13− 25,♥ : 26− 38,♦ : 39− 51

Adyacencia independiente de pinta: para la carta i ,considere i mod 13cartas i y j adyacentes

(i mod 13)− (j mod 13) = 1 ∨(i mod 13)− (j mod 13) = 12 ∨(j mod 13)− (i mod 13) = 1 ∨(j mod 13)− (i mod 13) = 12

Page 6: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelar adyacencia

Gecode no tiene restriccion para modulo...usar entonces element

Element: arreglo m de 52 elementosinicialice: m[i] = i mod 13el numero de la carta es el ındice en el arreglo, su modulo13 es el valor

Entonces: adyacente(i , j) es(i mod 13)− (j mod 13) ∈ {−12,−1, 1, 12}

crear variable d con dominio {−12,−1, 1, 12}la diferencia debe ser igual a d

Page 7: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelo: restriccion A

Variables: cartas es un arreglo de 52 variablesvalores: {0, ..., 51}asocia posicion en hueco negro con carta

Restriccion A: cartas en cada dos posiciones sucesivasdeben ser adyacentes

adyacente(carta[i], carta[i + 1]) para 0 ≤ i < 51Como modelar la restriccion B?

Page 8: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelo: restriccion B

Variables: pos es un arreglo de 52 variablesvalores: {0, ..., 51}asocia carta con posicion en hueco negro

Restriccion B: las posiciones deben estar en ordenpos[i] < pos[i + 1] para 0 ≤ i < 51

Como modelar la restriccion A?

Page 9: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelo: restricciones A y B

Tomar ambos: pos y carta: son duales por intercambiarvalores y variables

carta[i] = j ⇔ pos[j] = iIncluir:

Restriccion A sobre variables cartaRestriccion B sobre variables posRestriccion que liga valores de carta y pos: “channel”

Page 10: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelo: ajuste

Simetrıas: los colores son irrelevantesRamificacon: tratar de tomar cartas en el tope de cada pila

Page 11: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Restriccion “channel”

Suponga variables xi , yi (0 ≤ i < n)channel(xi , yi) se cumpe si

xi = j ⇔ yj = i (0 ≤ i < n)

Page 12: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Propagar “channel”

Metodo ingenuo: para un store ssi s(xi) = {j}, entonces s(yj) debe ser {i}si s(yi) = {j}, entonces s(xj) debe ser {i}

Mejor (metodo A): para un store ssi j 6∈ s(xi) entonces elimine i de s(yj)si j 6∈ s(yi) entonces elimine i de s(xj)

Existe algo mejor?

Page 13: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Propagar mejor “channel”

Observacion: para que channel(xi , yi) se cumpla,distinct(xi) y distinct(yj) deben cumplirse

sponga que xi1 = j y que tambien xi2 = j , donde i1 6= i2entonces yj = i1 y tambien yj = i2lo que es imposible...

Solo se necesita un distinctpropagar distinct sobre las xila propagacion del metodo A propagara distinct para yi

Page 14: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Prlaneamiento “scheduling”

A3 A5A4A2

S5S5

B5

S2S2

B2

M5

P1

A1

S3S3

B3

M2

A6

S1S1

B1 M3

P2

S6S6

B6

S4

T2

B4

S4

M1

M4

T1 T4

V1

M6

T5

V2

T3

Page 15: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Solucion de un problema de “scheduling”

Tiempo de arranque de cada tareaTodas las restricciones satisfechasTiempo de conclusion de tareas mınimo

Page 16: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

“scheduling”, modelo

Variable para tiempo de comienzo de tarea astart(a)

restriccion de precedencia: a antes que bstart(a) + dur(a) ≤ start(b)

Page 17: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Procedimiento de propagacion

a antes que b

a

b

start(a) ∈ {0, ..., 7}start(b) ∈ {0, ..., 5}

Page 18: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Procedimiento de propagacion

a antes que b

a

b

a

b

start(a) ∈ {0, ..., 7} start(a) ∈ {0, 1, 2}start(b) ∈ {0, ..., 5} start(b) ∈ {3, 4, 5}

Page 19: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

“scheduling”, modelo

Variable para tiempo de comienzo de tarea astart(a)

restriccion de precedencia: a antes que bstart(a) + dur(a) ≤ start(b)

Restriccion de recursosa antes que b, start(a) + dur(a) ≤ start(b)

ob antes que a, start(b) + dur(b) ≤ start(a)

Page 20: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Ramificacion

Establecer orden sobre las tareasque recurso escoger: el mas escaso?que tarea escoger primero: por ejemplo la mas larga

Page 21: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Modelo demasiado ingenuo

Vision muy localpares individuales de tareasO(n2) propagadores para n tareas

ision globaltodas las tareas sobre un recurso: serializar, ordenarun solo propagadorhay buenos algoritmos

Page 22: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Clases de problemas

Por tipo de recursoa lo sumo una tarea al tiempo: disyuntivomenos que la capacidad: acumulativo

Por tipos de tareasNo interruptiblesinterruptiblesestirables: elastico

veremos: disyuntivo, no interruptible

Page 23: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Serializacion

Considerar todas las tareas sobre el mismo recursoDeducir su orden tanto como sea posiblemenos que la capacidad: acumulativoTecnicas

Tempotabulacion: mirar slots temporales usados/libresbusqueda de arcos: que tarea ejecuta primero/ultimo?no-primera, no-ultima: que tareas no pueden serprimera/ultima?

Page 24: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Propagacion de tempotabulacion

Horario para recursoRegistrar informacion sobre tiempo en el que una tarea usacon seguridad el recurso

Propagar en ambas direccionesde tareas a horariosde horarios a tareas

Page 25: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Ejemplo

A

B

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {0, 1, 2} dur(B) = 2

Page 26: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia horario...

A

B

Horario

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {0, 1, 2} dur(B) = 2

Page 27: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia horario...

A

B

Horario

o

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {0, 1, 2} dur(B) = 2

Page 28: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia horario...

A

B

Horario

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {0, 1, 2} dur(B) = 2

Page 29: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia tareas...

Horario

A

B

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {2} dur(B) = 2

Page 30: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia horario...

Horario

A

B

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {2} dur(B) = 2

Page 31: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia tareas...

Horario

A

B

start(A) ∈ {0} dur(A) = 2start(B) ∈ {2} dur(B) = 2

Page 32: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Hacia horario...(inutil)

Horario

A

B

start(A) ∈ {0, 1} dur(A) = 2start(B) ∈ {2} dur(B) = 2

Page 33: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Busqueda de arcos

tempotabulacion es debilpropagacion reificada es mejor...

Pero hay idea importantetener en cuenta cuando se usa un recursopropagar esto hacia las tareas

Busqueda de arcos es un esquema mas general parapropagar el orden (arcos) entre tareas

Page 34: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Busqueda de arcos: idea

Asumir un subconjunto O de tareas y T ∈ Orestringir T para que ejecute primeroaverigue si las tareas en O\{T}

deben,pueden, o no puedenejecutar de primero o de ultimo

de manera simetrica para ultima

Puede hacerse en O(n2) para n tareas

Page 35: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Ejemplo

!! start(A) ! {0,…,11} dur(A) = 6

!! start(B) ! {1,…,7} dur(B) = 4

!! start(C) ! {1,…,8} dur(C) = 3

A

B

C

Page 36: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Ejemplo

A

{B,C}

Considere {B, C}A no puede ir antes que {B, C}

Page 37: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Ejemplo

A

{B,C}

Considere {B, C}A no puede ir antes que {B, C}propague que A va despues de {B.C}

Page 38: Solución de Problemas con CCP restricción de canalcic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:ccp:channel.pdf · S3 B3 M2 A6 S1 B1 M3 P2 S6 B6 S4 T2 B4 M1 M4 T1 T4 V1 M6

Ejemplo

A

B

C

Resultado de la propagacionstart(A) ∈ {8, ..., 11}tempotabulacion y reificacion no propagarıan nada!