新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用專家系統構建智能家居的研究與設計

        利用專家系統構建智能家居的研究與設計

        作者: 時間:2013-10-10 來源:網絡 收藏


        (3)推理機的應用

        推理機負責控制并執行問題的求解,它從已有的事實出發,根據知識庫中給定的規則推導出最終結論。例如,IF門打開,室內光線過暗> THEN燈亮>,這一規則按照特定的形式存儲于知識庫中。當傳感器檢測到門已經打開,以及室內光線低于設定值時,推理機即可識別這兩個事件與知識庫中用戶事先設定的某條規則相匹配,從而按照指定的接口調用開燈這一服務。

        3.2 知識庫的設計

        用戶通過友好的人機界面將大量規則存儲于知識庫中,例如,主人回家開門時,客廳里的電燈會因室內的光線過暗自動打開;主人外出關門時,室內的監控系統會因家中無人而自動開啟。電燈的打開這個操作會與門打開、室內亮度過低這兩個事件聯系在一起,我們用產生式規則來表示描述這條知識:

        IF 門打開,室內光線過暗> THEN 燈亮 >

        產生式描述了事物之間的一種對應關系(包括因果關系和蘊含關系),這種基于規則的符號化模型特別適于反應人們對家電設備的調度,由一臺設備的某一事件或狀態作為條件,引發對另一設備的使用。此系統中的知識庫實際上是一個能夠表達用戶主觀意愿的產生式規則庫,在系統中以動態數據結構進行組織。

        知識的表示是描述客觀事物的一組規定,是知識的符號化過程。規則主要包含規則的前提和規則結論部分,前提部分說明規則可以被引用的條件,而結論部分則說明當前提成立時可進行的操作或引起的領域行為。根據需要,一條規則可以有多個前提和多個結論。在具體用C語言實現時,直接以IF前提條件>THEN動作>語句形式編程是行不通的,為了實現事件的驅動,必須利用C語言強有力的字符串處理能力將抽象的符號變成一個個表單元。根據實際情況我們可以將監控下的設備看成一個對象,C語言定義為:

        struct object{
        char *name; /*設備的名稱*/
        float val; /*設備的特性值*/
        enum events {high,middle,low,open,close};USB2.0
        /*事件類型的抽象*/
        };

        這些對象通過規則聯系起來,每定義一條規則,都要把它們存放到規則庫Rule_Base中,以方便推理機獲取有用的規則。在規則表達中,通過rule()函數把規則的外部語言形式轉換成內部的特性表的形式,它的Clause和Action特性分別存放了該規則的前提和結論。推理時若要用到某條規則rule_X(X=1,2...n),就直接從它的特性表中取出相應的前提和結論,Clause和Action可以是一個函數調用、常量或變量,每條規則的特性表組織成如下形式:

        (Clause(條件1 條件2…)Action (結論1 結論2…))

        3.3 推理機的設計

        推理機設計采用事件驅動正向推理方式,其基本思想是:推理機通過網關管理模塊讀取信息家電的當前狀態,從中獲取由設備產生的事件,這些事件構成了基本事實;從基本事實出發引用規則庫中的規則,若某些規則的前提被滿足,則執行這些規則的結論,若這些規則的結論部分形成新的事件,則用同樣的方法以這些邏輯結果為基礎再次進行正向推理。推理過程中的沖突消解采用最先匹配策略,將所有符合當前求解條件的知識放在一張表中,在問題求解過程中一旦找到匹配的規則即采用該規則。

        事件驅動是數據驅動的發展形式,所謂事件驅動是指當事件集合中所有的事件都已發生,才能引發另一種操作。在產生式規則中,IF后面的條件便可當作一個事件集合,當用戶所設定的條件都滿足時,即可得出THEN后的結論或觸發相應的操作,本系統通過Event_driven()函數實現了基于事件驅動的正向推理。

        Event_driven()算法:

        Kbase-Load() /*知識庫的裝載*/USB2.0
        for(所有的事實fact)
        {
        event=fact中的事件;
        for(所有在rulebase中的規則rule)
        {
        rule_event=出現在規則rule中的所有事件;
        if(rule_event至少有一個變量沒有值)
        continue; /*取規則庫中的下一條規則*/USB2.0
        else
        {
        for(規則rule中每一前提clause)
        match(clause);/*匹配clause中的條件*/
        if(match(clause))
        {
        do(action); /*執行規則rule中所有action結論*/
        value(action); /*用value保存每一個操作結果*/
        if(rule(action))/* action產生的事件構成一個新的事實*/USB2.0
        Add_Kbase(action) /*將產生的事件加入到知識庫中*/
        }
        }
        }
        }

        4 結束語

        本文作者創新點:從未來發展方向出發,分析了利用構建智能控制模塊的必要性和合理性,建立了智能協作模型,并給出了設計的具體方法,為智能軟件的優化以及在嵌入式開發板上的移植奠定了基礎。

        參考文獻:

        [1]杜玉清,王新偉.信息家電中實時智能技術的應用研究[J].計算機工程,USB2.0-CY7C68013-128S開發板2003.3:147-165.

        [2]伍欣,劉自偉.提高基于規則效率的技術和方法[J].微計算機信息,2006.4-2:270-272.

        [3]史濟建,俞瑞釗.專家系統實現技術[M].浙江:浙江大學出版社,USB2.0-CY7C68013-128S開發板 1995

        [4] Christos Douligeris,Intelligent Home Systems,IEEE Communications Magazine,1993.10


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 诸城市| 犍为县| 平安县| 偃师市| 宣威市| 澄江县| 通道| 乐业县| 兴国县| 商水县| 庆云县| 云和县| 缙云县| 福州市| 呼和浩特市| 夏津县| 林西县| 达日县| 锡林浩特市| 崇礼县| 年辖:市辖区| 冀州市| 嵊泗县| 航空| 慈利县| 凤台县| 沽源县| 绥滨县| 泸州市| 赫章县| 尼玛县| 金阳县| 大化| 陆良县| 甘孜县| 赣州市| 嘉鱼县| 江永县| 永定县| 靖宇县| 娱乐|