《人工智能》課程設計報告--動物識別系統(tǒng)_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  計算機科學與技術學院</p><p>  《人工智能》課程設計報告</p><p> 設計題目:動物識別系統(tǒng)</p><p> 設計人員:學號:</p><p> 學號:</p><p> 學號:</p><p> 學號:</p><p> 學號:&

2、lt;/p><p> 學號:</p><p> 指導教師:</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)實際應用5</p><p>  1.2專家系統(tǒng)的開發(fā)5</p><p>  二、設計基本思路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 數據庫7</b></p><p>  2.2.1數據庫作用7</p><p>  2.2.2數據庫建立7</p><p>&

5、lt;b>  三、推理機構8</b></p><p>  3.1推理機介紹8</p><p>  3.1.1 推理機作用原理8</p><p>  3.1.2推理網絡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)實現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í)行結果13</p><p><b>  五、結論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)是將人的思維過程轉化為計算機語言的邏輯過程,其關鍵在于知識和信息的表示,智能推理或求解的基礎——知識庫的創(chuàng)建和管理,以及基于某種知識和信息表示的智能推理或求解過程。使動物識別具有一定的智能性、良好的交互性和可視化效果。本論文也主要以識別七種動物的設計思路和程序為例所寫的。動物識別專家系統(tǒng)是人工智能中一個比較基礎的規(guī)則演繹系統(tǒng),是人工智能領域里的一個大模塊的專家系統(tǒng)的一個特定例子。是集知識表與推理為一體的,以規(guī)則為基礎對用戶提供的事實進

10、行向前、逆向或雙向的推理得出結論的一種產生式系統(tǒng)。如果通過良好的分析、精確地設計和細致的規(guī)劃會創(chuàng)設出高度靈活和快速有效的識別系統(tǒng),再加上良好的界面供用戶添加新的事實和規(guī)則,反饋詳細的錯誤或信息的話,那就是一個相當完整的識別系統(tǒng)了。</p><p>  關鍵詞: 人工智能 ; 專家系統(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)實際應用</p><p>  目前專家系統(tǒng)已經成功地滲透到生活的各個領域,并且還產生了巨大的社會效益和經濟效益。例如,像車輛傳感、藥物、紡織服裝等重工業(yè)和輕工業(yè)領域中都會應用到,特別是在計算機領域里,現在已經是一門非常重要的學科類了。</p><p>  1.2專家系統(tǒng)的開發(fā)</p><p>  專家系統(tǒng)設計與實現的一般過程<

15、/p><p><b>  圖 1【3】</b></p><p><b>  二、設計基本思路</b></p><p><b>  2.1知識庫</b></p><p>  2.2.1知識庫作用</p><p>  用產生式系統(tǒng)監(jiān)別動物,需要一種演繹機制,利用

16、己知事實的集合做出新的結論,一種方法是替動物園中的每個動物作一個產生式,使用者首先收集所有可利用的事實,然后在產生式的表中進行掃描,尋找一個狀態(tài)部分能與之匹配的產生式。一般要經過多少步并生成和利用一些中間事實才能從基本事實推出結論,這樣做所包含的產生式可以比較小,容易理解,容易使用和容易產生。動物識別專家系統(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>  如果:動物能產奶</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)問題求解所需要的專門知識,并以某種形式在計算機中存儲、傳輸與轉移。專家系統(tǒng)的知識獲取一般是由知識工程師與專家系統(tǒng)知識的獲取機構共同完成的。</p><p&

27、gt;  知識獲取的常用方法有以下幾種【3】:</p><p><b>  手工知識獲??;</b></p><p><b>  半自動獲??;</b></p><p><b>  自動知識獲?。?lt;/b></p><p>  人工神經網絡知識獲??;</p><p

28、>  選用哪種知識獲取方法需要根據當前的系統(tǒng),以及用戶的需求來決定。但在有些大型系統(tǒng)上還可能會用到不是僅僅一種方法的。</p><p><b>  2.2 數據庫</b></p><p>  2.2.1數據庫作用</p><p>  數據庫即為事實庫【2】,在計算機中流出一些存儲區(qū)間,以存放反應系統(tǒng)當前狀態(tài)的事實,存放用戶回答的事實、已知

29、的事實和由推理而得的事實,即由已知事實推導出的假設成立時,也作為事實。其綜合數據庫的內容是不斷變化的。</p><p>  2.2.2數據庫建立</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 */, "產奶&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>  三、推理機構</b></p><p><b>  3.1推理機介紹<

39、/b></p><p>  3.1.1 推理機作用原理</p><p>  推理機是一組函數【4】,本例既有正向推理機又有反向推理機,都是用精確推理。推理機是實施問題求解的核心執(zhí)行機構,它是對知識進行解釋的程序,根據知識的語義,對按一定策略找到的知識進行解釋執(zhí)行,并把結果記錄到動態(tài)庫的適當空間中去。</p><p><b>  3.1.2推理網絡&l

40、t;/b></p><p>  下圖為識別本文中所舉的識別七種動物時所規(guī)則形成的推理網絡:</p><p><b>  圖 2</b></p><p><b>  3.2 正向推理</b></p><p>  3.2.1 正向推理基本思想</p><p>  用戶首先提

