Você está na página 1de 5

UNIVERSIDADE DO VALE DO ITAJA UNIVALI MESTRADO EM COMPUTAO APLICADA DISCIPLINA: SISTEMAS BASEADOS EM CONHECIMENTO PROFESSOR: Raimundo C. Ghizoni Teive.

. Aluno: Andrey Kuehlkamp RELATRIO DE ATIVIDADE Na atividade solicitada na aula de 12/04, o aluno deveria resolver uma adaptao do problema das 5 casas, modelando um Sistema Especialista no CLIPS para tal, descrever o processo de soluo do problema, e analisar os resultados obtidos. A soluo utilizada baseou-se na criao de um template genrico para a associao de atributo/valor/casa. Na definio deste template, foi utilizado o tag field, para poder garantir essa flexibilidade. O prximo passo foi definir a inicializao do sistema, onde com o comando assert so definidos todos os valores possveis para cor, nacionalidade, animal de estimao e bebida preferida. Essa inicializao realizada atravs de uma regra sem premissas (startup), o que garante a sua execuo imediata no incio do processo. Em seguida inicializao dos valores possveis, uma regra chamada gera-combinacoes, como o nome sugere, gera todas as possveis combinaes entre os valores definidos na inicializao para nacionalidade, cor, animal e bebida, associando-os com o nmero de uma casa, qual possivelmente pertencem. Neste momento, entra em ao a mais complexa das regras do sistema, chamada buscasolucao. A complexidade desta regra devido ao fato de que em sua premissa devem constar todas as restries iniciais do sistema, de modo que o CLIPS possa filtrar entre as combinaes possveis geradas no passo anterior, somente aquela que seja a soluo verdadeira para o problema. A maior dificuldade na construo desta regra foi a construo de todas as condies de restrio na sintaxe do CLIPS, que um pouco truncada. No RHS (right-hand-side) desta regra, foi colocado um comando assert, que define os valores soluo encontrados, aps a aplicao das condies definidas no LHS. Depois de encontrados os valores verdade para as condies iniciais do problema, a regra mostra-solucao faz a tabulao dos dados para exibio na tela. No LHS da regra, realizado o carregamento das solues encontradas na regra anterior para variveis, que sero utilizadas no RHS para exibir os valores encontrados na tela. A soluo encontrada resolveu satisfatoriamente o problema apresentado, e importante mencionar, foi baseada na implementao do exemplo zebra.clp, do CLIPS.

A maior dificuldade na soluo do problema a mudana de paradigma na utilizao do CLIPS, onde, diferentemente do que a maioria de ns estamos acostumados, a busca pela soluo no se d de maneira linear ou iterativa, e sim atravs da especificao precisa, porm simples de templates para representao de fatos, e de regras para combinao desses fatos e gerao de inferncias. Abaixo, segue a listagem do cdigo CLIPS produzido para a resoluo do problema. 1. Definio dos valores iniciais:
(defrule startup => (assert (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor (valor )

cor VERMELHA) cor VERDE) cor AMARELA) cor AZUL) nacionalidade INGLES) nacionalidade NORUEGUES) nacionalidade DINAMARQUES) nacionalidade ALEMAO) animal PASSAROS) animal CACHORROS) animal GATOS) animal PEIXES) bebida CAFE) bebida CERVEJA) bebida CHA) bebida AGUA))

2. Definio do template para associao entre campos (field a), valores (field v) e casas (field h):
(deftemplate avh (field a) (field v) (field h))

3. Gerao de todas as combinaes possveis entre campos, valores e casas:


(defrule gera-combinacoes ?f <- (valor ?s ?e) => (retract ?f) (assert (avh (a ?s) (v (avh (a ?s) (v (avh (a ?s) (v (avh (a ?s) (v

?e) ?e) ?e) ?e)

(h (h (h (h

1)) 2)) 3)) 4))))

