1 programação por restrições mestrado / licenciatura em engenharia informática pedro barahona...

100
1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

1

Programação por Restrições

Mestrado / Licenciatura em

Engenharia Informática

Pedro Barahona

2005/06

Page 2: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

2

Restrições - O que são

• Intuitivamente são limitações aos possíveis valores que as variáveis de um problema podem tomar dentro de um certo domínio.

• Um problema de satisfação de restrições pode ser especificado por um tuplo < V, D, R > em que

– V: é o conjunto de variáveis usadas na modelação do problema

– D: é o domínio(s) em que as variáveis de V podem tomar valores

– R: é o conjunto de restrições que afectam as variáveis V

Page 3: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

3

Restrições - Exemplos• Planeamento de testes em circuitos digitais

– Para detecção de avarias

– Para distinção de avarias

• Gestão de Tráfego em Redes

• Gestão da Produção

• Sequenciação de Tarefas (Scheduling)

• Geração de Horários

• Caixeiro Viajante

– Simples ou Múltiplo

• “Colocação” ou “preenchimento”

– 2D: corte de peças (tecido, tábuas, etc...)

– 3D: prenchimento de contentores

Page 4: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

4

Restrições - Circuitos digitais• Planeamento de testes para detecção de avarias

• Objectivo:

– Determinar um padrão de entrada que permita detectar se uma “gate” está avariada.

• Variáveis:

– modelam o valor do nível eléctrico (high/low) nos vários “fios” do circuito

• Domínio:

– Booleanos: 0/1.

• Restrições:

– Restrições de igualdade entre o sinal de saída e o esperado pelo funcionamento das “gates”

Page 5: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

5

Restrições - Circuitos digitaisA

C

D

B

E

F

G

H

I

G1

G2

G3

G4

G5

• E = A+B+A·B % E = or(A,B) • F = 1+ B·C % F = nand(B,C) • G = C·D % G = nand(B,C) • H = 1+E·F % H = nand(E,F)

• I = 1+F·G % H = nand(E,F)

Page 6: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

6

Restrições - Gestão de Produção

• Determinação de quantidades ideais de items a produzir

• Objectivo: – Determinar a quantidade de items que deve compor um

plano de produção

• Variáveis: – Modelam o número de exemplares de cada preduto

• Domínio: – Inteiros / Reais não negativos.

• Restrições: – Limites dos recursos existentes, – Quantidades mínimas a produzir– Custos a não exceder

Page 7: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

7

Restrições - Gestão de Produção

• Limites dos recursos existentes

– Só está dísponível uma quantidade Ri “unidades” do recurso i

ai1 X1 + ai2X2 + ai3X3 + .... ≤ Ri

em que

• aij é a quantidade do recurso i necessário para produzir uma unidade do produto j

• Xj é a quantidade do produto j produzida

• Restrições sobre o plano produzido

– Objectivos mínimos de produção

X1 + X2 ≥ 50

– Equilíbrio na produção

| X4 - X5 | < 20

Page 8: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

8

Restrições - Gestão de Redes

• Determinação do tráfego em redes de telecomunicações (ou de transporte de água).

• Objectivo:

– Determinar a quantidade de informação que flui em cada um dos troços de uma rede de comunicações

• Variáveis:

– Modelam o fluxo num troço

• Domínio:

– Reais não negativos.

• Restrições:

– Limites de capacidade dos troços,

– Manutenção de informação nos vários nós

Page 9: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

9

Restrições - Gestão de Redes

• Denotando por Xij o fluxo (bits, carros, m3 de água, corrente eléctrica, ...) entre os nós i e j

– Restrições de Capacidade

Xab ≤ 15

– Restrições de manutenção de informação

Xab+Xdb = Xbc

A

B

C

E

G

FZ

H

D

I4

2315

Page 10: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

10

Restrições - Escalonamento de Tarefas

J 1

J 2

J 3

J 4

1 2 3

1 2 3

1 2 3

1 2 3

Job-Shop

• Denotando por Sij / Dij / Dij o início / duração / máquina da tarefa (task) i do trabalho (job) j:

– Precedência entre tarefas do mesmo trabalho

