60 likes | 162 Views
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 Em função do tipo de animal e terreno. Safári. Taxonomia de armas :
E N D
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 • Em função do tipo de animal e terreno
Safári • Taxonomia de armas: • metralhadora • lança-chama • fuzil-arpão • torpedo • Taxonomia de • pessoas de • diversas habilidades • e comportamentos: • paleontólogo,hacker, piloto,soldado • Taxonomia de • veículos: • moto,jipe,caminhão-lagarta? • helicóptero,hidravião • hovercraft,lancha,jet-ski,submarino • Taxonomia de • animais de • diversas habilidades • e comportamentos: • sensores,atuadores • tamanho,velocidade • corre,trepa,nada,voa • inteligência • agressividade • Taxonomia de • terrenos: • floresta,savana,deserto • mangue,rio,lagoa,mar • planície,montanha • caverna, construção
Processo de desenvolvimento: 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)
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). a/3 b/2 c/2 Processo de desenvolvimento: testes d/1 e/1 f/2 h/2 g/2
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 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)]. Exemplos de regras e fatos