謝俊凰,高慧敏
(1.太原科技大學(xué)系統(tǒng)仿真與計(jì)算機(jī)應(yīng)用研究所,太原030024;2.嘉興學(xué)院機(jī)電工程學(xué)院,浙江嘉興314001)
微粒群算法,又稱(chēng)粒子群優(yōu)化,是由J.Kennedy和 R.Eberhart[1-2]于1995年開(kāi)發(fā)的一種演化計(jì)算技術(shù)來(lái)源于對(duì)一個(gè)簡(jiǎn)化社會(huì)模型的模擬。經(jīng)過(guò)26年的探索和研究,微粒群算法以其魯棒性好、具備分布式的特征、應(yīng)用面廣、算法實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn)已經(jīng)在很多領(lǐng)域得到了廣泛的應(yīng)用。
自微粒群算法提出以來(lái),國(guó)內(nèi)外研究者對(duì)微粒群算法進(jìn)行了大量的研究,并提出了很多新型的微粒群算法[3-6],要將算法實(shí)現(xiàn)并且進(jìn)行性能測(cè)試。大多數(shù)研究者都是在Visual C++環(huán)境下運(yùn)行算法,DOS界面下輸出結(jié)果,只能看到大量數(shù)據(jù)的輸出和最終結(jié)果,缺乏對(duì)微粒群算法進(jìn)化過(guò)程內(nèi)在了解和數(shù)據(jù)統(tǒng)計(jì)功能。因此,需要一個(gè)算法研究平臺(tái)來(lái)輔助研究者,提高研究率。
Wall M 在1996 年提出了 GAlib[7],GAlib 是遺傳算法系統(tǒng)開(kāi)發(fā)方面的最早成果,它不同于后期出現(xiàn)的一些框架,它關(guān)注遺傳算法體系的設(shè)計(jì),在操作算子和個(gè)體類(lèi)型的數(shù)據(jù)結(jié)構(gòu)上有著很多良好的實(shí)現(xiàn),在庫(kù)開(kāi)發(fā)中使用了C++的面向?qū)ο蠹夹g(shù)和模板技術(shù),并有相關(guān)數(shù)據(jù)統(tǒng)計(jì)分析的類(lèi)[8]。
徐星、李元香[9]等人提出了基于策略模式的粒子群優(yōu)化算法平臺(tái)設(shè)計(jì),將一些經(jīng)典的微粒群算法寫(xiě)入了平臺(tái),并可以設(shè)置其參數(shù)運(yùn)行之后比較各種算法的優(yōu)劣。但是忽略了對(duì)進(jìn)化過(guò)程的顯示以及平臺(tái)擴(kuò)展性的研究。
一種可擴(kuò)展的微粒群算法研究平臺(tái),必須具備以下兩點(diǎn)基本功能:第一,支持各種不同類(lèi)型的微粒群算法;第二,提供算法數(shù)據(jù)統(tǒng)計(jì)功能。為了滿(mǎn)足這兩個(gè)基本功能,平臺(tái)定義一個(gè)開(kāi)放式的體系結(jié)構(gòu),各種不同的微粒群算法能夠在平臺(tái)中無(wú)障礙運(yùn)行,前提條件是遵循平臺(tái)內(nèi)部的數(shù)據(jù)接口規(guī)則。研究者只需要關(guān)注算法,算法以外的留給平臺(tái)完成,使得平臺(tái)具有良好的擴(kuò)展性。
算法的運(yùn)行有兩種模式:內(nèi)部運(yùn)行和外部導(dǎo)入運(yùn)行。內(nèi)部運(yùn)行模式,將標(biāo)準(zhǔn)微粒群算法代碼封裝成代碼類(lèi)在運(yùn)行時(shí)初始化類(lèi)的一個(gè)對(duì)象即可。設(shè)計(jì)友好的用戶(hù)界面用來(lái)設(shè)置算法的參數(shù),將設(shè)置的參數(shù)傳入代碼中。外部導(dǎo)入模式,使用動(dòng)態(tài)鏈接庫(kù)技術(shù)實(shí)現(xiàn),對(duì)動(dòng)態(tài)庫(kù)文件進(jìn)行顯式加載,動(dòng)態(tài)庫(kù)文件返回值作為平臺(tái)其它功能的數(shù)據(jù)來(lái)源。
遵循軟件設(shè)計(jì)“高內(nèi)聚,低耦合”的原則,結(jié)合平臺(tái)的實(shí)際情況,采用三層架構(gòu)對(duì)平臺(tái)進(jìn)行設(shè)計(jì),使用微軟公司開(kāi)發(fā)的MFC平臺(tái)開(kāi)發(fā),采用 SQL 2000數(shù)據(jù)庫(kù)。
為了提高平臺(tái)的運(yùn)行效率,采用多線(xiàn)程技術(shù)。MFC提供了兩種線(xiàn)程:工作者線(xiàn)程和用戶(hù)界面線(xiàn)程[10]。兩種線(xiàn)程的主要區(qū)別在工作者線(xiàn)程沒(méi)有消息循環(huán),用戶(hù)界面線(xiàn)程有消息循環(huán)和消息隊(duì)列。所以,一般情況下工作者線(xiàn)程用來(lái)后臺(tái)計(jì)算,用戶(hù)界面線(xiàn)程用來(lái)處理用戶(hù)輸入、響應(yīng)用戶(hù)等。
圖1描述了平臺(tái)的總體結(jié)構(gòu),從線(xiàn)程角度、功能角度和架構(gòu)角度進(jìn)行說(shuō)明。
線(xiàn)程角度:系統(tǒng)在系統(tǒng)初始化時(shí),編譯器自動(dòng)產(chǎn)生一個(gè)主線(xiàn)程——main()函數(shù),根據(jù)需要可以另外增加線(xiàn)程。平臺(tái)除了使用主線(xiàn)程外,還添加了一個(gè)線(xiàn)程,工作者線(xiàn)程。主線(xiàn)程主要負(fù)責(zé):界面顯示、圖形顯示、響應(yīng)用戶(hù)消息、數(shù)據(jù)庫(kù)進(jìn)行交互和平臺(tái)的運(yùn)行控制;工作者線(xiàn)程只用于算法計(jì)算,它工作在三層架構(gòu)的業(yè)務(wù)邏輯層。
架構(gòu)角度:平臺(tái)架構(gòu)分為三層依次為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪(fǎng)問(wèn)層。
表示層主要負(fù)責(zé)用戶(hù)界面的設(shè)計(jì)、接收用戶(hù)對(duì)界面的響應(yīng)和用戶(hù)輸入的數(shù)據(jù)以及界面顯示和圖形顯示。業(yè)務(wù)邏輯層負(fù)責(zé)平臺(tái)控制和算法計(jì)算。數(shù)據(jù)訪(fǎng)問(wèn)層與數(shù)據(jù)庫(kù)進(jìn)行交互,進(jìn)行數(shù)據(jù)存儲(chǔ)、讀取、修改、添加等操作。
功能角度平臺(tái)中的功能大致分為:圖形顯示、界面響應(yīng)、算法計(jì)算、平臺(tái)控制和數(shù)據(jù)庫(kù)交互。圖形顯示主要負(fù)責(zé)圖形繪制;界面響應(yīng)主要負(fù)責(zé)響應(yīng)用戶(hù)請(qǐng)求;算法計(jì)算主要用于計(jì)算算法代碼;平臺(tái)控制主要用來(lái)控制平臺(tái)的運(yùn)行;數(shù)據(jù)庫(kù)交互主要負(fù)責(zé)平臺(tái)與數(shù)據(jù)庫(kù)的數(shù)據(jù)操作。
圖形顯示在主線(xiàn)程中實(shí)現(xiàn),工作在表示層;界面響應(yīng)在主線(xiàn)程中實(shí)現(xiàn),工作在表示層;算法計(jì)算在工作者線(xiàn)程中實(shí)現(xiàn),工作在業(yè)務(wù)邏輯層;平臺(tái)控制在主線(xiàn)程中實(shí)現(xiàn),工作在業(yè)務(wù)邏輯層;數(shù)據(jù)庫(kù)交互在主線(xiàn)程中實(shí)現(xiàn),工作在數(shù)據(jù)訪(fǎng)問(wèn)層。
通過(guò)三種角度對(duì)平臺(tái)的描述,可以明顯看出平臺(tái)的三種設(shè)計(jì)是相通的、相互滲透、相互協(xié)作。
圖1 平臺(tái)架構(gòu)圖Fig.1 Figure of Platform structure
微粒群算法研究平臺(tái)是一個(gè)算法無(wú)關(guān)的操作臺(tái),為研究者進(jìn)行不同的微粒群算法研究提供了相同的界面和一致的操作,使得平臺(tái)學(xué)習(xí)周期短、操作簡(jiǎn)單。
平臺(tái)主要功能有:內(nèi)部算法運(yùn)行、算法導(dǎo)入、圖形顯示、數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)導(dǎo)出、日志功能。
內(nèi)部代碼運(yùn)行方式,將標(biāo)準(zhǔn)微粒群算法代碼用C語(yǔ)言實(shí)現(xiàn)并封裝成一個(gè)算法類(lèi)—PSO類(lèi)。為了達(dá)到研究算法的目的,將PSO類(lèi)里的某些重要參數(shù)例如:W、C1、C2、Vmax允許進(jìn)行修改,每次運(yùn)行的參數(shù)都是從參數(shù)設(shè)置界面中獲得的。
設(shè)計(jì)適合的、友好的人工界面,用于設(shè)置算法參數(shù)。當(dāng)用戶(hù)點(diǎn)擊相應(yīng)的菜單后,立即彈出參數(shù)設(shè)置界面,將需要設(shè)置的數(shù)據(jù)填入到相應(yīng)的區(qū)域即可。內(nèi)部算法運(yùn)行得到的數(shù)據(jù)保存在一個(gè)二維數(shù)組中,提供給平臺(tái)其它功能。
算法導(dǎo)入功能是平臺(tái)重要的功能之一,它體現(xiàn)了平臺(tái)的可擴(kuò)展性。為了滿(mǎn)足研究者不同的需求,平臺(tái)必須具備算法導(dǎo)入功能。平臺(tái)設(shè)計(jì)了微粒群算法接口,只要按照規(guī)定接口編寫(xiě)的算法代碼就可以在平臺(tái)中運(yùn)行并且享有平臺(tái)其它功能。
采用Windows動(dòng)態(tài)鏈接庫(kù)技術(shù)實(shí)現(xiàn)導(dǎo)入功能,將需要導(dǎo)入的算法代碼寫(xiě)成動(dòng)態(tài)庫(kù)文件以顯式方法進(jìn)行加載[11-12]。在動(dòng)態(tài)庫(kù)文件中有一個(gè)導(dǎo)出函數(shù),平臺(tái)內(nèi)部只能“看見(jiàn)”這個(gè)導(dǎo)出函數(shù)并定義一個(gè)與這個(gè)導(dǎo)出函數(shù)類(lèi)型相同的函數(shù)用來(lái)獲取該導(dǎo)出函數(shù)的地址。動(dòng)態(tài)庫(kù)文件中運(yùn)算得到的數(shù)據(jù)被存儲(chǔ)到一個(gè)Vector變量中,并返回這個(gè)Vector的地址(導(dǎo)出函數(shù)的返回值類(lèi)型),在平臺(tái)內(nèi)部定義一個(gè)與動(dòng)態(tài)庫(kù)文件Vector變量相同類(lèi)型的Vector變量用來(lái)接收返回的數(shù)據(jù),提供給平臺(tái)其它功能。為了自由選擇導(dǎo)入的動(dòng)態(tài)庫(kù)文件,平臺(tái)提供相應(yīng)的界面用來(lái)選擇需要導(dǎo)入的文件。在動(dòng)態(tài)庫(kù)文件被選中之后,該動(dòng)態(tài)庫(kù)文件立即被執(zhí)行。
圖形顯示是平臺(tái)重要功能之一,分三個(gè)方面進(jìn)行描述。這個(gè)功能是什么?這個(gè)功能能實(shí)現(xiàn)什么?這個(gè)功能怎么實(shí)現(xiàn)?
這個(gè)功能是什么?微粒群算法的基本過(guò)程是初始化群體后,根據(jù)算法特有的選擇策略進(jìn)行群體進(jìn)化,逐步向最優(yōu)解靠近的過(guò)程。所以,進(jìn)化過(guò)程是算法的核心過(guò)程,但是傳統(tǒng)研究方法是在Visual C++的編譯環(huán)境下進(jìn)行,數(shù)據(jù)輸出在DOS界面下,直接輸出最終結(jié)果或者將中間過(guò)程的數(shù)據(jù)以研究者難以查看的方式快速顯示。為了對(duì)進(jìn)化過(guò)程有一個(gè)內(nèi)在的了解平臺(tái)設(shè)計(jì)了圖形顯示功能。
這個(gè)功能能實(shí)現(xiàn)什么?微粒群算法的個(gè)體定義中有速度、位置、適應(yīng)值等數(shù)據(jù),采用二維坐標(biāo)進(jìn)行,水平坐標(biāo)表示時(shí)間,縱坐標(biāo)表示被顯示數(shù)據(jù)的值。將算法進(jìn)化過(guò)程中的數(shù)據(jù)根據(jù)需要進(jìn)行圖形顯示。
這個(gè)功能怎么實(shí)現(xiàn)?如何顯示進(jìn)化過(guò)程是很關(guān)鍵的問(wèn)題。涉及到兩個(gè)問(wèn)題:在眾多數(shù)據(jù)中如何確定顯示數(shù)據(jù)以及高維問(wèn)題。算法中涉及到的個(gè)體往往都是高維的,如何處理高維到低維過(guò)度是一個(gè)重要的問(wèn)題。
易操作是平臺(tái)的重要特點(diǎn)之一,平臺(tái)提供圖形顯示設(shè)置對(duì)話(huà)框提供給用戶(hù)用來(lái)選擇需要顯示的數(shù)據(jù)。在顯示個(gè)體數(shù)據(jù)時(shí),個(gè)體定義是多維情況下,采用二維坐標(biāo)而且水平坐標(biāo)表示時(shí)間,能夠利用的只有縱坐標(biāo),只能顯示個(gè)體某個(gè)屬性的一維數(shù)據(jù),為了不丟失顯示數(shù)據(jù),采用“調(diào)整顯示”方法來(lái)解決。通過(guò)方向鍵的左右鍵來(lái)實(shí)現(xiàn)。右鍵是將維度提高,左鍵是將維度降低。
例如:一個(gè)個(gè)體的速度是N維,在初始情況下顯示其0維上的數(shù)據(jù),通過(guò)MFC機(jī)制提供的按鍵響應(yīng)設(shè)置方向鍵的左右鍵進(jìn)行維度的調(diào)整,左鍵將維度調(diào)低,右鍵將維度調(diào)高。這樣,解決了高維到低維過(guò)度的問(wèn)題,實(shí)質(zhì)上就是選擇感興趣的數(shù)據(jù)進(jìn)行顯示。
為了靈活、合理地顯示數(shù)據(jù),支持縱坐標(biāo)范圍設(shè)置,顯示類(lèi)型包括單個(gè)個(gè)體顯示、多個(gè)個(gè)體顯示、單個(gè)個(gè)體對(duì)比顯示、多個(gè)個(gè)體對(duì)比顯示。
將不同個(gè)體的顯示用不同的顏色進(jìn)行區(qū)分,個(gè)體在該屬性該維度上數(shù)據(jù)的顯示是一條折線(xiàn),看上去是一個(gè)連續(xù)的過(guò)程與微粒群算法進(jìn)化過(guò)程的連續(xù)性相符合,而且顯示效果直觀、清楚。
做為一個(gè)算法研究平臺(tái),目的是給算法研究者提供一個(gè)簡(jiǎn)單、方便、有效的研究環(huán)境。數(shù)據(jù)統(tǒng)計(jì)功能必然是不可或缺的功能之一。是否收斂、收斂代數(shù)、是否找到最優(yōu)解或滿(mǎn)意解是評(píng)價(jià)算法最關(guān)鍵的因素,收斂代數(shù)、平均收斂代數(shù)、最優(yōu)解、最優(yōu)解平均值成為平臺(tái)統(tǒng)計(jì)工作的重點(diǎn)。
對(duì)收斂代數(shù)和最優(yōu)解不僅提供了列表顯示功能還提供了圖形顯示功能。設(shè)計(jì)良好的用戶(hù)界面,對(duì)每次運(yùn)算得到的結(jié)果顯示在用戶(hù)界面上,并且提供圖形顯示方法給予直觀了解。對(duì)兩次不同的運(yùn)算結(jié)果,可以用二維圖形方式對(duì)比顯示,從不同評(píng)價(jià)角度比較出算法的優(yōu)劣。
數(shù)據(jù)統(tǒng)計(jì)下的圖形顯示采用二維顯示方法,水平軸代表進(jìn)化代數(shù),垂直軸代表具體顯示的數(shù)據(jù),垂直軸數(shù)據(jù)可以自由選擇,顯示數(shù)據(jù)都是在算法運(yùn)算過(guò)程中得到,并且保存在定義好的 Vector變量中。
在顯示界面上直接給出平均收斂代數(shù)和平均最優(yōu)解,并提供算法運(yùn)算過(guò)程數(shù)據(jù)的詳細(xì)查詢(xún),可以按任一參數(shù)為檢索條件進(jìn)行查詢(xún),當(dāng)查詢(xún)條件值不確定時(shí),可根據(jù)范圍進(jìn)行模糊查詢(xún),返回在該范圍內(nèi)所有符合的數(shù)據(jù),提供導(dǎo)出功能將查詢(xún)數(shù)據(jù)導(dǎo)出為Excel文件。
傳統(tǒng)研究模式下算法運(yùn)算數(shù)據(jù)量大,數(shù)據(jù)枯燥,而且對(duì)運(yùn)算得到的數(shù)據(jù)可操作性不強(qiáng)。這是傳統(tǒng)研究模式的很大弊端。針對(duì)這個(gè)問(wèn)題,平臺(tái)支持?jǐn)?shù)據(jù)導(dǎo)出功能,導(dǎo)出格式為Excel文件,將數(shù)據(jù)庫(kù)中的數(shù)據(jù)、查詢(xún)得到的數(shù)據(jù)直接導(dǎo)入為Excel文件。
Excel主要用于數(shù)據(jù)的處理、數(shù)據(jù)的統(tǒng)計(jì)分析以及輔助決策相關(guān)操作,被廣泛地應(yīng)用在管理、金融、財(cái)經(jīng)等領(lǐng)域。Excel內(nèi)部有大量的公式函數(shù)可以選擇,使用非常方便。因?yàn)镋xcel上述的特點(diǎn),平臺(tái)將算法運(yùn)算的數(shù)據(jù)導(dǎo)入到Excel中,借助Excel強(qiáng)大的功能做進(jìn)一步的分析。
大部分成熟軟件產(chǎn)品都提供了日志功能,主要用于存儲(chǔ)軟件運(yùn)行的狀況,包括正常運(yùn)行狀態(tài)下的數(shù)據(jù)和非正常狀態(tài)下產(chǎn)生的錯(cuò)誤信息。平臺(tái)提供日志功能包括:生成日志、日志查看、日志導(dǎo)入。
生成日志:算法運(yùn)算的得到的數(shù)據(jù)都被存儲(chǔ)在文本文件中,導(dǎo)出格式為.txt文件。平臺(tái)產(chǎn)生的日志文件,存儲(chǔ)算法運(yùn)行產(chǎn)生的所有數(shù)據(jù),以及運(yùn)行的時(shí)間、次數(shù)等重要信息。為研究人員核查數(shù)據(jù)提供一種方法。日志文件以該次運(yùn)行的時(shí)間命名。生成日志數(shù)據(jù)主要有兩種來(lái)源:微粒群算法內(nèi)部運(yùn)算結(jié)果、微粒群算法動(dòng)態(tài)庫(kù)運(yùn)算結(jié)果。
日志查看:對(duì)平臺(tái)歷史上生成的日志進(jìn)行查看,提供查看對(duì)話(huà)框自由選擇日志文件。
日志導(dǎo)入:微粒群算法的種群初始化工作絕大部分都是隨機(jī)的,即使在相同參數(shù)情況下進(jìn)化過(guò)程也不可能完全相同,所以每一次進(jìn)化過(guò)程是唯一的,不可重復(fù)的。平臺(tái)提供的圖形顯示只能對(duì)該次運(yùn)行顯示一次,不能進(jìn)行重復(fù)顯示。日志導(dǎo)入功能提供將進(jìn)化過(guò)程重復(fù)顯示的手段,對(duì)每次進(jìn)化過(guò)程都可以重復(fù)顯示,類(lèi)似于重播功能。日志導(dǎo)入也成為平臺(tái)數(shù)據(jù)導(dǎo)入的另一種方法。
開(kāi)發(fā)微粒群算法研究平臺(tái)的目的是輔助算法研究者對(duì)算法進(jìn)行研究,提高研究者的工作效率。平臺(tái)具有與算法無(wú)關(guān)的特點(diǎn),只要編寫(xiě)的算法符合平臺(tái)規(guī)定的數(shù)據(jù)接口,該算法就可以在平臺(tái)中運(yùn)行,使用平臺(tái)中的所有功能。平臺(tái)運(yùn)行流程如圖2所示。
圖2 平臺(tái)運(yùn)行流程圖Fig.2 Flowchart of platform operation
內(nèi)部運(yùn)行模式下,標(biāo)準(zhǔn)微粒群算法已經(jīng)被封裝在平臺(tái)內(nèi)部,可以改變算法的參數(shù)對(duì)標(biāo)準(zhǔn)微粒群算法進(jìn)行研究。對(duì)慣性權(quán)重、算法運(yùn)行次數(shù)、最大迭代次數(shù)、學(xué)習(xí)因子、最大速度等參數(shù)進(jìn)行修改。
參數(shù)慣性權(quán)重設(shè)置為1.0、算法運(yùn)行次數(shù)設(shè)置為10、最大迭代次數(shù)設(shè)置為500、學(xué)習(xí)因子設(shè)置為1.6、最大速度設(shè)置為2、最小速度設(shè)置為 -2、種群規(guī)模設(shè)置為20,如圖3所示。
圖3 算法參數(shù)設(shè)置圖Fig.3 Diagram of parameter setting
運(yùn)行平臺(tái)圖形顯示功能,在圖形顯示參數(shù)設(shè)置界面中,將Y軸范圍設(shè)置為:-10至10,顯示內(nèi)部算法運(yùn)算數(shù)據(jù)、顯示單個(gè)1號(hào)個(gè)體的速度,顯示如圖4,從微觀角度直觀、清楚展現(xiàn)了算法進(jìn)化內(nèi)在過(guò)程。
圖4 單個(gè)個(gè)體圖形顯示Fig.4 Graphic display of single individual
圖5 數(shù)據(jù)統(tǒng)計(jì)圖Fig.5 Diagram of data statistics
圖6 數(shù)據(jù)統(tǒng)計(jì)圖形顯示Fig.6 Graphic display of data statistics
運(yùn)行數(shù)據(jù)統(tǒng)計(jì)功能,結(jié)果如圖5所示。從圖5中清楚地看出,本次內(nèi)部算法運(yùn)算得到平均適應(yīng)值為3.000 004,平均收斂代數(shù)為144,運(yùn)算10次收斂10次,每次運(yùn)行具體統(tǒng)計(jì)結(jié)果也很清楚、明了。將本次運(yùn)算統(tǒng)計(jì)結(jié)果通過(guò)二維圖形顯示如圖6所示,從圖6中可以明顯觀察到最優(yōu)解變化趨勢(shì)圖一目了然,位于平均適應(yīng)值上下波動(dòng),其中 1、2、3、6、7、10次運(yùn)算得到最優(yōu)解高于平均值,4、5、8、9次運(yùn)算得到最優(yōu)解低于平均值。將動(dòng)態(tài)庫(kù)文件導(dǎo)入到平臺(tái)中,運(yùn)行動(dòng)態(tài)庫(kù)文件。將兩次運(yùn)行得到最優(yōu)解情況進(jìn)行統(tǒng)計(jì),并對(duì)比顯示得到圖7.從圖7可以看出,1、2、3、6、7、8 次運(yùn)算得到最優(yōu)解相同,高于平均值;第4、5、9次最優(yōu)解處于平均值之下,從宏觀角度清楚、直觀地展現(xiàn)了兩次運(yùn)算得到的最優(yōu)解情況。
圖7 數(shù)據(jù)統(tǒng)計(jì)對(duì)比圖形顯示Fig.7 Graphic comparisons display of data statistics
本文提出了一種通用的、可擴(kuò)展的微粒群算法研究平臺(tái),使用動(dòng)態(tài)鏈接庫(kù)技術(shù)支持不同類(lèi)型的微粒群算法,使得平臺(tái)具有良好的擴(kuò)展性。內(nèi)部算法運(yùn)行、圖形顯示、數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)導(dǎo)出、日志功能使得平臺(tái)具有良好的實(shí)用性,從微觀角度展現(xiàn)了算法進(jìn)化內(nèi)在過(guò)程,從宏觀角度展現(xiàn)了算法數(shù)據(jù)統(tǒng)計(jì)信息,與傳統(tǒng)研究模式相比具有明顯優(yōu)勢(shì)。但是,平臺(tái)還有一些需要改進(jìn)之處:(1)支持微粒群算法求解優(yōu)化問(wèn)題;(2)支持其它經(jīng)典的優(yōu)化算法例如:遺傳算法、模擬退火算法等。
[1]KENNEDY J,EBERHART R.Particle Swarm Optimization[C]//Proc IEEE Int Conf on Neural Networks.Piscectaway,NJ,1995:1942-1948.
[2]Eberhart R,Kennedy J.A New Optimizer Using Particle Swarm Theory[C]//Proc 6th Int Symposium on Micro Machine and Human Science.Nagoya,1995:39-43.
[3]趙亞敏,許家棟.一種改進(jìn)的微粒群優(yōu)化算法[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(2):31-33.
[4]王慧,劉希玉,李田來(lái).基于流形的微粒群優(yōu)化[J].計(jì)算機(jī)科學(xué),2009,36(3):212-214.
[5]肖健梅,李軍軍,王錫淮.梯度微粒群優(yōu)化算法及其收斂性分析[J].控制與決策,2009,24(4):560-564.
[6]譚瑛,高慧敏,曾建潮.求解約束優(yōu)化問(wèn)題的微粒群算法[J].太原重型機(jī)械學(xué)院學(xué)報(bào),2004,25(2):94-97.
[7]WALL M.GAlib:A C++Library of Genetic Algorithm Components,Technical Report,Mechanical Engineering Department,Massachusetts Institute of Technology,1996.
[8]孔亮.面向?qū)ο蟮倪z傳算法平臺(tái)設(shè)計(jì)與應(yīng)用[D].上海:上海交通大學(xué),2008.
[9]徐星,李元香,吳昱,胡豪.基于策略模式的粒子群優(yōu)化算法平臺(tái)設(shè)計(jì)[J].武漢大學(xué)學(xué)報(bào):工學(xué)版,2010,43(3):361-374.
[10]姚領(lǐng)田.精通MFC程序設(shè)計(jì)[M].北京:人民郵電出版社,2006.
[11]張世祿,彭磊.利用動(dòng)態(tài)鏈接庫(kù)提高代碼可重用性[J].計(jì)算機(jī)應(yīng)用,2001,21(8):239-240.
[12]張冠茂,王芳.基于動(dòng)態(tài)鏈接庫(kù)模塊視窗菜單外部控制的軟件開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用,2003,23(11):118-121.
太原科技大學(xué)學(xué)報(bào)2011年6期