Sij + Dij ≤ Skj para i < k

– Não sobreposição de tarefas na mesma máquina

(Mij ≠ Mkl) (Sij + Dij ≤ Skl) (Skl + Dkl ≤ Jij)

Page 11: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

11

Restrições - Horários

• Determinação de horários (p. ex. escolares) para planos de produção

• Objectivo:

– Determinar o início das várias aulas de dum horário

• Variáveis:

– Modelam o início da aula, e eventualmente a sala, o professor, etc...

• Domínio:

– Finitos para os professores

– Finitos (horas certas) para os tempos

• Restrições:

– Não sobreposição de aulas na mesma sala ,

– nem com o mesmo professor,

– etc...,

Page 12: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

12

Restrições - Caixeiro Viajante

• Determinação de percursos (frotas de carros, empresas de distribuição)

• Objectivo:

– Determinar o “melhor” caminho para ser seguido pelos veículos de uma empresa de distribuição

• Variáveis:

– Ordem em que uma localidade é atingida

• Domínio:

– Finitos (localidades existentes)

• Restrições:

– Não repetir localidades,

– Garantir ciclos,

– Não existência de sub-ciclos

Page 13: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

13

Restrições - Caixeiro Viajante

• Denotando por Vi a ordem em que a localidade i é visitada, e cij o custo/distância do caminho directo de i a j

– Garantir que o caminho existe

|Vi – Vj| = 1 cij < M

– Garantir ciclos

Vj ≠ Vj

– Não existência de sub-ciclos

???

A

B

C

E

G

FZ

H

D

I4

231534

Page 14: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

14

Restrições - Colocação• Colocar componentes sem sobreposição

• Objectivo:

– Determinar formas de conseguir colocar componentes num dado espaço

• Variáveis:

– Coordenadas dos elementos

• Domínio:

– Reais / Finitos (grelha)

• Restrições:

– Não sobrepôr componentes

– não ultrapassar os limites do “contentor

Page 15: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

15

Restrições - Colocação

• Denotando por Xk / Yk as coordenadas do canto “inferior esquerdo” da peça k, e por Lxk / Lyk as dimensões dessa peça – Não ultrapassar os limites do “contentor

Xk+Lxk ≤ Xmax Yk+Lyk ≤ Ymax

– Não sobrepôr componentes

(Xi+Lxi) ≤ Xj % i à esquerda de j

(Xj+Lxj ≤ Xi) % i à direita de j

(Yi+Lyi) ≤ Yj % i à frente de j

(Yj+Lyj ≤ Yi) % i atrás de j

D

G

I

BCA

JH

E

FK

Page 16: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

16

Restrições - Satisfação ou Optimização

• Em certos (muitos) casos o que se pretende determinar não é uma solução qualquer, mas sim a melhor solução.

• Neste caso, o problema é mais adequadamente descrito como um problema de optimização com restrições.

• Um problema de optimização com restrições pode ser especificado por um tuplo < V, D, R, F > em que– V: é o conjunto de variáveis usadas na modelação do

problema– D: é o domínio(s) em que as variáveis de V podem tomar

valores– R: é o conjunto de restrições que afectam as variáveis V

– F: é uma função das soluções para um domínio ordenado

Page 17: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

17

Optimização com Restrições - Exemplos

• Planeamento de testes em circuitos digitais

– Teste com menos entradas especificadas

• Gestão de Tráfego em Redes

– Tráfego com menor custo

– Máximo tráfego com um dado custo

• Gestão da Produção

– Plano com maior lucro

– Máxima produção com os recursos existentes

• Sequenciação de Tarefas (Scheduling)

– Solução com o fim mais cedo

– Ocupação máxima das máquinas existentes

Page 18: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

18

Optimização com Restrições - Exemplos

• Geração de Horários

– Solução com menos furos

– Solução com menos teóricas de tarde

• Caixeiro Viajante

– Solução com menor distância percorrida

• “Colocação” ou “preenchimento”

– Colocação do máximo número de peças

Page 19: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

19

Restrições + Optimização - Caixeiro Viajante

• Com as definições anteriores e denotando por dij a distância efectivamente percorrida entre os nós i e j,

