• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于智能家居的規(guī)則沖突避免機制

      2021-03-15 06:59:23?,?/span>朱慶華
      電腦知識與技術(shù) 2021年1期
      關(guān)鍵詞:沖突檢測智能家居

      常瑩 朱慶華

      摘要:將規(guī)則系統(tǒng)引入智能家居平臺很好地解決了將控制邏輯與程序代碼分離的問題,用戶可以根據(jù)需求方便的添加修改規(guī)則。但是隨著智能家居系統(tǒng)的不斷擴大,系統(tǒng)設備的增多以及帶來的用戶需求的日益復雜,規(guī)則系統(tǒng)也變得更加繁雜,不同規(guī)則之間可能發(fā)生沖突。本文介紹了智能家居系統(tǒng)中的核心部分——規(guī)則系統(tǒng),研究了規(guī)則引擎的工作方式,揭示了規(guī)則沖突問題的重要性。對智能家居中的規(guī)則沖突問題進行了研究分析,并提出了避免規(guī)則沖突問題的方法。

      關(guān)鍵詞:智能家居;規(guī)則沖突;沖突檢測

      中圖分類號:G642? ? ? ? 文獻標識碼:A

      文章編號:1009-3044(2021)01-0199-03

      1規(guī)則系統(tǒng)

      在智能家居系統(tǒng)中,規(guī)則系統(tǒng)是一個核心模塊,用戶是通過制定規(guī)則來享受系統(tǒng)帶來的便利,對于系統(tǒng)中規(guī)則的存儲,規(guī)則的分解、匹配,規(guī)則間沖突的避免和檢測以及規(guī)則的執(zhí)行都是通過規(guī)則系統(tǒng)來完成的。規(guī)則系統(tǒng)在本文提及的智能家居結(jié)構(gòu)中位于業(yè)務層,承上啟下,發(fā)揮著非常重要的作用。規(guī)則系統(tǒng)包括規(guī)則存儲模塊,規(guī)則引擎模塊和沖突檢測模塊三個部分。規(guī)則存儲模塊即規(guī)則庫,可以用來匹配以及規(guī)則展示。規(guī)則引擎對規(guī)則庫和事件庫進行匹配,在匹配前需要規(guī)則沖突檢測模塊對規(guī)則庫進行檢測,如果有沖突,則需要修改規(guī)則以避免規(guī)則沖突帶來的問題,可見規(guī)則沖突檢測對系統(tǒng)的重要性。如果匹配成功,則觸發(fā)規(guī)則執(zhí)行模塊去執(zhí)行動作部分。

      1.1 規(guī)則引擎技術(shù)

      規(guī)則引擎起源于基于規(guī)則的專家系統(tǒng),它是在推理引擎的基礎上發(fā)展而來的,是一種嵌入在程序內(nèi)的組件[1]。專家系統(tǒng)實際上是一個計算機程序,只是它包含著特定領(lǐng)域大量的知識和經(jīng)驗,通過推理可以得到類似專家級別的效果。

      規(guī)則引擎一般包括工作內(nèi)存、匹配器、規(guī)則集容器和執(zhí)行器幾個部分,其結(jié)構(gòu)如圖所示。(1)規(guī)則集容器連接著存儲規(guī)則的數(shù)據(jù)庫,用于將規(guī)則數(shù)據(jù)庫中的規(guī)則取出來以待匹配,是匹配前的規(guī)則緩存模塊。(2)工作內(nèi)存則相當于一個事件庫,其中存放著當前的環(huán)境參數(shù),設備狀態(tài)等事件信息。(3)匹配器將規(guī)則集容器和工作內(nèi)存連接起來,分別對兩者中的規(guī)則和事件進行匹配,若匹配成功,則可以執(zhí)行該規(guī)則。(4)執(zhí)行器則存儲著匹配成功的規(guī)則,并且系統(tǒng)會去按一定順序執(zhí)行這個規(guī)則的動作部分。

      規(guī)則引擎的工作流程如下所示:

      1)調(diào)用規(guī)則沖突檢測模塊對規(guī)則數(shù)據(jù)庫中的規(guī)則進行沖突檢測,如果沖突,則將沖突規(guī)則返回修改;

      2)從規(guī)則庫中取出需要匹配的規(guī)則放到規(guī)則集容器,并轉(zhuǎn)化成一定的形式以便匹配;

      3)更新工作內(nèi)存中的數(shù)據(jù),即更新事件庫;

      4)匹配器對容器中規(guī)則和工作內(nèi)存中的事件進行匹配,并將匹配成功的規(guī)則加入執(zhí)行器;

      5)執(zhí)行器按照某種預定順序去執(zhí)行匹配成功規(guī)則的動作。

      規(guī)則引擎適合比較復雜的而且沒有明確清晰的解決方案的場景,對于需要動態(tài)更新,基于一定數(shù)據(jù)量能夠很快做出決策的場景也非常適用。目前常見的商業(yè)引擎有ILOG的JRules和Jess,商業(yè)引擎做得比較成熟好用,穩(wěn)定性高,但缺點是其價格非常昂貴。作為一個商業(yè)引擎,Jess并不是開源的,但是好在對于學術(shù)研究用途是免費提供的,只有商業(yè)用途時才需要付費,因此基于Jess的研究項目非常多。而Drools則是目前最活躍的開源引擎。

      1.2 Rete算法

      在規(guī)則引擎中,規(guī)則匹配模塊尤為重要,其匹配質(zhì)量和效率直接影響著規(guī)則引擎的好壞。常用模匹配算法有Rete,Leaps,Treat等。目前許多規(guī)則引擎的匹配算法都是基于1982年Forgy提出的RETE算法改進而成的[2]。

      Rete算法是一種高效的前向鏈型匹配算法,它是基于時間冗余性和結(jié)構(gòu)相似性這兩個基本的假設。(1)時間冗余性,即在每個執(zhí)行周期,往往只有一小部分的事實發(fā)生了變化,如果每次對所有的事實重新匹配,效率非常低下,因此可以記錄下已經(jīng)匹配過得事實,然后下次匹配只對變化的事實進行匹配。(2)結(jié)構(gòu)相似性,是指許多規(guī)則之間往往具有比較相似的模式和模式組。

      在產(chǎn)生式系統(tǒng)(productionsystem)中,被處理的數(shù)據(jù)稱為工作內(nèi)存(workingmemory),一條產(chǎn)生式規(guī)則分為兩個部分前提(LHS)和結(jié)論(RHS),進行匹配的主要流程可以分為:

      (1)匹配找出符合條件部分的workingmemory集合;

      (2)然后選擇一個條件被滿足的規(guī)則;

      (3)執(zhí)行該規(guī)則的動作部分;

      (4)返回(1);

      Rete算法主要是通過構(gòu)建一個匹配網(wǎng)絡來提升匹配步驟的效率,該匹配網(wǎng)絡分為aloha網(wǎng)絡和beta網(wǎng)絡兩個部分進行匹配。Rete算法的核心思路是將在過去匹配過程中的全部信息保存下來,用于再次匹配時的篩選,以便提高匹配效率。在不斷循環(huán)匹配中,通過記住已經(jīng)匹配過的事實,然后只去計算新刪除或新添加的事實所引發(fā)的變化,僅通過變化的事實去匹配其對應的規(guī)則,因為每次事實的變化相對于規(guī)則來說是少量,因此這種從事實去匹配規(guī)則的演繹推理能有效降低計算量,提升匹配效率。但隨之而來的問題就是需要占用大量的內(nèi)存資源,運行成本增加。

      2規(guī)則沖突類型分析

      所謂規(guī)則,就相當于一條完整的控制指令?;谖锫?lián)網(wǎng)的智能家居傳感網(wǎng)絡可以從當前環(huán)境狀態(tài)下獲取相關(guān)環(huán)境狀態(tài)參數(shù)以及設備狀態(tài)參數(shù),如果滿足用戶設定的觸發(fā)條件,控制系統(tǒng)便控制設備對當前環(huán)境或者設備狀態(tài)進行改變。規(guī)則可以分為條件(Condition)部分和動作(Action)部分。即IF條件部分滿足,THEN執(zhí)行動作部分的相應動作。

      本文可以將規(guī)則抽象成是由用戶(User),觸發(fā)器(Triggers)和執(zhí)行器(Actuators),環(huán)境實體(Environments)四個部分組成[3]。其中用戶中包括用戶ID以及用戶權(quán)限,觸發(fā)器中包括條件中涉及的環(huán)境實體的ID,觸發(fā)條件,以及該觸發(fā)條件優(yōu)先級。環(huán)境實體中包括環(huán)境實體ID,以及它前狀態(tài)和后狀態(tài)。執(zhí)行器中包括執(zhí)行動作中涉及環(huán)境實體的ID以及動作(Action)。通過對上述規(guī)則模型分析,可以發(fā)現(xiàn)規(guī)則之間可能會有相似觸發(fā)條件,相似執(zhí)行動作,相反執(zhí)行動作等關(guān)系,進一步總結(jié)這些關(guān)系得出了下述幾種規(guī)則沖突類型:

      1)執(zhí)行動作相反沖突。執(zhí)行動作相反沖突即當前狀態(tài)下,兩條規(guī)則的條件部分都得到滿足,并且兩規(guī)則優(yōu)先級相同,即兩條規(guī)則同時被觸發(fā)時,如果兩條規(guī)則的執(zhí)行器是對相同環(huán)境實體采取相反的動作,即發(fā)生了執(zhí)行動作相反沖突。例如下面兩條規(guī)則:

      RA:當溫度大于28℃時,則打開空調(diào);

      RB:當溫度大于28℃時,則關(guān)閉空調(diào)。

      2)影子沖突。影子沖突即兩條規(guī)則的觸發(fā)條件部分有相互包含的關(guān)系,而且兩規(guī)則的執(zhí)行器對同一環(huán)境實體采取了相同的操作。比如:

      RA:如果室內(nèi)PM2.5濃度>35mg/m?,則打開空氣凈化器;

      RB:如果室內(nèi)PM2.5濃度>45mg/m?,則打開空氣凈化器。

      如果當前室內(nèi)的PM2.5是50mg/m?,兩條規(guī)則皆符合。但考慮當前室內(nèi)PM2.5濃度是40mg/m?時,顯然未滿足RB的觸發(fā)條件,但滿足RA要打開空氣凈化器的條件,顯然這兩條規(guī)則之間是沖突的。

      3)依賴沖突。依賴沖突是指RA的觸發(fā)條件恰好是RB執(zhí)行后的狀態(tài),而RB的觸發(fā)條件也恰好是RA執(zhí)行后的狀態(tài),兩條規(guī)則的觸發(fā)條件和對方的執(zhí)行后狀態(tài)互為依賴型。例如下面兩條規(guī)則:

      RA:如果打開照明燈光,則關(guān)閉窗簾;

      RB:如果關(guān)閉了窗簾,則打開照明燈光。

      上述兩條規(guī)則如果單獨存在,則可以正常運行,但是如果兩條規(guī)則同時存在,一旦一條規(guī)則被觸發(fā),比如打開了燈光,那么將會關(guān)閉窗簾,相應地B規(guī)則也會被觸發(fā),這樣兩條規(guī)則會不斷進行循環(huán)執(zhí)行,占用系統(tǒng)資源,影響系統(tǒng)穩(wěn)定性。在依賴沖突里,上述兩條規(guī)則間的依賴是一種直接依賴,還有可能就是有三條或三條以上的規(guī)則之間存在著間接依賴關(guān)系。

      3規(guī)則模型

      本文是基于本體和SWRL規(guī)則語言對智能家居規(guī)則沖突問題進行研究的,因此將使用SWRL建立規(guī)則。

      SWRL是一種語義網(wǎng)規(guī)則表示語言,由W3C在2004年提出。SWRL結(jié)合了本體語言OWLDL,OWLLite與規(guī)則標記語言SWRLML[4]。SWRL允許用戶編寫基于OWL概念表示的規(guī)則,而且它能夠提供比OWL語言更加強大的推理能力。在語義上,SWRL是建立在與OWL相同的描述邏輯基礎上,并在執(zhí)行推理時提供類似的強形式保證。

      在形式上,一條SWRL規(guī)則分為兩個部分,一個前提(antecedent)與一個結(jié)論(consequent)。Antecedent部分在owl文件中使用Body標簽,consequent在owl文件中使用Head標簽。即SWRL規(guī)則可以抽象為如下所示的形式:

      Antecedent—>Consequent。

      其中Body和Head部分都可以包含一個或者多個原子(atoms)。所以也可以將規(guī)則表示成:

      atom^atom^atom^…—>atom^atom^…

      它所表示的意思是只要前提部分的所有atoms都為真,就可以得到結(jié)論部分所有的atoms也為真。一個atom是形如:

      P(arg1,arg2,arg3…argn)

      其中P是一個謂詞符號,其中arg1, arg2,…,argn是表達式的項或參數(shù)。在SWRL中,支持五種類型的謂詞:OWL類、OWL屬性、數(shù)據(jù)類型、數(shù)據(jù)范圍和內(nèi)置函數(shù)。參數(shù)可以是OWL個體或數(shù)據(jù)值或引用它們的變量。SWRL中的所有變量都被視為普遍的量化,其范圍僅限于給定的規(guī)則。

      在SWRL中約定了一種規(guī)范,用戶是按照這些規(guī)范去方便的制定規(guī)則的。它主要分為四個部分:Imp、Atom、Variable和Building。Imp包括head和body,head表示的是這條規(guī)則的結(jié)果部分,body則是這個結(jié)果需要滿足的所有條件的交,在head和body中包含著的一個個實例則是由原子和變量(variable)組成的。在Atom中包含了幾種限制表達式,其主要可分為以下幾類:C(x),P(x,y), sameAs(x,y) 以及differentFrom(x,y)。C表示的是OWL中的類,P是OWL屬性,括號中的x,y可以是變量,可以是owl個體(owlindividual),也可以是owl數(shù)據(jù)值。SameAs表示x和y相等,diffrentfrom表示x和y不相等。Building是SWRL內(nèi)置的模塊化元件,在編寫規(guī)則時可以直接使用。

      SWRL中提供了七種atoms:ClassAtoms、IndividualPropertyatoms、DataValuedPropertyatoms、DifferentIndividualsatoms、SameIndividualatoms、Built-inatoms、DataRangeatoms。下面列出一條簡單的SWRL規(guī)則實例:

      hasParent(?x , ?y)^hasBrother(?y , ?z)->hasUncle(?x,?z)

      這條規(guī)則是說如果y是x的父親并且z是y的兄弟,那么我們便可以得到z是x的叔叔。根據(jù)上述其中不同的atoms以及它們之間自由的組合,我們便可以使用SWRL構(gòu)建強大的規(guī)則庫,結(jié)合本體知識庫和SWRL,便可以使用推理機進行推理,挖掘中知識庫中隱藏的大量信息。

      如果一條規(guī)則條件部分包含了“∧”和“∨”這樣的邏輯運算符,那么規(guī)則往往可以通過這種邏輯組合表示的特別復雜。復雜的規(guī)則形式會使沖突檢測變得困難,為解決這一問題,我們可以使用析取范式來將復雜的規(guī)則轉(zhuǎn)化為基本的簡單規(guī)則。比如形如:f:A1∧A2∧(A3∨(A4∧A5))->B1∧B2的一條規(guī)則,通過拆分化簡可以將其分解為下述兩條簡單規(guī)則::A1∧A2∧A3->B1∧B2與A1∧A2∧A4∧A5->B1∧B2,這樣處理后會方便進行沖突檢測。

      4一種基于智能家居的規(guī)則沖突避免機制

      基于智能家居系統(tǒng)中規(guī)則沖突的常見性以及帶來的不良后果,必須有一套規(guī)則沖突避免和檢測機制。在規(guī)則系統(tǒng)中,如果對所有的規(guī)則都進行規(guī)則沖突檢測的話,一是如果規(guī)則庫非常龐大,那么所帶來的時間開銷和資源開銷也會大為增加。二是其實沒有必要進行全部檢測,在日常場景中,我們對各種家居設備操作的頻率以及它們的重要性都有非常大的差異,因此可以在檢測之前采用一定方法進行規(guī)則沖突的避免??梢曰趦?yōu)先級或者是“先進后出”的方法去執(zhí)行規(guī)則?!跋冗M后出”即一種類似棧機制的一種方法,即后添加的規(guī)則先被激活,先添加的后被激活,由于這種方式并不適合多任務并發(fā)的智能家居場景,因此暫不做討論。下面將提出基于場景優(yōu)先級和基于用戶優(yōu)先級的規(guī)則沖突避免方法。

      4.1 基于場景優(yōu)先級

      在智能家居系統(tǒng)中,用戶可以將所需要執(zhí)行的任務劃分為多個場景類型,每一個任務就對應著一條規(guī)則,而為每一條規(guī)則設定一個場景類型。比如現(xiàn)在有如下兩條規(guī)則,RA:當檢測到室內(nèi)煙霧濃度高時,就打開窗戶并打開煙霧報警;RB:當打開音響時,關(guān)閉窗戶。那么如果在煙霧濃度過高時,恰好打開了音響,這時兩條規(guī)則便發(fā)生了沖突。但明顯RA涉及安全,更為重要,需要優(yōu)先執(zhí)行,因此我們可以將這兩條規(guī)則加入不同的場景類型中,并按照類型的重要性為場景類型設置不同的優(yōu)先級,正好避免了這種沖突的發(fā)生[5]。

      我們可以將場景劃分為以下四種場景類型:

      1)安全場景。R1:如果在夜間,窗戶或者門被打開,則打開燈光,打開報警器;

      2)娛樂場景。R2:如果打開家庭影院,則關(guān)閉窗簾,關(guān)閉燈光。

      3)能量場景。R3:當家用電器總功率超過2000W時且溫度低于28℃時,則關(guān)閉空調(diào)。

      4)環(huán)境場景。如果有人在家且室內(nèi)PM2.5濃度>35mg/m?,則打開空氣凈化器。

      根據(jù)不同的需求,用戶可以靈活的設定各場景的優(yōu)先級。例如:當家里有成人且孩子在家時,我們可以把娛樂場景設置到最高優(yōu)先級,安全場景次之。當家中有老人時我們又可將環(huán)境場景設置到最高優(yōu)先級,為老人的健康提供一定的服務。

      對于不同場景類型的規(guī)則之間的沖突使用優(yōu)先級便可以避免。對于同一場景類型中規(guī)則之間的沖突,我們可以使用沖突檢測算法進行檢測,此時由于進行的場景劃分,沖突檢測時需要遍歷的規(guī)則數(shù)也將減少,效率也會提高。

      4.2 基于用戶優(yōu)先級

      此外,還可以進行基于用戶優(yōu)先級的沖突避免。在家庭中往往有多個人同時生活,相應的也將會有多個用戶可以制定規(guī)則。由于不同用戶需求不同,因此不同用戶之間制定的規(guī)則具有隨機性,很可能會發(fā)生沖突。如果現(xiàn)在系統(tǒng)中存在兩個用戶,A用戶制定了一條R1:在早晨七點到八點之間打開窗戶進行通風。B用戶制定了一條R2:在晚上10點后到早晨10點前,關(guān)閉窗戶,以便睡眠不被噪聲干擾。那么在這兩段時間重合的區(qū)域,系統(tǒng)將會發(fā)生規(guī)則沖突。為解決上述問題,可以采用類似設置用戶權(quán)限的方法,為A,B用戶設定不同的優(yōu)先級,當不同用戶的規(guī)則發(fā)生沖突時,系統(tǒng)將選擇執(zhí)行優(yōu)先級高的用戶的規(guī)則,從而可以避免這種類型的沖突發(fā)生。

      可見,上述基于優(yōu)先級的規(guī)則沖突避免機制很好地將各用戶,各需求場景之間的沖突進行了避免,可以使得不同用戶不同場景規(guī)則的添加變得更為豐富靈活同時又不影響規(guī)則的執(zhí)行,也降低了沖突檢測模塊的復雜度。其主要分為兩個階段,首先是場景任務的添加階段,此時涉及了同一類型場景的沖突檢測,如果有沖突,則提醒用戶進行規(guī)則修改,如果沒有沖突,則進行場景任務執(zhí)行階段,此階段便可以基于預設的場景優(yōu)先級以及用戶優(yōu)先級,決定執(zhí)行哪些規(guī)則。

      參考文獻:

      [1] 劉偉. Java規(guī)則引擎——Drools的介紹及應用[J]. 網(wǎng)絡新媒體技術(shù), 2005,26(6):717-721.

      [2] Forgy CL. Rete: a fast algorithm for the many pattern/many object pattern match problem[M]. Expert systems. IEEE Computer Society Press, 1991:547-559.

      [3] SunY, WangX, LuoH, etal. Conflict Detection Scheme Based on Formal Rule Model for Smart Building Systems[J]. IEEE Transactionson Human-Machine Systems, 2015, 45(2):215-227.

      [4] 金保華, 林青, 付中舉, 等. 基于SWRL的應急案例庫的知識表示及推理方法研究[J]. 科學技術(shù)與工程, 2012, 12(33):9049-9055.

      [5] 潘平安. 基于Zigbee和Android的智能家居系統(tǒng)的研究與實現(xiàn)[D].華東交通大學.2017

      【通聯(lián)編輯:王力】

      猜你喜歡
      沖突檢測智能家居
      BIM技術(shù)在建筑裝飾工程項目管理中的應用研究
      北方建筑(2024年2期)2024-05-25 00:00:00
      基于PLC的智能家居控制系統(tǒng)研究
      電子制作(2019年20期)2019-12-04 03:51:14
      土地覆被與“兩規(guī)合一”沖突檢測的實證研究
      地鐵運營施工調(diào)度管理系統(tǒng)的應用與研發(fā)
      獨立學院補考安排沖突檢測系統(tǒng)的設計與實現(xiàn)
      智能家居發(fā)展或?qū)崿F(xiàn)彎道超車
      計算機應用安全策略本體研究
      計劃協(xié)同工作中的沖突檢測與消除算法研究
      關(guān)于智能家居真正需求的探討
      智能家居的發(fā)展趨勢分析
      移動通信(2015年17期)2015-08-24 08:13:20
      绥德县| 藁城市| 天全县| 平塘县| 井研县| 惠来县| 怀柔区| 丹江口市| 通城县| 阿拉善左旗| 顺平县| 乌拉特中旗| 平昌县| 安康市| 太谷县| 遵化市| 重庆市| 宜兴市| 鄂托克前旗| 荆州市| 扬中市| 丽水市| 仙居县| 宿迁市| 土默特左旗| 永康市| 中卫市| 南投市| 绵竹市| 高淳县| 乌拉特前旗| 博乐市| 临沭县| 北宁市| 张家川| 紫金县| 布尔津县| 子洲县| 南木林县| 赤水市| 乡宁县|