Upload
zoltin
View
23
Download
0
Embed Size (px)
DESCRIPTION
Exercício de engenharia do conhecimento em Prolog. Criar base de conhecimento sobre safári Tarefa do sistema inteligente: Montar expedição para caçar grupo de animais Escolher: Tripulação Veículos Armas Recursos: combustível, munições Em função do tipo de animal e terreno. Safári. - PowerPoint PPT Presentation
Citation preview
Exercício de engenharia do Exercício de engenharia do conhecimento em Prologconhecimento em Prolog
Criar base de conhecimento sobre safári Tarefa do sistema inteligente:
Montar expedição para caçar grupo de animais Escolher:
Tripulação Veículos Armas Recursos: combustível, munições
Em função do tipo de animal e terreno
SafáriSafári
Taxonomia de animais animais de
diversas habilidadese comportamentos:
• sensores,atuadores• tamanho,velocidade •corre,trepa,nada,voa
• inteligência• agressividade
Taxonomia de pessoas pessoas de
diversas habilidadese comportamentos:
• paleontólogo,hacker, piloto,soldado, • líder,corajoso,
altruísta Taxonomia de
terrenosterrenos: • floresta,savana,deserto• mangue,rio,lagoa,mar
• planície,montanha• caverna, construçãoTaxonomia de
veículosveículos:• moto,jipe,
caminhão-lagarta?• helicóptero,hidravião
• hovercraft,lancha,jet-ski,submarino
Taxonomia de armasarmas:• metralhadora• lança-chama• fuzil-arpão
• torpedo
Taxonomia derecursosrecursos:
• bebida,comida• energia,combustível
• munições,peças• telecomunicações
Processo de desenvolvimento: Processo de desenvolvimento: modelagem e implementação modelagem e implementação
Modelagem entidade-relacionamento ou OO estrutural em UML como para um BD relacional
Implementação Prolog: Cada classe de entidade implementada por um predicado unário e
uma variável Cada instância de entidade implementada por uma constante Cada atributo de cada classe implementada por uma regra
valorAtributo(X) :- classe(X) ou atributo(V,X) :- classe(X). Cada relacionamento N-ário implementada por um predicado
N-ário e N variáveis Cada relações hierárquica de subclasse/superclasse implementada
por uma regra superclasse(X) :- subclasse(X). Cada relações não diretamente modeladas, mas que podem ser
construídas a partir da junção de vários relacionamentos modelados, para responder a consultas, implementada por uma (ou várias) regra(s)
Cada restrição de integridade do domínio implementada por uma (ou várias) regra(s)
Processo de desenvolvimento: testesProcesso de desenvolvimento: testes
Criar conjunto de consultas para cada predicado Prolog definido
Para cada consulta, definir respostas esperadas (valor de verdade e das variáveis)
Desenhar grafo de dependências entre os predicados
Testar os predicados bottom-up, começando pelos predicados nas folhas e subindo do grafo
Para cada predicado, testar todas as soluções retornadas, forçando o backtracking
a(X,Y,Z) :- b(X,Y), c(Y,Z).b(X,Y) :- d(X), e(Y), f(X).c(Y,Z) :- g(Y,U), h(Z,V), c(U,V).
d/1 g/2e/1 f/2 h/2
b/2 c/2
a/3
Exemplos de regras e fatosExemplos de regras e fatos
aquatico(Animal) :- tubarao(Animal).aquatico(Animal) :- aveMarina(Animal).terrestre(Animal) :- tarentula(Animal).terrestre(Animal) :- aveMarina(Animal).aereo(Animal) :- aveMarina(Animal).
mata(Arma,Animal) :- potenciaArma(Arma,Potencia), tamanhoAnimal(Animal,Tamanho),
suficiente(Potencia,Tamanho), elementoArma(Arma,Elemento), elementoAnimal(Animal,Elemento).
captura(Arma,Animal) :- ....
elementoArma(fuzil,ar).elementoArma(fuzilHarpao,água).
elementoAnimal(Animal,ar) :- terrestre(Animal).elementoAnimal(Animal,ar) :- aereo(Animal).elementoAnimal(Animal,agua) :-
aquatico(Animal).
aquaticoProfundo(Veiculo) :- submarino(Veiculo).
aquaticoSuperficial(Veiculo) :- hovercraft(Veiculo).
terrestre(Veiculo) :- hovercraft(Veiculo).
terreste(Veiculo) :- jeep(Veiculo).
sabeUsar(fuzil,Pessoa) :- soldado(Pessoa).
sabeUsar(fuzilHarpão) :- mergulhador(Pessoa).
sabeUsar(submarino,Pessoa) :- piloto(Pessoa),marinheiro(Pessoa).
soldado(trinity).mergulhador(trinity).piloto(trinity).marinheiro(trinity).
Exemplos de regras e fatosExemplos de regras e fatos
conflito(Tripulacao) :- member(Pessoa1,Tripulacao), member(Pessoa2,Tripulacao),Pessoa1 /= Pessoa2,
paranoica(Pessoa1), paranoica(Pessoa2), semLider(Tripulacao).
semLider([H|T]) :- not lider(H), semLider(T).
perigoso(jacaré).
?- safari([rinoceronte,baleia], Triplucacao, Veiculos,
Combustiveis, Armas, Munições].
Tripulacao = [trinity,buckarooBanzai].
Armas = [fuzil,rede,fuzilHarpão].Veiculos = [hovercraft]Combustiveis =
[combustivel(gasolina,1000)].