《人工智能小型專家系統(tǒng)的設(shè)計與實現(xiàn).docx》由會員分享,可在線閱讀,更多相關(guān)《人工智能小型專家系統(tǒng)的設(shè)計與實現(xiàn).docx(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
人工智能技術(shù)基礎(chǔ)實驗報告
指導(dǎo)老師: 朱力
任課教師: 張勇
實驗三 小型專家系統(tǒng)設(shè)計與實現(xiàn)
一、實驗?zāi)康?
(1)增加學(xué)生對人工智能課程的興趣;
(2)使學(xué)生進一步理解并掌握人工智能prolog語言;
(3)使學(xué)生加強對專家系統(tǒng)課程內(nèi)容的理解和掌握,并培養(yǎng)學(xué)生綜合運用所學(xué)知識開發(fā)智能系統(tǒng)的初步能力。
二、實驗要求
(1)用產(chǎn)生式規(guī)則作為知識表示,用產(chǎn)生系統(tǒng)實現(xiàn)該專家系統(tǒng)。
(2)可使用本實驗指導(dǎo)書中給出的示例程序,此時只需理解該程序,并增加自己感興
2、趣的修改即可;也可以參考該程序,然后用PROLOG語言或其他語言另行編寫。
(3)程序運行時,應(yīng)能在屏幕上顯示程序運行結(jié)果。
三、實驗環(huán)境
在Turbo PROLOG或Visual Prolog集成環(huán)境下調(diào)試運行簡單的PROLOG程序。
四、實驗內(nèi)容
建造一個小型專家系統(tǒng)(如分類、診斷、預(yù)測等類型),具體應(yīng)用領(lǐng)域由學(xué)生自選,具體系統(tǒng)名稱由學(xué)生自定。
五、實驗步驟
1、專家系統(tǒng):
1.1建造一個完整的專家系統(tǒng)設(shè)計需完成的內(nèi)容:
1.用戶界面:可采用菜單方式或問答方式。
2.知識庫(規(guī)則庫):存放產(chǎn)生式規(guī)則,庫中的規(guī)則可以增刪。
3.數(shù)據(jù)庫:用來存放用戶回答的問題、已知事實
3、、推理得到的中
間事實。
4.推理機:如何運用知識庫中的規(guī)則進行問題的推理控制,建議
用正向推理。
5.知識庫中的規(guī)則可以隨意增減。
1.2推理策略
推理策略包括:正向(數(shù)據(jù)驅(qū)動),反向(目標驅(qū)動),雙向
2、動物分類實驗規(guī)則集
(1)若某動物有奶,則它是哺乳動物。
(2)若某動物有毛發(fā),則它是哺乳動物。
(3)若某動物有羽毛,則它是鳥。
(4)若某動物會飛且生蛋,則它是鳥。
(5)若某動物是哺乳動物且有爪且有犬齒且目盯前方,則它是食肉動物。
(6)若某動物是哺乳動物且吃肉,則它是食肉動物。
(7)若某動物是哺乳動物且有蹄,則它是有蹄動物。
(8)若某動物是有蹄動
4、物且反芻食物,則它是偶蹄動物。
(9)若某動物是食肉動物且黃褐色且有黑色條紋,則它是老虎。
(10)若某動物是食肉動物且黃褐色且有黑色斑點,則它是獵豹。
(11)若某動物是有蹄動物且長腿且長脖子且黃褐色且有暗斑點,則它是長頸鹿。
(12)若某動物是有蹄動物且白色且有黑色條紋,則它是斑馬。
(13)若某動物是鳥且不會飛且長腿且長脖子且黑白色,則它是駝鳥。
(14)若某動物是鳥且不會飛且會游泳且黑白色,則它是企鵝。
(15)若某動物是鳥且善飛且不怕風(fēng)浪,則它是海燕。
3、實驗具體步驟
本實驗用正向推理策略來完成,實現(xiàn)推理機的程序與知識庫的具體內(nèi)容無關(guān),對知識庫的修改不需要改動推理
5、機。
1、充分理解知識庫現(xiàn)有知識,提出待解決問題
2、建立規(guī)則庫
3、從規(guī)則庫中獲取可用規(guī)則集
4、確定搜索控制策略(例如:估價函數(shù)策略)
5、通過搜索控制策略,從規(guī)則集中選出最優(yōu)規(guī)則
6、執(zhí)行最優(yōu)規(guī)則,更新知識庫
7、反復(fù)多次以上步驟
8、獲得解決方案或無解
4、編寫程序及調(diào)試運行步驟
4.1程序代碼
“小型動物分類專家系統(tǒng)”
/*An Animal Classifying Expert System*/
database
xpositive(symbol,symbol)
xnegative(symbol,symbol)
predicates
run
6、
animal_is(symbol)
it_is(symbol)
positive(symbol,symbol)
negative(symbol,symbol)
clear_facts
remember(symbol,symbol,symbol)
ask(symbol,symbol)
goal
run.
clauses
run:-
animal_is(X), !,
write("\nYour animal may be a(n) ", X),
nl, nl, clear_facts.
run:-
write("\nUnable
7、to determine what"),
write("your animal is.\n\n"), clear_facts.
positive(X,Y):-xpositive(X, Y),!.
positive(X,Y):-not(xnegative(X,Y)), ask(X,Y).
negative(X,Y):-xnegative(X,Y), !.
negative(X,Y):-not(xpositive(X,Y)), ask(X,Y).
ask(X,Y):-
write(X, " it ", Y, "?\n"),
readln(Reply),
8、remember(X, Y, Reply).
remember(X, Y, y):-asserta(xpositive(X, Y)).
remember(X, Y, n):-asserta(xnegative(X, Y)),fail.
clear_facts:-retract(xpositive(_, _)),fail.
clear_facts:-retract(xnegative(_, _)),fail.
clear_facts:-write("\n\nPlease press the space bar to Exist"),
readchar(_).
/* K
9、nowledge Base*/
animal_is(cheetah):- %獵豹
it_is(carnivore),
positive(has,tawny_color),
positive(has,black_spots).
animal_is(tiger):- %老虎
it_is(carnivore),
positive(has, tawny_color),
positive(has, black_stripes).
animal_is(giraffe):- %長頸鹿
it_is(ungulate),
positive(has,
10、 long_neck),
positive(has, long_legs),
positive(has, dark_spots).
animal_is(zebra):- %斑馬
it_is(ungulate),
positive(has,black_stripes).
animal_is(ostrich):- %鴕鳥
it_is(bird),
negative(does, fly),
positive(has, long_neck),
positive(has, long_legs),
positive(has, black_a
11、nd_white_color).
animal_is(penguin):- %企鵝
it_is(bird),
negative(does, fly),
positive(does, swim),
positive(has, black_and_white_color).
animal_is(albatross):- %信天翁
it_is(bird),
positive(does,fly_well).
it_is(mammal):- %哺乳動物
positive(has,hair).
it_is(mammal):-
positive
12、(does,give_milk).
it_is(bird):- %鳥類
positive(has,feathers).
it_is(bird):-
positive(does,fly),
positive(does,lay_eggs).
it_is(carnivore):- %肉食動物
positive(does,eat_meat).
it_is(carnivore):-
it_is(mammal),
positive(has,pointed_teeth),
positive(has,claws),
positive(has,fo
13、rward_eyes).
it_is(ungulate):- %有蹄類動物
it_is(mammal),
positive(has,hooves).
it_is(ungulate):-
it_is(mammal),
positive(does,chew_cud).
4.2調(diào)試步驟
1.在TXT文本中編寫規(guī)則代碼,添加到狀態(tài)圖通用搜索程序中,修改程序。
2.打開Turbo prolog2.0文件,啟動prolog.exe應(yīng)用程序,并按空格鍵(SPACE)進入集成開發(fā)環(huán)境。
3.選擇Setup項,打開下拉菜單,選擇Directories項,進行工作目錄修改,
14、按Esc鍵退出,選擇Save Configuration項,保存修改。
4.在相應(yīng)的路徑所在文件件夾中會生成work.Pro文件將其用文本打開,將要運行的程序?qū)懭?,保存?
5.選擇Files項,選擇Load項,選擇要打開的示例程序
6.編輯之后,可以選擇Run項,執(zhí)行程序,可以在Dialog窗口進行詢問,并回答y/n,依次回答問題,即可找到解
7.退出,選擇Quit項,可以退出Turbo Prolog程序。
4.3書籍識別系統(tǒng)
根據(jù)所給示例程序,我修改出一個簡單的書籍識別系統(tǒng)
4.3.1系統(tǒng)簡介
這是一個簡單的書籍識別系統(tǒng),有:唐詩三百首、魯迅散文集、紅樓夢、泰戈爾詩詞、呼嘯山
15、莊。使用我們這個系統(tǒng),只需根據(jù)窗口提供的內(nèi)容回答y/n,系統(tǒng)將會幫你選擇你可能中意的書籍。
該專家系統(tǒng)設(shè)計書籍的特性是:中文,英文,詩集,散文,小說
各種書籍特性如下:
書籍
特性
唐詩三百首
中文
詩詞
紅樓夢
中文
小說
泰戈爾詩詞
英文
詩詞
魯迅散文集
中文
散文
呼嘯山莊
英文
小說
4.3.2系統(tǒng)程序
database
xpositive(symbol,symbol)
xnegative(symbol,symbol)
predicates
run
book_is(symbol)
positive(symbol,symb
16、ol)
negative(symbol,symbol)
clear_facts
remember(symbol,symbol,symbol)
ask(symbol,symbol)
goal
run.
clauses
run:-
book_is(X), !,
write("\nYour favorite book may be ", X),
nl, nl, clear_facts.
run:-
write("\nUnable to determine what"),
write("your book is.\n\n"), clear
17、_facts.
positive(X,Y):-xpositive(X,Y),!.
positive(X,Y):-not(xnegative(X,Y)), ask(X,Y).
negative(X,Y):-xnegative(X,Y), !.
negative(X,Y):-not(xpositive(X,Y)), ask(X,Y).
ask(X,Y):-
write("Question:- ",X, " it ", Y, "?\n"),
readln(Reply),
remember(X,Y, Reply).
remember(X,Y, y):-asse
18、rta(xpositive(Y)).
remember(X,Y, n):-asserta(xnegative(Y)),fail.
clear_facts:-retract(xpositive(_, _)),fail.
clear_facts:-retract(xnegative(_, _)),fail.
clear_facts:-write("\n\nPlease press the space bar to Exist"),
readchar(_).
/* Knowledge Base*/
book_is(tangShiSaibaishou):- %唐詩三百首
19、 positive(is,chinese),
positive(is,poem).
book_is(luxunwenji):- %魯迅文集
positive(is,chinese),
positive(is, prose).
book_is(hongloumeng):- %紅樓夢
positive(is, chinese),
positive(is, novel).
book_is(taigerwenji):- %泰戈爾文集
positive(is, english),
positive(is, poem).
book_is(h
20、uxiaoshanzhaung):- %呼嘯山莊
positive(is, english),
positive(is, novel).
五、實驗結(jié)果
5.1動物分類實驗結(jié)果
圖1
圖2
圖3
5.2書籍識別實驗結(jié)果
圖4
圖5
圖6
六、問題思考
思考:你所實現(xiàn)的基于產(chǎn)生式的專家系統(tǒng)所采用的推理算法是正向推理還是反向推理?采用prolog語言編寫專家系統(tǒng)有何優(yōu)點與不足?
解:(1)正向推理(2)嚴格來講,該專家系統(tǒng)程序中并無顯式的推理機,而是利用了PROLOG語言本身的推理機制實現(xiàn)推理的。這就是說,用PROLOG編寫
21、專家系統(tǒng)程序,可以省去推理機部分。如果用其他語言編程,推理機則是必不可少的。當然,用PROLOG編寫專家系統(tǒng)程序,也可以不用它自身的推理機作為所實現(xiàn)的專家系統(tǒng)的推理機,而用戶自己重新編寫一個顯式的推理機,這可根據(jù)問題和需要而定。如果要重新編寫推理機,一般說來,規(guī)則就要用PROLOG的事實來實現(xiàn)。知識庫就要用PROLOG的動態(tài)數(shù)據(jù)庫來實現(xiàn)。
七、實驗中出現(xiàn)的問題及解決方案
實驗中由于最開始對于專家系統(tǒng)了解不夠深刻,對于理解小動物分類的程序是,遇到了很多問題,后來我仔細看了書,掌握了專家系統(tǒng)的整體架構(gòu),對于動態(tài)數(shù)據(jù)庫有了一定的了解,加深了我對于程序的理解,同時有咨詢老師和同學(xué),理解了程序。
在理解程序之后,我又嘗試著自己改編了一段小程序,雖然遇到了一些語句上的小問題,但是翻書之后,問題可以解決,同時程序可以運行出來。
八、實驗總結(jié)
通過本次實驗,加深了我對人工智能課程的興趣,進一步掌握了prolog語言,加深了我對于專家系統(tǒng)的理解和掌握,理解了專家系統(tǒng)的知識庫,推理機,動態(tài)數(shù)據(jù)庫。并且在這最后一次人工智能上機實驗中,嘗試著自己修改編寫一段程序,相對于前兩次實驗,我對于prolog語言的運用更加熟悉。
16