Programação por Restrições Pedro Barahona

100
1 Programação por Restrições Pedro Barahona

description

Programação por Restrições Pedro Barahona. 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 - PowerPoint PPT Presentation

Transcript of Programação por Restrições Pedro Barahona

Page 1: Programação por Restrições Pedro Barahona

1

Programação por Restrições

Pedro Barahona

Page 2: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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 Multiplo

• “Colocação” ou “preenchimento”– 2D: corte de peças (tecido, tábuas, etc...)– 3D: prenchimento de contentores

Page 4: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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,

restrições sobre o plano produzido

Page 7: Programação por Restrições Pedro Barahona

7

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

Limites dos recursos existentes

a1j X1 + a2jX2 + a3jX3 + .... ≤ Ri

Restrições sobre o plano produzido

X1 + X2 ≥ X3

X4 = X5

Page 8: Programação por Restrições Pedro Barahona

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,

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

Page 9: Programação por Restrições Pedro Barahona

9

Restrições - Gestão de Redes

• Restrições de Capacidade Xab ≤ 15

• Restrições de não perda de informaçãoXab+Xdb = Xbc

A

B

C

E

G

FZ

H

D

I4

2315

Page 10: Programação por Restrições Pedro Barahona

10

Restrições - Escalonamento de Tarefas

• Precedência entre tarefasJ11 + D11 ≤ J12

• Não sobreposição de tarefasMi ≠ Mj Jij + Dij ≤ Jkl Jkl + Dkl ≤ Jij

J 1

J 2

J 3

J 4

1 2 3

1 2 3

1 2 3

1 2 3

Page 11: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

13

Restrições - Caixeiro Viajante

• ordem em que uma localidade é atingidaV1 = a, V2 = d, V3 = b, ...

• garantir ciclosVj ≠ Vj

• não existência de sub-ciclos???

A

B

C

E

G

FZ

H

D

I4

231534

Page 14: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

15

Restrições - Colocação

• Não ultrapassar os limites do “contentor

Xa+Lxa ≤ Xmax

• Não sobrepôr componentes

Xa+Lxa ≤ Xb Xb+Lyb ≤ Xa

Ya+Lya ≤ Yb Yb+Lyb ≤ Ya

D

G

I

BCA

JH

E

FK

Page 16: Programação por Restrições Pedro Barahona

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

• Um problema de optimização com restrições pode ser especificado por um tuplo < V, D, R, F > em que– V, D, R como antes– F: é uma função das soluções para

um domínio ordenado

Page 17: Programação por Restrições Pedro Barahona

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

• Gestão da Produção– Plano com maior lucro

• Sequenciação de Tarefas (Scheduling)– Solução com o fim mais cedo

Page 18: Programação por Restrições Pedro Barahona

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 maior número de peças

Page 19: Programação por Restrições Pedro Barahona

19

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

• Distância percorridaV1 = a V2 = d P1 = 15

• Optimização

min Pi

A

B

C

E

G

FZ

H

D

I4

231534

Page 20: Programação por Restrições Pedro Barahona

20

Restrições - Complexidade

• A 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ínio Finitos– Número de variáveis: n– Dimensão do Domínio: k

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

Page 21: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

22

Restrições - Complexidade

• O problemas de interesse são geralmente– Restrições: NP - completos– Optimização: NP - difíceis

• Analogia com 3SAT

Problema 3SAT

Page 23: Programação por Restrições Pedro Barahona

23

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

• Resolução Simbólica– Booleanos– Programação Linear Inteira

• Retrocesso– Percorre todo o espaço de pesquisa

• Complexidade k1n

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

• Complexidade k2n

Page 24: Programação por Restrições Pedro Barahona

24

Retrocesso

Testes 0 Retrocessos 0

Page 25: Programação por Restrições Pedro Barahona

25

Retrocesso

Testes 0 + 1 = 1 Retrocessos 0

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

Page 26: Programação por Restrições Pedro Barahona

26

Retrocesso

Testes 1 + 1 = 2 Retrocessos 0

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

Page 27: Programação por Restrições Pedro Barahona

27

Retrocesso

Testes 2 + 1 = 3 Retrocessos 0

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

Page 28: Programação por Restrições Pedro Barahona

28

Retrocesso

Testes 3 + 1 = 4 Retrocessos 0

Page 29: Programação por Restrições Pedro Barahona

29

Retrocesso

Testes 4 + 2 = 6 Retrocessos 0

Page 30: Programação por Restrições Pedro Barahona

30

Retrocesso

Testes 6 + 1 = 7 Retrocessos 0

Page 31: Programação por Restrições Pedro Barahona

31

Retrocesso

Testes 7 + 2 = 9 Retrocessos 0

Page 32: Programação por Restrições Pedro Barahona

32

Retrocesso

Testes 9 + 2 = 11 Retrocessos 0

Page 33: Programação por Restrições Pedro Barahona

33

Retrocesso

Testes 11 + 1 + 3 = 15 Retrocessos 0

Page 34: Programação por Restrições Pedro Barahona

34

Retrocesso

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

Page 35: Programação por Restrições Pedro Barahona

35

Retrocesso

Testes 26 + 1 = 27 Retrocessos 0

Page 36: Programação por Restrições Pedro Barahona

36

Retrocesso

Testes 27 + 3 = 30 Retrocessos 0

Page 37: Programação por Restrições Pedro Barahona

37

Retrocesso

Testes 30 + 2 = 32 Retrocessos 0

Page 38: Programação por Restrições Pedro Barahona

38

Retrocesso

Testes 32 + 4 = 36 Retrocessos 0

Page 39: Programação por Restrições Pedro Barahona

