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

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

Seminários de Informática

Apresentações semelhantes


Apresentação em tema: "Seminários de Informática"— Transcrição da apresentação:

1 Seminários de Informática
Pesquisa e Optimização Programação por Restrições Pedro Barahona Junho de 2005 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

2 Pesquisa e Optimização
Alguns exemplos de Problemas de Decisão que envolvem pesquisa e optimização: Testes em circuitos digitais (para detecção de avarias) Gestão de Redes de Telecomunicações Sequenciação de Tarefas (Scheduling) Gestão de Frotas Gestão da Produção Geração de Horários “Colocação” ou “preenchimento” 2D: corte de peças (tecido, tábuas, etc...) 3D: prenchimento de contentores 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

3 Problemas de Pesquisa e Optimização
O que têm em comum estas aplicações: Muitas soluções “potenciais” Restrições entre as variáveis do problema Nenhuma forma de as obter de uma forma “óbvia” Recurso: pesquisa das várias soluções Espaço de pesquisa ENORME Necessidade de pesquisa eficiente 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

4 Exemplo: Circuitos Digitais
Objectivo: Verificar se a gate G2 está “stuck-at-1”. Possibilidades: Valores 0/1 nas várias entradas Restrições (binárias): Exemplo: F = nand(B,C) A C D B E F G H I G1 G2 G3 G4 G5 Espaço de Pesquisa: As 4 entradas, A, B, C e D, podem tomar valores 0 ou 1, Existem 2*2*2*2 = 24soluções potenciais Se o circuito tiver n entradas há que testar 2n possibilidades! 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

5 Exemplo: Gestão de Redes (de Telecomunicações)
Objectivo: Enviar k pacotes de A a Z. Possibilidades: 0 a C pacotes em cada troço C- capacidade do troço Restrições: Não se perdem pacotes AE + BE + CE = EH + EZ A B C D E F G Z 5 4 8 7 H 6 2 9 3 Espaço de Pesquisa: Os m troços (m=17 neste caso) com 0 a C pacotes Neste caso 6*5*8*9 * ....* 7*10*8*3 possibilidades Em geral, com n nós, existem até n*(n-1)/2 troços. Se assumirmos a mesma capacidade c em todos os troços temos cn(n-1)/2 possibilidades. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

6 Exemplo: Escalonamento de tarefas
Objectivo (job-shop): Executar k tarefas até um tempo T. Possibilidades: Cada tarefa começa entre 0 e T Restrições (binárias): Precedência de algumas tarefas; J12 >= J11+D11 Não sobreposição de tarefas J22 >= J12+D12 ou J12 >= J22+D22 Espaço de Pesquisa: As k tarefas têm duração inteira e começam entre os tempos 0 e T. Em geral teremos de considerar T*T* ... * T = Tk possibilidades. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

7 Exemplo: Gestão de Produção e de Frotas
Problemas semelhantes aos anteriores, mas em que se devem considerar algumas restrições adicionais Gestão de Produção Atribuir tarefas a trabalhadores /máquinas Capacidade máxima de cada trabalhador Possibilidades da tarefa requerer vários trabalhadores ... Gestão de Frotas As tarefas têm um ponto de partida e de chegada Existem capacidades máximas para os camiões 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

8 Exemplo: Geração de Horários
Para as várias aulas necessárias de um conjunto de cursos atribuir-lhes professores e salas de forma a que se satisfaçam algumas restrições obrigatórias 2 aulas com o mesmo professor não podem ser leccionadas ao mesmo tempo 2 aulas não podem ser leccionadas na mesma sala Há ainda que tentar satisfazer restrições opcionais tais como Evitar furos Evitar aulas isoladas Teóricas de manhã e Práticas à tarde .... 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

9 Exemplo: “Colocação” ou “preenchimento”
Objectivo: Colocar os vários rectângulos num rectângulo maior (2D). Colocar os vários paralelipípedos num paralelipípedo maior (3D) Restrições: Não sobreposição dos rectângulos i e j, isto é Xi > Xj + aj (i à direita de j) ou Xj > Xi + ai (i à esquerda de j) ou Yi > Yj + bj (i acima de j) ou Yj > Yi + bi (i abaixo de j) ou Espaço de pesquisa Canto inferior esquerdo de cada uma das n peças em qualquer das k = l*h posições. O número de possibilidades é pois de k*k* ...*k = kn 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

