張運坤 ,劉 磊,張勇強
(1.邯鄲學(xué)院 信息工程學(xué)院,河北 邯鄲 056005; 2.中鐵十八局集團(tuán)第五工程有限公司,天津 300450)
基于Agent的建模仿真相對于一般數(shù)學(xué)建模而言,在解決離散、非線性系統(tǒng)模擬方面有顯著優(yōu)勢,是研究復(fù)雜系統(tǒng)產(chǎn)生的全局、自適應(yīng)行為的一個基本方法。它主要有封裝在計算機系統(tǒng)中的Agen、Agent間的相互作用、Agent所在的組織結(jié)構(gòu)三個基本要素組成。建模者的任務(wù)是定義系統(tǒng)中具有自適應(yīng)性的Agent,然后賦予它們必要的行為規(guī)則和合適的參數(shù),讓它們在一個系統(tǒng)中進(jìn)行博弈。
Repast是目前使用較多的基本Agent的建模與仿真平臺之一,通過在Repast平臺上進(jìn)行可控制和可重現(xiàn)的仿真實驗,觀察分析仿真過程中的表格、圖表和圖標(biāo)顯示的輸出結(jié)果,進(jìn)一步研究Agent的行為[1]113-117。
Agent(主體)是一個計算機硬件或者軟件系統(tǒng)實現(xiàn)的對象,其組成之間以及與所在的環(huán)境之間存在著某種特定的關(guān)系,能夠連續(xù)不斷地感知外界的變換及自身的狀態(tài)變化,并能自主的產(chǎn)生響應(yīng)動作。即具有主動學(xué)習(xí)和適應(yīng)性。
基于Agent模型主要特征是,即便Agent的設(shè)計只遵循一些簡單的規(guī)則,集體的行為也會由于Agent并發(fā)引起的非線性變化而呈現(xiàn)非常復(fù)雜的模型。在傳統(tǒng)的建模中,目的是面向規(guī)劃或者仿真用物體作為實體去實現(xiàn)任務(wù)。物體缺乏開發(fā)意想不到的選擇去尋找目標(biāo)或者情況的智能,因為他們僅能遵循用戶或其他物體提供的操作指南。如果其他物體或者用戶不能及時的提供策略,他們就不能同時的更新。自治是基于Agent建模的一個關(guān)鍵特征[2]。一個自治的Agent可以用自己的引擎或者智能執(zhí)行任務(wù)來解決問題,不需要額外的從用戶或其他Agent的介入。它可以對應(yīng)不同的情況和應(yīng)用選擇性的策略去尋找適當(dāng)?shù)哪繕?biāo)。但是,自治可能會在不同的代理的利益上導(dǎo)致沖突。在這種情況下,一個特殊的Agent分配來協(xié)調(diào)和解決這些矛盾。
基于Agent的建模方法是一種自底向上的建模方法,把Agent作為系統(tǒng)的基本抽象單元,先建立組成系統(tǒng)的個體Agent模型,然后采用適合的多Agent系統(tǒng)結(jié)構(gòu)MAS(Multi-Agent System)來組裝這些個體Agent,最終建立起系統(tǒng)模型。[3]13-16
Repast (Recursive Porous Agent Simulation Toolkit)是芝加哥大學(xué)的社會科學(xué)計算研究中心設(shè)計的一個基于Agent的類Swarm的模擬軟件架構(gòu)。它提供了一系列用以生成、運行、顯示和收集數(shù)據(jù)的類庫,并能對運行中的模型進(jìn)行“快照”,記錄某一時刻模型的狀態(tài)。其主要的設(shè)計目標(biāo)集中在仿真框架的抽象、可擴(kuò)展性以及高性能仿真上。[4]
Repast現(xiàn)在由非贏利組織機構(gòu)ROAD(Repast Organization for Architecture and Development)來維護(hù)。Repast的核心部分可以看作是對基于Agent建模服務(wù)的規(guī)范。它包括三個具體的工具,這些工具都有著相同的內(nèi)核服務(wù),而區(qū)別僅在于底層平臺和模型開發(fā)語言的不同。
Repast可以在現(xiàn)有的所有計算平臺上應(yīng)用,包括Windows,Mac OS和linux。這個平臺支持個人計算機者和大型科學(xué)計算的群體使用。[5]18-20Repast的支持實現(xiàn)模型的特征有三個特性和四個機制:
(1)Repast在Agent中支持非線性即使他們的行為完全的被用戶設(shè)計。Repast的系統(tǒng)動態(tài)行,遺傳算法,神經(jīng)網(wǎng)絡(luò),隨機數(shù)生成和社會網(wǎng)絡(luò)庫使得他們的程序變得簡單。
(2)Repast支持多樣性,即通過給用戶完全的控制權(quán)來定義定義代理和初始化。另外,Repast庫簡明的介紹了多樣性。
(3)Repast允許用戶指定和保持Agent組的集體特征。
(4)Repast支持了特征的流動機制,例如它的系統(tǒng)動態(tài)工具和社會網(wǎng)絡(luò)庫。
(5)Repast支持標(biāo)簽機制為Agent顯示任意的標(biāo)記。
(6)Repast通過agent的靈活定義和更多的行為庫使得內(nèi)在模型機制可用。
(7)Repast支持基于目標(biāo)的多態(tài)性的建筑塊機制。
Repast實際上是一組類庫,提供了用于Agent仿真建模的各種基類。建模者可以通過直接使用這些類或者從這些繼承子類來構(gòu)造自己的模型。Repast主要的類庫有:分析(Analysis)庫,用來聚集、記錄數(shù)據(jù)以及建立數(shù)據(jù)表;引擎(Engine)庫,負(fù)責(zé)建立、操縱以及運行一個模擬模型;圖形用戶界面(GUI)庫,負(fù)責(zé)實現(xiàn)模擬模型的圖形可視化;空間(Space)庫,通過恰當(dāng)?shù)慕涌谟行У孛枋隽烁鞣N類型的空間,與GUI庫中的顯示類聯(lián)合工作,可實現(xiàn)它們所包含的空間以及對象的可視化;使用工具包(Util)庫,提供了仿真程序的常用靜態(tài)方法。
熱蟲(Heatbug)模型是由 SFI提供的一個標(biāo)準(zhǔn)的應(yīng)用范例,顯示了由一些簡單的、僅根據(jù)局部信息進(jìn)行動作的Agent構(gòu)成的系統(tǒng)是如何產(chǎn)生復(fù)雜的系統(tǒng)行為的。
整個系統(tǒng)的基本構(gòu)成單位是 Agent,每個Agent代表一個熱蟲(一種生物)。很顯然,熱蟲有其活動的時空范圍(即環(huán)境),在 Repast中將其稱為Space。在該模型中,Space有空間屬性(熱蟲所處的位置)和熱量(它在系統(tǒng)動作的時間內(nèi)不斷的產(chǎn)生并散失)。Repast提供了2維的顯示平面來顯示Space和在其中運行的所有Agent(點或方框)如圖1、圖2。
系統(tǒng)中的每個Agent(即熱蟲)都會放出少量的熱量,而且每個Agent還有一個理想的溫度(在這個溫度下,Agent將感到最舒服)。系統(tǒng)本身是一個簡單的離散時間模型:在每個時間步,每個Agent(只知道附近點的溫度,即局部信息)尋找并移到一個臨近的點以使自己舒服些,然后放出一點熱量。一個Agent自身不能產(chǎn)生足夠的熱量以使自己舒服,所以在整個運行時間內(nèi),它們傾向于聚集在一起以產(chǎn)生足夠的熱量,以使自己感到舒服。
圖1 系統(tǒng)初始狀態(tài)
圖2 運行一段時間的系統(tǒng)狀態(tài)圖
依據(jù)Repast設(shè)計思想,熱蟲模型共分為三個類:Heatbug模型類(HeatBug)、仿真模型類(HeatBugsModel)和熱度空間模型類(HeatSpace)。Heatbug模型類封裝Heatbug的行為和執(zhí)行規(guī)則;仿真模型類繼承自SimModelImp 1,實現(xiàn)SimModel接口,負(fù)責(zé)仿真的建立和運行;熱度空間模型類繼承自Diffuse2D,用于描述熱蟲居住的環(huán)境。[6]1-25
模型實現(xiàn)分為三個步驟:第一步是建立模型,通過仿真模型類中的setup和buildModel兩個方法實現(xiàn)。在仿真模型類中有一個由SimModel提供的Agent列表,用于存儲創(chuàng)建的Agent(熱蟲),仿真時首先執(zhí)行setup方法進(jìn)行仿真基本信息的建立,然后執(zhí)行buildModel方法創(chuàng)建規(guī)定數(shù)量的熱蟲Agent并加入到Agent列表中;第二步是建立顯示機制,通過仿真模型類中的buildDisplay方法實現(xiàn),負(fù)責(zé)將熱蟲模型的運行結(jié)果顯示在屏幕上;第三步是建立時間序列機制,由仿真模型類的step和buildSchedule兩個方法實現(xiàn)。首先實現(xiàn)step方法以確定在每一次仿真運行中模型的行為,然后將step方法作為參數(shù)加入到時間序列表中。
熱蟲模型采用Java語言并在Java開發(fā)平臺(Eclipse)上進(jìn)行開發(fā)和實現(xiàn)。模型完成后,即可將模型加入到Repast仿真平臺中。通過該仿真平臺,建模人員可以運行模型,收集運行結(jié)果,從而對系統(tǒng)的復(fù)雜適應(yīng)性進(jìn)行分析。[7]13-15
模型參數(shù)選擇如圖3所示,系統(tǒng)的初始狀態(tài)見圖1。
經(jīng)過模型的運行,可以看出:雖然每個Agent的行為很簡單(發(fā)熱、移動),它所知道信息也很有限(僅知道相鄰點的溫度),但經(jīng)過運行一段時間后整個系統(tǒng)出現(xiàn)了圖2中那樣聚集的復(fù)雜系統(tǒng)現(xiàn)象。
圖3 模型參數(shù)圖
Repast為基于Agent建模仿真構(gòu)建了一個靈活、簡潔、健壯的可擴(kuò)展平臺,本文只是給出了簡單的模型及仿真實例,在Heatbug模型,仿真,熱度空間等模型下進(jìn)行了簡化的處理。隨著研究的進(jìn)一步深入,我們將通過仿真框架中的模型參數(shù)及規(guī)則的動態(tài)擴(kuò)展,不斷的完善Heatbug模型,并將深入的學(xué)習(xí)基于Agent的模型的建模仿真。
[1]廖守億,戴金海.復(fù)雜適應(yīng)系統(tǒng)及基于Agent的建模與仿真方法[J].系統(tǒng)仿真學(xué)報,2004,16(1).
[2]Swarm Development Group.Documentation set for swarm 2.1.1 .2002.
[3]李宏亮,金士堯,沈銳,等.Cluster環(huán)境中多Agent系統(tǒng)分布仿真的容錯技術(shù)[J].計算機工程與科學(xué),2001,23(5).
[4]王紅衛(wèi).建模與仿真[M].北京:科學(xué)出版社,2002.
[5]方美琪,張樹人.社會經(jīng)濟(jì)系統(tǒng)復(fù)雜性探索[M].北京:中國人民大學(xué)出版社,2005.
[6] Michael J North, Nicholson T Collier and Jerry R Vos.Experiences Creating Three Implementations of the Repast Agent Modeling Tool2kit [J].ACM Transactions on Modeling and Computer Simulation.2006, 16 (1) .
[7]M J North, T R Howe, N T Collier and J R Vos.Repast Simphony Runtime System[C].In Proceedings of the Agent 2005 Conference on Generative Social Processes, Models, and Mechanisms, 2005,10.