Jadex是一種智慧型代理的BDI(Belief-Desire-Intention)推理機。推理機實際上可以與不同的agent中間件一起使用,中間件可以提供交流環境和控制功能。
基本介紹
- 中文名:jadex
- 名稱:jadex
- 人物:Bratman
- Rao:Rao和Georgeff發展
基本介紹,BDI模型,信念庫,目標的結構,規劃的規格,
基本介紹
BDI模型概念是由Bratman提出後Rao和Georgeff發展成為適用於多代理系統的軟體架構。建立與這之上的系統叫做PRS(Procedural Reasoning Systems)。Jadex是從已有的BDI系統如JACK,發展過來的,利用內置目標協商方法,克服了一些BDI的弱點如:如何協調目標衝突。
在Jadex系統中,agent包含一組信念(beliefs),它可以是任何類型的Java對象;目標集(Goals)表示要實現的目標;規劃庫(plans)用來具體實現agent目標的方法。
Jadex-BDI模型示意圖圖中描述Jadex中,基於BDI模型的agent體系結構,該結構中包含四個部分:信念庫、反應推理機、目標庫和規劃庫。Agent啟動後,回響外界訊息和內部事件(套用事件,條件事件,目標事件),反應推理機處理這些事件和外界訊息,選擇規劃庫中的合適的規划去執行。當前的信念庫決定了agent的規劃執行,而規劃的執行又可以改變信念庫,改變的信念將觸發內部事件,產生新的目標和新的規劃執行。
BDI模型
智慧型代理必須對一些事情做出判斷,如玩遊戲,選擇一種安全的方法,還是選擇風險高,但是成功的話可以有更多好處的方法。為了實現agent的智慧型,人們提出了BDI, AOP, 3APL、SOAR等agent體系結構。其中影響最廣的是Bratman提出的BDI模型。它由Belief,Desire,Intention這三種可以生成動作,信念和得到信息的精神狀態組成。Rao和Georgeff做出了BDI模型的可執行程式,而其中BDI的概念演變成信念、目標和規劃。 Jadex把BDI模型引進到Jade代理平台中,並且可以從agent內部生成代表信念、目標和規劃。Jadex里agent擁有的信念可以是任何一種Java對象,存儲在信念庫里。目標代表了可以影響到agent行動的具體的動機(例如,要達到一種狀態)。為了達到目標agent執行規劃。代表規劃的Java代碼中定義了,針對一個目標的解決方案。
信念庫
信念庫存儲著agent相信的事實,也是agent內一個可以訪問的數據。信念庫中存儲的信息與面向對象理論中的對象的屬性來說,稍微抽象一點,可以說是對agent的知識的整體視圖。Jadex里信念非常容易輸入,不支持推論系統。信念庫中的信念包含一個字元串代表自己名字(與關係資料庫中的表相似)。信念名映射到信念值,而信念值可以是一個Java對象。信念庫支持單數的信念和信念集合。Jadex信念庫中實現了與OQL相似的查詢語言,一部分信念改變時將會引發規劃或目標,用表達式代替信念值,可以在運行時自動附值。
目標的結構
與傳統的BDI系統不同,目標是Jadex系統的關鍵概念。Jadex中目標也是一個具體的短時間的要求。目標被執行或不再需要為止為止,agent將會一直尋找合適的行動。與別的系統不同的是Jadex中的目標可以是相互矛盾的。為了分離將被採納的目標和已被激活的目標,Jadex採用了目標的生命周期的概念,其中目標可以是待選、激活、暫停等幾個狀態。一個目標被採納時,它是待選狀態。應用程式中應該定義目標協商機制以決定如何改變目標的狀態。有些目標是需要特殊的環境才能有效,如果環境不符合要求目標將會暫停。
Jadex中有四種目標類型:執行、達到、詢問、維持,執行類型是必須執行但不必得到確切結果的目標類型。比如說撿垃圾的機器人在發現垃圾之前,只能是四處移動並尋找垃圾。這樣的目標可以由一個固定的規划去執行。達到類型定義了一種抽象的目標狀態,而沒有固定怎么去實現。比如,在一個戰略遊戲中電腦需要得到一種資源。這樣的目標電腦可以以自己生產或與別的玩家進行交易來達到。詢問目標體現了一種信息需求。如果暫時無法提供這個信息,將執行相關規劃收集所需要的信息。比如機器人需要傾倒垃圾,首先得知道垃圾箱的位置。如果機器人沒有垃圾箱的信息的話,就需要尋找垃圾箱。維持目標是一旦達到目標狀態就要維持這個狀態。
Jadex系統中,目標是對象由帶屬性對象實現。“達到”目標的目標狀態可以由表達式表示,可用來檢查是否達到目標。目標的屬性如目標的名字,可以促進規劃的選擇,如:可以指定一個規劃來處理一個特定名字的所有目標。目標的參數也可以有效地指導規劃的執行。如:尋找一個FIPA directory facilitator服務,並限制結果集的長度。
被採納的目標存儲在目標庫中。Agent擁有一系列的最高優先權的目標,可供外部調用。目標還可以擁有子目標,目標和子目標合起來形成目標樹。
規劃的規格
Agent的執行部分在規劃里。Jadex中agent的規劃由兩部分組成:規劃頭和相關的規劃體。規劃頭是指在ADF文檔中定義的規劃信息,它為規劃體的實例化和執行指定環境。規劃體是用具體的Java類實現的Java程式,它繼承了Jadex定義的ThreadedPlan類或NonThreadedPlan類,可以實現一些目標或對發生的事件做出反應。執行緒規劃代碼位於body()方法中,而非執行緒規劃代碼位於action()方法中。
在運行時,規劃體進行實例化來處理事件和達到目標。而規劃體的開始按鈕在規劃頭裡,當相關事件發生時將被執行。還有一種規劃叫初始化規劃,在agent生成後就執行。運行中的規劃生成一個額外的過濾器來等待特定的事件發生,以觸發接下來的規劃步驟。