10 Relevância destes Problemas
Custos e Produção numa grande empresa 2 000 trabalhadores a €/ano (≈ € /mês) Custos pessoal de €/ano Outros Custos de €/ano Produção de €/ano/trabalhador Receitas totais de €/ano Lucro de €/ano Melhoria de Produtividade Redução de Pessoal Mesma Produção com menos trabalhadores Aumento da Produção Mesmos trabalhadores, mas produzindo mais Cenários intermédios 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

11 Relevância destes Problemas
Cenário: Aumento de eficiência de 5% Melhoria de Produtividade Redução de Pessoal Menos € Aumento dos Lucros de 25% (20 M€ para 25 M€) Aumento da Produção Produção de € por trabalhador (em vez de 70 K€) Lucros aumentam 2000 * = 7 M€ Aumento de Lucros de 35% Cenários intermédios 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

12 Relevância destes Problemas
Outros custos envolvidos - Material Cenário: Melhoria de Eficiência de 5% Gestão de Frotas (1) 1000 camiões TIR * € cada TIR Poupança de 50 camiões: € Gestão de Frotas (2) 100 aviões * € cada avião Poupança de 5 aviões: € Gestão de Redes de Telecomunicações 200 antenas de telemóveis * € por antena Poupança de 10 antenas: € 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

13 Integração em Sistemas Informáticos
Todos os problemas envolvem a análise dos dados de uma empresa Sistemas de Informação “Sofisticados” Bases de Dados + DataWarehousing Sistemas de Apoio à Decisão Integrar algoritmos nos sistemas de Informação Adaptação (parametrização) de algoritmos existentes Papel de um Engenheiro Informático Integrar informação para usar Produtos existentes Melhorar as soluções existentes Melhores Modelos Melhores Algoritmos 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

14 Formalização de Problemas de Decisão
Um problema de satisfação de restrições é um triplo <V,D,R>, em que V é um conjunto de variáveis D é o domínio das variáveis R é o conjunto de restrições entre as variáveis Um problema de optimização é um quádruplo <V,D,R,F>, em que V, D e R são como os anteriores F é uma função das variáveis que se pretende optimizar Para ilustrar os algoritmos de resolução destes problemas e a sua complexidade podemos enunciar problemas “teóricos” cuja resolução segue os mesmos métodos de problemas mais “realistas”. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

15 Exemplos de Problemas (Satisfação)
Exemplos “simples” N - rainhas Colocar n rainhas num tabuleiro de n*n casas de forma a que nenhumas rainhas se ataquem mutuamente (i.e. estejam na mesma linha, coluna ou diagonal). Criptografia Atribuir números a letras (números diferentes a letras diferentes) de forma a que as operações indicadas sejam válidas 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

16 Exemplos de Problemas (Satisfação)
4 - rainhas Variáveis: V: {Q1, Q2, Q3, Q4} Domínio D : {1,2,3,4} Solução: Q1 = 2, Q2 = 4, Q3 = 1, Q4 = 3 Restrições R: % Colunas Diferentes: Q1 ≠ Q2, Q1 ≠ Q3, Q1 ≠ Q4, Q2 ≠ Q3, Q2 ≠ Q4, Q3 ≠ Q4, % Diagonais / Diferentes: Q1+1 ≠ Q2+2, Q1+1 ≠ Q3+3, Q1+1 ≠ Q4+4, Q2+2 ≠ Q3+3, Q2+2 ≠ Q4+4, Q3+3 ≠ Q4+4, % Diagonais \ Diferentes: Q1-1 ≠ Q2-2, Q1-1 ≠ Q3-3, Q1-1 ≠ Q4-4, Q2-2 ≠ Q3-3, Q2-2 ≠ Q4-4, Q3-3 ≠ Q4-4, 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