– Definição da distância percorrida

|Vi – Vj| = 1 cij < M

|Vi – Vj| = 1 dij = cij

Vi – Vj| > 1 dij = 0

– Optimizaçãomin Σi Σj dij

A

B

C

E

G

FZ

H

D

I4

231534

Page 20: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

20

Restrições - Complexidade• A maior dificuldade em resolver os problemas de restrições reside na sua

complexidade exponencial.

• Domínio Booleano

– Número de variáveis: n

– Dimensão do Domínio: 2

– Número de soluções potenciais: 2n

• Domínios Finitos

– Número de variáveis: n

– Dimensão do Domínio: k

– Número de soluções potenciais: kn

• Domínios Racionais / Reais

– Em teoria infinitas soluções potenciais

– Na prática, número finito, limitado à precisão utilizada

– Métodos diferentes dos domínios finitos

Page 21: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

21

Complexidade Exponencial

• Para perspectivar ...

• Assumindo-se que uma operação elementar tem uma duração de 1 μs, o tempo de pesquisa exaustiva das kn possíveis soluções será da ordem de

K \ n 10 20 30 40 50 60

2 1 mseg 1 seg 18 min 12.7 dias 35.7 anos 365 séculos

3 50 mseg 1 hora 6.5 anos 3855 séculos

4 1 seg 12.6 dias 365 séculos

5 9.8 seg 1103 dias 295 Kséculos

6 1 min 116 anos

Page 22: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

22

Restrições - Complexidade

• Os problemas de interesse de satisfação de restrições são geralmente NP – completos:

– Descoberta de solução: complexidade exponencial (pior caso)

– Verificação de solução: complexidade polinomial

• Já os problemas optimização de restrições são geralmente NP – difíceis:

– Descoberta de solução: complexidade exponencial (pior caso)

– Verificação de solução: complexidade exponencial

• Analogia com SAT

Problema SAT

Page 23: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

23

Restrições - Métodos de Resolução

• Resolução Simbólica /Algébrica– Domínios Herbrand – Unificação – Booleanos – Unificação Booleana– Programação Linear Inteira (Simplex)

• Retrocesso– Percorre todo o espaço de pesquisa

• Complexidade kn

– Redução do espaço de pesquisa• Propagação de restrições• Cortes - Programação inteira• Complexidade kr

n (kr < k)

• Pesquisa Local

– Método incompleto

– Metaheurísticas – óptimos locais

Page 24: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

24

Retrocesso

Testes 0 Retrocessos 0

Page 25: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

25

Retrocesso

Testes 0 + 1 = 1 Retrocessos 0

Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1.

Page 26: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

26

Retrocesso

Testes 1 + 1 = 2 Retrocessos 0

Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1.

Page 27: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

27

Retrocesso

Testes 2 + 1 = 3 Retrocessos 0

Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1.

Page 28: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

28

Retrocesso

Testes 3 + 1 = 4 Retrocessos 0

Page 29: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

29

Retrocesso

Testes 4 + 2 = 6 Retrocessos 0

Page 30: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

30

Retrocesso

Testes 6 + 1 = 7 Retrocessos 0

Page 31: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

31

Retrocesso

Testes 7 + 2 = 9 Retrocessos 0

Page 32: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

32

Retrocesso

Testes 9 + 2 = 11 Retrocessos 0

Page 33: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

33

Retrocesso

Testes 11 + 1 + 3 = 15 Retrocessos 0

Page 34: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

34

Retrocesso

Testes 15 + 1 + 4 + 2 + 4 = 26 Retrocessos 0

Page 35: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

35

Retrocesso

Testes 26 + 1 = 27 Retrocessos 0

Page 36: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

36

Retrocesso

Testes 27 + 3 = 30 Retrocessos 0

Page 37: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

37

Retrocesso

Testes 30 + 2 = 32 Retrocessos 0

Page 38: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

38

Retrocesso

Testes 32 + 4 = 36 Retrocessos 0

Page 39: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

39

Retrocesso

Testes 36 + 3 = 39 Retrocessos 0

Page 40: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

40

Retrocesso

Testes 39 + 1 = 40 Retrocessos 0