41、供一批事實,存放到數據庫中,然后推理機進行工作。方法是:</p><p>  1.推理機用這批事實與知識庫中規(guī)則的前提進行匹配。</p><p>  2.把匹配成功的規(guī)則的結論部分作為新的事實加到數據庫中去(這時,數據庫中的事實增加了)。再用更新后的數據庫中的所有事實,重復上述① ②二步,如此反復進行,直到得以結論(答案)或不再有新的事實加到數據庫為止。</p><p&

42、gt;  例如,用戶輸入一批事實:動物有暗斑點、長脖子、長腿、產奶、有蹄子(這批事實存放在數據庫中),要求系統(tǒng)判斷這是一個什么動物?推理機利用這批事實來匹配規(guī)則。</p><p>  3.2.2 正向推理示意圖</p><p><b>  圖 3</b></p><p>  3.2.3 正向推理機所要具有功能</p><p&

43、gt;  要設計一個正向推理機,就是設計一組程序,使其至少具有以下的功能【3】:</p><p>  能用數據庫中的事實去匹配規(guī)則的前提,若匹配不成功,能自動地進行嚇一跳規(guī)則的匹配。這里如何匹配最為合適,是設計專家系統(tǒng)者根據專業(yè)特點和 知識表示等情況,需要很好考慮的問題,也就是在匹配時到底用什么策略等問題都需要考慮周全; </p><p>  若某條規(guī)則匹配成功,系統(tǒng)能將此規(guī)則的結論部分自

44、動加入數據庫;</p><p>  能判斷何時應結束推理;</p><p>  能將匹配成功的規(guī)則記錄下來;</p><p><b>  3.3反向推理</b></p><p>  3.3.1反向推理基本思想</p><p>  由用戶或系統(tǒng)首先提出一批假設,然后系統(tǒng)逐一驗證這些假設的真假性,方法

45、:</p><p>  1.看假設是含在數據庫中,若在,則假設成立,推理結束或進行下一個假設的驗證,否則進行下一步。</p><p>  2.判斷這些假設是否是證據節(jié)點,若是,系統(tǒng)提問用戶,否則進行下一步。</p><p>  3.找出結論部分包含此假設的那些規(guī)則,把這些規(guī)則的所有前提作為新的假設。</p><p>  4.重復①、②、③步。

46、</p><p>  3.3.2 反向推理示意圖</p><p><b>  圖 4</b></p><p>  3.3.3反向推理機所要具有功能</p><p>  1. 能根據用戶要求或情況提出假設;</p><p>  2. 能驗證此假設是否是在數據庫中;</p><p&

47、gt;  3. 能把知識庫中將結論部分包含此假設的規(guī)則都找出來;</p><p>  4. 能將找出來地規(guī)則的前提部分取出,并作為新的假設逐條驗證;</p><p>  5. 能判斷假設是否是證據接點,若是,能向用戶提出相應的問題,并記錄結果;</p><p>  6. 能將匹配成功的規(guī)則記錄下來;</p><p>  7. 能判斷何時應結束

48、推理;</p><p><b>  四、實例系統(tǒng)實現</b></p><p><b>  4.1系統(tǒng)介紹</b></p><p>  此系統(tǒng)是實現了《人工智能教程(的二版)》專家系統(tǒng)實例里的動物識別系統(tǒng)。此系統(tǒng)是識別——老虎、獵豹、斑馬、長頸鹿、鴕鳥、企鵝、信天翁等七種動物。是嚴格遵循了知識庫中的規(guī)則,并運用C語言在Vis

49、ual C++ 6.0環(huán)境下實驗編譯同過的。因為各種原因沒能設計實現出比較精美的界面,但還是體現出了很多專家系統(tǒng)所該具備的東西和功能。</p><p><b>  4.2基本思路</b></p><p>  根據產生式系統(tǒng)的原理,該系統(tǒng)一般由規(guī)則庫、綜合數據庫、控制系統(tǒng)三部分構成。先定義規(guī)則庫結構體,里面包括Condition[6][20],result[20]和規(guī)則

50、數Cnum,再定義綜合數據庫即事實庫,里面包括item[20][20],和事實數Fnum,主要用到的參數就是這些。然后初始化規(guī)則庫和綜合數據庫,編輯規(guī)則庫。之后就是主程序,也就是推理機的作用:先讓用戶輸入事實,然后與規(guī)則庫中的知識從第一條開始逐條匹配,當匹配成功時,將結論插入事實庫并更新事實庫,再逐條匹配,依次循環(huán)..最終如果能匹配成功就顯示‘該動物是..’,否則顯示‘無法識別該動物’,程序結束。</p><p>

51、;<b>  4.3程序主要代碼</b></p><p><b>  見附錄二</b></p><p><b>  4.4系統(tǒng)執(zhí)行結果</b></p><p><b>  五、結論</b></p><p>  動物識別專家系統(tǒng)實現起來也許相對簡單一些,但基

52、本上也包括了專家系統(tǒng)的各個組成部分。動物識別具有一定的智能性,但是根據所采用的匹配方法的不同其智能性也有不小的差距。而知識庫的管理和數據庫的設計是否完善對于動物識別專家系統(tǒng)是極為關鍵的,這也是很多此類專家系統(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)導論[M]北京: 清華大學

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)導論[M]合肥: 中國科學技術大學出版社,

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]北京:航空航天大學出版社,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//定義綜合數據庫</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();//初始化綜合數據庫</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鍵結束)\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<<"匹配成功,結論插入到綜合數據庫"<<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>  //查看綜合數據庫中的事實否否等于前件,或者是存在這條事實,那么新的結論就不用加到綜合數據庫中</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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論