• 沒有找到結果。

5.3 代理人執行

5.3.2 場記代理人

在 DIM 系統的內在設計情境層中,場記代理人(RAS)透過與不同 RA 和 UA(或 DA)之間的相互作用,而動態性的儲存並視覺化此相互作用的設計結果(內部 IE 地圖),同時,RAS 也會在此內部 IE 地圖中自動的搜尋一個想法等級最大的想法 元件,以提供使用者輸入想法元件的參考依據。因此,RAS 的知識基礎主要包括:

1) 工作記憶、2) 規則基礎、3) 內部 IE 地圖產生器及 4) RAS 知識庫(圖 48)。

圖 48 . 場記代理人的知識基礎元素

基本上,RAS 的工作記憶主要放置場記的腳本、IE 地圖與訊息傳遞的相關資訊,

規則基礎則儲存 RAS 進行想法連結的相關規則,而內部 IE 地圖產生器控制整個產 生地圖的規則與資訊的流程,另外,RAS 知識庫則儲存不同角色代理人共同產生 的想法元件與這些想法元件之間的元件連結。

5.3.2.1 工作記憶

RAS 的工作記憶主要包括內部相互作用的腳本內容、想法元件、內部 IE 地圖與代 理人溝通語言的相關資訊,而這些資訊分別由場記樣板、想法元件樣板、IE 地圖 樣板與 ACL 訊息樣板所構成。

場記樣板

場記樣板的名稱是 script-holder,其功能是描述 RAS 在某一特定場景中內部相互作 用的腳本內容,而此內容提供 RAS 與不同 RA 進行內部相互作用的依據。基本上,

場記樣板包括“issue”、“time”、“role_number”、“role_id”、“ principle”與“tolerance”

六個欄位。

所謂 issue 欄位是指 RA 要解決的設計問題(議題),time 欄位是不同 RA 連結想法 元件的時間,role-number 欄位是使用者(UA 或 DA)可以扮演角色的最大數量,

rolei-id 欄位是不同 RA 的 AID,principle 欄位是不同 RA 喜好的連結原則,而 tolerance 欄位則是不同 RA 解議的容許限制。因此,場記樣板的語法定義如下:

(deftemplate script-holder (slot issue) (slot time) (slot role-number) (multislot role-id) (multislot principle)(multislot tolerance)

)

例如:在一個有關 circulation 議題的場景中,一位 UA(以 UAlai為例)選擇三位 角色代理人(RA1、RA2 與 RA3)進行角色扮演,而這三位 RA 喜好的連結原則 依序是 similarity、contrast 與 contiguity,且它們在解譯的容許限制分別是 3、2 和 3,另外,此內部相互作用的參與時間是 2 分鐘,因此,上述的腳本內容可以用下 列 script-holder 的樣板事實予以呈現:

(script-holder (issue circulation) (time 2) (role_number 3)

(role_id RA1@lai:1099/jade RA2@lai:1099/jade RA3@lai:1099/jade ) ( principle similarity contrast contiguity) ( tolerance 3 2 3)

)

除了上述的場記樣板外,想法元件樣板是構成內部 IE 地圖的主要元素外,同時,

此樣板也提供 RAS 在內在相互作用中,搜尋最大想法等級之想法元件相關規則的 主要資料(如 search_link_using_ie 規則),而 IE 地圖樣板提供 RAS 將不同 RA 產 生的想法元件與元件連結,予以建立內部 IE 地圖的資料,另外,ACL 訊息樣板則 是提供 RAS 與其他代理人進行內部相互作用時的相關訊息資料。有關這些 RAS 樣板的機制與語法相同於上述 RA 工作記憶的樣板,其內容詳見 5.3.1 章節。

除了上述的樣板資料外,DIM 系統為了計算內部 IE 地圖中想法元件的想法等級,

RAS 的資料結構還包含其規則基礎在運算過程中所需要的臨時性樣板,如計算最 大想法等級之想法元件的 link_count 樣板。這些臨時性樣板會在描述 RAS 的規則 基礎中再予以說明。

5.3.2.2 規則基礎

RAS 的規則基礎主要包括搜尋規則與溝通規則。搜尋規則是 RAS 對於不同 RA 共 同產生的內部 IE 地圖,藉由計算出具有最多想法等級的想法元件,提供 UA(或 DA)作為輸出想法元件的參考。而溝通規則為提供角色代理人,UA 或 DA 在進 行相互作用中,有關於相關訊息的發送規則與接收規則。

搜尋規則

為了搜尋內部 IE 地圖中具有最多想法等級的想法元件,搜尋規則主要包括在內部 IE 地圖中計算每一個想法元件之想法等級(一個想法元件之元件連結的總數量)

