《動物識別專家系統(tǒng)實驗報告.doc》由會員分享,可在線閱讀,更多相關(guān)《動物識別專家系統(tǒng)實驗報告.doc(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、人工智能實驗報告學(xué)號XXXXX姓名XXXXX實驗名稱動物識別專家系統(tǒng)實驗?zāi)康?本實驗的主要目的是熟練使用推理方法,進(jìn)行編程完成相應(yīng)的功能。本次試驗的預(yù)期功能是在系統(tǒng)可以像使用者提出問題,然后系統(tǒng)根據(jù)該問題的回答來篩選出相應(yīng)的動物并確定下一個問題。其中下一個問題的提出是在盡量減少提問次數(shù)的前提下找到的。同時該系統(tǒng)還具有增加記錄的功能,可以增加包含的動物種類。實驗方案首先系統(tǒng)中包含了若干動物種類,例如獅子,老虎等。由于每一種動物都有不同的屬性,而根據(jù)這些屬性就可以確定是哪一種動物。所以我們要有數(shù)據(jù)結(jié)構(gòu)可以存儲動物以及動物的不同屬性。為了節(jié)約空間,我們將各個屬性用一個數(shù)據(jù)結(jié)構(gòu)存儲起來。這里我用的是數(shù)
2、組進(jìn)行存儲,每一個記錄代表了一種屬性。而動物則用結(jié)構(gòu)體存儲,如下。typedef struct animint flag30;string nam;anim;該結(jié)構(gòu)體中包括了動物的名稱以及屬性數(shù)組。對應(yīng)的flagi=1,則對應(yīng)的第i個屬性是滿足的,反之該動物沒有該屬性。這樣就可以得到不同動物的屬性。 在提問的時候根據(jù)該問題的編號,找到存在該屬性的動物并且進(jìn)行標(biāo)記。并且在剩余的動物中,對沒有提問的各個屬性進(jìn)行判斷,找到盡可能能把這些動物平分成兩部分的問題進(jìn)行提問。如此就可以找到想要的動物。 同時如果猜測不正確可以添加新的動物或者屬性,并設(shè)置各個動物的屬性,這樣就可以進(jìn)行學(xué)習(xí),使得系統(tǒng)更加準(zhǔn)確。實
3、驗記錄首先運行程序會出項上圖界面,該界面顯示了當(dāng)前所有的動物,并且提出問題,用戶可以根據(jù)問題進(jìn)行選擇,看到自己想要的動物。對于每一個問題,都只能是真或者是假,因此在后續(xù)增加問題的時候也要注意。其實可以有多種情況,但是要進(jìn)行擴展,所以本實驗沒有增加該功能。該系統(tǒng)中有不同的問題,根據(jù)問題的提示可以對現(xiàn)有的動物進(jìn)行篩選,并且提出下一個問題,并使得提問的次數(shù)最少。通過上面可以看出當(dāng)生育方式是胎生的時候,那么就在哺乳動物中進(jìn)行選擇,哺乳動物中只有老虎是獨居的,所以提問的時候就選擇該問題。這樣提問兩次就可以得出結(jié)論。而當(dāng)生育方式不是胎生的時候,就只有一個鳥類,所以可以直接獲得結(jié)論。for(int i=0;
4、ianc;i+)if(ai=1)if(ani.flagcount!=anser) ai=0;代碼分析:在回答一個問題之后,在剩下的動物判斷提問的屬性是否滿足,如果滿足,那么就留下;如果不滿足,那么去除。for(int j=0;jtc;j+)for(int i=0;i=0?yes-no:no-yes)0?yes-no:no-yes;yes=0;no=0;代碼分析:上述代碼是對下一個問題進(jìn)行選擇的代碼,該部分主要是將剩下的動物進(jìn)行判斷,利用二分查找的思想,盡量使下一個問題回答之后,無論選什么答案,都使剩下的集合等分。但是由于當(dāng)前系統(tǒng)中的動物以及問題過少,因此我們可以向系統(tǒng)中添加新的記錄,以完善該系
5、統(tǒng)。首先在每次提問之后,用戶可以判斷系統(tǒng)回答是否正確,如果不正確,可以手動添加記錄以完善該系統(tǒng)。系統(tǒng)會提示是否增加新的問題,如果添加的話,首先要輸入問題,注意該問題必須的非真即假,不能有第三種情況。然后對于新增的問題,對系統(tǒng)中的每一個動物都進(jìn)行初始化,以便于下一次判斷。然后可以增加動物的數(shù)目,對該動物的所有屬性都要進(jìn)行設(shè)置,然后該記錄就增加完成了。 如上左所示,在增加了該動物之后,我們可以在下次提問的時候看到系統(tǒng)中的記錄增加,并且可以根據(jù)問題獲得剛剛增加的動物。如上右圖所示。實驗總結(jié)本次實驗運用了歸結(jié)原理、規(guī)則演繹推理的推理方法,進(jìn)行設(shè)計。對于不同的屬性可以有時間P1,P2Pn。這樣在滿足不同的條件之后就可以進(jìn)行推理,得到所要的動物了。通過本次實驗,我學(xué)習(xí)到了推理的使用方法,對于這種問題就的解決也有了理解。這不僅僅讓我學(xué)習(xí)到了如何進(jìn)行推理問題的證明,也讓我對該系統(tǒng)有了更深的了解。這讓我的編程的能力也有了進(jìn)一步的提高。5