利用專(zhuān)家系統(tǒng)構(gòu)建智能家居的研究與設(shè)計(jì)
(3)推理機(jī)的應(yīng)用
推理機(jī)負(fù)責(zé)控制并執(zhí)行問(wèn)題的求解,它從已有的事實(shí)出發(fā),根據(jù)知識(shí)庫(kù)中給定的規(guī)則推導(dǎo)出最終結(jié)論。例如,IF門(mén)打開(kāi),室內(nèi)光線過(guò)暗> THEN燈亮>,這一規(guī)則按照特定的形式存儲(chǔ)于知識(shí)庫(kù)中。當(dāng)傳感器檢測(cè)到門(mén)已經(jīng)打開(kāi),以及室內(nèi)光線低于設(shè)定值時(shí),推理機(jī)即可識(shí)別這兩個(gè)事件與知識(shí)庫(kù)中用戶(hù)事先設(shè)定的某條規(guī)則相匹配,從而按照指定的接口調(diào)用開(kāi)燈這一服務(wù)。
3.2 知識(shí)庫(kù)的設(shè)計(jì)
用戶(hù)通過(guò)友好的人機(jī)界面將大量規(guī)則存儲(chǔ)于知識(shí)庫(kù)中,例如,主人回家開(kāi)門(mén)時(shí),客廳里的電燈會(huì)因室內(nèi)的光線過(guò)暗自動(dòng)打開(kāi);主人外出關(guān)門(mén)時(shí),室內(nèi)的監(jiān)控系統(tǒng)會(huì)因家中無(wú)人而自動(dòng)開(kāi)啟。電燈的打開(kāi)這個(gè)操作會(huì)與門(mén)打開(kāi)、室內(nèi)亮度過(guò)低這兩個(gè)事件聯(lián)系在一起,我們用產(chǎn)生式規(guī)則來(lái)表示描述這條知識(shí):
IF 門(mén)打開(kāi),室內(nèi)光線過(guò)暗> THEN 燈亮 >
產(chǎn)生式描述了事物之間的一種對(duì)應(yīng)關(guān)系(包括因果關(guān)系和蘊(yùn)含關(guān)系),這種基于規(guī)則的符號(hào)化模型特別適于反應(yīng)人們對(duì)家電設(shè)備的調(diào)度,由一臺(tái)設(shè)備的某一事件或狀態(tài)作為條件,引發(fā)對(duì)另一設(shè)備的使用。此系統(tǒng)中的知識(shí)庫(kù)實(shí)際上是一個(gè)能夠表達(dá)用戶(hù)主觀意愿的產(chǎn)生式規(guī)則庫(kù),在系統(tǒng)中以動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)進(jìn)行組織。
知識(shí)的表示是描述客觀事物的一組規(guī)定,是知識(shí)的符號(hào)化過(guò)程。規(guī)則主要包含規(guī)則的前提和規(guī)則結(jié)論部分,前提部分說(shuō)明規(guī)則可以被引用的條件,而結(jié)論部分則說(shuō)明當(dāng)前提成立時(shí)可進(jìn)行的操作或引起的領(lǐng)域行為。根據(jù)需要,一條規(guī)則可以有多個(gè)前提和多個(gè)結(jié)論。在具體用C語(yǔ)言實(shí)現(xiàn)時(shí),直接以IF前提條件>THEN動(dòng)作>語(yǔ)句形式編程是行不通的,為了實(shí)現(xiàn)事件的驅(qū)動(dòng),必須利用C語(yǔ)言強(qiáng)有力的字符串處理能力將抽象的符號(hào)變成一個(gè)個(gè)表單元。根據(jù)實(shí)際情況我們可以將智能家居監(jiān)控下的設(shè)備看成一個(gè)對(duì)象,C語(yǔ)言定義為:
struct object{
char *name; /*設(shè)備的名稱(chēng)*/
float val; /*設(shè)備的特性值*/
enum events {high,middle,low,open,close};USB2.0
/*事件類(lèi)型的抽象*/
};
這些對(duì)象通過(guò)規(guī)則聯(lián)系起來(lái),每定義一條規(guī)則,都要把它們存放到規(guī)則庫(kù)Rule_Base中,以方便推理機(jī)獲取有用的規(guī)則。在規(guī)則表達(dá)中,通過(guò)rule()函數(shù)把規(guī)則的外部語(yǔ)言形式轉(zhuǎn)換成內(nèi)部的特性表的形式,它的Clause和Action特性分別存放了該規(guī)則的前提和結(jié)論。推理時(shí)若要用到某條規(guī)則rule_X(X=1,2...n),就直接從它的特性表中取出相應(yīng)的前提和結(jié)論,Clause和Action可以是一個(gè)函數(shù)調(diào)用、常量或變量,每條規(guī)則的特性表組織成如下形式:
(Clause(條件1 條件2…)Action (結(jié)論1 結(jié)論2…))
3.3 推理機(jī)的設(shè)計(jì)
推理機(jī)設(shè)計(jì)采用事件驅(qū)動(dòng)正向推理方式,其基本思想是:推理機(jī)通過(guò)網(wǎng)關(guān)管理模塊讀取信息家電的當(dāng)前狀態(tài),從中獲取由設(shè)備產(chǎn)生的事件,這些事件構(gòu)成了基本事實(shí);從基本事實(shí)出發(fā)引用規(guī)則庫(kù)中的規(guī)則,若某些規(guī)則的前提被滿足,則執(zhí)行這些規(guī)則的結(jié)論,若這些規(guī)則的結(jié)論部分形成新的事件,則用同樣的方法以這些邏輯結(jié)果為基礎(chǔ)再次進(jìn)行正向推理。推理過(guò)程中的沖突消解采用最先匹配策略,將所有符合當(dāng)前求解條件的知識(shí)放在一張表中,在問(wèn)題求解過(guò)程中一旦找到匹配的規(guī)則即采用該規(guī)則。
事件驅(qū)動(dòng)是數(shù)據(jù)驅(qū)動(dòng)的發(fā)展形式,所謂事件驅(qū)動(dòng)是指當(dāng)事件集合中所有的事件都已發(fā)生,才能引發(fā)另一種操作。在產(chǎn)生式規(guī)則中,IF后面的條件便可當(dāng)作一個(gè)事件集合,當(dāng)用戶(hù)所設(shè)定的條件都滿足時(shí),即可得出THEN后的結(jié)論或觸發(fā)相應(yīng)的操作,本系統(tǒng)通過(guò)Event_driven()函數(shù)實(shí)現(xiàn)了基于事件驅(qū)動(dòng)的正向推理。
Event_driven()算法:
Kbase-Load() /*知識(shí)庫(kù)的裝載*/USB2.0
for(所有的事實(shí)fact)
{
event=fact中的事件;
for(所有在rulebase中的規(guī)則rule)
{
rule_event=出現(xiàn)在規(guī)則rule中的所有事件;
if(rule_event至少有一個(gè)變量沒(méi)有值)
continue; /*取規(guī)則庫(kù)中的下一條規(guī)則*/USB2.0
else
{
for(規(guī)則rule中每一前提clause)
match(clause);/*匹配clause中的條件*/
if(match(clause))
{
do(action); /*執(zhí)行規(guī)則rule中所有action結(jié)論*/
value(action); /*用value保存每一個(gè)操作結(jié)果*/
if(rule(action))/* action產(chǎn)生的事件構(gòu)成一個(gè)新的事實(shí)*/USB2.0
Add_Kbase(action) /*將產(chǎn)生的事件加入到知識(shí)庫(kù)中*/
}
}
}
}
4 結(jié)束語(yǔ)
本文作者創(chuàng)新點(diǎn):從智能家居未來(lái)發(fā)展方向出發(fā),分析了利用專(zhuān)家系統(tǒng)構(gòu)建AI-IA智能控制模塊的必要性和合理性,建立了智能協(xié)作模型,并給出了設(shè)計(jì)專(zhuān)家系統(tǒng)的具體方法,為智能軟件的優(yōu)化以及在嵌入式開(kāi)發(fā)板上的移植奠定了基礎(chǔ)。
參考文獻(xiàn):
[1]杜玉清,王新偉.信息家電中實(shí)時(shí)智能技術(shù)的應(yīng)用研究[J].計(jì)算機(jī)工程,USB2.0-CY7C68013-128S開(kāi)發(fā)板2003.3:147-165.
[2]伍欣,劉自偉.提高基于規(guī)則專(zhuān)家系統(tǒng)效率的技術(shù)和方法[J].微計(jì)算機(jī)信息,2006.4-2:270-272.
[3]史濟(jì)建,俞瑞釗.專(zhuān)家系統(tǒng)實(shí)現(xiàn)技術(shù)[M].浙江:浙江大學(xué)出版社,USB2.0-CY7C68013-128S開(kāi)發(fā)板 1995
[4] Christos Douligeris,Intelligent Home Systems,IEEE Communications Magazine,1993.10
評(píng)論