人工智能專家系統的簡單實現

通過一段時間的學習。最終對專家系統有了必定的認識,在此發表一下我的的看法,但願和你們一塊兒交流學習。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

4 位二進制位分別表示:能飛、有腿、有羽毛、冷血,匹配上則爲1,不然爲0
數據結構定義

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條規則),想要功能更無缺。咱們還可以加入不少其它精確的規則和事實。

相關文章
相關標籤/搜索