[go: up one dir, main page]

0% found this document useful (0 votes)
281 views2 pages

Animal Identification Game

This document describes a simple expert system for animal identification. The system uses identification rules to determine what animal the user has chosen based on its attributes. It asks the user questions to verify attributes and records their answers. If later questions contradict earlier answers, the current hypothesis fails. This allows it to identify animals without asking duplicate questions.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
281 views2 pages

Animal Identification Game

This document describes a simple expert system for animal identification. The system uses identification rules to determine what animal the user has chosen based on its attributes. It asks the user questions to verify attributes and records their answers. If later questions contradict earlier answers, the current hypothesis fails. This allows it to identify animals without asking duplicate questions.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 2

ANIMAL IDENTIFICATION GAME Simple expert system for animal identification.

The program uses its identification rules to determine the animal that you have chosen. /* animal.pro animal identification game. start with ?- go. go :- hypothesize(Animal), write('I guess that the animal is: '), write(Animal), nl, undo. /* hypotheses to be tested */ hypothesize(cheetah) :- cheetah, !. hypothesize(tiger) :- tiger, !. hypothesize(giraffe) :- giraffe, !. hypothesize(zebra) :- zebra, !. hypothesize(ostrich) :- ostrich, !. hypothesize(penguin) :- penguin, !. hypothesize(albatross) :- albatross, !. hypothesize(unknown). /* no diagnosis */ /* animal identification rules */ cheetah :- mammal, carnivore, verify(has_tawny_color), verify(has_dark_spots). tiger :- mammal, carnivore, verify(has_tawny_color), verify(has_black_stripes). giraffe :- ungulate, verify(has_long_neck), verify(has_long_legs). zebra :- ungulate, verify(has_black_stripes). ostrich :- bird, verify(does_not_fly), verify(has_long_neck). penguin :- bird, verify(does_not_fly), verify(swims), verify(is_black_and_white). albatross :- bird, verify(appears_in_story_Ancient_Mariner), verify(flys_well). /* classification rules */ mammal :- verify(has_hair), !. mammal :- verify(gives_milk). bird :- verify(has_feathers), !. bird :- verify(flys), 1 */

verify(lays_eggs). carnivore :- verify(eats_meat), !. carnivore :- verify(has_pointed_teeth), verify(has_claws), verify(has_forward_eyes). ungulate :- mammal, verify(has_hooves), !. ungulate :- mammal, verify(chews_cud). /* how to ask questions */ ask(Question) :write('Does the animal have the following attribute: '), write(Question), write('? '), read(Response), nl, ( (Response == yes ; Response == y) -> assert(yes(Question)) ; assert(no(Question)), fail). :- dynamic yes/1,no/1. /* How to verify something */ verify(S) :(yes(S) -> true ; (no(S) -> fail ; ask(S))). /* undo all yes/no assertions */ undo :- retract(yes(_)),fail. undo :- retract(no(_)),fail. undo. Note: i) The program is mainly interesting with regard to how it tries to verify certain properties that it uses to draw conclusions, and how it asks questions and records the answers for further reference. ii) If a question q is asked and the answer is 'yes', then that answer is recorded by asserting 'yes(q)' and succeeding, otherwise the answer is recorded by asserting 'no(q)' and failing. iii) Even 'yes' answers need to be recorded since a subsequent 'no' answer to a different question while trying to verify the same hypothesis may cause the entire hypothesis to fail, but that same 'yes' answer could lead to a successful verification of a different hypothesis later. iv) This is how the program avoids asking the same question twice. The general method of verifying a condition q is then to check whether 'yes(q)' has been stored in memory, and succeed, or 'no(q)' has been stored, and fail, otherwise ask(q). 2

You might also like