17 Exemplos de Problemas (Satisfação)
Send More Money Variáveis: V: {S, E, N, D, M, O, R, Y} Domínio D : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Restrições R: % Valores diferentes para letras diferentes : S ≠ E, S ≠ N, ... , R ≠ Y % Conta Certa: 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M *O + 100*N + 10*E + Y 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

18 Complexidade dos Problemas
Solução obtida por algoritmos não deterministas Envolvem escolhas eventualmente erradas! Consequência Complexidade Exponencial e não Polinomial Algoritmo Determinístico – Ordenação “Bubble sort” aplicado a um vector c/ n elementos 1ª passagem: n-1 comparações 2ª passagem: n-2 comparações (n-1)ª passagem: 1 comparação Total: n-1 + n = (n-1)[1+ (n-1)] / 2 = n (n-1)/2 Complexidade Polinomial do algoritmo: O(n2) 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

19 Complexidade dos Problemas
“Bubble sort” aplicado a um vector c/ 5 elementos Pior caso comparações = 4*(1+4)/2 = 10 Em geral (n-1) n /2 Complexidade O(n2) 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

20 Complexidade dos Problemas
Algoritmo Não Determinístico Escolha de Entradas (binárias) Pior caso: testar todas as combinações n entradas – combinações possíveis 2*2*...* 2 = 2n Exemplo: 3 entradas Complexidade Exponencial : O(2n) 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

21 Complexidade Polinomial vs Exponencial
Algoritmos Determinísticos: Complexidade Polinomial Algoritmos Não-Determinísticos: Complexidade Exponencial 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

22 Algoritmos de Resolução
A resolução de problemas de decisão não triviais pode ser feita através de duas abordagens diferentes: Métodos Construtivos Os valores das várias variáveis vão sendo atribuídos tendo de ser revistos quando se detecta uma contradição. Exemplo: Se Q1 = 2 e Q3 = 2 há contradição porque Q1 ≠ Q3 Métodos Reparativos Uma “pseudo-solução” que não satisfaz algumas restrições é reparada de forma a tornar-se uma solução. Exemplo: V = [1,2,3,4] não satisfaz as restrições (Q1 -1 ≠ Q2 -2). Trocar Q1 com Q4 ficamos com V = [4,2,3,1] e a rainha Q1 já não ataca Q2. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

23 Métodos Construtivos – Pesquisa em árvore
Os métodos construtivos utilizam em geral um algoritmo de pesquisa em árvore. Normalmente utiliza-se a pesquisa em profundidade da esquerda para a direita Exemplo: Pesquisa Binária com 4 variáveis V1 = 0 V1 = 1 V2 = 0 V2 = 1 V3 = 0 V4 = 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

24 Pesquisa com Retrocesso
Em cada nó é verificado se vale a pena continuar. Nessa situação, executa-se um retrocesso (backtracking) evitando-se testar todos os valores! Se V1=0 é imcompatível com V2 = 0, eliminam-se todas as soluções [0,0,x,x]! V1 = 0 V1 = 1 V2 = 0 V2 = 1 V3 = 0 V4 = 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

25 Seminários de Informática – Pesquisa e Optimização
Pesquisa Heurística Em cada nó, vale a pena “pensar” para decidir: Qual a próxima variável a atribuir valor; Que valor atribuir Por exemplo, após atribuir V1 = 1, é preferível escolher a variável V3, e atribuir-lhe o valor 1 em primeiro lugar. V1 = 0 V1 = 1 V3 = 1 V3 = 0 V2 = 0 V2 = 1 V4 = 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

26 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

27 Seminários de Informática – Pesquisa e Optimização
Retrocesso Q1 \= Q2, Q1+1 \= Q2+2, Q1-1 \= Q2-2 Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

28 Seminários de Informática – Pesquisa e Optimização
Retrocesso Q1 \= Q2, Q1+1 \= Q2+2, Q1-1 \= Q2-2 Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

29 Seminários de Informática – Pesquisa e Optimização
Retrocesso Q1 \= Q2, Q1+1 \= Q2+2, Q1-1 \= Q2-2 Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

