Aula 22 - SatisfacaoDeRestricoes

Download Report

Transcript Aula 22 - SatisfacaoDeRestricoes

Problemas de Satisfação de Restrições
Constraint Satisfaction Problems (CSP)
Disciplina:
Inteligência Artificial
Prof. Frederico Brito Fernandes
[email protected]
CONTEÚDO
(1) CSP (Coloração de Mapas)
(2) Exercício
(3) Problema Real: Alocação de
Disciplinas
Roteiro da aula de CSP
(1) Mini-problema: Coloração do Mapa com CSP
A
C
– Objetivo:
•
•
B
E
Colorir o mapa com o mínimo de cores;
Dois blocos adjacentes não podem ter cores iguais
F
D
(2) Exercício de compreensão: passagem de moto-taxi
– Objetivo:
•
•
Fazer o pagamento da corrida de moto-taxi usando 5 moedas;
Uma moeda de 50 centavos ou duas de 25c são obrigatórias;
(3) Problema real: alocação de disciplinas
– Objetivo:
•
•
Disciplina: Inteligência Artificial
Fazer a alocação das disciplinas de um curso;
Variáveis possíveis: professores, disciplinas, períodos, laboratórios,
salas com data show, professores com restrições de horários, etc
Professor: Frederico Brito Fernandes
2/21
(1) Satisfação de Restrições (CSP)
• Um Problema de Satisfação de Restrições
– Constraint Satisfaction Problems (CSP)
– tipo de problema que impõe propriedades estruturais adicionais à
solução a ser encontrada
– há uma demanda mais refinada do que na busca clássica
• ex. ir de Recife à Cajazeiras com no máximo 3 tanques de gasolina e
7 horas de viagem
• Um CSP consistem em:
– um conjunto de variáveis que podem assumir valores dentro de um
dado domínio
– um conjunto de restrições que especificam propriedades da
solução - valores que essas variáveis podem assumir.
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
3/21
(1) CSP: Formulação
• Estados:
– definidos pelos valores possíveis das variáveis
• Estado inicial:
– nenhuma variável instanciada ainda
• Operadores:
– atribuem valores (instanciação) às variáveis (uma variável por vez)
• Teste de término:
– verificar se todas as variáveis estão instanciadas obedecendo as
restrições do problema
• Solução:
– conjunto dos valores das variáveis instanciadas
• Custo de caminho:
– número de passos de atribuição
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
4/21
(1) CSP: características das restrições
• O conjunto de valores que a variável i pode assumir é chamado
domínio Di
– O domínio pode ser discreto (fabricantes de uma peça do carro) ou
contínuo (peso das peças do carro)
• Quanto à aridade, as restrições podem ser
–
–
–
–
unárias (sobre uma única variável) - ex. B ≠ azul
binárias (sobre duas variáveis) - ex. B ≠ C
n-árias - ex. palavras cruzadas
a restrição unária é um sub-conjunto do domínio, enquanto que a nária é um produto cartesiano dos domínios
• Quanto à natureza, as restrições podem ser
– absolutas (não podem ser violadas)
– preferenciais (devem ser satisfeitas quando possível)
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
5/21
(1) CSP - Busca cega
• Funcionamento
– estado inicial: variáveis sem atribuição
– aplica operador: instancia uma variável
– teste de parada: todas variáveis instanciadas sem violações
• Análise
– pode ser implementada com busca em profundidade limitada
( l = número de variáveis)
– é completa
– fator de expansão: i |Di|
– o teste de parada é decomposto em um conjunto de restrições
sobre as variáveis
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
6/21
(1) CSP-Exemplo: coloração de mapas
Simulação passo a passo...
A= verde
B = verde
C= verde
D=verde
E=verde
F=verde (falha c/ C, E, D)
F=vermelho
E (falha c/ C,A,B)
E=vermelho (falha c/ F)
E=azul
C (falha c/ A)
...
Muito dispendioso
Disciplina: Inteligência Artificial
variáveis: A,B,C,D,E,F
domínio: {verde,vermelho,azul}
restrições: A  B; A  C; A  E; B
 E; B  F; C  E; C 
