版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 計算機科學(xué)與技術(shù)學(xué)院</p><p> 《人工智能》課程設(shè)計報告</p><p> 設(shè)計題目:動物識別系統(tǒng)</p><p> 設(shè)計人員:學(xué)號:</p><p> 學(xué)號:</p><p> 學(xué)號:</p><p> 學(xué)號:</p><p> 學(xué)號:&
2、lt;/p><p> 學(xué)號:</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)基本知識5</p><p> 1.1專家系統(tǒng)實際應(yīng)用5</p><p> 1.2專家系統(tǒng)的開發(fā)5</p><p> 二、設(shè)計基本思路5</p><p><b> 2.1知識庫5</b></p><p> 2.2.1知識
4、庫作用5</p><p> 2.1.2 知識庫建立6</p><p> 2.1.3 知識庫獲取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> 三、推理機構(gòu)8</b></p><p> 3.1推理機介紹8</p><p> 3.1.1 推理機作用原理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 正向推理機所要具有功能10</p><p> 3.3反向推理11</p><p> 3.3.1反向推理基本思想11</p><p> 3.3.2 反向推理示意圖11</p><p> 3.3.3反向推理機所要具有功能11
7、</p><p> 四、實例系統(tǒng)實現(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> 參考文獻:14</b></p><p><b> 附錄一15</b></p><p><b> 附錄二24</b></p><p><b> 摘 要</b></p><p> 動物識別專家系
9、統(tǒng)是將人的思維過程轉(zhuǎn)化為計算機語言的邏輯過程,其關(guān)鍵在于知識和信息的表示,智能推理或求解的基礎(chǔ)——知識庫的創(chuàng)建和管理,以及基于某種知識和信息表示的智能推理或求解過程。使動物識別具有一定的智能性、良好的交互性和可視化效果。本論文也主要以識別七種動物的設(shè)計思路和程序為例所寫的。動物識別專家系統(tǒng)是人工智能中一個比較基礎(chǔ)的規(guī)則演繹系統(tǒng),是人工智能領(lǐng)域里的一個大模塊的專家系統(tǒng)的一個特定例子。是集知識表與推理為一體的,以規(guī)則為基礎(chǔ)對用戶提供的事實進
10、行向前、逆向或雙向的推理得出結(jié)論的一種產(chǎn)生式系統(tǒng)。如果通過良好的分析、精確地設(shè)計和細致的規(guī)劃會創(chuàng)設(shè)出高度靈活和快速有效的識別系統(tǒng),再加上良好的界面供用戶添加新的事實和規(guī)則,反饋詳細的錯誤或信息的話,那就是一個相當(dāng)完整的識別系統(tǒng)了。</p><p> 關(guān)鍵詞: 人工智能 ; 專家系統(tǒng) ; 動物識別</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)基本知識</p>&
14、lt;p> 1.1專家系統(tǒng)實際應(yīng)用</p><p> 目前專家系統(tǒng)已經(jīng)成功地滲透到生活的各個領(lǐng)域,并且還產(chǎn)生了巨大的社會效益和經(jīng)濟效益。例如,像車輛傳感、藥物、紡織服裝等重工業(yè)和輕工業(yè)領(lǐng)域中都會應(yīng)用到,特別是在計算機領(lǐng)域里,現(xiàn)在已經(jīng)是一門非常重要的學(xué)科類了。</p><p> 1.2專家系統(tǒng)的開發(fā)</p><p> 專家系統(tǒng)設(shè)計與實現(xiàn)的一般過程<
15、/p><p><b> 圖 1【3】</b></p><p><b> 二、設(shè)計基本思路</b></p><p><b> 2.1知識庫</b></p><p> 2.2.1知識庫作用</p><p> 用產(chǎn)生式系統(tǒng)監(jiān)別動物,需要一種演繹機制,利用
16、己知事實的集合做出新的結(jié)論,一種方法是替動物園中的每個動物作一個產(chǎn)生式,使用者首先收集所有可利用的事實,然后在產(chǎn)生式的表中進行掃描,尋找一個狀態(tài)部分能與之匹配的產(chǎn)生式。一般要經(jīng)過多少步并生成和利用一些中間事實才能從基本事實推出結(jié)論,這樣做所包含的產(chǎn)生式可以比較小,容易理解,容易使用和容易產(chǎn)生。動物識別專家系統(tǒng)中的知識庫中的知識通常是用規(guī)則表示的。</p><p> 2.1.2 知識庫建立</p>
17、<p> 知識庫所要遵循的規(guī)則【1】</p><p><b> 規(guī)則1:</b></p><p><b> 如果:動物有毛發(fā)</b></p><p> 則 :該動物是哺乳動物</p><p><b> 規(guī)則2:</b></p><p&g
18、t;<b> 如果:動物能產(chǎn)奶</b></p><p> 則 :該單位是哺乳動物</p><p><b> 規(guī)則3:</b></p><p><b> 如果:該動物有羽毛</b></p><p><b> 則 :該動物是鳥</b></p
19、><p><b> 規(guī)則4:</b></p><p> 如果:動物會飛,且會下蛋</p><p><b> 則 :該動物是鳥</b></p><p><b> 規(guī)則5:</b></p><p><b> 如果:動物吃肉</b>
20、;</p><p> 則 :該動物是肉食動物</p><p><b> 規(guī)則6:</b></p><p> 如果:動物有犬齒,且有爪,且眼盯前方</p><p> 則 :該動物是食肉動物</p><p><b> 規(guī)則7:</b></p><
21、p> 如果:動物是哺乳動物,且有蹄</p><p> 則 :該動物是有蹄動物</p><p><b> 規(guī)則8:</b></p><p> 如果:動物是哺乳動物,且是反芻動物</p><p> 則 :該動物是有蹄動物</p><p><b> 規(guī)則9:</b&
22、gt;</p><p> 如果:動物是哺乳動物,且是食肉動物,且是黃褐色的,且有暗斑點</p><p><b> 則 :該動物是豹</b></p><p><b> 規(guī)則10:</b></p><p> 如果:如果:動物是黃褐色的,且是哺乳動物,且是食肉,且有黑條紋</p>
23、<p><b> 則 :該動物是虎</b></p><p><b> 規(guī)則11: </b></p><p> 如果:動物有暗斑點,且有長腿,且有長脖子,且是有蹄類</p><p> 則 :該動物是長頸鹿</p><p><b> 規(guī)則12:</b><
24、;/p><p> 如果:動物有黑條紋,且是有蹄類動物</p><p> 則 :該動物是斑馬</p><p><b> 規(guī)則13:</b></p><p> 如果:動物有長腿,且有長脖子,且是黑色的,且是鳥,且不會飛</p><p> 則 :該動物是鴕鳥</p><p&
25、gt;<b> 規(guī)則14:</b></p><p> 如果:動物是鳥,且不會飛,且會游泳,且是黑色的</p><p> 則 :該動物是企鵝</p><p><b> 規(guī)則15:</b></p><p> 如果:動物是鳥,且善飛</p><p> 則 :該動物是
26、信天翁</p><p> 動物分類專家系統(tǒng)由15條規(guī)則組成??梢宰R別七種動物.</p><p> 2.1.3 知識庫獲取</p><p> 知識獲取一般是指從某個活某些致使原中獲取專家系統(tǒng)問題求解所需要的專門知識,并以某種形式在計算機中存儲、傳輸與轉(zhuǎn)移。專家系統(tǒng)的知識獲取一般是由知識工程師與專家系統(tǒng)知識的獲取機構(gòu)共同完成的。</p><p&
27、gt; 知識獲取的常用方法有以下幾種【3】:</p><p><b> 手工知識獲??;</b></p><p><b> 半自動獲取;</b></p><p><b> 自動知識獲取;</b></p><p> 人工神經(jīng)網(wǎng)絡(luò)知識獲??;</p><p
28、> 選用哪種知識獲取方法需要根據(jù)當(dāng)前的系統(tǒng),以及用戶的需求來決定。但在有些大型系統(tǒng)上還可能會用到不是僅僅一種方法的。</p><p><b> 2.2 數(shù)據(jù)庫</b></p><p> 2.2.1數(shù)據(jù)庫作用</p><p> 數(shù)據(jù)庫即為事實庫【2】,在計算機中流出一些存儲區(qū)間,以存放反應(yīng)系統(tǒng)當(dāng)前狀態(tài)的事實,存放用戶回答的事實、已知
29、的事實和由推理而得的事實,即由已知事實推導(dǎo)出的假設(shè)成立時,也作為事實。其綜合數(shù)據(jù)庫的內(nèi)容是不斷變化的。</p><p> 2.2.2數(shù)據(jù)庫建立</p><p> char *str[]={"",</p><p> "反芻動物" /* 1 */, "蹄類動物" /* 2 */, &qu
30、ot;哺乳動物" /* 3 */,</p><p> "目視前方" /* 4 */, "有爪子" /* 5 */, "有犬齒" /* 6 */,</p><p> "吃肉" /* 7 */, "下蛋" /* 8
31、 */, "會飛" /* 9 */,</p><p> "有羽毛" /* 10 */, "有蹄" /* 11 */, "肉食動物" /* 12 */,</p><p> "鳥類" /* 13 */, "產(chǎn)奶&qu
32、ot; /* 14 */, "有毛發(fā)" /* 15 */,</p><p> "善飛" /* 16 */, "黑白色" /* 17 */, "會游泳" /* 18 */,</p><p> "長腿" /* 19 *
33、/, "長脖子" /* 20 */, "有黑色條紋" /* 21 */,</p><p> "有暗斑點" /* 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> 三、推理機構(gòu)</b></p><p><b> 3.1推理機介紹<
39、/b></p><p> 3.1.1 推理機作用原理</p><p> 推理機是一組函數(shù)【4】,本例既有正向推理機又有反向推理機,都是用精確推理。推理機是實施問題求解的核心執(zhí)行機構(gòu),它是對知識進行解釋的程序,根據(jù)知識的語義,對按一定策略找到的知識進行解釋執(zhí)行,并把結(jié)果記錄到動態(tài)庫的適當(dāng)空間中去。</p><p><b> 3.1.2推理網(wǎng)絡(luò)&l
40、t;/b></p><p> 下圖為識別本文中所舉的識別七種動物時所規(guī)則形成的推理網(wǎng)絡(luò):</p><p><b> 圖 2</b></p><p><b> 3.2 正向推理</b></p><p> 3.2.1 正向推理基本思想</p><p> 用戶首先提
41、供一批事實,存放到數(shù)據(jù)庫中,然后推理機進行工作。方法是:</p><p> 1.推理機用這批事實與知識庫中規(guī)則的前提進行匹配。</p><p> 2.把匹配成功的規(guī)則的結(jié)論部分作為新的事實加到數(shù)據(jù)庫中去(這時,數(shù)據(jù)庫中的事實增加了)。再用更新后的數(shù)據(jù)庫中的所有事實,重復(fù)上述① ②二步,如此反復(fù)進行,直到得以結(jié)論(答案)或不再有新的事實加到數(shù)據(jù)庫為止。</p><p&
42、gt; 例如,用戶輸入一批事實:動物有暗斑點、長脖子、長腿、產(chǎn)奶、有蹄子(這批事實存放在數(shù)據(jù)庫中),要求系統(tǒng)判斷這是一個什么動物?推理機利用這批事實來匹配規(guī)則。</p><p> 3.2.2 正向推理示意圖</p><p><b> 圖 3</b></p><p> 3.2.3 正向推理機所要具有功能</p><p&
43、gt; 要設(shè)計一個正向推理機,就是設(shè)計一組程序,使其至少具有以下的功能【3】:</p><p> 能用數(shù)據(jù)庫中的事實去匹配規(guī)則的前提,若匹配不成功,能自動地進行嚇一跳規(guī)則的匹配。這里如何匹配最為合適,是設(shè)計專家系統(tǒng)者根據(jù)專業(yè)特點和 知識表示等情況,需要很好考慮的問題,也就是在匹配時到底用什么策略等問題都需要考慮周全; </p><p> 若某條規(guī)則匹配成功,系統(tǒng)能將此規(guī)則的結(jié)論部分自
44、動加入數(shù)據(jù)庫;</p><p> 能判斷何時應(yīng)結(jié)束推理;</p><p> 能將匹配成功的規(guī)則記錄下來;</p><p><b> 3.3反向推理</b></p><p> 3.3.1反向推理基本思想</p><p> 由用戶或系統(tǒng)首先提出一批假設(shè),然后系統(tǒng)逐一驗證這些假設(shè)的真假性,方法
45、:</p><p> 1.看假設(shè)是含在數(shù)據(jù)庫中,若在,則假設(shè)成立,推理結(jié)束或進行下一個假設(shè)的驗證,否則進行下一步。</p><p> 2.判斷這些假設(shè)是否是證據(jù)節(jié)點,若是,系統(tǒng)提問用戶,否則進行下一步。</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反向推理機所要具有功能</p><p> 1. 能根據(jù)用戶要求或情況提出假設(shè);</p><p> 2. 能驗證此假設(shè)是否是在數(shù)據(jù)庫中;</p><p&
47、gt; 3. 能把知識庫中將結(jié)論部分包含此假設(shè)的規(guī)則都找出來;</p><p> 4. 能將找出來地規(guī)則的前提部分取出,并作為新的假設(shè)逐條驗證;</p><p> 5. 能判斷假設(shè)是否是證據(jù)接點,若是,能向用戶提出相應(yīng)的問題,并記錄結(jié)果;</p><p> 6. 能將匹配成功的規(guī)則記錄下來;</p><p> 7. 能判斷何時應(yīng)結(jié)束
48、推理;</p><p><b> 四、實例系統(tǒng)實現(xiàn)</b></p><p><b> 4.1系統(tǒng)介紹</b></p><p> 此系統(tǒng)是實現(xiàn)了《人工智能教程(的二版)》專家系統(tǒng)實例里的動物識別系統(tǒng)。此系統(tǒng)是識別——老虎、獵豹、斑馬、長頸鹿、鴕鳥、企鵝、信天翁等七種動物。是嚴格遵循了知識庫中的規(guī)則,并運用C語言在Vis
49、ual C++ 6.0環(huán)境下實驗編譯同過的。因為各種原因沒能設(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ù)庫即事實庫,里面包括item[20][20],和事實數(shù)Fnum,主要用到的參數(shù)就是這些。然后初始化規(guī)則庫和綜合數(shù)據(jù)庫,編輯規(guī)則庫。之后就是主程序,也就是推理機的作用:先讓用戶輸入事實,然后與規(guī)則庫中的知識從第一條開始逐條匹配,當(dāng)匹配成功時,將結(jié)論插入事實庫并更新事實庫,再逐條匹配,依次循環(huán)..最終如果能匹配成功就顯示‘該動物是..’,否則顯示‘無法識別該動物’,程序結(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> 動物識別專家系統(tǒng)實現(xiàn)起來也許相對簡單一些,但基
52、本上也包括了專家系統(tǒng)的各個組成部分。動物識別具有一定的智能性,但是根據(jù)所采用的匹配方法的不同其智能性也有不小的差距。而知識庫的管理和數(shù)據(jù)庫的設(shè)計是否完善對于動物識別專家系統(tǒng)是極為關(guān)鍵的,這也是很多此類專家系統(tǒng)的通病。</p><p><b> 參考文獻:</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> 馬鳴遠. 人工智能與專家系統(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)及智能計算機[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,"哺乳動物");</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,"哺乳動物");</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],"會飛");</p><p> strcpy(r[3].Condition[1],"會下蛋&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,"食肉動物");</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,"食肉動物");</p><p> r[5].Cnum=3;</p><p> r[5].used=fal
70、se;</p><p> strcpy(r[6].Condition[0],"哺乳動物");</p><p> strcpy(r[6].Condition[1],"蹄");</p><p> strcpy(r[6].Result,"有蹄動物");</p><p> r[6].
71、Cnum=2;</p><p> r[6].used=false;</p><p> strcpy(r[7].Condition[0],"有蹄動物");</p><p> strcpy(r[7].Condition[1],"嚼反芻動物");</p><p> strcpy(r[7].Result
72、,"有蹄動物");</p><p> r[7].Cnum=2;</p><p> r[7].used=false;</p><p> strcpy(r[8].Condition[0],"哺乳動物");</p><p> strcpy(r[8].Condition[1],"食肉動物&qu
73、ot;);</p><p> strcpy(r[8].Condition[2],"黃褐色");</p><p> strcpy(r[8].Condition[3],"身上有暗斑點");</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],"哺乳動物");</p><p> strcpy(r[9].Condition[1],"食肉動物");</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],"有蹄動物");</p><p> strcpy(r[10].Condition[1],"長腿");</p><p> strcpy(r[10].Condition[2],"長脖子");</p><
77、p> strcpy(r[10].Condition[3],"身上有暗斑點");</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],"有蹄類動物");</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],"不會飛");</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],"會游泳");</p><p> strcpy(r[13].Conditi
82、on[2],"不會飛");</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("請輸入該動物
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);///插入事實</p><p>
96、 cout<<"新增加的事實為:"<<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<<"沒有你要找符合要求的動物,請增加新的規(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<<"與你給的事實匹配的動物:"<<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ù)庫中的事實否否等于前件,或者是存在這條事實,那么新的結(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> //插入新的事實<
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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能掃雷課程設(shè)計報告
- 人工智能課程設(shè)計
- 人工智能課程設(shè)計
- 課程設(shè)計報告--車牌識別系統(tǒng)的設(shè)計
- 車牌識別系統(tǒng)的設(shè)計--課程設(shè)計報告
- 課程設(shè)計報告-車牌識別系統(tǒng)的設(shè)計
- 人工智能課程設(shè)計報告-五子棋
- 人工智能課程設(shè)計報告-羅馬尼亞度假問題
- 人工智能與專家系統(tǒng)課程設(shè)計-迷宮游戲設(shè)計報告
- plc課程設(shè)計--智能信號優(yōu)先識別系統(tǒng)的plc設(shè)計
- 中式菜肴的人工智能嗅味覺識別系統(tǒng)研究.pdf
- 人工智能虹膜識別
- 人工智能課程設(shè)計---五子棋
- 車牌識別課程設(shè)計--車牌識別系統(tǒng)設(shè)計
- 課程設(shè)計--matlab車牌識別系統(tǒng)
- 課程設(shè)計---簡易車牌識別系統(tǒng)設(shè)計
- 人工智能報告
- 人工智能課程說明
- 指紋自動識別系統(tǒng)設(shè)計課程設(shè)計
- 基于人工智能算法的QR碼識別系統(tǒng)應(yīng)用與比較.pdf
評論
0/150
提交評論