30 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

31 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

32 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

33 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

34 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

35 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

36 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

37 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

38 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

39 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

40 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

41 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

42 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

43 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

44 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

45 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 Testes Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

46 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes Retrocessos 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

47 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

48 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

49 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

50 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

51 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 e 4 Testes = Retrocessos 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

52 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 1+2 = 3 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

53 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 3 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

54 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 3 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

55 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 3 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

56 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 8 Retrocede 7 Testes = Retrocessos 3+1=4 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

57 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 7 Retrocede 6 Testes = Retrocessos 4+1=5 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

58 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 Testes = Retrocessos 5+1=6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

59 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 6+1=7 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

60 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 Testes = Retrocessos 7 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

61 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 5 Retrocede 4 Testes = Retrocessos 7+1=8 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

62 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 8+1=9 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

63 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 9 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

64 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 9 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

65 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 9 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

66 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 8 Retrocede 7 Testes = Retrocessos 9+1=10 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

67 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 7 Retrocede 6 Testes = Retrocessos 10+1=11 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

68 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 Testes = Retrocessos 11+1=12 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

69 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes = Retrocessos 12 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

70 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 Testes = Retrocessos 12+1=13 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

71 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 5 Retrocede 4 e 3 Testes = Retrocessos 13+2=15 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

72 Seminários de Informática – Pesquisa e Optimização
Retrocesso X1=1 X2=3 X3=5 Impossível Testes = Retrocessos 15 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

73 Olhar para Trás ou para a Frente?
Nesta altura da pesquisa determinou-se que não se podem construir soluções a partir da solução “parcial” Q1 = 1, Q2 =3 , Q3 = 5 Para essa determinação foram feitos 15 Retrocessos de valores de variáveis 324 testes de verificação De notar que nesta pesquisa foi tida em consideração apenas as atribuições passadas de valores a variáveis. Na realidade, é geralmente mais favorável “olhar” para a frente, isto é, para as variáveis futuras, que ainda não têm valores atribuídos. Esse é o objectivo da “propagação de restrições”. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

74 Propagação de Restrições
O objectivo da propagação de restrições é o de retirar do domínio das variáveis futuras os valores que são contraditórios com as atribuições já efectuadas. Por exemplo, se a primeira rainha for colocada na posição mais à esquerda (Q1 = 1), podem retirar-se o valor 1 do domínio das outras variáveis, já que colocariam as respectivas rainhas na mesma coluna! Os valores incompatíveis por estarem nas mesmas diagonais devem ser igualmente eliminados. Este mecanismo de propagação de restrições pode ser igualmente ilustrado para as 8 rainhas. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

75 Seminários de Informática – Pesquisa e Optimização
Propagação Testes Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

76 Seminários de Informática – Pesquisa e Optimização
Propagação Q1 #\= Q2, Q1+1 #\= Q2+2, Q1-1 #\= Q2-2. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Testes 8 * 7 = Retrocessos 0 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

77 Seminários de Informática – Pesquisa e Optimização
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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

78 Seminários de Informática – Pesquisa e Optimização
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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

79 Propagação de Restrições
Neste ponto vale a pena precisar uma outra forma de propagação de restrições. Para além de retirar valores incompatíveis com valores já atribuídos (consistência de nó), podem ser retirados valores do domínio de variáveis que não tenham suporte no domínio de outras variáveis. Por exemplo consideremos as variáveis A e B, com domínio {1,2,3,4} e a restrição A > B. Neste caso, A não pode ser 1, pois não há valor de B tal que B <1. B não pode ser 4, pois não há valor de A tal queA > 4. A propagação de restrições neste caso, mantendo a consistência de arco, reduz os domínios para DA = {2,3,4} e DA = {1,2,3}. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

80 Seminários de Informática – Pesquisa e Optimização
Redes de Restrições Um problema de satisfação de restrições pode ser modelado através de um grafo (ou rede) de restrições em que os nós são as variáveis e os arcos as restrições. Por exemplo, o problema das 4 rainhas pode ser modelado através da seguinte rede Q1 in 1..4 Q4 in 1..4 Q3 in 1..4 Q2 in 1..4 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

