方守林
(河北金融學(xué)院管理系,河北保定 071051)
1928年貝塔朗菲在《生物有機體系統(tǒng)》論文中首次提出了復(fù)雜性問題[1],從20世紀90年代開始,圣菲研究所致力于復(fù)雜性科學(xué)的研究工作,且該研究所的霍蘭提出了適應(yīng)性造就復(fù)雜性的觀點。指出只有系統(tǒng)的構(gòu)成元素具有能動性時元素和系統(tǒng)才具有適應(yīng)性,利用計算機仿真的技術(shù)研究由適應(yīng)性造就的復(fù)雜性的方法就是復(fù)雜系統(tǒng)建模的多主體建模。當(dāng)前多主體建模的方法有多種,如 Swarm、Repast、Ascape、Netlog、NetStar等。其中Swarm是1994圣菲研究所(SFI)開展的一個研究項目,以開發(fā)一個工具集用來幫助科學(xué)家們分析復(fù)雜適應(yīng)系統(tǒng)的模擬工具,1995年,SFI發(fā)布了Swarm的Beta[2]。其以建立一套標(biāo)準(zhǔn)的程序庫為目的,用以分析社會科學(xué)和自然科學(xué)領(lǐng)域內(nèi)的復(fù)雜系統(tǒng),通過為建立模型的研究者提供統(tǒng)一的模型框架,一方面能減輕模型設(shè)計的技術(shù)負擔(dān),另一方面統(tǒng)一的框架能規(guī)范模型的設(shè)計,從而便于模型的理解和交流[3]。1999年推出了Swarm2.0,提供了對Java語言的支持。因此,系統(tǒng)地構(gòu)建Windows XP系統(tǒng)下Swarm平臺的開發(fā)平臺對于開發(fā)Swarm模型建立系統(tǒng)仿真具有基礎(chǔ)作用。
劉貞[3],倪建軍[4],楊若虹[5]和萬春[6]等對 Swarm for Java的編程進行了介紹,其主要是在Swarm類庫以及Swam for Java在各領(lǐng)域內(nèi)的應(yīng)用,但較少談到詳細地搭建Swarm開發(fā)平臺的問題,或是在搭建Swarm平臺時環(huán)境變量的配置不適合在代碼具體運行時出現(xiàn)錯誤和無法編譯的情況,對于非專業(yè)從事Java開發(fā)復(fù)雜系統(tǒng)建模的人員來講,不能實現(xiàn)帶領(lǐng)他們進入到平臺內(nèi)的目的,并且有的以安裝Cygwin為例介紹,這對于一般開發(fā)的入門人員來講,需要更多的知識儲備。因此,需要探討最簡潔的Swarm平臺建立需要哪些軟件,以及這些軟件從何處獲取,在Windows系統(tǒng)下如何配置變量的等問題。本文搭建平臺的基本思路是把Swam當(dāng)作Java的一個擴展類庫,這一思想集中體現(xiàn)在Classpath環(huán)境變量的配置上,這樣做的好處在于,非計算機專業(yè)的入門開發(fā)人員所需掌握的技術(shù)更少,更能進入到 Swarm平臺的開發(fā)中來,以便能促進Swarm建立初衷的實現(xiàn):減少模型建立的技術(shù)負擔(dān)并把精力集中于模型的建立上。
以Java為例探討Swarm平臺的建立,所需最基本的軟件是JDK和Swarm的Java版本。JDK的最新版本是Oracle官網(wǎng)64位和84位的JDK可以從網(wǎng)絡(luò)上搜索下載。假定下載的JDK的版本為1.4.2并且將JDK安裝在了C:j2sdk1.4.2,Swarm-2.2-java.zip解壓到C:Swarm-2.2-java。
以WindowsXP為例進行環(huán)境變量的設(shè)置。新建3個系統(tǒng)變量并設(shè)定變量的值:(1)新建變量名稱為JAVA_HOME并設(shè)置其值為C:j2sdk1.4.2。(2)新建變量名稱為SWAEMHOME并設(shè)置其值為C:Swarm-2.2-java。(3)新建變量名稱classpath并設(shè)置其值為.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;%SWARMHOME%shareswarmswarm.jar;%SWARMHOME%shareswarmkawa.jar;。然后修改系統(tǒng)變量path的值,在path后面添加%JAVA_HOME%in;%SWARMHOME%in;。至此完成環(huán)境變量的設(shè)置。
環(huán)境變量設(shè)置好以后,到Swarm官網(wǎng)下載jheatbugs的舉例。下載以后將jheatbug-2.1.tar.gz文件進行解壓,比如解壓到C:jheatbugs-2.1。然后進入命令提示行,輸入CD C:jheatbugs-2.1,進入到j(luò)heatbugs的目錄,然后編譯Java文件,輸入命令javac*.java,回車以后窗口提示:HeatbugModelSwarm.java:298:cannot resolve symbol symbol:constructor FArgumentsImpl(HeatbugModelSwarm,Swarm.Selector,boolean)location:class swarm.defobj.FargumentsImpl new FArgumentsImpl(this,sel,true)));1 error。構(gòu)造方法 FargumentsImpl不能解析,原因是構(gòu)造方法的參數(shù)有誤,把構(gòu)造函數(shù)的參數(shù)從 this,sel,true 改為 this,sel。也就是將代碼:actionForEach=modelActions.createFActionForEachHomogeneous$call(heatbugList,new FCallImpl(this,proto,sel,new FArgumentsImpl(this,sel,false)));改為:actionForEach=modelActions.createFActionForEachHomogeneous$call(heatbugList,new FCallImpl(this,proto,sel,new FArgumentsImpl(this,sel)));然后再輸入 javac*.java命令,回車后提示編譯成功,輸入Java StartHeatBugs屏幕上顯示控制窗口,如點擊“Start”按鈕,就出現(xiàn)了熱蟲的模擬窗口,點擊“Stop”暫停仿真的運行,暫停后每點擊一次“Next”按鈕或者運行中直接點擊“Next”按鈕,仿真就進行到下一個時間節(jié)點,點擊“Quit”則退出模擬。
圖1 輸入Java StartHeatBugs后顯示的窗口
圖3 統(tǒng)計曲線顯示
Swarm.org除了提供jheatbugs的舉例以外,還有Jmousetrap的舉例及用戶手冊。
本文介紹了WindowsXP下復(fù)雜系統(tǒng)建模平臺Swarm的構(gòu)建,并用Swarm的一個實例驗證了平臺的設(shè)置,結(jié)果表明平臺設(shè)置的正確,為基于Swarm的復(fù)雜系統(tǒng)建模奠定了基礎(chǔ)。
[1]陳森發(fā).復(fù)雜系統(tǒng)建模理論與方法[M].南京:東南大學(xué)出版社,2005.
[2]方美琪,張樹人.復(fù)雜系統(tǒng)建模與仿真[M].2版.北京:中國人民大學(xué)出版社,2011.
[3]劉貞,程勇軍.Swarm for Java仿真及編程實現(xiàn)[M].北京:機械工業(yè)出版社,2009.
[4]倪建軍,范新南,徐立中.基于Swarm平臺的復(fù)雜系統(tǒng)建模仿真及其應(yīng)用分析[J].海河大學(xué)常州分校學(xué)報,2006,20(4):13-16.
[5]楊若虹.基于多主體的計算機仿真平臺Swarm在Windows XP系統(tǒng)中的應(yīng)用[J].職業(yè)技術(shù),2012(3):143.
[6]萬春,孫延明.多主體建模仿真平臺Swarm的探討[J].裝備制造技術(shù),2007(6):62-64.