第五章 系統實作與使用性測試
5.1 多代理人系統實作
5.1.2 實作方式
硬體部分:
本系統的實作方式最主要分成兩個部份,分別是硬體部分與軟體部分,硬體 部分與成功大學電機工程學系陽光輔具團隊進行合作,軟體部分則為代理人程式 之撰寫。硬體架構圖如圖 5.1 所示(羅錦興,2009)。
圖 5.1 硬體架構圖
本系統的實作方式是將硬體接上 USB、紅外線和特製 Zigbee 硬體模組進行 訊號傳輸的配對,該訊號傳輸透過 Visual Basic 撰寫的程式控制,然後再透過多 代理人系統操作網路訊號發送給該硬體程式做回饋的動作,而這段通訊協定如下 表 5.1 所示,其餘操作訊號見附錄一。
表 5.1 軟硬體控制通訊協定
軟體部分:
圖 5.2 多代理人系統開發流程圖
軟體部分的設計採用三四章節所提及 DARM 方法論塑模結果設計,依序反 覆進行介面設計與對話知識本體和整個代理人系統的程式撰寫。
具。
將代理人知識描述階段所建置的知識綱要(Ontology Schemas)使用 Protégé 3.2.1 進行設計,並將設計結果透過 Protégé 提供的外掛套件 JadeBeanGenerator,
將建置的知識本體轉換成代理人可以理解的 Java code。
最後進行整個代理人系統的程式撰寫工作,該工作使用 JADE 平台所提供的 API 進行個別代理人服務細節之實作與測試。
首先為了提供使用著一個最簡便的操作介面,因此我們在進行代理人介面的 設計應該要將使用者需求化繁為簡。
如圖 5.3 所示,本系統一開始操作介面經常讓使用者無所適從,在聽取使用 者意見後將操作方式簡化。然而考量使用者與系統回饋的問題,為了能有效的回 饋使用者對話,本研究使用者介面採用 JAVA SWT(Standard Widget Toolkit,SWT) 撰寫,將整個系統的回饋與對話實作在使用者電腦的桌面與背景程式上,讓使用 者可以在不影響他操作其他行為的方式下,操作本系統,使得系統的設計獲得更 貼近人性的介面回饋。
圖 5.3 介面原型設計過程
這個介面的操作方式,主要就是讓使用者可以透過自然語言的對話與代理人 做交談的動作,然而代理人欲理解使用者的對話需求,就需要透過知識本體的幫 助,這種方式在前段第四章已經做過說明,所以在此介紹本研究對話以及硬體操 作的知識本體是如何建置的。本研究對話與硬體操作所使用的知識本體是使用 Protégé 這套軟體工具建置完成的,我們將第四章節提及的知識本體階段透過這 套工具建置實作(如圖 5.4 所示)。
當全部相關的知識本體建置完成後,為了讓 JADE 的代理人平台可以在撰寫
圖 5.4 Ontology 轉 Java code 過程
透過上述過程轉出的 JAVA code 可以讓 JADE 所撰寫的代理人直接引用,如 下程式碼舉例一個 Temperature 基本的知識本體的架構如下:
透過這個架構所轉出的程式碼,可以直接引入 JADE 平台進行撰寫的工作,
並且透過 FIPA ACL 訊息存取的方式來做新知識的擴充與修改,能夠讓整個對話 方式變的更加彈性。
本研究設計的代理人是採用 JADE 開發平台,透過此平台提 API 進行代理 人的實作。一般代理人的實作內容最主要就是在實作代理人的定義、行為
package org.ibrow.ontology;
import java.io.Serializable;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import jade.content.*;
import jade.util.leap.*;
import jade.core.*;
/**
* Protégé name: HIE_Class_Temperature
* @author ontology bean generator
* @version 2008/12/03, 15:29:53
*/
public class HIE_Class_Temperature implements Predicate, Serializable {
// bean stuff
protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener pcl) { pcs.addPropertyChangeListener(pcl);
}
public void removePropertyChangeListener(PropertyChangeListener pcl) { pcs.removePropertyChangeListener(pcl);
} }
圖 5.5 智慧型居家環境控制代理人平台
如圖 5.5 所示,本研究將智慧型居家環境控制代理人依其任務行為(Task Behaviour)撰寫成上列代理人,並將上列代理人依照該行為模式定義成 3 種:
(1).RMA 代理人:包括兩個代理人分別為:DF 提供代理人的目錄服務,AMS 負責管理 AP 的運作例如創造/刪除代理人。
(2).常駐服務代理人:啟動即常駐傾聽,代理人的生命週期跟隨主程式運作,
不會因為任何例外(Exception and Error)停止,如:AssistiveDialogAgent。
(3).任務指派代理人:被代理人透過訊息呼叫時方才運作,運作結束便撤銷 該服務,如:PhoneAgent。
圖 5.6 多代理人系統溝通示意圖
如圖 5.6 所示,然而所有代理人與代理人之間的溝通是透過代理人溝通語言 進行交談,因此實作智慧型居家環境代理人系統之相關代理人的溝通方式,我們 使用 FIPA ACL。JADE Agent 之間溝通的方式正是遵循 FIPA ACL 規範所開發的,
在 JADE 開發的 API 文件中指出,可以透過 ACLMessage 類別來實作 FIPA ACL 規格,而這個類別的溝通模板如下:
這個 ACLMessage 的溝通模板明確的指出,我們可以透過上述的溝通模板來 定義每一個代理人傳送訊息的規格,訊息的定義規格如下所示:
ACLMessage msg = new ACLMessage(ACLMessage.QUERY_IF);
AID receiver = new AID("AssistiveDialogAgent", false);
msg.setSender(this.getAID());// 訊息發送的代理人
msg.addReceiver(receiver); // 訊息接收的代理人,可以是多個。
msg.setLanguage("UTF-8"); // 設定語言內容的編碼格式 /* msg.setOntology
透過HIE_Class_Temperature知識本體儲存資訊 */
msg.setOntology(ontology.getName()); // 設定知識本體
HIE_Class_Temperature HIE = new HIE_Class_Temperature();
HIE.addPropertyChangeListener(HIEinformation);
/* msg.setProtocol
標誌這個訊息的目的, 就是發送這個訊息的代理人想要透過發送這個訊息來獲取某 些值的資訊 例如:REQUEST,INFORM,ACCEPT_PROPOSAL
*/
msg.setProtocol(InteractionProtocol.FIPA_QUERY);
msg.setContent("Open Desk Lamp"); // 訊息內容 this.send(msg);//將這個訊息送出
(deftemplate ACLMessage
(slot communicative-act) (slot sender) (multislot receiver)
(slot reply-with) (slot in-reply-to) (slot envelope)
(slot conversation-id) (slot protocol)
(slot language) (slot ontology) (slot content)
(slot encoding) (multislot reply-to) (slot reply-by))