版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p> 《人工智能》課程設(shè)計(jì)報(bào)告</p><p> 設(shè)計(jì)題目:動(dòng)物識(shí)別系統(tǒng)</p><p> 設(shè)計(jì)人員:學(xué)號(hào):</p><p> 學(xué)號(hào):</p><p> 學(xué)號(hào):</p><p> 學(xué)號(hào):</p><p> 學(xué)號(hào):&
2、lt;/p><p> 學(xué)號(hào):</p><p> 指導(dǎo)教師:</p><p><b> 目錄</b></p><p><b> 目錄1</b></p><p><b> 摘 要3</b></p><p> Abstract
3、4</p><p> 一、專家系統(tǒng)基本知識(shí)5</p><p> 1.1專家系統(tǒng)實(shí)際應(yīng)用5</p><p> 1.2專家系統(tǒng)的開發(fā)5</p><p> 二、設(shè)計(jì)基本思路5</p><p><b> 2.1知識(shí)庫5</b></p><p> 2.2.1知識(shí)
4、庫作用5</p><p> 2.1.2 知識(shí)庫建立6</p><p> 2.1.3 知識(shí)庫獲取7</p><p><b> 2.2 數(shù)據(jù)庫7</b></p><p> 2.2.1數(shù)據(jù)庫作用7</p><p> 2.2.2數(shù)據(jù)庫建立7</p><p>&
5、lt;b> 三、推理機(jī)構(gòu)8</b></p><p> 3.1推理機(jī)介紹8</p><p> 3.1.1 推理機(jī)作用原理8</p><p> 3.1.2推理網(wǎng)絡(luò)8</p><p> 3.2 正向推理9</p><p> 3.2.1 正向推理基本思想9</p><
6、;p> 3.2.2 正向推理示意圖10</p><p> 3.2.3 正向推理機(jī)所要具有功能10</p><p> 3.3反向推理11</p><p> 3.3.1反向推理基本思想11</p><p> 3.3.2 反向推理示意圖11</p><p> 3.3.3反向推理機(jī)所要具有功能11
7、</p><p> 四、實(shí)例系統(tǒng)實(shí)現(xiàn)12</p><p> 4.1系統(tǒng)介紹12</p><p> 4.2基本思路12</p><p> 4.3程序主要代碼12</p><p> 4.4系統(tǒng)執(zhí)行結(jié)果13</p><p><b> 五、結(jié)論13</b>&
8、lt;/p><p><b> 參考文獻(xiàn):14</b></p><p><b> 附錄一15</b></p><p><b> 附錄二24</b></p><p><b> 摘 要</b></p><p> 動(dòng)物識(shí)別專家系
9、統(tǒng)是將人的思維過程轉(zhuǎn)化為計(jì)算機(jī)語言的邏輯過程,其關(guān)鍵在于知識(shí)和信息的表示,智能推理或求解的基礎(chǔ)——知識(shí)庫的創(chuàng)建和管理,以及基于某種知識(shí)和信息表示的智能推理或求解過程。使動(dòng)物識(shí)別具有一定的智能性、良好的交互性和可視化效果。本論文也主要以識(shí)別七種動(dòng)物的設(shè)計(jì)思路和程序?yàn)槔鶎懙?。?dòng)物識(shí)別專家系統(tǒng)是人工智能中一個(gè)比較基礎(chǔ)的規(guī)則演繹系統(tǒng),是人工智能領(lǐng)域里的一個(gè)大模塊的專家系統(tǒng)的一個(gè)特定例子。是集知識(shí)表與推理為一體的,以規(guī)則為基礎(chǔ)對(duì)用戶提供的事實(shí)進(jìn)
10、行向前、逆向或雙向的推理得出結(jié)論的一種產(chǎn)生式系統(tǒng)。如果通過良好的分析、精確地設(shè)計(jì)和細(xì)致的規(guī)劃會(huì)創(chuàng)設(shè)出高度靈活和快速有效的識(shí)別系統(tǒng),再加上良好的界面供用戶添加新的事實(shí)和規(guī)則,反饋詳細(xì)的錯(cuò)誤或信息的話,那就是一個(gè)相當(dāng)完整的識(shí)別系統(tǒng)了。</p><p> 關(guān)鍵詞: 人工智能 ; 專家系統(tǒng) ; 動(dòng)物識(shí)別</p><p><b> Abstract</b><
11、;/p><p> animal recognition expert system is the human thinking process is transformed into the logical process of computer language, the key lies in knowledge and information, said intelligent reasoning or so
12、lving based knowledge base -- creating and management, and based on some information and knowledge representation of intelligent reasoning and solving process. So that the animal identification has a certain intelligence
13、, good interaction and visual effect. This paper also mainly to identify seven k</p><p> Keywords: artificial intelligence; expert system; animal identification</p><p> 一、專家系統(tǒng)基本知識(shí)</p>&
14、lt;p> 1.1專家系統(tǒng)實(shí)際應(yīng)用</p><p> 目前專家系統(tǒng)已經(jīng)成功地滲透到生活的各個(gè)領(lǐng)域,并且還產(chǎn)生了巨大的社會(huì)效益和經(jīng)濟(jì)效益。例如,像車輛傳感、藥物、紡織服裝等重工業(yè)和輕工業(yè)領(lǐng)域中都會(huì)應(yīng)用到,特別是在計(jì)算機(jī)領(lǐng)域里,現(xiàn)在已經(jīng)是一門非常重要的學(xué)科類了。</p><p> 1.2專家系統(tǒng)的開發(fā)</p><p> 專家系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的一般過程<
15、/p><p><b> 圖 1【3】</b></p><p><b> 二、設(shè)計(jì)基本思路</b></p><p><b> 2.1知識(shí)庫</b></p><p> 2.2.1知識(shí)庫作用</p><p> 用產(chǎn)生式系統(tǒng)監(jiān)別動(dòng)物,需要一種演繹機(jī)制,利用
16、己知事實(shí)的集合做出新的結(jié)論,一種方法是替動(dòng)物園中的每個(gè)動(dòng)物作一個(gè)產(chǎn)生式,使用者首先收集所有可利用的事實(shí),然后在產(chǎn)生式的表中進(jìn)行掃描,尋找一個(gè)狀態(tài)部分能與之匹配的產(chǎn)生式。一般要經(jīng)過多少步并生成和利用一些中間事實(shí)才能從基本事實(shí)推出結(jié)論,這樣做所包含的產(chǎn)生式可以比較小,容易理解,容易使用和容易產(chǎn)生。動(dòng)物識(shí)別專家系統(tǒng)中的知識(shí)庫中的知識(shí)通常是用規(guī)則表示的。</p><p> 2.1.2 知識(shí)庫建立</p>
17、<p> 知識(shí)庫所要遵循的規(guī)則【1】</p><p><b> 規(guī)則1:</b></p><p><b> 如果:動(dòng)物有毛發(fā)</b></p><p> 則 :該動(dòng)物是哺乳動(dòng)物</p><p><b> 規(guī)則2:</b></p><p&g
18、t;<b> 如果:動(dòng)物能產(chǎn)奶</b></p><p> 則 :該單位是哺乳動(dòng)物</p><p><b> 規(guī)則3:</b></p><p><b> 如果:該動(dòng)物有羽毛</b></p><p><b> 則 :該動(dòng)物是鳥</b></p
19、><p><b> 規(guī)則4:</b></p><p> 如果:動(dòng)物會(huì)飛,且會(huì)下蛋</p><p><b> 則 :該動(dòng)物是鳥</b></p><p><b> 規(guī)則5:</b></p><p><b> 如果:動(dòng)物吃肉</b>
20、;</p><p> 則 :該動(dòng)物是肉食動(dòng)物</p><p><b> 規(guī)則6:</b></p><p> 如果:動(dòng)物有犬齒,且有爪,且眼盯前方</p><p> 則 :該動(dòng)物是食肉動(dòng)物</p><p><b> 規(guī)則7:</b></p><
21、p> 如果:動(dòng)物是哺乳動(dòng)物,且有蹄</p><p> 則 :該動(dòng)物是有蹄動(dòng)物</p><p><b> 規(guī)則8:</b></p><p> 如果:動(dòng)物是哺乳動(dòng)物,且是反芻動(dòng)物</p><p> 則 :該動(dòng)物是有蹄動(dòng)物</p><p><b> 規(guī)則9:</b&
22、gt;</p><p> 如果:動(dòng)物是哺乳動(dòng)物,且是食肉動(dòng)物,且是黃褐色的,且有暗斑點(diǎn)</p><p><b> 則 :該動(dòng)物是豹</b></p><p><b> 規(guī)則10:</b></p><p> 如果:如果:動(dòng)物是黃褐色的,且是哺乳動(dòng)物,且是食肉,且有黑條紋</p>
23、<p><b> 則 :該動(dòng)物是虎</b></p><p><b> 規(guī)則11: </b></p><p> 如果:動(dòng)物有暗斑點(diǎn),且有長腿,且有長脖子,且是有蹄類</p><p> 則 :該動(dòng)物是長頸鹿</p><p><b> 規(guī)則12:</b><
24、;/p><p> 如果:動(dòng)物有黑條紋,且是有蹄類動(dòng)物</p><p> 則 :該動(dòng)物是斑馬</p><p><b> 規(guī)則13:</b></p><p> 如果:動(dòng)物有長腿,且有長脖子,且是黑色的,且是鳥,且不會(huì)飛</p><p> 則 :該動(dòng)物是鴕鳥</p><p&
25、gt;<b> 規(guī)則14:</b></p><p> 如果:動(dòng)物是鳥,且不會(huì)飛,且會(huì)游泳,且是黑色的</p><p> 則 :該動(dòng)物是企鵝</p><p><b> 規(guī)則15:</b></p><p> 如果:動(dòng)物是鳥,且善飛</p><p> 則 :該動(dòng)物是
26、信天翁</p><p> 動(dòng)物分類專家系統(tǒng)由15條規(guī)則組成??梢宰R(shí)別七種動(dòng)物.</p><p> 2.1.3 知識(shí)庫獲取</p><p> 知識(shí)獲取一般是指從某個(gè)活某些致使原中獲取專家系統(tǒng)問題求解所需要的專門知識(shí),并以某種形式在計(jì)算機(jī)中存儲(chǔ)、傳輸與轉(zhuǎn)移。專家系統(tǒng)的知識(shí)獲取一般是由知識(shí)工程師與專家系統(tǒng)知識(shí)的獲取機(jī)構(gòu)共同完成的。</p><p&
27、gt; 知識(shí)獲取的常用方法有以下幾種【3】:</p><p><b> 手工知識(shí)獲??;</b></p><p><b> 半自動(dòng)獲??;</b></p><p><b> 自動(dòng)知識(shí)獲??;</b></p><p> 人工神經(jīng)網(wǎng)絡(luò)知識(shí)獲??;</p><p
28、> 選用哪種知識(shí)獲取方法需要根據(jù)當(dāng)前的系統(tǒng),以及用戶的需求來決定。但在有些大型系統(tǒng)上還可能會(huì)用到不是僅僅一種方法的。</p><p><b> 2.2 數(shù)據(jù)庫</b></p><p> 2.2.1數(shù)據(jù)庫作用</p><p> 數(shù)據(jù)庫即為事實(shí)庫【2】,在計(jì)算機(jī)中流出一些存儲(chǔ)區(qū)間,以存放反應(yīng)系統(tǒng)當(dāng)前狀態(tài)的事實(shí),存放用戶回答的事實(shí)、已知
29、的事實(shí)和由推理而得的事實(shí),即由已知事實(shí)推導(dǎo)出的假設(shè)成立時(shí),也作為事實(shí)。其綜合數(shù)據(jù)庫的內(nèi)容是不斷變化的。</p><p> 2.2.2數(shù)據(jù)庫建立</p><p> char *str[]={"",</p><p> "反芻動(dòng)物" /* 1 */, "蹄類動(dòng)物" /* 2 */, &qu
30、ot;哺乳動(dòng)物" /* 3 */,</p><p> "目視前方" /* 4 */, "有爪子" /* 5 */, "有犬齒" /* 6 */,</p><p> "吃肉" /* 7 */, "下蛋" /* 8
31、 */, "會(huì)飛" /* 9 */,</p><p> "有羽毛" /* 10 */, "有蹄" /* 11 */, "肉食動(dòng)物" /* 12 */,</p><p> "鳥類" /* 13 */, "產(chǎn)奶&qu
32、ot; /* 14 */, "有毛發(fā)" /* 15 */,</p><p> "善飛" /* 16 */, "黑白色" /* 17 */, "會(huì)游泳" /* 18 */,</p><p> "長腿" /* 19 *
33、/, "長脖子" /* 20 */, "有黑色條紋" /* 21 */,</p><p> "有暗斑點(diǎn)" /* 22 */, "黃褐色" /* 23 */, "信天翁" /* 24 */,</p><p> "企鵝"
34、 /* 25 */, "鴕鳥" /* 26 */, "斑馬" /* 27 */,</p><p> "長頸鹿" /* 28 */, "老虎" /* 29 */, "獵豹" /* 30 */,</p><p><
35、b> "\0"};</b></p><p> int rulep[][6]={{22,23,12,3,0,0}, {21,23,12,3,0,0}, {22,19,20,11,0,0},</p><p> {21,11,0,0,0,0}, {17,19,20,13,-9,0},{17,18,13,-9,0,0},</p>&
36、lt;p> {16,13,0,0,0,0}, {15,0,0,0,0,0}, {14,0,0,0,0,0},</p><p> {10,0,0,0,0,0}, {8,7,0,0,0,0}, {7,0,0,0,0,0},</p><p> {4,5,6,0,0,0}, {2,3,0,0,0,0}, {1,3,0,0,0,0}};</p
37、><p> int rulec[]={ 30, 29, 28,</p><p> 27, 26, 25,</p><p> 24, 3, 3,</p&
38、gt;<p> 13, 13, 12,</p><p> 12, 11, 11};</p><p><b> 三、推理機(jī)構(gòu)</b></p><p><b> 3.1推理機(jī)介紹<
39、/b></p><p> 3.1.1 推理機(jī)作用原理</p><p> 推理機(jī)是一組函數(shù)【4】,本例既有正向推理機(jī)又有反向推理機(jī),都是用精確推理。推理機(jī)是實(shí)施問題求解的核心執(zhí)行機(jī)構(gòu),它是對(duì)知識(shí)進(jìn)行解釋的程序,根據(jù)知識(shí)的語義,對(duì)按一定策略找到的知識(shí)進(jìn)行解釋執(zhí)行,并把結(jié)果記錄到動(dòng)態(tài)庫的適當(dāng)空間中去。</p><p><b> 3.1.2推理網(wǎng)絡(luò)&l
40、t;/b></p><p> 下圖為識(shí)別本文中所舉的識(shí)別七種動(dòng)物時(shí)所規(guī)則形成的推理網(wǎng)絡(luò):</p><p><b> 圖 2</b></p><p><b> 3.2 正向推理</b></p><p> 3.2.1 正向推理基本思想</p><p> 用戶首先提
41、供一批事實(shí),存放到數(shù)據(jù)庫中,然后推理機(jī)進(jìn)行工作。方法是:</p><p> 1.推理機(jī)用這批事實(shí)與知識(shí)庫中規(guī)則的前提進(jìn)行匹配。</p><p> 2.把匹配成功的規(guī)則的結(jié)論部分作為新的事實(shí)加到數(shù)據(jù)庫中去(這時(shí),數(shù)據(jù)庫中的事實(shí)增加了)。再用更新后的數(shù)據(jù)庫中的所有事實(shí),重復(fù)上述① ②二步,如此反復(fù)進(jìn)行,直到得以結(jié)論(答案)或不再有新的事實(shí)加到數(shù)據(jù)庫為止。</p><p&
42、gt; 例如,用戶輸入一批事實(shí):動(dòng)物有暗斑點(diǎn)、長脖子、長腿、產(chǎn)奶、有蹄子(這批事實(shí)存放在數(shù)據(jù)庫中),要求系統(tǒng)判斷這是一個(gè)什么動(dòng)物?推理機(jī)利用這批事實(shí)來匹配規(guī)則。</p><p> 3.2.2 正向推理示意圖</p><p><b> 圖 3</b></p><p> 3.2.3 正向推理機(jī)所要具有功能</p><p&
43、gt; 要設(shè)計(jì)一個(gè)正向推理機(jī),就是設(shè)計(jì)一組程序,使其至少具有以下的功能【3】:</p><p> 能用數(shù)據(jù)庫中的事實(shí)去匹配規(guī)則的前提,若匹配不成功,能自動(dòng)地進(jìn)行嚇一跳規(guī)則的匹配。這里如何匹配最為合適,是設(shè)計(jì)專家系統(tǒng)者根據(jù)專業(yè)特點(diǎn)和 知識(shí)表示等情況,需要很好考慮的問題,也就是在匹配時(shí)到底用什么策略等問題都需要考慮周全; </p><p> 若某條規(guī)則匹配成功,系統(tǒng)能將此規(guī)則的結(jié)論部分自
44、動(dòng)加入數(shù)據(jù)庫;</p><p> 能判斷何時(shí)應(yīng)結(jié)束推理;</p><p> 能將匹配成功的規(guī)則記錄下來;</p><p><b> 3.3反向推理</b></p><p> 3.3.1反向推理基本思想</p><p> 由用戶或系統(tǒng)首先提出一批假設(shè),然后系統(tǒng)逐一驗(yàn)證這些假設(shè)的真假性,方法
45、:</p><p> 1.看假設(shè)是含在數(shù)據(jù)庫中,若在,則假設(shè)成立,推理結(jié)束或進(jìn)行下一個(gè)假設(shè)的驗(yàn)證,否則進(jìn)行下一步。</p><p> 2.判斷這些假設(shè)是否是證據(jù)節(jié)點(diǎn),若是,系統(tǒng)提問用戶,否則進(jìn)行下一步。</p><p> 3.找出結(jié)論部分包含此假設(shè)的那些規(guī)則,把這些規(guī)則的所有前提作為新的假設(shè)。</p><p> 4.重復(fù)①、②、③步。
46、</p><p> 3.3.2 反向推理示意圖</p><p><b> 圖 4</b></p><p> 3.3.3反向推理機(jī)所要具有功能</p><p> 1. 能根據(jù)用戶要求或情況提出假設(shè);</p><p> 2. 能驗(yàn)證此假設(shè)是否是在數(shù)據(jù)庫中;</p><p&
47、gt; 3. 能把知識(shí)庫中將結(jié)論部分包含此假設(shè)的規(guī)則都找出來;</p><p> 4. 能將找出來地規(guī)則的前提部分取出,并作為新的假設(shè)逐條驗(yàn)證;</p><p> 5. 能判斷假設(shè)是否是證據(jù)接點(diǎn),若是,能向用戶提出相應(yīng)的問題,并記錄結(jié)果;</p><p> 6. 能將匹配成功的規(guī)則記錄下來;</p><p> 7. 能判斷何時(shí)應(yīng)結(jié)束
48、推理;</p><p><b> 四、實(shí)例系統(tǒng)實(shí)現(xiàn)</b></p><p><b> 4.1系統(tǒng)介紹</b></p><p> 此系統(tǒng)是實(shí)現(xiàn)了《人工智能教程(的二版)》專家系統(tǒng)實(shí)例里的動(dòng)物識(shí)別系統(tǒng)。此系統(tǒng)是識(shí)別——老虎、獵豹、斑馬、長頸鹿、鴕鳥、企鵝、信天翁等七種動(dòng)物。是嚴(yán)格遵循了知識(shí)庫中的規(guī)則,并運(yùn)用C語言在Vis
49、ual C++ 6.0環(huán)境下實(shí)驗(yàn)編譯同過的。因?yàn)楦鞣N原因沒能設(shè)計(jì)實(shí)現(xiàn)出比較精美的界面,但還是體現(xiàn)出了很多專家系統(tǒng)所該具備的東西和功能。</p><p><b> 4.2基本思路</b></p><p> 根據(jù)產(chǎn)生式系統(tǒng)的原理,該系統(tǒng)一般由規(guī)則庫、綜合數(shù)據(jù)庫、控制系統(tǒng)三部分構(gòu)成。先定義規(guī)則庫結(jié)構(gòu)體,里面包括Condition[6][20],result[20]和規(guī)則
50、數(shù)Cnum,再定義綜合數(shù)據(jù)庫即事實(shí)庫,里面包括item[20][20],和事實(shí)數(shù)Fnum,主要用到的參數(shù)就是這些。然后初始化規(guī)則庫和綜合數(shù)據(jù)庫,編輯規(guī)則庫。之后就是主程序,也就是推理機(jī)的作用:先讓用戶輸入事實(shí),然后與規(guī)則庫中的知識(shí)從第一條開始逐條匹配,當(dāng)匹配成功時(shí),將結(jié)論插入事實(shí)庫并更新事實(shí)庫,再逐條匹配,依次循環(huán)..最終如果能匹配成功就顯示‘該動(dòng)物是..’,否則顯示‘無法識(shí)別該動(dòng)物’,程序結(jié)束。</p><p>
51、;<b> 4.3程序主要代碼</b></p><p><b> 見附錄二</b></p><p><b> 4.4系統(tǒng)執(zhí)行結(jié)果</b></p><p><b> 五、結(jié)論</b></p><p> 動(dòng)物識(shí)別專家系統(tǒng)實(shí)現(xiàn)起來也許相對(duì)簡單一些,但基
52、本上也包括了專家系統(tǒng)的各個(gè)組成部分。動(dòng)物識(shí)別具有一定的智能性,但是根據(jù)所采用的匹配方法的不同其智能性也有不小的差距。而知識(shí)庫的管理和數(shù)據(jù)庫的設(shè)計(jì)是否完善對(duì)于動(dòng)物識(shí)別專家系統(tǒng)是極為關(guān)鍵的,這也是很多此類專家系統(tǒng)的通病。</p><p><b> 參考文獻(xiàn):</b></p><p> 王士同,陳慧萍,趙躍華,錢旭 .人工智能教程[M](第二版)北京: 電子工業(yè)出版社,
53、2006:188-206</p><p> Wang Shi-tong, Chen Hui-ping, Zhao Yue-hua, Qian Xu. Artificial intelligence course[M] Bei jing: Electronic Industry Press,2006:188-206</p><p> 馬鳴遠(yuǎn). 人工智能與專家系統(tǒng)導(dǎo)論[M]北京: 清華大學(xué)
54、出版社,2006:232-238</p><p> Ma Ming-yuan. Introduction of artificial intelligence and expert system[M] Bei jing: Tsinghua University press,2006:232-238</p><p> 敖志剛. 人工智能與專家系統(tǒng)導(dǎo)論[M]合肥: 中國科學(xué)技術(shù)大學(xué)出版社,
55、2002:165-197</p><p> Ao Zhi-gang. Introduction of artificial intelligence and expert system[M] He fei: Press of USTC,2002:165-197</p><p> 渠川路. 人工智能、專家系統(tǒng)及智能計(jì)算機(jī)[M]北京:航空航天大學(xué)出版社,1991:123-156</p
56、><p> Qu Chuan-lu. Artificial intelligence,Expert system and intelligent computer[M] Bei jing:Universiti of Aeronautics and Astronautics Press,1991:165-197</p><p><b> 附錄一</b></p>
57、;<p><b> 源程序如下:</b></p><p> #include "iostream.h"</p><p> #include "stdio.h"</p><p> #include "conio.h"</p><p> #i
58、nclude "string.h"</p><p> typedef struct Rule//定義規(guī)則庫</p><p><b> {</b></p><p> char Condition[6][20];</p><p> char Result[20];</p><p
59、> int Cnum;</p><p> bool used;</p><p><b> }rule;</b></p><p> typedef struct Fact//定義綜合數(shù)據(jù)庫</p><p><b> {</b></p><p> char i
60、tem[20][20];</p><p> int Fnum;</p><p><b> }fact;</b></p><p> rule r[100];</p><p><b> fact f;</b></p><p> void Create_Rules();
61、//初始化規(guī)則庫</p><p> void Create_Facts();//初始化綜合數(shù)據(jù)庫</p><p> int Get_RulesNum();</p><p> void Ratiocinate(int n);</p><p> void main()</p><p><b> {&l
62、t;/b></p><p> int Rnum=0;</p><p> Create_Rules();</p><p> Create_Facts();</p><p> Rnum=Get_RulesNum();</p><p> //cout<<Rnum<<endl;</
63、p><p> Ratiocinate(Rnum);</p><p><b> }</b></p><p> void Create_Rules()</p><p><b> {</b></p><p> strcpy(r[0].Condition[0],"有毛
64、發(fā)");</p><p> strcpy(r[0].Result,"哺乳動(dòng)物");</p><p> r[0].Cnum=1;</p><p> r[0].used=false;</p><p> strcpy(r[1].Condition[0],"奶");</p>&l
65、t;p> strcpy(r[1].Result,"哺乳動(dòng)物");</p><p> r[1].Cnum=1;</p><p> r[1].used=false;</p><p> strcpy(r[2].Condition[0],"有羽毛");</p><p> strcpy(r[2].
66、Result,"鳥");</p><p> r[2].Cnum=1;</p><p> r[2].used=false;</p><p> strcpy(r[3].Condition[0],"會(huì)飛");</p><p> strcpy(r[3].Condition[1],"會(huì)下蛋&qu
67、ot;);</p><p> strcpy(r[3].Result,"鳥");</p><p> r[3].Cnum=2;</p><p> r[3].used=false;</p><p> strcpy(r[4].Condition[0],"吃肉");</p><p>
68、; strcpy(r[4].Result,"食肉動(dòng)物");</p><p> r[4].Cnum=1;</p><p> r[4].used=false;</p><p> strcpy(r[5].Condition[0],"有犬齒");</p><p> strcpy(r[5].Condit
69、ion[1],"有爪");</p><p> strcpy(r[5].Condition[2],"眼盯前方");</p><p> strcpy(r[5].Result,"食肉動(dòng)物");</p><p> r[5].Cnum=3;</p><p> r[5].used=fal
70、se;</p><p> strcpy(r[6].Condition[0],"哺乳動(dòng)物");</p><p> strcpy(r[6].Condition[1],"蹄");</p><p> strcpy(r[6].Result,"有蹄動(dòng)物");</p><p> r[6].
71、Cnum=2;</p><p> r[6].used=false;</p><p> strcpy(r[7].Condition[0],"有蹄動(dòng)物");</p><p> strcpy(r[7].Condition[1],"嚼反芻動(dòng)物");</p><p> strcpy(r[7].Result
72、,"有蹄動(dòng)物");</p><p> r[7].Cnum=2;</p><p> r[7].used=false;</p><p> strcpy(r[8].Condition[0],"哺乳動(dòng)物");</p><p> strcpy(r[8].Condition[1],"食肉動(dòng)物&qu
73、ot;);</p><p> strcpy(r[8].Condition[2],"黃褐色");</p><p> strcpy(r[8].Condition[3],"身上有暗斑點(diǎn)");</p><p> strcpy(r[8].Result,"金錢豹");</p><p>
74、r[8].Cnum=4;</p><p> r[8].used=false;</p><p> strcpy(r[9].Condition[0],"哺乳動(dòng)物");</p><p> strcpy(r[9].Condition[1],"食肉動(dòng)物");</p><p> strcpy(r[9].Co
75、ndition[2],"黃褐色");</p><p> strcpy(r[9].Condition[3],"有黑色條紋");</p><p> strcpy(r[9].Result,"虎");</p><p> r[9].Cnum=4;</p><p> r[9].used=
76、false;</p><p> strcpy(r[10].Condition[0],"有蹄動(dòng)物");</p><p> strcpy(r[10].Condition[1],"長腿");</p><p> strcpy(r[10].Condition[2],"長脖子");</p><
77、p> strcpy(r[10].Condition[3],"身上有暗斑點(diǎn)");</p><p> strcpy(r[10].Result,"長頸鹿");</p><p> r[10].Cnum=4;</p><p> r[10].used=false;</p><p> strcpy(r
78、[11].Condition[0],"有蹄類動(dòng)物");</p><p> strcpy(r[11].Condition[1],"身上有黑色條紋");</p><p> strcpy(r[11].Result,"斑馬");</p><p> r[11].Cnum=2;</p><p&
79、gt; r[11].used=false;</p><p> strcpy(r[12].Condition[0],"鳥");</p><p> strcpy(r[12].Condition[1],"有長脖子");</p><p> strcpy(r[12].Condition[2],"長腿");&l
80、t;/p><p> strcpy(r[12].Condition[3],"不會(huì)飛");</p><p> strcpy(r[12].Condition[4],"有黑白兩色");</p><p> strcpy(r[12].Result,"鴕鳥");</p><p> r[12].
81、Cnum=5;</p><p> r[12].used=false;</p><p> strcpy(r[13].Condition[0],"鳥");</p><p> strcpy(r[13].Condition[1],"會(huì)游泳");</p><p> strcpy(r[13].Conditi
82、on[2],"不會(huì)飛");</p><p> strcpy(r[13].Condition[3],"有黑白兩色");</p><p> strcpy(r[13].Result,"企鵝");</p><p> r[13].Cnum=4;</p><p> r[13].used=
83、false;</p><p> strcpy(r[14].Condition[0],"鳥");</p><p> strcpy(r[14].Condition[1],"善飛");</p><p> strcpy(r[14].Result,"海燕");</p><p> r[1
84、4].Cnum=2;</p><p> r[14].used=false;</p><p><b> }</b></p><p> void Create_Facts()</p><p><b> {</b></p><p> printf("請(qǐng)輸入該動(dòng)物
85、特性(中間加空格,Enter鍵結(jié)束)\n");</p><p> scanf("%s%s%s%s%s",&f.item[0],&f.item[1],&f.item[2],&f.item[3],&f.item[4]);</p><p><b> f.Fnum=5;</b></p>&
86、lt;p><b> }</b></p><p> int Get_RulesNum()</p><p><b> {</b></p><p> int num=0;</p><p><b> int i=0;</b></p><p>&l
87、t;b> while(1)</b></p><p><b> {</b></p><p> if(r[i].Condition[0][0]=='\0')</p><p><b> {</b></p><p><b> break;</b&g
88、t;</p><p><b> }</b></p><p><b> i++;</b></p><p><b> num++;</b></p><p><b> }</b></p><p> return num;<
89、/p><p><b> }</b></p><p> void Ratiocinate(int n)</p><p><b> {</b></p><p> bool FindFact(char * str);</p><p> void InsertIntoFact(
90、char * str);</p><p> int i=0,j;/// i用來控制查找的是第幾條規(guī)則,j用來控制查找的規(guī)則中的第幾條</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(r[i].used==false)</
91、p><p><b> {</b></p><p> for(j=0;j<r[i].Cnum;j++)</p><p><b> {</b></p><p> if(FindFact(r[i].Condition[j])) </p><p><b> {&
92、lt;/b></p><p><b> continue;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout&
93、lt;<"規(guī)則"<<i+1<<"匹配失敗"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p
94、><b> }</b></p><p> if(j==r[i].Cnum) ///如果所有的前件都滿足</p><p><b> {</b></p><p> r[i].used=true; </p><p> cout<<"規(guī)則"<<i+
95、1<<"匹配成功,結(jié)論插入到綜合數(shù)據(jù)庫"<<endl;</p><p> if(!FindFact(r[i].Result))</p><p><b> {</b></p><p> InsertIntoFact(r[i].Result);///插入事實(shí)</p><p>
96、 cout<<"新增加的事實(shí)為:"<<f.item[f.Fnum-1]<<endl;</p><p><b> }</b></p><p><b> i=0;</b></p><p> //continue;</p><p><b
97、> }</b></p><p> else i++;//查看下條規(guī)則</p><p><b> if(i==n) </b></p><p><b> {</b></p><p> cout<<"沒有你要找符合要求的動(dòng)物,請(qǐng)?jiān)黾有碌囊?guī)則"&l
98、t;<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> else if(strcmp(f.item[f.Fnum-1],"老虎")==0||strcmp(f.item[f.Fnum-1],"金錢豹")==0
99、||strcmp(f.item[f.Fnum-1],"長頸鹿")==0||strcmp(f.item[f.Fnum-1],"斑馬")==0||strcmp(f.item[f.Fnum-1],"鴕鳥")==0||strcmp(f.item[f.Fnum-1],"企鵝")==0||strcmp(f.item[f.Fnum-1],"海燕")==
100、0)</p><p><b> {</b></p><p> cout<<"與你給的事實(shí)匹配的動(dòng)物:"<<f.item[f.Fnum-1]<<endl;</p><p><b> break;</b></p><p><b>
101、 }</b></p><p><b> }</b></p><p><b> }</b></p><p> //查看綜合數(shù)據(jù)庫中的事實(shí)否否等于前件,或者是存在這條事實(shí),那么新的結(jié)論就不用加到綜合數(shù)據(jù)庫中</p><p> bool FindFact(char * str)<
102、/p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<f.Fnum;i++)</p><p><b> {</b></p><p> if(strcmp(f.item[i],
103、str)) continue;</p><p> else return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p><b> //插入新的事實(shí)<
104、;/b></p><p> void InsertIntoFact(char * str)</p><p><b> {</b></p><p> strcpy(f.item[f.Fnum],str);</p><p><b> f.Fnum++;</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能掃雷課程設(shè)計(jì)報(bào)告
- 人工智能課程設(shè)計(jì)
- 人工智能課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告--車牌識(shí)別系統(tǒng)的設(shè)計(jì)
- 車牌識(shí)別系統(tǒng)的設(shè)計(jì)--課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告-車牌識(shí)別系統(tǒng)的設(shè)計(jì)
- 人工智能課程設(shè)計(jì)報(bào)告-五子棋
- 人工智能課程設(shè)計(jì)報(bào)告-羅馬尼亞度假問題
- 人工智能與專家系統(tǒng)課程設(shè)計(jì)-迷宮游戲設(shè)計(jì)報(bào)告
- plc課程設(shè)計(jì)--智能信號(hào)優(yōu)先識(shí)別系統(tǒng)的plc設(shè)計(jì)
- 中式菜肴的人工智能嗅味覺識(shí)別系統(tǒng)研究.pdf
- 人工智能虹膜識(shí)別
- 人工智能課程設(shè)計(jì)---五子棋
- 車牌識(shí)別課程設(shè)計(jì)--車牌識(shí)別系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)--matlab車牌識(shí)別系統(tǒng)
- 課程設(shè)計(jì)---簡易車牌識(shí)別系統(tǒng)設(shè)計(jì)
- 人工智能報(bào)告
- 人工智能課程說明
- 指紋自動(dòng)識(shí)別系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- 基于人工智能算法的QR碼識(shí)別系統(tǒng)應(yīng)用與比較.pdf
評(píng)論
0/150
提交評(píng)論