Post on 26-Aug-2020
Page 1
Metodologias de Inteligência Artificial2005/2006
Métodos de Resolução de Problemas
2MIA - 2005/06
Sistemas de Produções
• Paradigma básico dos Sistemas de Produções
CONHECIMENTO
DADOS
OPERADORES
ESTRATÉGIAS
Page 2
3MIA - 2005/06
Métodos de Resolução de Problemas
• Descrição do problema– através de um espaço de estados
• Representação do conhecimento– através da lógica e de estruturas de informação
• Resolução do problema– movimentação no espaço de estados da configuração inicial à configuração
final
• Arquitectura do sistema computacional– uso de Sistemas de Produções, mantendo separadamente os Factos (numa ou
várias “bases de dados”), os operadores (regras), e o algoritmo de controlo
4MIA - 2005/06
Métodos de Pesquisa– Métodos não informados
• Não possuem informação sobre nºpassos ou custo até à solução
– Métodos informados• Aplicação de funções dependentes do conhecimento do problema: funções
heurísticas
– Direcção de controlo• “Top Down” ou encadeamento inverso• “Bottom Up” ou encadeamento directo• Bidireccional
– Estratégia de controlo• “depth first” ou primeiro em profundidade• “breadth first” ou primeiro em largura
Page 3
5MIA - 2005/06
Métodos de pesquisa
• Métodos de pesquisa– Gerar e Testar - não informado– Subir a colina (“hill climbing”) - informado– Primeiro em Largura - não informado– Ramifica e Limita (“Branch and Bound”) - não informado– Arrefecimento simulado - informado– Satisfação de Restrições × - não informado– O melhor-primeiro - informado
• Gerar e Testar– Gera a possível solução e testa-a comparando com o objectivo.– Geração sistemática: primeiro em profundidade com "backtracking“.– Combina-se com outras estratégias.
6MIA - 2005/06
Subir a colina
• Subir a colina: processo irrevogável– Gera-se e testa-se, mas recebe-se "feedback" indicando qual a direcção
aconselhável para o próximo movimento.– Usa-se conhecimento Local
• Procedimento:1. Gera-se o primeiro estado2. SE solução RETORNAR
SENÃO Aplicar a esse novo estado os operadores possiveis3. Para cada novo estado
TesteSE solução RETORNARSENÃO
escolha o estado mais próximo da solução como o novo estadoVOLTAR A 2
– Problemas: funções não "bem comportadas" com máximos locais e "planaltos"
também usado como
método de optimização
Page 4
7MIA - 2005/06
Solução
Dis
tânc
ia `a
sol
ução
Curvas dos passos necessários para obtêr a solução
Nº de passos (operadores)
Função "Bem-comportada"
Função "mal-comportada"
Subir a colina
8MIA - 2005/06
Subir a colina
Dois tipos de subir a colina (“hill climbing”)
1. Subir-a-colina básico:• Gera um a um os sucessores do estado actual• Encontrado um mais próximo da solução que o Estado Actual, Selecciona-o
2. Ascenção íngreme (“Steep ascendent”):• Gera todos os sucessores possíveis• Selecciona o mais próximo da solução
Page 5
9MIA - 2005/06
Subir a colina
inicio(a).objectivo(x).filho(a,b).filho(a,d).filho(a,c).filho(b,e).filho(b,f).filho(b,g).filho(c,h).filho(d,i).filho(e,j).estimativa(b,4).estimativa(c,5).estimativa(d,6).estimativa(e,3).
scolina(Ef,[]) :- objectivo(Ef).scolina(Ea,[Ea|R]) :- suc(Ea,ESucs),
( ESucs==[], write('insucesso'); select(ESucs,Eseg), scolina(Eseg,R)).
suc(Ea, Esuc) :- findall( F, filho(Ea,F), Esuc).
select([E1],E1).select([E1,E2|OEs],Eseg):-
estimativa(E1,C1),estimativa(E2,C2),( C1<C2, select([E1|OEs],Eseg); select([E2|OEs],Eseg)).
10MIA - 2005/06
Primeiro em largura
• Primeiro em largura: todos os nós em cada nível são explorados.– Vantages:
• Encontra sempre a solução se existir. • E encontra a melhor em comprimento do passo.
– Problema: tem de guardar todos os nós do nível.• Implica mais memória, trabalhoso.• Havendo muitos passos que levam a soluções, é preferível a estratégia "primeiro em
profundidade“
• "pesquisa em feixe" ("beam search")– método semelhante ao "primeiro em largura" mas, em cada nível não se
expandem todos os nós mas somente alguns seleccionados (ou melhores) -método informado
Page 6
11MIA - 2005/06
AB C
S
DE
F
G3
44
42 4
35
5
“Branch and Bound”Ramifica e Limita (“Branch and Bound”)
encontra passos óptimos– Em cada nível da árvore é continuado o passo até aí o de menor custo (mais
curto). – Comparam-se de novo todos os passos e volta-se a estender o de menor custo
até aí. – Repete-se o processo até o objectivo ser encontrado.– O primeiro passo a chegar ao objectivo é o mais curto.
• O exemplo representa um mapade estradas e respectivas distâncias.
• O problema é encontrar o caminho mais curto entre S e G
12MIA - 2005/06
“Branch and Bound”Algoritmo básico de “BRANCH AND BOUND” (“ramifica-e-limita”)
1. Formar uma Fila de passos parciais (caminhos de pesquisa da solução)A Fila inicial tem comprimento 1 (estado inicial).
2. ATÉ Fila vazia OU Objectivo atingidodeterminar se o 1ºPasso da Fila é = Objectivo
a. SE sim ENTÃO ir para 3b. SE não
i. retirar 1ºPasso da Filaii. formar novos Passos a partir do removido aplicando os operadores possíveisiii. acrescente os novos Passos na Filaiv. ordene crescentemente pelos custos acumulados
3. SE estado Objectivo alcançado ENTÃO sucesso /* pode ter de analizar passos com
SENÃO falha /* menor custo
Page 7
13MIA - 2005/06
Arrefecimento SimuladoArrefecimento Simulado ("Simulated Annealing")
("annealing" é o processo de arrefecer um metal liquefeito até solidificar)
Função SIMULATED-ANNEALING(problema, variação) retorna soluçãoinputs: descrição do problema
variação (mapeamento de tempo para "temperatura")próximo, corrente : nodosT é a "temperatura" controlando a probabilidade dos passos descendentes
corrente <-- gera_próximo(estado_inicial[problema])PARA t = 1 ATE � FAZER
T <-- variação[t]SE T = 0 ENTAO retorna correntepróximo <-- qualquer estado sucessor de corrente�E <-- valor[proximo] - valor[corrente]SE �E > 0 ENTAO corrente <-- próximoSENAO corrente <-- próximo com probabilidade e�E/T
Se variação baixa T suficientemente devagar, o algoritmo encontrará um óptimo global.
também usado como
método de optimização
14MIA - 2005/06
Arrefecimento Simulado– O Algoritmo “arrefecimento simulado” é uma variação do “subir a colina” em
que, no início do processo de pesquisa da solução, alguns movimentos“descendentes” (mais afastadas da solução) podem ser gerados.
– Torna assim a pesquisa mais independente do ponto inicial.
– Dever-se-á dizer que se “desce um vale” em vez de “subir a colina”.
– É similar a uma fusão de metais que depois se arrefece baixando o nível de energia.
– A aceitação de um novo estado que se afaste da solução é feita com umaprobabilidade e�E/T.
– A probabilidade depende ainda de uma “temperatura” que vai diminuindo com o tempo. Com valores altos da “temperatura”, os passos piores têm maisprobabilidade de serem executados.
Page 8
15MIA - 2005/06
O melhor-primeiro
O melhor-primeiro– Selecciona o nodo mais promissor de um conjunto deles usando uma função
heurística para a avaliação.– É uma pesquisa em grafo construindo uma árvore de prova.– Combina as estratégias de "primeiro em profundidade" com "primeiro em
largura".– Aplicação de funções dependentes do conhecimento do problema: funções
heurísticas• minimização do custo do passo Vs minimização do custo da pesquisa desse passo.• o poder heurístico é usado para ordenar os nós a pesquisar.
ex: puzzle de 8 : f(n)=p(n)+c(n) p-profundidadeSe c(n)=0 --> "primeiro em largura"c - número de erros
Usa-se uma "métrica" de algum modo ligada à distância para a solução.
16MIA - 2005/06
O melhor-primeiro
• Métodos “o melhor-primeiro”:– algoritmo “ganancioso” usa h*(n)– algoritmo do custo uniforme usa g(n)– algoritmo A* usa f*(n) = g(n) + h*(n)
Comparação entre métodos sistemáticos p-em-l , p-em-p , c-uniforme
nsscompleto
nssóptimo
b*mbdbdespaço
bm (ou bd se bd<bm)bdbdtempo
p-em-pc-uniformep-em-l
b : factor de ramificação
d : profundidade da solução
m : profundidade máxima
Page 9
17MIA - 2005/06
Algoritmo A*
• Algoritmo A* – Para escolher o melhor primeiro numa pesquisa em grafo.– Cada nó:
• estado + valor da função heurística + apontador para o pai + sucessores
– 2 listas de nós:• LABERTA: nós já gerados, com as respectivas funções de avaliação mas não
examinados • LFECHADA: nós já examinados
– Função heurística f* = g + h*• g : custo do passo até ao nó corrente• h* : estimação do custo do passo do nó corrente à solução
18MIA - 2005/06
Algoritmo A*ALGORITMO A*
LABERTA <-- estado inicial ; LFECHADA <-- vaziaATE encontrar Solução FAZER
SE LABERTA = vazia ENTAO retornar FalsoRetirar de LABERTA o nó N mais promissor (melhor f*)Colocar N em LFECHADASE N = Solução retornar (N ou passo)SENAO gerar sucessores de NPARA CADA sucessor de N FAZER
SucN = SucessorNSucN aponta para NComputar g(SucN) = g(N) + custo do passo de N a SucN
Page 10
19MIA - 2005/06
Algoritmo A*SE SucN ⊂ LABERTA
comparar os valores de g respectivosSE g(SucN) < g(nó antigo) ENTAO
Refazer apontador do nó antigo para N /*novo pai*/Registar novo custo g(nó antigo) e novo f* (nó antigo)
/*SENAO nada*/SENAO */⊂ LABERTA*/
SE SucN ⊂ LFECHADA ENTAO /*compare g (SucN) com g (nó antigo) */SE g (SucN) < g(nó antigo) ENTAO
Refazer apontador do nó antigo para NRegistar novo custo g (nó antigo) e f* (nó antigo)Propagar a melhoria para sucessores de N /*SENAO nada*/
/*SENAO nada*/SENAO /*SucN não pertence às listas*/
junte SucN a LABERTAcomputar f*(SucN) = g(SucN) + h*(SucN)
FIM
20MIA - 2005/06
Algoritmo A*– Como f* também depende de g, em cada nível não se escolhe o mais promissor
mas a melhor combinação da promessa com o melhor passo– No algoritmo A*, h* deve subestimar h para encontrar passo de custo óptimo.
Se h*=0, g=cte, primeiro em largura
Corolário: Decrescimento progressivo da AdmissibilidadeSe h* raramente sobre-estima h mais do que d, então A* raramente encontraráuma solução cujo custo seja superior a d + o custo óptimo do passo para a solução.
– A função c(n) para o puzzle de 8 está nesse caso porque é um limite inferior do n. de passos necessários para alcançar o objectivo.
– Seleccionar uma boa função heurística é crucial. • No puzzle de 8 é preferível h(n) = D(n) , onde D(n) é a soma das distâncias a que
cada elemento se encontra da posição correcta.• Outra: h(n) = D(n) + 3S(n). S=0 se n é seguida do seu sucessor e S=2 nos outros
casos. S=1 na casa central.
Page 11
21MIA - 2005/06
Métodos de PesquisaProblema dos baldes
Dois baldes, de capacidades 4 e 3 litros, respectivamente, estão inicialmentevazios. O objectivo é colocar 2 litros no 1ºbalde, e 0 litros no 2º. Os baldes nãopossuem qualquer marcação intermédia. As operações que pode realizar são:
• esvaziar um balde• encher (completamente) um balde• despejar um balde para o outro até que o segundo fique cheio• despejar um balde para o outro até que o primeiro fique vazio
Operadores:
5. despejar do 2ºp/ 1ºaté encher 1º6. despejar do 1ºp/ 2ºaté encher 2º7. despejar do 2ºp/ 1ºaté esvaziar 2º8. despejar do 1ºp/ 2ºaté esvaziar 1º
1. encher 1ºbalde2. encher 2ºbalde3. esvaziar 1ºbalde4. esvaziar 2ºbalde
22MIA - 2005/06
Métodos de Pesquisa
Primeiro em largura
encher 2ºbalde : b(0,3)despejar do 2ºp/ 1ºaté esvaziar 2º : b(3,0)encher 2ºbalde : b(3,3)despejar do 2ºp/ 1ºaté encher 1º : b(4,2)esvaziar 1ºbalde : b(0,2)despejar do 2ºp/ 1ºaté esvaziar 2º : b(2,0)
Primeiro em profundidade
encher 1ºbalde : b(4,0)encher 2ºbalde : b(4,3)esvaziar 1ºbalde : b(0,3)despejar do 2ºp/ 1ºaté esvaziar 2º : b(3,0)encher 2ºbalde : b(3,3)despejar do 2ºp/ 1ºaté encher 1º : b(4,2)esvaziar 1ºbalde : b(0,2)despejar do 2ºp/ 1ºaté esvaziar 2º : b(2,0)
Problema dos baldes (solução)
O melhor-primeiro
encher 2ºbalde : b(0,3)despejar do 2ºp/ 1ºaté esvaziar 2º : b(3,0)encher 2ºbalde : b(3,3)despejar do 2ºp/ 1ºaté encher 1º : b(4,2)esvaziar 1ºbalde : b(0,2)despejar do 2ºp/ 1ºaté esvaziar 2º : b(2,0)
função heurística (h ) = soma dasdiferenças entre quantidade actual e quantidade objectivo nos dois baldes
Page 12
23MIA - 2005/06
Algoritmo A* (aplicação)
Aplicação do Algoritmo A*
Dados 8 Lotes de terreno com 5 possíveis Usos:Recreio, Apartamentos, Vivendas, Cemitério, Lixeira
Critérios (Restrições) à atribuição:• Recreio próximo do lago• Evitar terrenos inclinados para construção, cemitério e lixeira• Solos instáveis maus para construção• Autoestrada longe de habitações e Recreio
Objectivo: Minimizar custo respeitando critérios
24MIA - 2005/06
Algoritmo A* (aplicação)
Page 13
25MIA - 2005/06
Algoritmo A* (aplicação)
0.81.411.71.60.91.31.2custo
nbnbnbnnlago
bbmmestrada
mmrmrbbbbinclinação
mbmbbbbsolo
l17l12l11l10l9l7l5l3características
naonaolixeira
naonaocemitério
naonaonaonaovivendas
naonaonaonaoapartamentos
naosimnaosimnaonaonaonaorecreio
l17l12l11l10l9l7l5l3
b : bomr : razoávelm : maumm : muito maun : não
usos/lotes
26MIA - 2005/06
Algoritmo A* (aplicação)Representação: Soli : Lista das atribuições de Usos no passo i
LUi : Lista dos Usos ainda não atribuídosLli : Lista dos Lotes ainda não atribuídos
Estado inicial:Sol0 = [] ; LU0 = [r,a,v,c,l] ; Ll0 = [l3,l5,l7,l9,l10,l11,l12,l17]
Objectivo:Soli = [r-Lr, a-La, v-Lv, c-Lc, l-Ll] ; LUi = [] ; Lli = [L1,L2,L3]
Função: f*(N) = g(N) + h*(N)– h*(N) soma dos custos dos p mais baratos lotes ainda não atribuídos; p é o numero de
Usos ainda não contemplados– g(N) custo da solução parcial até ao momento
Page 14
27MIA - 2005/06
Algoritmo A* (aplicação)Combinação do A* com
Satisfação de Restrições:
• O factor de ramificação emcada estado seria de 40.
• Aplicando as restrições e o princípio do mais restritoprimeiro, reduz-se a Árvorede Pesquisa.
• Estamos aqui também a usarheurística
28MIA - 2005/06
Pesquisa em “Jogos”
Pesquisa em "Jogos" ou Estratégias de Pesquisa considerando adversários
– Jogos: Campo privilegiado para aplicação e estudo destas técnicas de pesquisa porque:
• a função da avaliação pode ser sempre possível de computar• as regras a aplicar para gerar novos estados são em número não exagerado e bem
definidas. • o objectivo também está bem caracterizado
– É necessário "look ahead“.
– Ex. de função de avaliação no xadrez:• soma pesada de vários factores como: vantagem de peças; posição da rainha;
controlo do centro, ...
Page 15
29MIA - 2005/06
MiniMax– Minimax é um procedimento de tipo "primeiro em profundidade". – A profundidade é limitada à priori.
Procedimento básico da estratágia Minimax
Determinar SE o limite de profundidade da pesquisa foi atingidoOU se o nível é minimizador OU se o nível é maximizadorENTAO
SE atingiu profundidade limitecompute o valor da posição corrente e retorne o resultado
SE o nível é minimizadoraplique Minimax nos filhos da posição corrente e retorne o mínimo.
SE o nível é maximizadoraplique Minimax aos filhos da posição corrente e retorne o máximo.
30MIA - 2005/06
Processo de pesquisa com Minimax– exemplo de árvore de pesquisa de nível 3 e factor de ramificação 3– os valores da função de mérito são relativas ao jogador "A"
5
4 3
5
3 916
8 9 4
59 6
8 7 3 9 1 6 2 4 1
1 3 5 3 9 2 6 5 2
1 2 3 9 7 2 16 6 4
MAX
MIN
MAX
Minimax
Page 16
31MIA - 2005/06
Minimax-��
Cortes ALFA-BETA ( “�� pruning”)– Permite diminuir o número de nós visitados e de funções nos nós avaliadas em
relação ao Minimax.
– Também é "depth first" com "branch and bound".
– Inclui-se um limite por cada jogador. O limite inferior para o valor a maximizar(�) e um limite superior para o valor a minimizar (�)
– A pesquisa dos sucessores de um nó no nível minimizador termina quando um valor < � é encontrado;
– Se o nível é maximizador termina quando se encontra um valor para um sucessor > �
– O nível maximizador (minimizador) tem de conhecer � (�) não para o utilizarmas para o passar para o nível seguinte. Cada nível recebe � e �, um para usaroutro para passar.
32MIA - 2005/06
Minimax-��Minimax-�� : procedimento básico
Determinar se o nível é o topo OU a profundidade limite OU é minimizador OU émaximizador.
SE o nível é o Topo ENTAO �=-MAXINT e �MAXINTSE profundidade máxima ENTAO computar a função de avaliação e retornar o resultadoSE é um nível maximizador ENTAO
ENQUANTO (todos os sucessores não forem examinados E �<� ) FAZER� é o maior dos valores seguintes:
� herdado e o máximo de Minimax-�� aplicado aos sucessoresAplique ao próximo sucessor já os novos valores � e �
Retorne �.SE é um nível minimizador ENTAO
ENQUANTO (todos os sucessores não forem examinados E �<�) FAZER � é o mínimo dos valores seguintes:
� herdado e o mínimo valor de Minimax- �� dos sucessoresAplique ao próximo sucessor já os novos valores de � e �
Retorne �
Page 17
33MIA - 2005/06
Minimax-��4616
279321256293531142619378
[-�,�]
[-�,�]
v=8 v=7
v=3
[8,�][8,�][8,�]
v=8
[-�,8][-�,8][-�,4]
[-�,8]
[-�,8][9,8]--
v=9
v=9
v=2 v=4
v=1
[2,8][4,8][4,8]
v=4
v=4[4,�]
[4,�][5,�][5,�]
[4,5][4,5][4,5]
[5,5]--
[4,�][4,�][5,�]
[4,5][9,5]
-
[6,5]--
[5,�][5,�][5,�]
[4,�][4,5] [4,5]
v=5 v=9v=6
v=1 v=3v=5
v=3 v=9 v=6 v=1 v=2
v=3
v=5
[5,�]
[5,�] v=5
34MIA - 2005/06
Negamax
Algorítmo Negamax
– Este algorítmo é semelhante ao Minmax mas tira partido das heurísticas poderem ser as mesmas para o jogador e seu adversário (como é o caso do Xadrez)
– Enquanto que o Minimax maximiza a heurística do jogador e minimiza a do adversário, o Negamax nega (multiplica por -1) o valor da heurística correspondente ao nível onde teria de minimizar.
– Assim não necessita de saber qual é o nível em que se encontra e maximiza sempre.