F; D  F; E  F
A
B
C
E
F
Professor: Frederico Brito Fernandes
D
7/21
(1) CSP - Backtracking na busca cega
• Problema da busca em profundidade
– perda de tempo pois continua mesmo que uma restrição já tenha
sido violada (não se pode mais redimir o erro)
• Solução: Backtracking
– depois de realizar uma atribuição, verifica se restrições não são
violadas
– caso haja violação  backtrack
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
8/21
(1) CSP-Exemplo: coloração de mapas
Simulação passo a passo...
A= verde
B = verde (falha c/ A)
B=vermelho
C=verde (falha c/ A)
C= vermelho
D=verde
E= verde (falha c/ A)
E= vermelho (falha c/ B e C)
E= azul
F=verde (falha c/ D)
F=vermelho (falha c/ C)
F = azul (falha c/ E)
F backtracking
E backtracking
D=vermelho
E=verde (falha c/ A)
E= vermelho (falha c/ B)
E= azul
F=verde
Disciplina: Inteligência Artificial
variáveis: A,B,C,D,E,F
domínio: Da=Db...=Df={verde,vermelho,azul}
restrições:
A  B; A  C; A  E; B  E; B 
F; C  E; C  F; D  F; E  F
A
B
C
E
F
Professor: Frederico Brito Fernandes
D
9/21
(1) CSP-Exemplo: coloração de mapas
Mas poderia ser mais complicado
começando por vermelho...
A=vermelho
B=verde
variáveis: A,B,C,D,E,F
C=azul
domínio: Da=Db...=Df={verde,vermelho,azul}
restrições:
A  B; A  C; A  E; B  E; B  F;
D=vermelho
C  E; C  F; D  F; E  F
E= ?? Backtracking
D=verde
E=?? Backtracking
B
A
D=azul
E=?? Backtracking
C
D= ?? Backtracking
C = verde
D = verde
E
E = azul
F=vermelho
D
F
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
10/21
(1) CSP - Backtracking não basta...
• Problema do backtracking:
– Após atribuir um valor a uma variável -> solução impossível
• Ex.: A=vermelho, B=verde e C=azul.
• Soluções
– Verificação de arco-consistência (forward checking)
– Propagação de restrições
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
11/21
(1) CSP - Refinamentos
• Verificação prévia (forward checking)
– idéia: olhar para frente para detectar situações insolúveis
• Algoritmo:
– Após cada atribuição, elimina do domínio das variáveis não
instanciadas os valores incompatíveis com as atribuições feitas até
agora.
– Se um domínio torna-se vazio, backtrack imediatamente.
• É bem mais eficiente!
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
12/21
(1) CSP - Propagação de restrições
• Forward checking é um caso particular de verificação de
arco-consistência
– um estado é arco-consistente se o valor de cada variável é
consistente com as restrições sobre esta variável
– arco-consistência é obtida por sucessivas eliminações de valores
inconsistentes
• Propagação de restrições (constraint propagation)
– uma conseqüência da verificação de arco-consistência
– quando um valor é eliminado, outros podem se tornar
inconsistentes e terem que ser eliminados também
– é como uma onda que se propaga: as escolhas ficam cada vez mais
restritas
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
13/21
(1) CSP - Propagação de restrições
variáveis: A,B,C,D,E,F
domínio: Da=Db...=Df={verde,vermelho,azul}
restrições:
A  B; A  C; A  E; B  E; B  F;
C  E; C  F; D  F; E  F
Passo a passo...
A=vermelho
=> B, C, E ={verde,azul} (variáveis c/ restrições c/ A)
=> D, F ={vermelho,verde,azul}
B=verde
=> E = {azul}, F = {vermelho, azul} (variáveis c/ restrições c/ B)
=> C ={verde,azul}, D ={vermelho,verde,azul}
C = verde
=> E ={azul}, F = {vermelho, azul} (restrições c/ C)
B
A
=> D = {vermelho,verde,azul}
D=vermelho, E=azul, F=??
C
Backtracking F e D!!
D=verde, E=azul, F=vermelho
E
F
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
D
14/21
(1) CSP - Heurísticas para CSP
• Tenta reduzir o fator de expansão do espaço de estados
• Onde pode entrar uma heurística?
– Ordenando a escolha da variável a instanciar
– Ordenando a escolha do valor a ser associado a uma variável
• Existem 3 heurísticas para isto...
– Variável mais restritiva: variável envolvida no maior número de
restrições é preferida
– Variável mais restringida: variável que pode assumir menos valores é
preferida
– Valor menos restritivo: valor que deixa mais liberdade para futuras
escolhas
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
15/21
(1) CSP - Variável mais restritiva
(variável envolvida no maior número de restrições)
variáveis: A,B,C,D,E,F
domínio: Da=Db...=Df={verde,vermelho,azul}
restrições:
A  B; A  C; A  E; B  E; B  F;
C  E; C  F; D  F; E  F
Candidatas1: E(4), F(4), ...resto(3)
E = verde
Candidatas2: F, ...resto
F = vermelho
Candidatos3: A, B, C, D
A= vermelho
Candidato4: B, C, D
B= azul
Candidatos5: C, D
C= azul
D = verde
A
BB
C
E
F
D
SEM BACKTRACK!!
1
em ordem de prioridade
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
16/21
(1) CSP - Variável mais restringida
(variável que pode assumir menos valores)
variáveis: A,B,C,D,E,F
domínio: Da=Db...=Df={verde,vermelho,azul}
restrições:
A  B; A  C; A  E; B  E; B  F;
C  E; C  F; D  F; E  F
Candidatas1: todas
A={v,v,a},B={v,v,a},C={v,v,a},...
A = verde
Candidatas2: B={v,a}, C={v,a}, E={v,a}, D={v,v,a}, F={v,v,a}
B = vermelho
Candidatos3: E={a}, C={v,a}, F={v,a}, D={v,v,a}
E=azul
Candidatos4: C={v}, F={v}, D={v,v,a}
BB
A
C=vermelho
Candidatos5: F={v}, D={v,v,a}
C
F=verde
Candidatos6: D={v,a}
D = azul ou vermelho
E
SEM BACKTRACK!!
Disciplina: Inteligência Artificial
F
Professor: Frederico Brito Fernandes
D
17/21
(1) CSP - Valor menos restritivo?
(valor que deixa mais liberdade)
variáveis: A,B,C,D,E,F
domínio: Da=Db...=Df={verde,vermelho,azul}
restrições:
A  B; A  C; A  E; B  E; B  F;
C  E; C  F; D  F; E  F
A
Começando com
A = verde
B = vermelho
C=??? vermelho é melhor do
que azul
Disciplina: Inteligência Artificial
B
C
E
F
Professor: Frederico Brito Fernandes
D
18/21
(1) CSP - Conclusão
• Grande importância prática, sobretudo em tarefas de
– criação (design)
– agendamento (scheduling)
– onde várias soluções existem e é mais fácil dizer o que não se
quer...
• Estado atual
– Grandes aplicações industriais $$$$
– Número crescente de artigos nas principais conferências
• Observação:
– a sigla CSP também é usada para falar de Constraint Satisfaction
Programming, que é um paradigma de programação
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
19/21
(2) Exercício
• Eu preciso pagar a minha passagem de moto-taxi, que custa 91
centavos. Para pagá-la, eu devo utilizar 5 moedas. O cobrador quer
que eu lhe dê uma moeda de 25 centavos ou duas de 10 centavos.
Represente isso como um problema de satisfação de restrições e
mostre como as heurísticas de propagação de restrições (forwardchecking), variável mais restrita eu variável mais restringente
agilizam a resolução. Admita que você possui um número infinito de
cada moeda.
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
20/21
(3) Problema real: Alocação de Disc.
•
Objetivo:
–
•
Formule uma solução para esse problema:
–
–
•
Todo coordenador tem a cansativa tarefa de montar os horários das
disciplinas a cada semestre.
usando CSP, lembrando que você deve estabelecer: (1)Variáveis; (2)
Domínio e (3) Regras.
a lógica de programação usada (independente de linguagem).
Admita que a faculdade têm apenas:
–
–
–
–
–
–
–
dois períodos (P1 e P2);
dois professores (Fechine e Nilton);
duas disciplinas por período (d1_a, d1_b, d2_a, d2_b);
Fechine leciona d1_a e d2_a, e Nilton leciona d1_b, d2_b;
duas noites de aula por semana, com duas aulas por noite;
Fechine não pode ensinar no primeiro horário da segunda;
não é permitido que uma mesma disciplina tenha duas aulas por noite.
Disciplina: Inteligência Artificial
Professor: Frederico Brito Fernandes
21/21