4. Definio da regra que define as condies para soluo do problema, dentre todas as combinaes geradas:
(defrule busca-solucao ; O ingls vive na casa vermelha. (avh (a nacionalidade) (v INGLES) (h ?n1)) (avh (a cor) (v VERMELHA) (h ?c1&?n1)) ; O homem da casa verde bebe caf. (avh (a cor) (v VERDE) (h ?c2&~?c1)) (avh (a bebida) (v CAFE) (h ?b1&?c2)) ;O Noruegus vive na primeira casa. (avh (a nacionalidade) (v NORUEGUES) (h ?n2&~?n1&1))

;O homem que cria pssaros bebe cerveja. (avh (a animal) (v PASSAROS) (h ?a1)) (avh (a bebida) (v CERVEJA) (h ?b2&~?b1&?a1)) ;O Dinamarqus bebe ch. (avh (a nacionalidade) (v DINAMARQUES) (h ?n3&~?n2&~?n1)) (avh (a bebida) (v CHA) (h ?b3&~?b2&~?b1&?n3)) ;O homem da casa amarela bebe gua. (avh (a cor) (v AMARELA) (h ?c3&~?c2&~?c1)) (avh (a bebida) (v AGUA) (h ?b4&~?b3&~?b2&~?b1&?c3)) ;A casa verde fica ao lado da casa vermelha. (avh (a cor) (v VERDE) (h ?c2&~?c3&~?c1)) (avh (a cor) (v VERMELHA) (h ?c1&~?c3&~?c2&:(or (= ?c2 (+ ?c1 1)) (= ?c2 (- ?c1 1))) )) ;O homem que cria cachorros vive ao lado do noruegus. (avh (a nacionalidade) (v NORUEGUES) (h ?n2&~?n1&~?n3)) (avh (a animal) (v CACHORROS) (h ?a2&~?a1&=(+ ?n2 1))) ;O homem que toma ch vive ao lado do que cria gatos. (avh (a animal) (v GATOS) (h ?a3&~?a2&~?a1)) (avh (a bebida) (v CHA) (h ?b3&~?b4&~?b2&~?b1&:(or (= ?a3 (- ?b3 1)) (= ?a3 (+ ?b3 1))) )) ;O alemo cria peixes. (avh (a nacionalidade) (v ALEMAO) (h ?n4&~?n3&~?n2&~?n1)) (avh (a animal)(v PEIXES)(h ?a4&~?a3&~?a2&~?a1&?n4)) ;O noruegus vive ao lado da casa azul. (avh (a cor) (v AZUL) (h ?c4&~?c3&~?c2&~?c1)) (avh (a nacionalidade)(v NORUEGUES)(h ?n2&~?n4&~?n3&~?n1&=(- ?c4 1))) ;O homem que bebe cerveja vizinho do que cria cachorros. (avh (a bebida)(v CERVEJA)(h ?b2&~?b4&~?b3&~?b1)) (avh (a animal)(v CACHORROS)(h ?a2&~?a4&~?a3&~?a1&:(or (= ?a2 (+ ?b2 1)) (= a2 (- ?b2 1))))) => (assert (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao (solucao ) nacionalidade INGLES ?n1) nacionalidade NORUEGUES ?n2) nacionalidade DINAMARQUES ?n3) nacionalidade ALEMAO ?n4) cor VERMELHA ?c1) cor VERDE ?c2) cor AMARELA ?c3) cor AZUL ?c4) bebida CAFE ?b1) bebida CERVEJA ?b2) bebida CHA ?b3) bebida AGUA ?b4) animal PASSAROS ?a1) animal CACHORROS ?a2) animal GATOS ?a3) animal PEIXES ?a4))

5. Definio da regra para tabulao e exibio dos valores soluo encontrados atravs da regra acima:
(defrule mostra-solucao ?f1 <- (solucao nacionalidade ?n1 1) ?f2 <- (solucao cor ?c1 1)

?f3 <- (solucao bebida ?b1 1) ?f4 <- (solucao animal ?a1 1) ?f5 <- (solucao nacionalidade ?n2 2) ?f6 <- (solucao cor ?c2 2) ?f7 <- (solucao bebida ?b2 2) ?f8 <- (solucao animal ?a2 2) ?f9 <- (solucao nacionalidade ?n3 3) ?f10 <- (solucao cor ?c3 3) ?f11 <- (solucao bebida ?b3 3) ?f12 <- (solucao animal ?a3 3) ?f13 <- (solucao nacionalidade ?n4 4) ?f14 <- (solucao cor ?c4 4) ?f15 <- (solucao bebida ?b4 4) ?f16 <- (solucao animal ?a4 4) => (retract ?f1 ?f2 ?f3 ?f4 ?f5 ?f6 ?f7 ?f8 ?f9 ?f10 ?f11 ?f12 ?f13 ?f14 ?f15 ?f16) (format t "CASA | %-13s | %-8s | %-9s | %-12s%n" Nacionalidade Cor Animal Bebida) (format t "------------------------------------------------------%n") (format t " 1 | %-13s | %-8s | %-9s | %-12s%n" ?n1 ?c1 ?a1 ?b1) (format t " 2 | %-13s | %-8s | %-9s | %-12s%n" ?n2 ?c2 ?a2 ?b2) (format t " 3 | %-13s | %-8s | %-9s | %-12s%n" ?n3 ?c3 ?a3 ?b3) (format t " 4 | %-13s | %-8s | %-9s | %-12s%n" ?n4 ?c4 ?a4 ?b4) (printout t crlf crlf)

6. Sada final do CLIPS, apresentando a soluo do problema:

Você também pode gostar