通過一段時間的學習。最終對專家系統有了必定的認識,在此發表一下我的的看法,但願和你們一塊兒交流學習。html
專家系統,通俗的講。就是讓計算機具備人類專家的知識、經驗和技能,能夠像人類專家同樣解決實際問題。專家系統實質上是一段計算機程序,它能夠以人類專家的水平完畢某一專業領域的任務。經過計算機。模擬人類專家怎樣運用他們的知識和經驗解決面臨問題的方法、技巧和步驟。數據庫
基本系統結構(一般由人機交互界面、知識庫、綜合數據庫、推理機、解釋器、知識獲取等6個部分構成):數據結構
如下是一個簡單的動物識別的專家系統設計(簡單推斷蛇、蜥蜴、雞、貓四種動物):函數
1. 實現流程:post
1) 初始化規則集合學習
2) 初始化規則事實集合spa
3) 使用規則推導設計
2. 加入規則信息:code
」冷血」,」有腿」,」羽毛」,」會飛」htm
3. 規則事實:
冷血+沒有腿 -> 蛇
冷血+有腿 -> 蜥蜴
非冷血+有羽毛+不會飛 -> 雞
非冷血+沒有羽毛 -> 貓
4. 推理過程:
部分代碼:
#define Chicken 0x02 //雞 0010 #define Cat 0x00 //貓 0000 #define Snake 0x01 //蛇 0001 #define Lizard 0x05 //蜥蜴 0101
typedef struct Rule { char *info; //規則信息 Rule *pYes; //匹配到的下一個規則 Rule *pNo; //未匹配到的下一個規則 int pos; //該規則的位置 }Rule; unsigned char result = 0;
推導函數
void MatchRules(char *s, Rule *match) { if(!s || !match) return; //規則是否匹配上 if(CheckRule(s, match->info) > 0) { //記錄位置 result += 1 << match->pos; MatchRules(s, match->pYes) } else { //未匹配上 MatchRules(s, match->pNo); } }
推斷result。得出結論
switch (result) { case Chicken: printf("雞!"); break; case Cat: printf("貓!"); break; case Snake: printf("蛇。"); break; case Lizard: printf("蜥蜴!"); break; default: printf("其它!"); break; }
以上僅僅包括簡單規則(4種動物推斷,和4條規則),想要功能更無缺。咱們還可以加入不少其它精確的規則和事實。