Exercício de engenharia do conhecimento em Prolog
description
Transcript of Exercício de engenharia do conhecimento em Prolog
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)].