Introduction
JADE 是一個 FIPA(Foundation for Intelligent Physical Agents) 規格相容的多代理人(multi-agent)開發系統。
容器與平台
每一個在運轉中的JADE環境稱為容器(container), 可容納數個代理人。 一組活動的容器稱為平台(platform)。
平台必須先有一個主容器, 其他容器一經啟動就要向其登記。 例如,
Reference:
JADE Programming tutorial for beginners.pdf
Running JADE
JADE Management
The Agent Management Services (AMS) (specification XC00023)
當使用 java jade.Boot -gui 啟動 JADE 的主container 時, 顯示 RMA (Remote Monitoring Agent) 視窗。
RMA 是管理 JADE 的主要工具。
平台中有 host 機器 3406-1:1099/JADE, 3406-1 是 PC 的 id, 1099 是 port, JADE 是平台名稱。
此 host 含有一預設的 Main-container, 其中有 df, ams, RMA 三個預設的代理人。
RMA 包括 Directory Facilitator (DF) 和 Agent Management System (AMS) 兩個代理人:
- DF 提供代理人的目錄服務。
- AMS 負責管理 AP 的運作, 如創造/刪除代理人, 決定代理人是否可以隨時向 AP 登記, 以及代理人的遷移。
jade 提供一簡單的代理人 DummyAgent, 可用以查看在代理人間交談的信文。
從在地端跑遠端 RMA 和 DummyAgent 這兩個代理人時, 需限要使用全名
java.tools.DummyAgent.DummyAgent
java.tools.rma.rma
因此啟動遠端機器(210.70.83.101)的 JADE container 時, 用
runjade -host 210.70.83.101 -container dummy0:jade.tools.DummyAgent.DummyAgent RMA1:jade.tools.rma.rma
命令列中的選項(option)意義如下:
- -container: 表示 container 是 'secondary', 應使用 Main-Container 的服務.
- -host : 表示 Main-Container 所在的機器
Reference:
Getting Started with JADE
(local)
通信行為
兩個代理人通信時, 使用信文(message), 每一信文封裝在一 jade.lang.acl.ACLMessage 物件中。
JADE 的信文結構
JADE 的 ACL信文所有屬性如下, 常用的用粗体字:
- Performative - FIPA 的信文類型 (INFORM, QUERY, PROPOSE, ...)
- Addressing
- Receiver
- Sender (initialized automatically)
- Content - This is the main content of the message
- ConversationID - Used to link messages in same conversation
- Language - Specifies which language is used in the content
- Ontology - Specifies which ontology is used in the content
- Protocol - Specifies the protocol
- ReplyWith - Another field to help distinguish answers
- InReplyTo - Sender uses to help distinguish answers
- ReplyBy - Used to set a time limit on an answer
撰寫信文時, 必須先用 ACL 標示其 performative 類型, 再設定內容, 如:
ACLMessage msg = new ACLMessage( ACLMessage.INFORM );
msg.setContent("I sell seashells at $10/kg" );
此信文使用最常用的 performative INFORM, 提供資訊. 其他如: QUERY 用以提問題, REQUEST 用以要求做工作, 而 PROPOSE 用以啟動磋商.
答覆的 performative 用 AGREE 或 REFUSE.
Reference:
Agent Communcation
FIPA 的信文類型
JADE 在 jade.lang.acl.ACLMessage 類別中, 為每一個 ACL 信文通信行為, 界定
一個靜態 int 常數, 如
- ACLMessage.INFORM
- ACLMessage.REQUEST
- ACLMessage.QUERY_REF
- ACLMessage.CFP
Reference:
Communcative
Acts(local)
交談通信協定
交談過程涉及兩種角色: Initiator 和 Responder。
就大多數的 FIPA 交談通信協定(IP), JADE 的 jade.proto 套件中為這兩種角色提供了一些行為類別:
- AchieveREInitiator/Responder 適用於 FIPA-Request, FIPA-query, FIPA-propose, IPA-Request-When, FIPA-recruiting, FIPA-brokering, ... 等等協定。
- SimpleAchieveREInitiator/Responder
- ContractNetInitiator/Responder
結構
FIPA-Contract-Net
這個協定使 Initiator 可以送「徵求草案」(Call for Proposal) 給一組 Responder,
接到這些草案後, 加以評量, 決定選取那一個(甚至全部都不要)
Reference:
Interaction
Protocols(local)
content language
ontology
代理人行為
Agent 必須就不同的外界事件, 實行 concurrent 工作。 這些工作可以用 Behaviour 物件實作。
使用類別 Agent 的 addBehaviour() 方法, 即可在代理人加入這適當的行為。 每一延伸 Behaviour
的類別必須實作 action() 方法, 以界定實際要實行的工作, 而用 done() 方法規定某一行為是否己經完成。
Jade 提供多種 Behaviour 的抽象類別:
- SimpleBehaviour : 單一而不可中斷的行為
- OneShotBehaviour
- CyclicBehaviour
- CompositeBehaviour : 由許多分項工作組成
- FSMBehaviour
- SequentialBehaviour
- ParallelBehaviour
這些行為類別的繼承關係階層如下圖:
範例:
Making your agent do stuff:Agent Behaviors
智慧型代理人 :
採用 BasicJessBehaviour 行為 (繼承 CyclicBehaviour 行為)的代理人,
BasicJessBehaviour 內有一推理引擎, 其行為由引擎中的規則庫規範
References
- JADE -- Java Agent DEvelopment Framework
- JADE documentation
- JADE Primer
- JADE tutorial
- FIPA -- Foundation for Intelligent Physical Agents
- Artificial Agents
Up TOC