1 / 119

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

Seminários de Informática Pesquisa e Optimização Programação por Restrições Pedro Barahona Junho de 2005. 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)

bowen
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seminários de Informática Pesquisa e Optimização Programação por Restrições Pedro Barahona Junho de 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 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 Seminários de Informática – Pesquisa e Optimização

  4. A E G1 G4 H B F G2 C G G5 I G3 D 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) 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! Seminários de Informática – Pesquisa e Optimização

  5. 3 H B 3 6 E 5 9 4 5 7 Z 4 A 7 G C 3 7 8 6 2 D F 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 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. 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. 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 • ... 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 • .... 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 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 50 000 €/ano (≈ 3 570 € /mês) • Custos pessoal de 100 000 000 €/ano • Outros Custos de 20 000 000 €/ano • Produção de 70 000 €/ano/trabalhador • Receitas totais de 140 000 000 €/ano • Lucro de 20 000 000 €/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 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 5 000 000 € • Aumento dos Lucros de 25% (20 M€ para 25 M€) • Aumento da Produção • Produção de 73 500 € por trabalhador (em vez de 70 K€) • Lucros aumentam 2000 * 3 500 = 7 M€ • Aumento de Lucros de 35% • Cenários intermédios 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 * 250 000 € cada TIR • Poupança de 50 camiões: 12 500 000 € • Gestão de Frotas (2) • 100 aviões * 5 000 000 € cada avião • Poupança de 5 aviões: 25 000 000 € • Gestão de Redes de Telecomunicações • 200 antenas de telemóveis * 500 000 € por antena • Poupança de 10 antenas: 5 000 000 € 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 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”. 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 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, 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 + 1000*O + 100*N + 10*E + Y 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-2 + ... + 1 = (n-1)[1+ (n-1)] / 2 = n (n-1)/2 • Complexidade Polinomial do algoritmo: O(n2) Seminários de Informática – Pesquisa e Optimização

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

  23. V1 = 0 V1 = 1 V2 = 1 V2 = 1 V2 = 0 V2 = 0 V3 = 0 V4 = 0 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 Seminários de Informática – Pesquisa e Optimização

  24. V1 = 0 V1 = 1 V2 = 1 V2 = 1 V2 = 0 V2 = 0 V3 = 0 V4 = 0 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]! Seminários de Informática – Pesquisa e Optimização

  25. V1 = 0 V1 = 1 V2 = 1 V3 = 0 V2 = 0 V3 = 1 V3 = 0 V4 = 0 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. Seminários de Informática – Pesquisa e Optimização

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

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

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

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

  30. Retrocesso Testes 3 + 1 = 4 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  31. Retrocesso Testes 4 + 2 = 6 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  32. Retrocesso Testes 6 + 1 = 7 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  33. Retrocesso Testes 7 + 2 = 9 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  34. Retrocesso Testes 9 + 2 = 11 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  35. Retrocesso Testes 11 + 1 + 3 = 15 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  36. Retrocesso Testes 15 + 1 + 4 + 2 + 4 = 26 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  37. Retrocesso Testes 26 + 1 = 27 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  38. Retrocesso Testes 27 + 3 = 30 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  39. Retrocesso Testes 30 + 2 = 32 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  40. Retrocesso Testes 32 + 4 = 36 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  41. Retrocesso Testes 36 + 3 = 39 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  42. Retrocesso Testes 39 + 1 = 40 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  43. Retrocesso Testes 40 + 2 = 42 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

  44. Retrocesso Testes 42 + 3 = 45 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização

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

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

  47. Retrocesso Testes 45 + 1 = 46 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização

  48. Retrocesso Testes 46 + 2 = 48 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização

  49. Retrocesso Testes 48 + 3 = 51 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização

  50. Retrocesso Testes 51 + 4 = 55 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização

More Related