經過一段時間的學習。最終對專家系統有了一定的認識,在此發表一下個人的見解,希望和大家一起交流學習。
專家系統,通俗的講。就是讓計算機具有人類專家的知識、經驗和技能,可以像人類專家一樣解決實際問題。專家系統實質上是一段計算機程序,它可以以人類專家的水平完畢某一專業領域的任務。通過計算機。模擬人類專家怎樣運用他們的知識和經驗解決面臨問題的方法、技巧和步驟。
基本系統結構(通常由人機交互界面、知識庫、綜合數據庫、推理機、解釋器、知識獲取等6個部分構成):
以下是一個簡單的動物識別的專家系統設計(簡單推斷蛇、蜥蜴、雞、貓四種動物):
1. 實現流程:
1) 初始化規則集合
2) 初始化規則事實集合
3) 使用規則推導
2. 加入規則信息:
”冷血”,”有腿”,”羽毛”,”會飛”
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條規則),想要功能更完好。我們還能夠加入很多其它精確的規則和事實。
