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) 兩個代理人:

  1. DF 提供代理人的目錄服務。
  2. 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)意義如下:

Reference: Getting Started with JADE (local)

通信行為

兩個代理人通信時, 使用信文(message), 每一信文封裝在一 jade.lang.acl.ACLMessage 物件中。

JADE 的信文結構

JADE 的 ACL信文所有屬性如下, 常用的用粗体字:

撰寫信文時, 必須先用 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 常數, 如

Reference: Communcative Acts(local)

交談通信協定

交談過程涉及兩種角色: Initiator 和 Responder。 就大多數的 FIPA 交談通信協定(IP), JADE 的 jade.proto 套件中為這兩種角色提供了一些行為類別:

結構

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 的抽象類別:

  1. SimpleBehaviour : 單一而不可中斷的行為
  2. CompositeBehaviour : 由許多分項工作組成

這些行為類別的繼承關係階層如下圖:

範例: Making your agent do stuff:Agent Behaviors

智慧型代理人 :

採用 BasicJessBehaviour 行為 (繼承 CyclicBehaviour 行為)的代理人, BasicJessBehaviour 內有一推理引擎, 其行為由引擎中的規則庫規範

References

  1. JADE -- Java Agent DEvelopment Framework
  2. JADE documentation
  3. JADE Primer
  4. JADE tutorial
  5. FIPA -- Foundation for Intelligent Physical Agents
  6. Artificial Agents
  Up TOC