的規則,以及產生一個具有最多想法等級的想法元件。在計算每一個想法元件的 想法等級的規則中,RAS 首先必須在其工作記憶中搜尋 map 樣板事實中的兩組 ICF 欄位值(issue、concept 和 form),如在搜尋第一組的 ICF 欄位值的語法定義如下:

(defquery search-link-assignments-left (declare (variables ?i ?c ?f ?url))

(map (issue_1 ?i) (concept_1 ?c)(form_1 ?f ? url)) )

然後,藉由 search_link_number 功能計算所有 map 樣板事實中同一組 ICF 的想法 等級之數值,假如想法等級數值不等於 0 時,則宣稱(assert)一個描述此組 ICF 想法等級的 link-count 樣板事實,而此事實 count 欄位值包含想法等級的數值。此 功能的語法定義如下:

(deffunction search_link_number (?i ?c ?f ?url)

(bind ?count_l (count-query-results count-link-assignments-left ?i ?c ?f ?url)) (bind ?count_r (count-query-results count-link-assignments-right ?i ?c ?f ?url)) (bind ?count (+ ?count_l ?count_r))

(if (neq ?count 0) then

(assert (link-count (ie ?i ?c ?f ?url)(count ?count)))) )

而上述 search_link_number 功能必須藉由下列的規則予以執行。

(defrule search_link_using_ie

(ie (issue ?i)(concept ?c)(form ?f ?url)) (not (link-count (ie ?i ?c ?f ?url)))

=>

(search_link_number ?i ?c ?f ?url) )

在產生一個具有最多想法等級的想法元件規則中,包括產生具有最大想法等級之 link-count 樣板事實的目錄,和從此目錄中隨機的選擇一組事實之值,以作為內部 相互作用的輸出想法元件(output_ie)。在產生具有最大想法等級之 link-count 樣

板事實的目錄中,在此規則的 LHS 中,這些 link_count 樣板事實中之 count 欄位數 值相互比較後,在此規則的 RHS 中,則將具有最大數值之事實的 ie 欄位值(包括 議題、概念、形式與形式的 URL)放置在一個目錄中。此規則的語法定義如下:

(defrule print-highest-link-assignment

(link-count (ie ?i ?c ?f ?url)(count ?count))

(not (link-count (count ?count2&:(> ?count2 ?count))))

=>

(bind ?*num* (+ ?*num* 1))

(bind ?*ie_list* (insert$ ?*ie_list* (+ (length$ ?*ie_list*) 1) (create$ ?i ?c ?f ?url))) )

在此目錄中隨機的選擇一組事實以作為輸出想法元件,在其規則的 LHS 中,當 ACLMessage 樣板事實的 communicative-act 欄位值是 PROPOSE 時,在此規則的 RHS 中,則在上述規則產生的目錄中隨機選擇一組(包括四個 token)為輸出想法 元件之內容,同時,此內容透過一個 ACLMessage 樣板事實的宣稱(assert)而傳 遞給使用者(UA 或 DA)。此規則的語法定義如下:

(defrule propose_highest_link_ie

(link-count (ie ?i ?c ?f ?url)(count ?count))

?m <- (ACLMessage (communicative-act PROPOSE) (sender ?s) (content ?c) (receiver ?r))

=>

(bind ?rd (* (mod (random) ?*num*) 4)) (bind ?output_ie (implode$ (create$

(nth$ (+ ?rd 1) ?*ie_list*) (nth$ (+ ?rd 2) ?*ie_list*) (nth$ (+ ?rd 3) ?*ie_list*) (nth$ (+ ?rd 4) ?*ie_list*)))) (retract ?m)

(assert (ACLMessage (communicative-act PROPOSE) (sender ?r) (receiver ?s) (content ?output_ie)))

(time_save) )

而為了動態性的紀錄此內部 IE 地圖在不同時間的變化,在上述規則的 RHS 中,

time_save 功能提供 RAS 在內部相互作用的不同時間範圍內(起始時間與中止時間 的時間差),能將不同 RA 共同產生的內部 IE 地圖與想法元件,予以動態性的儲存

在 RAS 的 JESS 知識庫中。此功能的語法定義如下:

(deffunction time_save ( )

(bind ?t2 (- (time) ?*time-begin*))

(bind ?file (implode$ (create$ c:/DIM/RAS/I_IE_Map ?t2 .clp))) (save-facts ?file script-holder map ie)

)

