引言:為了彌補基于Web Service的交互協作模型框架的不足,提高多Agent系統對任務求解的能力,最大發揮系統中Agent的能力,在此設計了基于黑板的多Agent系統交互協作框架。
單一的基于Web Service的多Agent系統交互協作框架,不能充分發揮多Agent系統中每個Agent的能力,也不利于系統Agent熟人總線的維護。基于黑板的多Agent系統交互協作框架,打破了這種局限。
一、基于黑板的多Agent系統交互協作框架設計
基于黑板的多Agent系統交互協作模型體系結構,主要包括系統Agent、網絡、黑板3個部分。Agent是整體體系結構的主體,是最終的參與者與受益者,Agent實體從黑板上讀或寫信息,它們之間沒有直接的交互,黑板是它們交互協作的橋梁。網絡是信息在分布、異構的Agent與黑板之間傳遞的載體,在這里它基于TCP/IP協議。黑板是信息與數據的共享區,向對黑板有使用權限的Agent展示著各個Agent發布到上面的任何信息,比如,Agent發布的任務、任務的求解結果、Agent的狀態等。
在黑板表的信息結構,編號(number)屬性表示信息在黑板上的一個純粹順序編碼,該屬性值的大小不代表信息的優先級別,只為了增強黑板上信息的可讀性,當有新的信息發布到黑板上后,由黑板系統自動生成相應編號屬性的值。標識(identifier)屬性代表信息發布者所屬的多Agent系統,在前面有講到,黑板的使用權限的申請以多Agent系統為單位,這個標識就代表獲得申請黑板使用權限的多Agent系統的認證號,這個認證號也黑板的控制中心分發。實體名字(publisher)屬性代表著發布消息的具體Agent,在這里有一個假設:同一個多Agent系統的發布實體的名字是唯一,在不同的多Agent系統中可以有同名的發布Agent的名字,可以通過標識(identifier)屬性值和實體名字(publisher)屬性值查找每一條消息的最終發布實體(Agent)。主體(subject)屬性代表消息的是類別,它的屬性值包括任務、結果和資源三種。標題(title)屬性代表著消息的標題,其屬性值就是消息的具體題目表示。關鍵詞(keyword)是消息的重要屬性,它是Agent對信息進行搜索的重要依據,關鍵詞的個數可以由Agent自主決定。內容(content)屬性是消息的核心,是在黑板上要傳達的具體信息內容,關于消息內容格式描述是關鍵性問題,它影響到系統Agent是否可以理解其傳達的信息,將會在后面做詳細的講解。期限(time limit)屬性標識了某信息在黑板上的停留期限,它是黑板格式要求中必不可少的內容,關系到黑板系統對黑板信息的維護,其屬性值是信息在黑板上的停留截止日期,系統會自動刪除超出其屬性值的信息。采取這樣的手段來對信息進行維護具有重要的意義,可以為Agent發布新的信息預置空間,如果Agent發布的信息在黑板上保存時間過長,其就沒有實在的意義,也有必要把其刪除,從而保持黑板空間的最大利用價值,也保證的信息的意義價值。
黑板中信息的消息字段非常重要,它承載著消息的一大部分信息,為了系統中的Agent能夠很容易的理解其內容,在本設計中,關于這一部分有一個假設:消息字段的內容描述具有相同的結構。由于時間關系,在本文不對消息內容的結構做任何研究,主要把注意力放在實現消息內容的描述技術上,以下對其描述技術進行選擇進行講解。
黑板信息格式描述中,其消息字段承載著信息的一大部分,必須精心設計消息字段的描述形式。怎樣對其消息字段內容進行描述方式至關重要,直接影響到多Agent間交互協作的正常執行,對其信息描述格式的技術選擇之前,要考慮多實現系統Agent對黑板規范的格式內容的理解不復雜、黑板上信息的描述技術必須既有跨平臺性、保持系統中多個Agent理解信息的方式一致。
基于以上對消息內容的要求進行分析,實現對消息內容的描述技術必須具有很好的跨平臺性、易讀性、簡單性、數據描述性。在本文設計中,選擇XML片段作為信息內容描述的實現技術,只所以選擇XML是因為它具有很多的優勢,比如,XML具有很好的夸平臺型,它可以在任何環境下運行,這也把XML作為最終選擇對象的第一目的;XML格式整齊,具有很好的層次性,可以對數據或信息的層次結構關系完美的描述出來;XML具有很好的可擴展性,用戶可以依據具體需求做相應的擴展;技術基于任務語言實現的Agent都可以對XML文檔進行解析并處理。選擇XML定為消息的描述方式,也是不二之選。
二、基于黑板的多Agent系統交互協作方式
基于Web Service的多Agent交互協作框架的不足,提出基于黑板的多Agent交互協作框架作為補充,它們相撲想成共同構成多Agent交互協作框架。基于黑板的多Agent交互協作過程如下:
(1)當Agent接受到自身和其熟人WS-Agent都不能完成的任務時,把任務發布到黑板上,等待能偶對其求解Agent的發現,希望能夠得到其它Agent的協助;
(2)其它Agent對黑板進行訪問時,發現自己能夠對該任務求解時,把問題取走并對其求解;
(3)Agent對黑板上的任務求解后,把結果發布到黑板上;
(4)發布相應任務的Agent把結果取出;
(5)Agent間的一輪交互協作過程結束。
基于黑板的多Agent交互協作過程簡單,易于實現,除了Agent對黑板任務的解讀與執行過程,只是對數據庫的讀寫操作。彌補了基于Web Service的多Agent交互協作過程的不足,它們相撲想成,共同構成多Agent的交互協作方式。
三、基于黑板的多Agent交互協作框架代碼實現
對基于黑板的多Agent交互協作框架的關鍵代碼進行闡述,把Microsoftware SQL Server作為黑板使用,具體實現步驟為,首先,在數據庫里建立數據庫,讓其作為黑板的一個區域;其次,在數據庫中建立表,到此,就建立了讀/寫的黑板。這2步驟的具體可以使用向導實現,也可通過企業管理器或Transact-SQL實現。這一部分實現起來非常簡單,具體實現細節不做闡述。
Agent對黑板的訪問基于TCP/IP協議,需要用到的外界資源有:數據庫Microsoftware SQL Server 2008的驅動程序,Internet網絡。Agent通過這些資源在黑板上發布和讀取信息,實現多Agent間的交互,協作完成對一系列任務的求解。在這一章的開始部分有講到,基于黑板的多Agent交互協作模型是對基于Web Service的交互協作模型的補充,它們相撲想成,共同工程了多Agent之間的交互協作,本設計中,用Microsoftware SQL Server 作為黑板使用,Agent對黑板的訪問就是對黑板的訪問,Agent訪問黑板有以下幾種情況:
情況一:當Agent自身及其WS-Agent熟人都不能完成其接收到的任務時,對黑板進行訪問,并把任務發布到黑板上,以尋求得系統中其它Agent的協作,共同完成對任務的求解。
實現這種情況的訪問非常簡單,就是通過相應的數據驅動對數據庫表的訪問,對黑板的讀與寫就是對在數據庫表中信息的讀取與在表中插入信息。具體實現代碼非常簡單,在這里不進行闡述。
情況二:在本設計中,Agent有一個定時器,讓其定時訪問黑板。其作用包括,通過訪問黑板上的信息,可以更加了解周圍環境,學習自身不具有的知識,提高Agent的智能性與求解問題的能力;可以發現問題,協助其它Agent完成發布到黑板上的任務,并把結果發布到黑板上。
實現這種方式的訪問,要用java定制一個定時器,保證Agent定期對黑板的訪問;把黑板信息的消息字段內容描述的XML片段轉換成XML文檔對象形式,因為,XML片段對java來說就相當于一個字符串,不能直接對其進行解析;需要把其選轉換為XML文檔對象,讓后有基于java的dom4j對其進行解析。
Java有專門實現定時的類Timer,它在java.util包中,在使用它時,先對其實例化,然后使用實例的schedule(TimerTask task, long delay)方法某操作定時,設定指定的操作任務task在指定的延遲delay后執行。定時器任務類TimerTask是抽象類,實現定時的造作類必須繼承并重寫其run()方法,才實現具體的定時操作。schedule(TimerTask task, Date time)設定指定任務task在指定時間time執行。schedule(TimerTask task, long delay, long period)方法設定指定任務task在指定延遲delay后進行固定延遲peroid的執行。scheduleAtFixedRate(TimerTask task, long delay, long period)方法設定指定任務task在指定延遲delay后進行固定頻率peroid的執行。要實現一個定時任務,運用java中的Timer和TimerTask類可以非常容易實現實定時調用處理函數。這兩個類使用起來非常方便,可以完成我們對定時器的絕大多數需要。
情況三:Agent把其自身信息(比如,狀態信息、地址信息等)或資源(比如,系統中其它Agent可以直接使用的數據、圖片等)。在這種情況下,黑板相當于供其它Agent學習的一個平臺,對黑板有使用權限的Agent都可以通過它進行學習并了解到其它Agent的動向。
由此,本文設計了基于黑板的多Agent系統交互協作框架模型,與第三章設計的基于Web Service的多Agent系統交互協作框架相撲想成,相互補拙取優,共同構成多Agent交互協作方式。黑板上的消息描述格式定義是本章重點內容之一,影響到Agent對消息的理解,直接關系到多Agent間交互協作性能。
(作者單位:遼寧金融職業學院)
作者簡介
李業明(1982-),男,遼寧遼陽人,遼寧金融職業學院網絡中心教師,講師。研究方向:計算機網絡。