1.19k likes | 1.34k Views
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)
E N D
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Retrocesso Testes 0 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
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
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
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
Retrocesso Testes 3 + 1 = 4 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 4 + 2 = 6 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 6 + 1 = 7 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 7 + 2 = 9 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 9 + 2 = 11 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 11 + 1 + 3 = 15 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 15 + 1 + 4 + 2 + 4 = 26 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 26 + 1 = 27 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 27 + 3 = 30 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 30 + 2 = 32 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 32 + 4 = 36 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 36 + 3 = 39 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 39 + 1 = 40 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 40 + 2 = 42 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 42 + 3 = 45 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Falha 6 Retrocede 5 Testes 45 Retrocessos 0 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 45 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 45 + 1 = 46 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 46 + 2 = 48 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 48 + 3 = 51 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização
Retrocesso Testes 51 + 4 = 55 Retrocessos 1 Seminários de Informática – Pesquisa e Optimização