(CFP :sender ( agent-identifier :name RAS@lai:1099/JADE :addresses (sequence http://lai:7778/acc ))

:receiver (set ( agent-identifier :name RA1@lai:1099/JADE ) ) :content "circulation opening court similarity 3"

:language jess RHS 將 ACLMessage 樣板事實中 content 欄位之字串值轉換成目錄的 tokens,而這 些 tokens 提供此規則宣稱(assert)一個 script-holder 樣板事實,且控制此內部相

互作用的時間,而 RAS 也經由一個新宣稱的 ACLMessage 樣板事實將訊息回傳給 UA(或 DA)。此規則的語法定義如下:

(defrule request_when_internal_interplay_2

?m <- (ACLMessage (communicative-act REQUEST_WHEN) (sender ?s) (content ?c) (receiver ?r)) (role-script (role-number 2))

=>

(assert (script-holder (issue (nth$ 1 (explode$ ?c))) (time (nth$ 2 (explode$ ?c))) (role-number (nth$ 3 (explode$ ?c)))

(role_id (nth$ 4 (explode$ ?c))(nth$ 5 (explode$ ?c))) (role_principle (nth$ 6 (explode$ ?c)) (nth$ 7 (explode$ ?c))) (role_tolerance (nth$ 8 (explode$ ?c))(nth$ 9 (explode$ ?c)) ))) (bind ?*time-duration* (* (nth$ 2 (explode$ ?c)) 60 )

(assert (ACLMessage (communicative-act INFORM) (sender ?s) (receiver ?r)) (content “I will start the idea linking”))

(retract ?m) )

此 外 , 上 述 規 則 藉 由 script-holder 樣 板 事 實 之 role-number 欄 位 值 來 控 制 ACLMessage 樣板事實中有關字串轉換成 token 的數量,進而影響 script-holder 樣 板事實相關的欄位值。而在控制內部相互作用的時間,主要經由下面的規則予以 執 行 , 此 規 則 係 指 當 起 始 時 間 ( ?*time-begin* ) 與 終 結 時 間 等 於 參 與 時 間

(?*time-duration*)時,則 RAS 將停止所有的規則啟動,並宣稱(assert)一個告 知 UA(或 DA)結束此內部相互作用的 ACL 訊息樣板事實。此規則的語法定義如 下:

(while (> ?*time-duration* (- (time) ?*time-begin*)) do

(assert (ACLMessage (communicative-act INFORM) (sender ?s) (receiver ?r)) (content “Time out !”))

(halt) )

有關第二個階段的規則可以詳見上一章節 RA 的溝通規則。而在 RAS 第三階段的 規則中,當其 LHS 中的一個 ACL 訊息樣板事實之 communicative-act 欄位值是 REQUEST 時,在此規則的 RHS 中,則將 content 欄位之字串值轉換成目錄的 tokens,並根據目錄 token 的順序分別宣稱(assert)map 樣板事實與 ie 樣板事實,

同時,RAS 也經由一個新宣稱的 ACLMessage 樣板事實將訊息回傳給 RA。此規則

的語法定義如下:

(defrule request_ie_map

?m <- (ACLMessage (communicative-act REQUEST)(sender ?s) (content ?c) (receiver ?r))

=>

(assert (map (issue_1 (nth$ 1 (explode$ ?c))) (concept_1 (nth$ 2 (explode$ ?c))) (form_1 (nth$ 3 (explode$ ?c))(nth$ 4 (explode$ ?c)))

(link_type (nth$ 5 (explode$ ?c)))

(issue_2 (nth$ 6 (explode$ ?c)))(concept_2 (nth$ 7 (explode$ ?c))) (form_2 (nth$ 8 (explode$ ?c))(nth$ 9 (explode$ ?c)))))

(assert (ie (issue (nth$ 1 (explode$ ?c))) (concept (nth$ 2 (explode$ ?c))) (form (nth$ 3 (explode$ ?c))(nth$ 4 (explode$ ?c))))) (assert (ie (issue (nth$ 6 (explode$ ?c))) (concept (nth$ 7 (explode$ ?c)))

(form (nth$ 8 (explode$ ?c))(nth$ 9 (explode$ ?c)))))

(assert (ACLMessage (communicative-act INFORM) (sender ?r) (receiver ?s) (content ?c) ))

(retract ?m) )

RAS 在第四個階段的規則可以詳見上述 RAS 之 propose_highest_link_ie 規則與 time_save 功能,此外,這些產生的內部 IE 地圖被儲存在 RAS 的內部 IE 地圖知識 庫,並藉由圖像視覺化介面予以呈現。而經由這些接收規則而產生新的訊息(事 實),皆由下面的發送規則將相關訊息傳遞給指定的接收者,此規則的語法定義如 下:

(defrule send-a-message (MyAgent (name ?n))

?m <- (ACLMessage (sender ?n))

=>