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
1
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
2
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
3
Exemplo: Circuitos Digitais
Objectivo:
Verificar se a gate G2 está
“stuck-at-1”.
A
G1
G4
H
G5
I
B
Possibilidades:
G2
Valores 0/1 nas várias
entradas
E
F
C
Restrições (binárias):
D
G3
G
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!
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
4
Exemplo: Gestão de Redes (de Telecomunicações)
Objectivo:
3
Enviar k pacotes de A a Z.
B
Possibilidades:
5
0 a C pacotes em cada troço
C- capacidade do troço
Restrições:
H
3
6
E
4
9
5
7
A
8
C
4
3
6
D
5
G
7
Z
7
F
2
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.
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
5
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):
J1
J2
1
2
1
J3
Precedência de algumas tarefas;
J12 >= J11+D11
Não sobreposição de tarefas
J22 >= J12+D12 ou J12 >= J22+D22
J4
3
2
1
1
3
2
2
3
3
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
6
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
7
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
8
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:
F
K
I
E
A
D
C
G
– 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
B
J
H
• 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
9
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
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
10
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
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
11
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 €
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
12
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
13
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
14
Exemplos de Problemas (Satisfação)
• Exemplos “simples”
– N - rainhas
Q
• 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).
Q
Q
Q
– 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
S
E
N
D
+
M
O
R
E
M
O
N
E
Y
Seminários de Informática – Pesquisa e Optimização
15
Exemplos de Problemas (Satisfação)
• 4 - rainhas
Q1
– Variáveis:
Q2
• V: {Q1, Q2, Q3, Q4}
Q3
– Domínio
Q4
• D : {1,2,3,4}
– Restrições R:
% Colunas Diferentes:
Solução:
Q1 = 2, Q2 = 4, Q3 = 1, Q4 = 3
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
16
Exemplos de Problemas (Satisfação)
• Send More Money
– Variáveis:
• V: {S, E, N, D, M, O, R, Y}
– Domínio
S
E
N
D
+
M
O
R
E
M
O
N
E
Y
• 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
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
17
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)
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
18
Complexidade dos Problemas
• “Bubble sort” aplicado a um vector c/ 5 elementos
Comparações
9 7 5 3 1
1-2
7 9 5 3 1
2-3
7 5 9 3 1
3-4
7 5 3 9 1
4-5
7 5 3 1 9
1-2
5 7 3 1 9
2-3
5 3 7 1 9
3-4
5 3 1 7 9
1-2
3 5 1 7 9
2-3
3 1 5 7 9
1-2
1 3 5 7 9
ok
1 Junho 2005
• 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
19
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
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
20
Complexidade Polinomial vs Exponencial
• Algoritmos Determinísticos: Complexidade Polinomial
nk
2
3
4
5
10
100
20
30
400
900
40
50
60
1 600
2 500
3 600
0.1 mseg
0.4 mseg
0.9 mseg
1.6 mseg
2.5 mseg
3.6 mseg
1 000
8 000
27 000
64 000
125 000
216 000
1 mseg
8 mseg
27 mseg
64 mseg
125 mseg
216 mseg
10 000
160 000
810 000
2 560 000
6 250 000
12 960 000
10 mseg
160 mseg
810 mseg
2.6 seg
6.3 seg
13 seg
100 000
3 200 000
24 300 000
102 400 000
312 500 000
777 600 000
100 mseg
3.2 seg
24 seg
1.7 min
5.2 min
13 min
• Algoritmos Não-Determinísticos: Complexidade Exponencial
kn
10
20
30
40
50
60
1 024
1 048 576
1 073 741 824
1.10E+12
1.13E+15
1.15E+18
1 mseg
1 seg
18 min
12.7 dias
35.7 anos
365 séculos
59 049
3 486 784 401
2.06E+14
1.22E+19
60 mseg
1 hora
6.5 anos
3400 séculos
4
1 048 576
1.10E+12
1.15E+18
1 seg
12.6 dias
365 séculos
5
9 765 625
9.54E+13
9.31E+20
10 seg
1103 dias
295 Kséc
2
3
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
21
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
22
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
V2 = 0
V2 = 1
V1 = 1
V2 = 0
V2 = 1
V3 = 0
V4 = 0
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
23
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
V2 = 0
V2 = 1
V1 = 1
V2 = 0
V2 = 1
V3 = 0
V4 = 0
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
24
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
V2 = 0
V2 = 1
V1 = 1
V3 = 1
V3 = 0
V3 = 0
V4 = 0
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
25
Retrocesso
Testes 0
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
26
Retrocesso
Q1 \= Q2,
Q1+1 \= Q2+2, Q1-1 \= Q2-2
Testes 0 + 1 = 1
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
27
Retrocesso
Q1 \= Q2,
Q1+1 \= Q2+2, Q1-1 \= Q2-2
Testes 1 + 1 = 2
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
28
Retrocesso
Q1 \= Q2,
Q1+1 \= Q2+2, Q1-1 \= Q2-2
Testes 2 + 1 = 3
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
29
Retrocesso
Testes 3 + 1 = 4
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
30
Retrocesso
Testes 4 + 2 = 6
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
31
Retrocesso
Testes 6 + 1 = 7
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
32
Retrocesso
Testes 7 + 2 = 9
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
33
Retrocesso
Testes 9 + 2 = 11
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
34
Retrocesso
Testes 11 + 1 + 3 = 15
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
35
Retrocesso
Testes 15 + 1 + 4 + 2 + 4 = 26
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
36
Retrocesso
Testes 26 + 1 = 27
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
37
Retrocesso
Testes 27 + 3 = 30
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
38
Retrocesso
Testes 30 + 2 = 32
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
39
Retrocesso
Testes 32 + 4 = 36
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
40
Retrocesso
Testes 36 + 3 = 39
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
41
Retrocesso
Testes 39 + 1 = 40
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
42
Retrocesso
Testes 40 + 2 = 42
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
43
Retrocesso
Testes 42 + 3 = 45
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
44
Retrocesso
Falha
6
Retrocede
5
Testes 45
1 Junho 2005
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
45
Retrocesso
Testes 45
1 Junho 2005
Retrocessos 1
Seminários de Informática – Pesquisa e Optimização
46
Retrocesso
Testes 45 + 1 = 46
1 Junho 2005
Retrocessos 1
Seminários de Informática – Pesquisa e Optimização
47
Retrocesso
Testes 46 + 2 = 48
1 Junho 2005
Retrocessos 1
Seminários de Informática – Pesquisa e Optimização
48
Retrocesso
Testes 48 + 3 = 51
1 Junho 2005
Retrocessos 1
Seminários de Informática – Pesquisa e Optimização
49
Retrocesso
Testes 51 + 4 = 55
1 Junho 2005
Retrocessos 1
Seminários de Informática – Pesquisa e Optimização
50
Retrocesso
Falha
6
Retrocede
5e4
Testes 55+1+3+2+4+3+1+2+3 = 74
1 Junho 2005
Retrocessos 1
Seminários de Informática – Pesquisa e Optimização
51
Retrocesso
Testes 74+2+1+2+3+3= 85
1 Junho 2005
Retrocessos 1+2 = 3
Seminários de Informática – Pesquisa e Optimização
52
Retrocesso
Testes 85 + 1 + 4 = 90
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 3
53
Retrocesso
Testes 90 +1+3+2+5 = 101
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 3
54
Retrocesso
Testes 101+1+5+2+4+3+6= 122
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 3
55
Retrocesso
Falha
8
Retrocede
7
Testes 122+1+5+2+6+3+6+4+1= 150
1 Junho 2005
Retrocessos 3+1=4
Seminários de Informática – Pesquisa e Optimização
56
Retrocesso
Falha
7
Retrocede
6
Testes 150+1+2= 153
1 Junho 2005
Retrocessos 4+1=5
Seminários de Informática – Pesquisa e Optimização
57
Retrocesso
Falha
6
Retrocede
5
Testes 153+3+1+2+3= 162
1 Junho 2005
Retrocessos 5+1=6
Seminários de Informática – Pesquisa e Optimização
58
Retrocesso
Testes 162+2+4= 168
1 Junho 2005
Retrocessos 6+1=7
Seminários de Informática – Pesquisa e Optimização
59
Retrocesso
Falha
6
Retrocede
5
Testes 168+1+3+2+5+3+1+2+3= 188
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 7
60
Retrocesso
Falha
5
Retrocede
4
Testes 188+1+2+3+4= 198
1 Junho 2005
Retrocessos 7+1=8
Seminários de Informática – Pesquisa e Optimização
61
Retrocesso
Testes 198 + 3 = 201
1 Junho 2005
Retrocessos 8+1=9
Seminários de Informática – Pesquisa e Optimização
62
Retrocesso
Testes 201+1+4 = 206
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 9
63
Retrocesso
Testes 206+1+3+2+5 = 217
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 9
64
Retrocesso
Testes 217+1+5+2+5+3+6 = 239
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 9
65
Retrocesso
Falha
8
Retrocede
7
Testes 239+1+5+2+4+3+6+7+7= 274
1 Junho 2005
Retrocessos 9+1=10
Seminários de Informática – Pesquisa e Optimização
66
Retrocesso
Falha
7
Retrocede
6
Testes 274+1+2= 277
1 Junho 2005
Retrocessos 10+1=11
Seminários de Informática – Pesquisa e Optimização
67
Retrocesso
Falha
6
Retrocede
5
Testes 277+3+1+2+3= 286
1 Junho 2005
Retrocessos 11+1=12
Seminários de Informática – Pesquisa e Optimização
68
Retrocesso
Testes 286+2+4= 292
1 Junho 2005
Retrocessos 12
Seminários de Informática – Pesquisa e Optimização
69
Retrocesso
Falha
6
Retrocede
5
Testes 292+1+3+2+5+3+1+2+3= 312
1 Junho 2005
Retrocessos 12+1=13
Seminários de Informática – Pesquisa e Optimização
70
Retrocesso
Falha
5
Retrocede
4e3
Testes 312+1+2+3+4= 322
1 Junho 2005
Retrocessos 13+2=15
Seminários de Informática – Pesquisa e Optimização
71
Retrocesso
X1=1
X2=3
X3=5
Impossível
Testes 322 + 2 = 324
1 Junho 2005
Retrocessos 15
Seminários de Informática – Pesquisa e Optimização
72
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
73
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
74
Propagação
Testes 0
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
Retrocessos 0
75
Propagação
Q1 #\= Q2,
1
Q1+1 #\= Q2+2,
Q1-1 #\= Q2-2.
1
1
1
1
1
1
1
1
1
1
1
1
Testes 8 * 7 = 56
1 Junho 2005
1
Seminários de Informática – Pesquisa e Optimização
Retrocessos 0
76
Propagação
1
1
1
2
1
2
1
2
1
1
2
1
2
1
2
1
2
Testes 56 + 6 * 6 = 92
1 Junho 2005
2
1
2
1
2
1
Seminários de Informática – Pesquisa e Optimização
2
1
Retrocessos 0
77
Propagação
1
1
1
2
1
2
1
2
1
1
2
3
2
1
2
3
2
3
1
2
3
1
2
3
1
2
1
2
3
1
3
Testes 92 + 4 * 5 = 112
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
78
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
79
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
≠
≠
≠
Q2 in 1..4
≠
≠
1 Junho 2005
Q3 in 1..4
≠
Q4 in 1..4
Seminários de Informática – Pesquisa e Optimização
80
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
81
Propagação 2
Q6 só pode
tomar o valor
4
1
1
1
2
Retirar valores
incompatíveis
nas outras
variáveis
1 Junho 2005
1
2
1
2
1
1
2
3
2
1
2
3
2
3
1
2
3
1
2
3
1
2
1
2
3
1
3
Seminários de Informática – Pesquisa e Optimização
1
82
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
1 Junho 2005
6
2
2
6
3
2
6
3
6
Seminários de Informática – Pesquisa e Optimização
1
83
Propagação 2
Agora é Q8
que só pode
tomar o
valor 7
1
1
1
2
1
2
1
6
2
1
2
3
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
1 Junho 2005
6
2
2
6
3
2
6
3
6
Seminários de Informática – Pesquisa e Optimização
1
84
Propagação 2
Retiremos pois
os valores
incompatíveis
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
1 Junho 2005
6
2
2
6
3
8
2
6
3
6
Seminários de Informática – Pesquisa e Optimização
1
85
Propagação 2
Q4 só pode
tomar o
valor 8
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
4
3
1
2
3
1
2
1
1
3
1
1
1 Junho 2005
6
2
2
6
3
8
2
6
3
6
Seminários de Informática – Pesquisa e Optimização
1
86
Propagação 2
Propagando
verifica-se
que Q5 só
pode tomar
o valor 2
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
4
3
1
2
3
1
2
1
1
3
1
1
1 Junho 2005
6
2
2
6
3
8
2
6
3
6
Seminários de Informática – Pesquisa e Optimização
1
87
Propagação 2
Mas agora
Q7 não
pode tomar
nenhum
valor!
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
4
3
1
2
3
1
2
1
1
3
1
1
1 Junho 2005
6
2
2
6
3
8
2
6
3
6
Seminários de Informática – Pesquisa e Optimização
1
88
Propagação 2
Há que
retroceder
para a
última
rainha
atribuída,
Q3.
1 Junho 2005
1
1
1
2
1
2
1
2
1
1
2
3
2
1
2
3
2
3
1
2
3
1
2
3
1
2
1
2
3
1
3
Seminários de Informática – Pesquisa e Optimização
1
89
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
90
Propagação 2
Q6 só pode
tomar o
valor 4
1
1
1
2
1
2
1
2
1
1
2
3
2
1
2
3
2
3
1
2
3
1
2
3
1
2
1
2
3
1
3
Testes 92 + 4 * 5 = 112
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
91
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
6
2
2
6
3
2
6
3
Testes 112+3+3+3+4 = 125
1 Junho 2005
6
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
92
Propagação 2
Q8 só pode
tomar o
valor 7
1
1
1
2
1
2
1
6
2
1
2
3
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
Testes 125
1 Junho 2005
6
2
2
6
3
2
2
3
6
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
93
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
Testes 125
1 Junho 2005
6
2
2
6
3
2
2
3
6
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
94
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
6
2
2
6
3
8
2
2
3
6
Testes 125+2+2+2=131
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
95
Propagação 2
Q4 só pode
tomar o
valor 8
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
Testes 131
1 Junho 2005
6
2
2
6
3
8
2
2
3
6
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
96
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
3
1
2
3
1
2
1
1
3
1
1
Testes 131
1 Junho 2005
6
2
2
6
3
8
2
2
3
6
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
97
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
4
3
1
2
3
1
2
1
1
3
1
1
6
2
2
6
3
8
2
2
3
6
Testes 131+2+2=135
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
98
Propagação 2
Q5 só pode
tomar o
valor 2
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
4
3
1
2
3
1
2
1
1
3
1
1
Testes 135
1 Junho 2005
6
2
2
6
3
8
2
2
3
6
Seminários de Informática – Pesquisa e Optimização
1
Retrocessos 0
99
Propagação 2
1
1
1
2
1
2
1
6
2
1
2
3
8
2
6
1
2
3
4
3
1
2
3
1
2
1
1
3
2
1
5
2
6
3
8
1
6
2
2
3
6
Testes 135+1=136
1 Junho 2005
1
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
100
Propagação 2
1
1
Falha
1
2
1
2
7
1
6
2
1
2
3
8
Retrocede
1
2
6
1
2
3
4
3
1
2
3
1
2
3!
1
3
2
1
5
2
6
3
8
1
6
2
2
3
6
Testes 136
1 Junho 2005
1
Retrocessos 0
Seminários de Informática – Pesquisa e Optimização
101
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
102
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:
{0,1}
≠
≠
{0,1}
≠
{0,1}
• A impossibilidade deste problema não é obtida por
manutenção de consistência de arco, mas é-o por
consistência de caminho.
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
103
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
104
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
105
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
106
Pesquisa Local - Reparação
4
7
Solução
1
Permutação
6
3
Vizinhança
5
Troca
8
2
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
107
Pesquisa Local - Reparação
4
7
1
2 Ataques
6
3-5
3
4-8
5
8
2
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
108
Pesquisa Local - Reparação
4
7
1 2
2 Ataques
6
3-5
3
4-8
5
8
2 1
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
109
Pesquisa Local - Reparação
4
7
2
3 Ataques
6
1-3
3
2-8
5
3-6
8
1
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
110
Pesquisa Local - Reparação
4 1
7
2
3 Ataques
6
1-3
3
2-8
5
3-6
8
1 4
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
111
Pesquisa Local - Reparação
1
7
2
1 Ataque
6
3-6
3
5
8
4
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
112
Pesquisa Local - Reparação
1
7
28
1 Ataque
6
3-6
3
5
8 2
4
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
113
Pesquisa Local - Reparação
1
7
8
3 Ataques
6
2-3
3
2-7
5
3-6
2
4
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
114
Pesquisa Local - Reparação
1
75
8
3 Ataques
6
2-3
3
2-7
57
3-6
2
4
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
115
Pesquisa Local - Reparação
1
5
0 Ataques
8
6
3
7
2
4
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
116
Métodos Reparativos – Pesquisa Local
• Estes métodos têm em geral o problema de fugir dos
óptimos locais, tal como acontecem neste caso.
2
3 1 3
0
• Por vezes, é necessário escolher um vizinho pior!
1 Junho 2005
Seminários de Informática – Pesquisa e Optimização
117
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
118
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
119
Download

Apresentação "O Essencial sobre Pesquisa e Optimização"