A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação por Restrições

Apresentações semelhantes


Apresentação em tema: "Programação por Restrições"— Transcrição da apresentação:

1 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

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

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”

5 Restrições - Circuitos digitais
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)

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

7 Restrições - Gestão de Produção
Limites dos recursos existentes a1j X1 + a2jX2 + a3jX ≤ Ri Restrições sobre o plano produzido X1 + X2 ≥ X3 X4 = X5

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

9 Restrições - Gestão de Redes
A B C E G F Z H D I4 23 15 Restrições de Capacidade Xab ≤ 15 Restrições de não perda de informação Xab+Xbd = Xbc

10 Restrições - Escalonamento de Tarefas
Precedência entre tarefas J11 + D11 ≤ J12 Não sobreposição de tarefas Mi ≠ Mj Ú Jij + Dij ≤ Jkl Ú Jkl + Dkl ≤ Jij

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 osprofessores Finitos (horas certas) para os tempos Restrições: Não sobreposição de aulas na mesma sala , nem com o mesmo professor, etc...,

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

13 Restrições - Caixeiro Viajante
B C E G F Z H D I4 23 15 34 ordem em que uma localidade é atingida V1 = a, V2 = d, V3 = b, ... garantir ciclos Vj ≠ Vj não existência de sub-ciclos ???

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

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

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

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

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

19 Restrições + Optimização - Caixeiro Viajante
B C E G F Z H D I4 23 15 34 Distância percorrida V1 = a Ù V2 = d Þ P1 = 15 Optimização min S Pi

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 Dimensão do Domínio: k Número de soluções potenciais: kn

21 Complexidade Exponencial
Para perspectivar ...

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

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

24 Retrocesso Testes Retrocessos 0

25 Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1.
Retrocesso Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1. Testes = Retrocessos 0

26 Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1.
Retrocesso Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1. Testes = Retrocessos 0

27 Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1.
Retrocesso Q1 \= Q2, L1+Q1 \= L2+Q2, L1+Q2 \= L2+Q1. Testes = Retrocessos 0

28 Retrocesso Testes = Retrocessos 0

29 Retrocesso Testes = Retrocessos 0

30 Retrocesso Testes = Retrocessos 0

31 Retrocesso Testes = Retrocessos 0

32 Retrocesso Testes = Retrocessos 0

33 Retrocesso Testes = Retrocessos 0

34 Retrocesso Testes = Retrocessos 0

35 Retrocesso Testes = Retrocessos 0

36 Retrocesso Testes = Retrocessos 0

37 Retrocesso Testes = Retrocessos 0

38 Retrocesso Testes = Retrocessos 0

39 Retrocesso Testes = Retrocessos 0

40 Retrocesso Testes = Retrocessos 0

41 Retrocesso Testes = Retrocessos 0

42 Retrocesso Testes = Retrocessos 0

43 Retrocesso Falha 6 Retrocede 5 Testes Retrocessos 0

44 Retrocesso Testes Retrocessos 1

45 Retrocesso Testes = Retrocessos 1

46 Retrocesso Testes = Retrocessos 1

47 Retrocesso Testes = Retrocessos 1

48 Retrocesso Testes = Retrocessos 1

49 Retrocesso Falha 6 Retrocede 5 e 4
Testes = Retrocessos 1

50 Retrocesso Testes = Retrocessos 1+2 = 3

51 Retrocesso Testes = Retrocessos 3

52 Retrocesso Testes = Retrocessos 3

53 Retrocesso Testes = Retrocessos 3

54 Retrocesso Falha 8 Retrocede 7
Testes = Retrocessos 3+1=4

55 Retrocesso Falha 7 Retrocede 6 Testes = Retrocessos 4+1=5

56 Retrocesso Falha 6 Retrocede 5
Testes = Retrocessos 5+1=6

57 Retrocesso Testes = Retrocessos 6+1=7

58 Retrocesso Falha 6 Retrocede 5
Testes = Retrocessos 7

59 Retrocesso Falha 5 Retrocede 4
Testes = Retrocessos 7+1=8

60 Retrocesso Testes = Retrocessos 8+1=9

61 Retrocesso Testes = Retrocessos 9

62 Retrocesso Testes = Retrocessos 9

63 Retrocesso Testes = Retrocessos 9

64 Retrocesso Falha 8 Retrocede 7
Testes = Retrocessos 9+1=10

65 Retrocesso Falha 7 Retrocede 6 Testes = Retrocessos 10+1=11

66 Retrocesso Falha 6 Retrocede 5
Testes = Retrocessos 11+1=12

67 Retrocesso Testes = Retrocessos 12

68 Retrocesso Falha 6 Retrocede 5
Testes = Retrocessos 12+1=13

69 Retrocesso Falha 5 Retrocede 4 e 3
Testes = Retrocessos 13+2=15