81 Seminários de Informática – Pesquisa e Optimização
Redes de Restrições Para manter consistência de arco pode assim olhar-se para cada arco e analisar os domínios das variáveis nos seus extremos. Podemos analisar a situação na continuação do problema das 8 rainhas. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

82 Propagação 2 Q6 só pode tomar o valor 4
Retirar valores incompatíveis nas outras variáveis 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

83 Seminários de Informática – Pesquisa e Optimização
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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

84 Propagação 2 1 1 Agora é Q8 que só pode tomar o valor 7 1 2 1 2 1 6 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

85 Propagação 2 1 1 1 2 1 2 Retiremos pois os valores incompatíveis 1 6 2
3 8 1 2 6 1 2 3 1 3 2 3 1 2 3 1 2 6 3 8 1 2 1 6 2 6 3 6 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

86 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 Q4 só pode tomar o valor 8 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 6 3 6 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

87 Propagação 2 1 1 Propagando verifica-se que Q5 só pode tomar o valor 2
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 6 3 6 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

88 Propagação 2 1 1 Mas agora Q7 não pode tomar nenhum valor! 1 2 1 2 1 6
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 6 3 6 1 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

89 Propagação 2 1 1 Há que retroceder para a última rainha atribuída, Q3.
1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

90 Heurísticas – First Fail
No caso de restrições de diferença, só faz sentido a sua propagação se uma das variáveis tiver um só valor no domínio. Mas nessa situação, é mais conveniente utilizar esse facto através da heurística first-fail. Em geral a heurística indica que se devem tratar primeiro as situações mais difíceis, que não se podem evitar. Em particular, enter atribuir valores a uma variável com 8 valores no domínio e outra com apenas 2 é mais difícil atribuir valores a esta (são menos valores). No caso em causa, se uma variável só tem um valor no domínio há que atribuir imediatamente esse valor ! 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

91 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 Q6 só pode tomar o valor 4 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

92 Seminários de Informática – Pesquisa e Optimização
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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

93 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 Q8 só pode tomar o valor 7 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

94 Seminários de Informática – Pesquisa e Optimização
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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

95 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 8 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

96 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 Q4 só pode tomar o valor 8 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

97 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 1 2 1 2 1 6 2 1 2 3 8 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

98 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 1 2 1 2 1 8 6 2 1 2 3 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

99 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 Q5 só pode tomar o valor 2 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

100 Seminários de Informática – Pesquisa e Optimização
Propagação 2 1 1 1 2 1 2 1 8 6 2 1 2 3 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

101 Seminários de Informática – Pesquisa e Optimização
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 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 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

102 Eficiência da Propagação c/ First -Fail
Nesta altura da pesquisa determinou-se que não se podem construir soluções a partir da solução “parcial” Q1 = 1, Q2 =3 , Q3 = 5 De notar que com retrocesso puro tal conclusão foi tirada após se terem efectuado 15 retrocessos de valores de variáveis 324 testes de verificação Neste caso, a combinação de propagação de restrições (simples – consistência de nó) com heurística permitiu chegar à mesma conclusão com 0 retrocessos de valores de variáveis 136 testes de verificação 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

103 Outros Métodos de Propagação
Existem métodos mais “fortes” de propagação, tais como a manutenção da consistência de caminho Exemplo: A impossibilidade deste problema não é obtida por manutenção de consistência de arco, mas é-o por consistência de caminho. {0,1} {0,1} {0,1} 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

104 Seminários de Informática – Pesquisa e Optimização
Restrições Globais Em geral quanto mais forte é a propagação mais pesada é a sua implementação. Existem alguns casos particulares de restrições, envolvendo “muitas” variáveis, que têm métodos de resolução muito apropriados e que podem ser integrados nas linguagens de resolução destes problemas. Este é o caso da restrição all_different([X1,X2,X3]) que não usando consistência de arco consegue detectar a inconsitência do problema anterior. Outra restrição global importante é a restrição cumulative, útil para problemas de alocação de recursos. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