39

Retrocesso

Testes 36 + 3 = 39 Retrocessos 0

Page 40: Programação por Restrições Pedro Barahona

40

Retrocesso

Testes 39 + 1 = 40 Retrocessos 0

Page 41: Programação por Restrições Pedro Barahona

41

Retrocesso

Testes 40 + 2 = 42 Retrocessos 0

Page 42: Programação por Restrições Pedro Barahona

42

Retrocesso

Testes 42 + 3 = 45 Retrocessos 0

Page 43: Programação por Restrições Pedro Barahona

43

Retrocesso

Testes 45 Retrocessos 0

Falha

6

Retrocede

5

Page 44: Programação por Restrições Pedro Barahona

44

Retrocesso

Testes 45 Retrocessos 1

Page 45: Programação por Restrições Pedro Barahona

45

Retrocesso

Testes 45 + 1 = 46 Retrocessos 1

Page 46: Programação por Restrições Pedro Barahona

46

Retrocesso

Testes 46 + 2 = 48 Retrocessos 1

Page 47: Programação por Restrições Pedro Barahona

47

Retrocesso

Testes 48 + 3 = 51 Retrocessos 1

Page 48: Programação por Restrições Pedro Barahona

48

Retrocesso

Testes 51 + 4 = 55 Retrocessos 1

Page 49: Programação por Restrições Pedro Barahona

49

Retrocesso

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

Falha

6

Retrocede

5 e 4

Page 50: Programação por Restrições Pedro Barahona

50

Retrocesso

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

Page 51: Programação por Restrições Pedro Barahona

51

Retrocesso

Testes 85 + 1 + 4 = 90 Retrocessos 3

Page 52: Programação por Restrições Pedro Barahona

52

Retrocesso

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

Page 53: Programação por Restrições Pedro Barahona

53

Retrocesso

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

Page 54: Programação por Restrições Pedro Barahona

54

Retrocesso

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

Falha

8

Retrocede

7

Page 55: Programação por Restrições Pedro Barahona

55

Retrocesso

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

Falha

7

Retrocede

6

Page 56: Programação por Restrições Pedro Barahona

56

Retrocesso

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

Falha

6

Retrocede

5

Page 57: Programação por Restrições Pedro Barahona

57

Retrocesso

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

Page 58: Programação por Restrições Pedro Barahona

58

Retrocesso

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

Falha

6

Retrocede

5

Page 59: Programação por Restrições Pedro Barahona

59

Retrocesso

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

Falha

5

Retrocede

4

Page 60: Programação por Restrições Pedro Barahona

60

Retrocesso

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

Page 61: Programação por Restrições Pedro Barahona

61

Retrocesso

Testes 201+1+4 = 206 Retrocessos 9

Page 62: Programação por Restrições Pedro Barahona

62

Retrocesso

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

Page 63: Programação por Restrições Pedro Barahona

63

Retrocesso

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

Page 64: Programação por Restrições Pedro Barahona

64

Retrocesso

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

Falha

8

Retrocede

7

Page 65: Programação por Restrições Pedro Barahona

65

Retrocesso

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

Falha

7

Retrocede

6

Page 66: Programação por Restrições Pedro Barahona

66

Retrocesso

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

Falha

6

Retrocede

5

Page 67: Programação por Restrições Pedro Barahona

67

Retrocesso

Testes 286+2+4= 292 Retrocessos 12

Page 68: Programação por Restrições Pedro Barahona

68

Retrocesso

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

Falha

6

Retrocede

5

Page 69: Programação por Restrições Pedro Barahona

69

Retrocesso

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

Falha

5

Retrocede

4 e 3

Page 70: Programação por Restrições Pedro Barahona

70

Retrocesso

Testes 322 + 2 = 324 Retrocessos 15

X1=1

X2=3

X3=5

Impossível

Page 71: Programação por Restrições Pedro Barahona

71

Propagação

Testes 0 Retrocessos 0

Page 72: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

89

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

• Pesquisa Local– Reparação de “soluções”– Optimização– Método incompleto

Page 90: Programação por Restrições Pedro Barahona

90

Pesquisa Local - Reparação

4

7

1

6

3

5

8

2

Solução

Permutação

Vizinhança

Troca

Page 91: Programação por Restrições Pedro Barahona

91

Pesquisa Local - Reparação

2 Ataques

3 - 5

4 - 8

4

7

1

6

3

5

8

2

Page 92: Programação por Restrições Pedro Barahona

92

Pesquisa Local - Reparação

4

7

1 2

6

3

5

8

2 1

2 Ataques

3 - 5

4 - 8

Page 93: Programação por Restrições Pedro Barahona

93

Pesquisa Local - Reparação

4

7

2

6

3

5

8

1

3 Ataques

1 - 3

2 - 8

3 - 6

Page 94: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

95

Pesquisa Local - Reparação

1 Ataque

3 - 6

1

7

2

6

3

5

8

4

Page 96: Programação por Restrições Pedro Barahona

96

Pesquisa Local - Reparação

1

7

2 8

6

3

5

8 2

4

1 Ataque

3 - 6

Page 97: Programação por Restrições Pedro Barahona

97

Pesquisa Local - Reparação

1

7

8

6

3

5

2

4

3 Ataques

2 - 3

2 - 7

3 - 6

Page 98: Programação por Restrições Pedro Barahona

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: Programação por Restrições Pedro Barahona

99

Pesquisa Local - Reparação

0 Ataques

1

5

8

6

3

7

2

4

Page 100: Programação por Restrições Pedro Barahona

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 cadeirassdi.di.fct.unl.pt/~pr