Page 41: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

41

Retrocesso

Testes 40 + 2 = 42 Retrocessos 0

Page 42: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

42

Retrocesso

Testes 42 + 3 = 45 Retrocessos 0

Page 43: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

43

Retrocesso

Testes 45 Retrocessos 0

Falha

6

Retrocede

5

Page 44: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

44

Retrocesso

Testes 45 Retrocessos 1

Page 45: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

45

Retrocesso

Testes 45 + 1 = 46 Retrocessos 1

Page 46: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

46

Retrocesso

Testes 46 + 2 = 48 Retrocessos 1

Page 47: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

47

Retrocesso

Testes 48 + 3 = 51 Retrocessos 1

Page 48: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

48

Retrocesso

Testes 51 + 4 = 55 Retrocessos 1

Page 49: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

49

Retrocesso

Testes 55+1+3+2+4+3+1+2+3 = 74 Retrocessos 1

Falha

6

Retrocede

5 e 4

Page 50: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

50

Retrocesso

Testes 74+2+1+2+3+3= 85 Retrocessos 1+2 = 3

Page 51: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

51

Retrocesso

Testes 85 + 1 + 4 = 90 Retrocessos 3

Page 52: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

52

Retrocesso

Testes 90 +1+3+2+5 = 101 Retrocessos 3

Page 53: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

53

Retrocesso

Testes 101+1+5+2+4+3+6= 122 Retrocessos 3

Page 54: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

54

Retrocesso

Testes 122+1+5+2+6+3+6+4+1= 150 Retrocessos 3+1=4

Falha

8

Retrocede

7

Page 55: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

55

Retrocesso

Testes 150+1+2= 153 Retrocessos 4+1=5

Falha

7

Retrocede

6

Page 56: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

56

Retrocesso

Testes 153+3+1+2+3= 162 Retrocessos 5+1=6

Falha

6

Retrocede

5

Page 57: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

57

Retrocesso

Testes 162+2+4= 168 Retrocessos 6+1=7

Page 58: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

58

Retrocesso

Testes 168+1+3+2+5+3+1+2+3= 188 Retrocessos 7

Falha

6

Retrocede

5

Page 59: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

59

Retrocesso

Testes 188+1+2+3+4= 198 Retrocessos 7+1=8

Falha

5

Retrocede

4

Page 60: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

60

Retrocesso

Testes 198 + 3 = 201 Retrocessos 8+1=9

Page 61: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

61

Retrocesso

Testes 201+1+4 = 206 Retrocessos 9

Page 62: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

62

Retrocesso

Testes 206+1+3+2+5 = 217 Retrocessos 9

Page 63: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

63

Retrocesso

Testes 217+1+5+2+5+3+6 = 239 Retrocessos 9

Page 64: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

64

Retrocesso

Testes 239+1+5+2+4+3+6+7+7= 274 Retrocessos 9+1=10

Falha

8

Retrocede

7

Page 65: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

65

Retrocesso

Testes 274+1+2= 277 Retrocessos 10+1=11

Falha

7

Retrocede

6

Page 66: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

66

Retrocesso

Testes 277+3+1+2+3= 286 Retrocessos 11+1=12

Falha

6

Retrocede

5

Page 67: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

67

Retrocesso

Testes 286+2+4= 292 Retrocessos 12

Page 68: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

68

Retrocesso

Testes 292+1+3+2+5+3+1+2+3= 312 Retrocessos 12+1=13

Falha

6

Retrocede

5

Page 69: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

69

Retrocesso

Testes 312+1+2+3+4= 322 Retrocessos 13+2=15

Falha

5

Retrocede

4 e 3

Page 70: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

70

Retrocesso

Testes 322 + 2 = 324 Retrocessos 15

X1=1

X2=3

X3=5

Impossível

Page 71: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

71

Propagação

Testes 0 Retrocessos 0

Page 72: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

72

Propagação

1 1

1

1

1

1

11

1

1

1

1

1

1

Testes 8 * 7 = 56 Retrocessos 0

Q1 #\= Q2, L1+Q1 #\= L2+Q2, L1+Q2 #\= L2+Q1.

Page 73: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