105 Restrições Globais - Cumulative
História: Uma instância 10*10 do problema de Job-shop foi proposta no livro Industrial Scheduling [MuTh63]. Durante 30 anos, não foi encontrada nenhuma solução óptima para o “makespan” (terminação mais rápida da última tarefa). Melhor solução era 935 unidades de tempo. Em 1985, tinha sido provado que não havia solução com menos de 930 unidades de tempo.. Em 1987, o problema foi resolvido com um algoritmo altamente especializado, que decobriu uma solução com 930 unidades de tempo, após algumas horas de execução. Com a restrição “cumulative”, o problema foi resolvido em 1993 em 1506 segundos (numa SUN/SPARC) ! 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

106 Métodos Reparativos – Pesquisa Local
Um método alternativo de resolução corresponde a partir de uma “solução” qualquer e ir reparando-a para obter outra melhor. Este método é útil para problemas de optimização em que há várias soluções possíveis, embora não óptimas. Em problemas de satisfação, pode tentar minimizar-se o número de restrições violadas. Para ser utilizável há que definir: Quais os vizinhos de uma solução Qual o vizinho a escolher No caso das rainhas os vizinhos são obtidos por troca de duas rainhas, de preferência envolvidas em restrições violadas, como ilustrado de seguida. 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

107 Pesquisa Local - Reparação
4 7 1 6 3 5 8 2 Solução Permutação Vizinhança Troca 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

108 Pesquisa Local - Reparação
4 7 1 6 3 5 8 2 2 Ataques 3 - 5 4 - 8 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

109 Pesquisa Local - Reparação
4 7 1  2 6 3 5 8 2  1 2 Ataques 3 - 5 4 - 8 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

110 Pesquisa Local - Reparação
4 7 2 6 3 5 8 1 3 Ataques 1 - 3 2 - 8 3 - 6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

111 Pesquisa Local - Reparação
4  1 7 2 6 3 5 8 1  4 3 Ataques 1 - 3 2 - 8 3 - 6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

112 Pesquisa Local - Reparação
1 7 2 6 3 5 8 4 1 Ataque 3 - 6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

113 Pesquisa Local - Reparação
1 7 2  8 6 3 5 8  2 4 1 Ataque 3 - 6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

114 Pesquisa Local - Reparação
1 7 8 6 3 5 2 4 3 Ataques 2 - 3 2 - 7 3 - 6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

115 Pesquisa Local - Reparação
1 7  5 8 6 3 5  7 2 4 3 Ataques 2 - 3 2 - 7 3 - 6 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

116 Pesquisa Local - Reparação
0 Ataques 1 5 8 6 3 7 2 4 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

117 Métodos Reparativos – Pesquisa Local
Estes métodos têm em geral o problema de fugir dos óptimos locais, tal como acontecem neste caso. Por vezes, é necessário escolher um vizinho pior! 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

118 Métodos Reparativos – Pesquisa Local
Para escapar a óptimos locais existem várias técnicas: Recomeços aleatórios Simulated Annealing Tabu Search Algoritmos Genéticos Um outro problema com estes métodos, relacionado com o anterior, é não serem completos, isto é descobrem óptimos locais, mas não o óptimo global. No entanto, para os problemas mais complexos não há esperança de obter a solução óptima! Existe ainda a possibilidade de hibridizar os métodos reparativos com métodos construtivos! 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização

119 Seminários de Informática – Pesquisa e Optimização
Disciplinas da LEI Algoritmos e Estruturas de Dados Pesquisa em árvore Métodos Quantitativos Problemas de decisão Programação em Lógica Paradigma de Programação que inclui o retrocesso Programação por Restrições Estende o paradigma para propagação de restrições Bases de Dados e DataWareHousing Integração de dados em Sistemas de Informação que podem ser posteriormente utilizados nestes modelos 1 Junho 2005 Seminários de Informática – Pesquisa e Optimização


Carregar ppt "Seminários de Informática"

Apresentações semelhantes


Anúncios Google