70 Retrocesso X1=1 X2=3 X3=5 Impossível
Testes = Retrocessos 15

71 Propagação Testes Retrocessos 0

72 Q1 #\= Q2, L1+Q1 #\= L2+Q2, L1+Q2 #\= L2+Q1.
Propagação Q1 #\= Q2, L1+Q1 #\= L2+Q2, L1+Q2 #\= L2+Q1. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Testes 8 * 7 = Retrocessos 0

73 Propagação 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 Testes * 6 = Retrocessos 0

74 Propagação 1 1 1 2 1 2 1 2 1 2 3 1 2 1 2 3 1 3 2 3 1 2 3 1 2 3 1 2 1 2 3 1 Testes * 5 = Retrocessos 0

75 Propagação 2 1 1 X6 só pode tomar o valor 4 1 2 1 2 1 2 1 2 3 1 2 1 2
Testes * 5 = Retrocessos 0

76 Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 1 2 6 1 2 3 1 3 2 3 1 2 3 1 2 6 3 1 2 1 6 2 6 3 6 1 Testes = Retrocessos 0

77 Propagação 2 1 1 X8 só pode tomar o valor 7 1 2 1 2 1 6 2 1 2 3 1 2 6
Testes Retrocessos 0

78 Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 1 2 6 1 2 3 1 3 2 3 1 2 3 1 2 6 3 1 2 1 6 2 2 3 6 1 Testes Retrocessos 0

79 Propagação 2 1 1 1 2 1 2 1 8 6 2 1 2 3 1 2 6 1 2 3 1 3 2 3 1 2 3 1 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes = Retrocessos 0

80 Propagação 2 1 1 X4 só pode tomar o valor 8 1 2 1 2 1 6 2 1 2 3 8 1 2
Testes Retrocessos 0

81 Propagação 2 1 1 1 2 1 2 1 8 6 2 1 2 3 1 2 6 1 2 3 1 3 2 3 1 2 3 1 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes Retrocessos 0

82 Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 8 1 2 6 1 2 3 4 1 3 2 3 1 2 3 1 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes = Retrocessos 0

83 Propagação 2 1 1 X5 só pode tomar o valor 2 1 2 1 2 1 6 2 1 2 3 8 1 2
4 1 3 2 3 1 2 3 1 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes Retrocessos 0

84 Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 8 1 2 6 1 2 3 4 1 3 2 3 1 2 3 1 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes Retrocessos 0

85 Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 8 1 2 6 1 2 3 4 1 3 2 3 1 2 3 1 5 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes = Retrocessos 0

86 Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 8 1 2 6 1 2 3 4 1 3 2 3 1 2 3 1 5 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes Retrocessos 0

87 Propagação 2 1 1 Falha 7 Retrocede 3 ! 1 2 1 2 1 6 2 1 2 3 8 1 2 6 1 2
4 1 3 2 3 1 2 3 1 5 2 6 3 8 1 2 1 6 2 2 3 6 1 Testes Retrocessos 0+1=1

88 Propagação 2 1 1 Testes 136 (324) Retrocessos 1 (15) X1=1 X2=3 X3=5
Impossível 1 2 1 2 1 2 1 2 3 3 1 2 3 1 2 3 3 1 2 1 2 3 1 3 2 3 1 2 1 2 3 1 Testes Retrocessos 1

89 Restrições - Métodos de Resolução
Pesquisa Local Reparação de “soluções” Optimização Método incompleto

90 Pesquisa Local - Reparação
4 7 1 6 3 5 8 2 Solução Permutação Vizinhança Troca

91 Pesquisa Local - Reparação
4 7 1 6 3 5 8 2 2 Ataques 3 - 5 4 - 8

92 Pesquisa Local - Reparação
4 7 1  2 6 3 5 8 2  1 2 Ataques 3 - 5 4 - 8

93 Pesquisa Local - Reparação
4 7 2 6 3 5 8 1 3 Ataques 1 - 3 2 - 8 3 - 6

94 Pesquisa Local - Reparação
4  1 7 2 6 3 5 8 1  4 3 Ataques 1 - 3 2 - 8 3 - 6

95 Pesquisa Local - Reparação
1 7 2 6 3 5 8 4 1 Ataque 3 - 6

96 Pesquisa Local - Reparação
1 7 2  8 6 3 5 8  2 4 1 Ataque 3 - 6

97 Pesquisa Local - Reparação
1 7 8 6 3 5 2 4 3 Ataques 2 - 3 2 - 7 3 - 6

98 Pesquisa Local - Reparação
1 7  5 8 6 3 5  7 2 4 3 Ataques 2 - 3 2 - 7 3 - 6

99 Pesquisa Local - Reparação
0 Ataques 1 5 8 6 3 7 2 4

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/~pb/cadeiras/pr

101 Programação por Restrições


Carregar ppt "Programação por Restrições"

Apresentações semelhantes


Anúncios Google