73

Propagação

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

Testes 56 + 6 * 6 = 92 Retrocessos 0

Page 74: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

74

Propagação

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

Testes 92 + 4 * 5 = 112 Retrocessos 0

Page 75: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

75

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

Testes 92 + 4 * 5 = 112 Retrocessos 0

X6 só pode tomar o valor 4

Page 76: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

76

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

6

6

6 6

Testes 112+3+3+3+4 = 125 Retrocessos 0

Page 77: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

77

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

Testes 125 Retrocessos 0

X8 só pode tomar o valor 7

Page 78: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

78

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

Testes 125 Retrocessos 0

Page 79: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

79

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

Testes 125+2+2+2=131 Retrocessos 0

Page 80: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

80

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

Testes 131 Retrocessos 0

X4 só pode tomar o valor 8

Page 81: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

81

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

Testes 131 Retrocessos 0

Page 82: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

82

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

4

Testes 131+2+2=135 Retrocessos 0

Page 83: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

83

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

4

Testes 135 Retrocessos 0

X5 só pode tomar o valor 2

Page 84: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

84

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

4

Testes 135 Retrocessos 0

Page 85: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

85

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

4

5

Testes 135+1=136 Retrocessos 0

Page 86: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

86

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

4

5

Testes 136 Retrocessos 0

Page 87: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

87

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

33

6

6

2

6

6 6

8

8

4

5

Testes 136 Retrocessos 0+1=1

Falha

7

Retrocede

3 !

Page 88: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

88

Propagação 2

1 1

1

1

1

1

11

1

1

1

1

1

12

2

2

2

2

2

2

2

2

2

2

3

33

3

3

3

3

3

Testes 136 Retrocessos 1

3

X1=1

X2=3

X3=5

Impossível

Testes

136

(324)

Retrocessos

1

(15)

Page 89: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

89

Restrições - Métodos de Resolução

• Pesquisa Local

– Reparação de “soluções”

– Optimização

– Método incompleto

• Métodos Mistos

Page 90: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

90

Pesquisa Local - Reparação

4

7

1

6

3

5

8

2

Solução

Permutação

Vizinhança

Troca

Page 91: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

91

Pesquisa Local - Reparação

2 Ataques

3 - 5

4 - 8

4

7

1

6

3

5

8

2

Page 92: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

92

Pesquisa Local - Reparação

4

7

1 2

6

3

5

8

2 1

2 Ataques

3 - 5

4 - 8

Page 93: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

93

Pesquisa Local - Reparação

4

7

2

6

3

5

8

1

3 Ataques

1 - 3

2 - 8

3 - 6

Page 94: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

94

Pesquisa Local - Reparação

4 1

7

2

6

3

5

8

1 4

3 Ataques

1 - 3

2 - 8

3 - 6

Page 95: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

95

Pesquisa Local - Reparação

1 Ataque

3 - 6

1

7

2

6

3

5

8

4

Page 96: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

96

Pesquisa Local - Reparação

1

7

2 8

6

3

5

8 2

4

1 Ataque

3 - 6

Page 97: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

97

Pesquisa Local - Reparação

1

7

8

6

3

5

2

4

3 Ataques

2 - 3

2 - 7

3 - 6

Page 98: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

98

Pesquisa Local - Reparação

1

7 5

8

6

3

5 7

2

4

3 Ataques

2 - 3

2 - 7

3 - 6

Page 99: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

99

Pesquisa Local - Reparação

0 Ataques

1

5

8

6

3

7

2

4

Page 100: 1 Programação por Restrições Mestrado / Licenciatura em Engenharia Informática Pedro Barahona 2005/06

100

Programação por Restrições

• Foco na propagação de restrições associada ao retrocesso

• Extensão ao Prolog

– Constraint Logic Programming

– CHIP, ECLIPSE, SICStus

• Outras possibilidades

– Packages de filtragem

– ILOG, CHIP

• Página da cadeira ssdi.di.fct.unl.pt/~pr

– Diapositivos e sumários das aulas

– Software (download, documentação)

– Problemas propostos

– Bibliografia aconselhada

– Regras de Avaliação

– Anúncios, ...