林超
摘? 要: 蟻群算法與同類智能算法相比具有計算速度快、收斂迅速、算法穩定性好等優點,但是隨著數據量的增大,計算用時呈現指數型增長。為了更好地解決大數據量蟻群算法計算慢的問題,結合蟻群算法天然的并行性,基于最新的GPU并行化接口C++ AMP實現了并行蟻群算法,使計算用時大幅度減少。經試驗分析,該算法可以達到3倍的加速效果。
關鍵詞: 蟻群算法; 并行蟻群算法; C++ AMP; GPU計算
中圖分類號: TN911.7?34; TP18??????????? 文獻標識碼: A??????????????????????? 文章編號: 1004?373X(2014)23?0069?03
Abstract: Compared with similar intelligent algorithms, ant colony algorithm has the advantages of faster calculation, more rapid convergence and more perfect stability. However, with the increasing amount of data, its computation time emerges the exponential growth. In order to solve the problem that the large amount of data ant colony algorithm is slow, by utilizing the natural parallelism of ant colony algorithm, the parallel ant colony algorithm was achieved on the basis of the latest GPU parallel interface C++AMP, which realized the substantial reduction of computation time. The analysis result indicates that the reduction extent is up to 3 times the acceleration effect.
Keyword: ant colony algorithm; parallel ant colony algorithm; C++ AMP; GPU computation
蟻群算法是由Macro Dorigo等人于1991年提出的一種啟發式智能算法[1]。蟻群算法的設計靈感源于蟻群尋找食物的過程,一群螞蟻通過相互協作就能找到從螞蟻巢穴到食物的最短路徑。其算法核心為路徑上的信息素積累,導致更多的螞蟻選擇這一路徑,最后幾乎所有螞蟻選擇經過該路徑,于是就找出了一條從螞蟻巢穴到食物的最短路徑。蟻群算法有著較高的隱含并行性,并且其在很多經典問題上有著出色的表現,如旅行商問題TSP(Traveling Salesman Problem)[2?5]、車輛調度問題[6?7]、集成電路設計[8]以及通信網絡負載[9]等問題。隨著數據量的增大,串行程序的計算用時成指數型增長,顯然不滿足人們的需要。為了更快求解這類問題,基于蟻群算法天然的并行性,把算法并行化是很好的選擇。文獻[10]應用云計算技術將蟻群算法并行化,提出了基于MapReduce的蟻群算法;文獻[11?13]實現了基于MPI并行計算的蟻群聚類算法;文獻[14?15]研究了基于OpenMP技術的多核架構下并行蟻群算法;文獻[16?17]建立了一種基于CUDA的并行蟻群算法。本文基于最新的GPU并行化接口C++ AMP實現蟻群算法的并行化,并通過數值驗證加速效果。
1? C++ AMP介紹
GPU計算由來已久,已經成熟的接口包括NVIDIA的CUDA C和AMD的OPENCL接口,隨著微軟公司Visual Studio 2012的發布,在Build大會上微軟向大家呈現了一種新的GPU并行計算模式C++ AMP,其最低運行環境是:Win7系統+Visual Studio 2012+DirectX11,所以它比另外兩種并行端口適用范圍更廣,可以實現真正意義上的跨平臺運行。C++ AMP采用面向對象的C++語言開發,支持CPU,GPU等跨平臺編譯運行,具有邏輯結構簡單、數據隱式拷貝、自動負載均衡等特點,可以快速、穩定地實現并行計算。
一個C++ AMP計算過程中最重要的包括:
(1)數據,其基本數據類型有array<;T,N>;,array_view<;T,N>;,index<;N>;,extent<;N>;,tiled_extent<;D0,D1,D2>;,title_index(D0,D1,D2>;,accelerator,accelerator_view,texture<;T,N>;等;
(2) 迭代函數parallel_for_each函數,是C++AMP并行計算的核心部分,負責線程開辟、核函數計算等工作,基本的計算過程由核函數指定,通常核函數為Lambda表達式,也可以是由限定符restrict(amp)限定的GPU函數;
(3) 線程索引index類,線程開辟大小extent類,他們兩者是一一對應的。如果extent是二維的,則index也是二維的,由index類對象來實現對線程的惟一標示;
(4) 數學函數,數學函數庫有雙精度數學函數與快速數學函數兩種,根據需要選擇。
C++ AMP的執行模式是由CPU線程控制、由parallel_for_each函數作為詳細設置、由核函數完成核心計算任務、數據隱式拷貝的執行模型。程序開始運行時,只有CPU主線程活動,當執行到并行區域時,主線程根據parallel_for_each函數的設置,啟動GPU線程組來完成相應的計算任務,最后拷貝數據回CPU主線程,這時GPU線程掛起或者退出,控制流又回到CPU主線程中。
2? 蟻群算法介紹
為了更加清楚詳細地描述蟻群算法,本文借助經典的TSP問題來描述(TSP問題:已知[n]個城市以及城市兩兩之間的距離,求一條遍歷所有城市的最短路徑,除初始城市之外每個城市訪問且僅訪問一次)。
蟻群算法可以定義如下:設有[n]個城市,[m]個螞蟻,任意城市[i]與城市[j]之間的距離為[d(i,j)],啟發函數定義為[η(i,j)=1d(i,j),]任意城市[i]與城市[j]之間的信息素濃度為[τ(i,j)],并且初始時刻信息素濃度相同,螞蟻[k]經過城市[i]轉到城市[j]的概率計算公式如下所示:
[pkij=[τ(i,j)]α?[η(i,j)]βs∈J(k)[τ(i,s)]α?[η(i,s)]β,s∈J(k)0,others] (1)
式中:[J(k)]是螞蟻[k]下一步允許選擇的城市的集合;[α,][β]為權重系數。當所有螞蟻都完成一次循環后,對信息素矩陣進行更新操作,這樣,新時刻路徑[(i,j)]上的信息素濃度采用調整式(2)進行調節:
[τ(i,j)=ρτ(i,j)+k=1mΔτk(i,j)] (2)
式中:[ρ(0<;ρ<;1)]表示信息素保留程度,其值越大表示信息素揮發速率越慢;[Δτk(i,j)]表示在本次循環中第[k]只螞蟻在路徑[(i,j)]上的信息素貢獻。每只螞蟻的信息素貢獻可以用式(3)進行計算:
[Δτk(i,j)=QLk,第k只螞蟻在本次循環中經過(i,j)0,否則] (3)
式中:[Q]是信息素強度,它影響算法的收斂速度;[Lk]表示第[k]只螞蟻在本次循環中所有的路徑總和[4]。
3? 并行蟻群算法
根據上述介紹,可以看出每只螞蟻尋找自己路徑依賴于上次循環產生的信息素矩陣以及各城市之間的靜態路徑長度,兩兩螞蟻之間沒有信息素交流,經過分析,這是一種符合SIMD模型的過程,故可以將每只螞蟻尋找最優路徑的過程并行進行,從而加速算法計算。并行蟻群算法可以用如下算法進行描述:
Step1:初始化所有參數、變量,如權重系數[α,][β;]螞蟻個數[m;]最大迭代步數NC;信息素矩陣初始值[τ(i,j)=1。]
Step2:按照螞蟻個數分配線程,每個線程代表一只螞蟻。每只螞蟻獨立構造一個解(解即一條遍歷所有城市的路徑),詳細描述為:螞蟻[k]隨機選取一個城市[i]作為自己的初始點,再根據轉移概率公式計算轉移概率[pkij;]根據概率最大者選擇下一個城市[j],從而螞蟻走過路徑為[(i,j)。]若當前路徑長度大于上一循環求得最短路徑長度,則結束本次循環;否則繼續循環,直到螞蟻[k]尋找到一個解。
Step3:規約Step2中所有螞蟻產生的解,求解出所有解中的最優解和最優值進行保存操作。
Step4:根據當前最優解和最優值信息,進行信息素矩陣更新操作。
Step5:判斷是否滿足結束條件,若滿足,則輸出最優解和最優值;否則,循環執行次數+1,轉Step2。結束條件為循環次數大于NC或者當前解已經穩定(通常兩步解出的最優解與最優值相同即可認為當前解已經穩定)。
串行蟻群算法的時間復雜度為[O(NC?m?n2)],計算量主要集中在螞蟻各自構造一個解的過程。蟻群算法在一代迭代中包括螞蟻獨立求解、相互交流得到較優解和改變信息素的過程,且信息素的改變直接影響下一代概率計算的結果,從而產生不同的解,并向較優解進化。由于把算法并行化,采用每只螞蟻并行尋找路徑的模式進行,則并行蟻群算法的時間復雜度減小為[O(NC?n2)],使算法有明顯的加速。
4? 數值實驗
4.1? 實驗環境
實驗環境采用NVIDIA GeForce GT 440環境,具體參數配置如表1所示。
4.2? 數值結果
數值實驗采用的數據為隨機生成的二維坐標,取值范圍在[0,1 000],分城市數目[n、]螞蟻數目[m、]迭代次數[NC]等三個參數進行實驗分析,實驗結果如表2所示。
由表2前三行可知,串行時間與并行時間隨著迭代次數的增加呈現線性增長趨勢,這也符合第3節的理論推導,此時串行時間與并行時間相當,加速比在[1-0.01,1+0.01]范圍之內,可以認為此時沒有加速效果。由此三行知道,加速比和運行時間都與迭代次數無關。下面選取小的迭代次數來進行數值實驗,分析城市數目與螞蟻數目對串行時間、并行時間、加速比的影響。
表1 實驗環境GeForce GT 440配置參數
[項目\&;參數\&;操作系統\&;Windows 7, 64-bits\&;內存\&;4 GB\&;運行環境\&;Visual Studio 2012\&;CPU\&;Intel(R) Xeon(R) W3520@ 2.67 GHz x 4\&;GPU\&;顯卡型號:NVIDIA GeForce GT 440
顯存:512 MB DDR3
帶寬:54.4 GB/s
帶寬:54.4 GB/s
核心頻率:850 MHz
存儲頻率:850 MHz
渲染頻率:1 700 MHz
SM個數:2個
SP個數:96個\&;]
表2 實驗結果
[城市數目
(n)\&;螞蟻數目
(m)\&;迭代次數(NC)\&;串行時間
?;/s\&;并行時間
?;/s\&;加速比\&;200\&;200\&;100\&;80.153\&;79.445\&;1.01\&;200\&;200\&;1 000\&;796.334\&;802.333\&;0.99\&;200\&;200\&;10 000\&;7 849.595\&;7 933.443\&;0.99\&;300\&;300\&;100\&;269.303\&;168.883\&;1.75\&;300\&;600\&;100\&;538.044\&;219.804\&;2.45\&;300\&;1 000\&;100\&;895.340\&;320.112\&;2.80\&;500\&;500\&;100\&;1 251.692\&;496.486\&;2.52\&;500\&;1 000\&;100\&;2 486.281\&;870.372\&;2.86\&;]
由表2整體可以看出,當城市數目及螞蟻數目較大時,對數據普遍有加速效果。由表2第4~6行分析可知,固定城市數目,隨著螞蟻數目增大,串行時間呈現線性增長,而并行時間的增長率小于線性,加速比越來越大。這是由于并行線程數目是以螞蟻數目為參數的,螞蟻數目越大,并行線程數目越多,從而使得并行時間增長率比線性還小。但是此時并行時間并沒有遵循第3節分析的函數[O(NC?n2)],這是由于雖然并行線程開辟了[m]個,但是最終的物理執行過程同時運行的線程個數為96個(SP個數),又涉及到CPU?GPU異構通信時間,從而使得整體并行時間沒有按照理論分析的結果。并行線程數目m越大,負載相對越均衡,物理資源占用越充分,從而加速效果越來越明顯,直到達到相應的物理瓶頸。這也可以由表2的7,8行得出。
由表2中的第5,7行和第6,8行可以對比出,螞蟻數目[m]一定時,城市數目[n]對于串行、并行算法時間的影響。對比5,7兩行可以看出,螞蟻數目大體一樣,城市數目改變量比較大,其加速比相差不大;對比6,8兩行可以看出,螞蟻數目一樣時,城市數目的改變對于整個算法的加速比影響并不是很大。這個也可以從并行程序中串行執行部分、數據交換所用時間以及算法本身所用時間方面進行分析,這個加速效果是合理的。
5?; 結?; 論
本文基于最新的GPU并行化接口C++ AMP,設計實現了并行蟻群算法,經過數值實驗分析,可以達到3倍的加速效果,對于大數量的蟻群算法求解提供了新的解決思路。加速效果不是很明顯,原因是CPU配置較高,GPU性能不是很好導致。
參考文獻
[1] COLORNI A, DORIGO M, MANIEZZO V, et al. Distributedoptimization by ant colonies [C]// Proceedings of European Conference on Artificial Life. Paris: [s.n.], 1991: 134?142.
[2] 蔣騰旭.改進的遺傳蟻群混合算法在TSP中的應用[J].計算機與現代化,2013(12):30?33.
[3] 余鵬,何學軍.基于蟻群算法的艦艇編隊海上補給路徑規劃方法[J].海軍工程大學學報,2014(2):108?112.
[4] 郭平,鄢文晉.基于TSP問題的蟻群算法綜述[J].計算機科學,2007(10):181?184.
[5] 王勝訓,李艷穎.一種求解TSP的自適應蟻群優化算法[J].西安工程大學學報,2013(6):840?844.
[6] 楊浩雄,胡靜,何明珂.配送中多車場多任務多車型車輛調度研究[J].計算機工程與應用,2013(10):243?246.
[7] 于濱,楊忠振,程春田.并行蟻群算法在公交線網優化中應用[J].大連理工大學學報,2007(2):211?214.
[8] 黃訓誠,耿阿囡,莊奕琪,等.基于蟻群算法的集成電路無網格布線[J].電子器件,2006(3):874?877.
[9] 王愛靜,郝志峰,黃翰,等.雙向反饋蟻群算法在網絡負載均衡問題的研究[J].計算機工程與應用,2011(36):112?114.
[10] 吳昊,倪志偉,王會穎.基于MapReduce的蟻群算法[J].計算機集成制造系統,2012(7):1503?1509.
[11] 楊燕,王全根,黃波.蟻群聚類算法的并行化設計與實現[J].控制工程,2013(3):411?414.
[12] 劉彩云,陳忠.一種蟻群算法的并行實現[J].長江大學學報(自科版)理工卷,2007(4):9?11.
[13] 曹明,甘云,王勝炎,等.基于MPI的并行蟻群算法的實現[J].電腦知識與技術,2012(12):2863?2864.
[14] 劉向嬌,吳素萍,劉佳梅.基于OpenMP求解旅行商問題的并行蟻群算法[J].微電子學與計算機,2011(7):149?151.
[15] 陳昊.基于OpenMP的并行蟻群算法求解協同空戰火力分配[J].傳感器與微系統,2013(1):20?24.
[16] 白洪濤,歐陽丹彤,李熙銘,等.基于GPU的共享信息素矩陣多蟻群算法[J].吉林大學學報:工學版,2011(6):1678?1683.
[17] 李建明,胡祥培,龐占龍,等.一種基于GPU加速的細粒度并行蟻群算法[J].控制與決策,2009,24(8):1132?1136.
帶寬:54.4 GB/s
核心頻率:850 MHz
存儲頻率:850 MHz
渲染頻率:1 700 MHz
SM個數:2個
SP個數:96個\&;]
表2 實驗結果
[城市數目
(n)\&;螞蟻數目
(m)\&;迭代次數(NC)\&;串行時間
?;/s\&;并行時間
?;/s\&;加速比\&;200\&;200\&;100\&;80.153\&;79.445\&;1.01\&;200\&;200\&;1 000\&;796.334\&;802.333\&;0.99\&;200\&;200\&;10 000\&;7 849.595\&;7 933.443\&;0.99\&;300\&;300\&;100\&;269.303\&;168.883\&;1.75\&;300\&;600\&;100\&;538.044\&;219.804\&;2.45\&;300\&;1 000\&;100\&;895.340\&;320.112\&;2.80\&;500\&;500\&;100\&;1 251.692\&;496.486\&;2.52\&;500\&;1 000\&;100\&;2 486.281\&;870.372\&;2.86\&;]
由表2整體可以看出,當城市數目及螞蟻數目較大時,對數據普遍有加速效果。由表2第4~6行分析可知,固定城市數目,隨著螞蟻數目增大,串行時間呈現線性增長,而并行時間的增長率小于線性,加速比越來越大。這是由于并行線程數目是以螞蟻數目為參數的,螞蟻數目越大,并行線程數目越多,從而使得并行時間增長率比線性還小。但是此時并行時間并沒有遵循第3節分析的函數[O(NC?n2)],這是由于雖然并行線程開辟了[m]個,但是最終的物理執行過程同時運行的線程個數為96個(SP個數),又涉及到CPU?GPU異構通信時間,從而使得整體并行時間沒有按照理論分析的結果。并行線程數目m越大,負載相對越均衡,物理資源占用越充分,從而加速效果越來越明顯,直到達到相應的物理瓶頸。這也可以由表2的7,8行得出。
由表2中的第5,7行和第6,8行可以對比出,螞蟻數目[m]一定時,城市數目[n]對于串行、并行算法時間的影響。對比5,7兩行可以看出,螞蟻數目大體一樣,城市數目改變量比較大,其加速比相差不大;對比6,8兩行可以看出,螞蟻數目一樣時,城市數目的改變對于整個算法的加速比影響并不是很大。這個也可以從并行程序中串行執行部分、數據交換所用時間以及算法本身所用時間方面進行分析,這個加速效果是合理的。
5?; 結?; 論
本文基于最新的GPU并行化接口C++ AMP,設計實現了并行蟻群算法,經過數值實驗分析,可以達到3倍的加速效果,對于大數量的蟻群算法求解提供了新的解決思路。加速效果不是很明顯,原因是CPU配置較高,GPU性能不是很好導致。
參考文獻
[1] COLORNI A, DORIGO M, MANIEZZO V, et al. Distributedoptimization by ant colonies [C]// Proceedings of European Conference on Artificial Life. Paris: [s.n.], 1991: 134?142.
[2] 蔣騰旭.改進的遺傳蟻群混合算法在TSP中的應用[J].計算機與現代化,2013(12):30?33.
[3] 余鵬,何學軍.基于蟻群算法的艦艇編隊海上補給路徑規劃方法[J].海軍工程大學學報,2014(2):108?112.
[4] 郭平,鄢文晉.基于TSP問題的蟻群算法綜述[J].計算機科學,2007(10):181?184.
[5] 王勝訓,李艷穎.一種求解TSP的自適應蟻群優化算法[J].西安工程大學學報,2013(6):840?844.
[6] 楊浩雄,胡靜,何明珂.配送中多車場多任務多車型車輛調度研究[J].計算機工程與應用,2013(10):243?246.
[7] 于濱,楊忠振,程春田.并行蟻群算法在公交線網優化中應用[J].大連理工大學學報,2007(2):211?214.
[8] 黃訓誠,耿阿囡,莊奕琪,等.基于蟻群算法的集成電路無網格布線[J].電子器件,2006(3):874?877.
[9] 王愛靜,郝志峰,黃翰,等.雙向反饋蟻群算法在網絡負載均衡問題的研究[J].計算機工程與應用,2011(36):112?114.
[10] 吳昊,倪志偉,王會穎.基于MapReduce的蟻群算法[J].計算機集成制造系統,2012(7):1503?1509.
[11] 楊燕,王全根,黃波.蟻群聚類算法的并行化設計與實現[J].控制工程,2013(3):411?414.
[12] 劉彩云,陳忠.一種蟻群算法的并行實現[J].長江大學學報(自科版)理工卷,2007(4):9?11.
[13] 曹明,甘云,王勝炎,等.基于MPI的并行蟻群算法的實現[J].電腦知識與技術,2012(12):2863?2864.
[14] 劉向嬌,吳素萍,劉佳梅.基于OpenMP求解旅行商問題的并行蟻群算法[J].微電子學與計算機,2011(7):149?151.
[15] 陳昊.基于OpenMP的并行蟻群算法求解協同空戰火力分配[J].傳感器與微系統,2013(1):20?24.
[16] 白洪濤,歐陽丹彤,李熙銘,等.基于GPU的共享信息素矩陣多蟻群算法[J].吉林大學學報:工學版,2011(6):1678?1683.
[17] 李建明,胡祥培,龐占龍,等.一種基于GPU加速的細粒度并行蟻群算法[J].控制與決策,2009,24(8):1132?1136.
帶寬:54.4 GB/s
核心頻率:850 MHz
存儲頻率:850 MHz
渲染頻率:1 700 MHz
SM個數:2個
SP個數:96個\&;]
表2 實驗結果
[城市數目
(n)\&;螞蟻數目
(m)\&;迭代次數(NC)\&;串行時間
?;/s\&;并行時間
?;/s\&;加速比\&;200\&;200\&;100\&;80.153\&;79.445\&;1.01\&;200\&;200\&;1 000\&;796.334\&;802.333\&;0.99\&;200\&;200\&;10 000\&;7 849.595\&;7 933.443\&;0.99\&;300\&;300\&;100\&;269.303\&;168.883\&;1.75\&;300\&;600\&;100\&;538.044\&;219.804\&;2.45\&;300\&;1 000\&;100\&;895.340\&;320.112\&;2.80\&;500\&;500\&;100\&;1 251.692\&;496.486\&;2.52\&;500\&;1 000\&;100\&;2 486.281\&;870.372\&;2.86\&;]
由表2整體可以看出,當城市數目及螞蟻數目較大時,對數據普遍有加速效果。由表2第4~6行分析可知,固定城市數目,隨著螞蟻數目增大,串行時間呈現線性增長,而并行時間的增長率小于線性,加速比越來越大。這是由于并行線程數目是以螞蟻數目為參數的,螞蟻數目越大,并行線程數目越多,從而使得并行時間增長率比線性還小。但是此時并行時間并沒有遵循第3節分析的函數[O(NC?n2)],這是由于雖然并行線程開辟了[m]個,但是最終的物理執行過程同時運行的線程個數為96個(SP個數),又涉及到CPU?GPU異構通信時間,從而使得整體并行時間沒有按照理論分析的結果。并行線程數目m越大,負載相對越均衡,物理資源占用越充分,從而加速效果越來越明顯,直到達到相應的物理瓶頸。這也可以由表2的7,8行得出。
由表2中的第5,7行和第6,8行可以對比出,螞蟻數目[m]一定時,城市數目[n]對于串行、并行算法時間的影響。對比5,7兩行可以看出,螞蟻數目大體一樣,城市數目改變量比較大,其加速比相差不大;對比6,8兩行可以看出,螞蟻數目一樣時,城市數目的改變對于整個算法的加速比影響并不是很大。這個也可以從并行程序中串行執行部分、數據交換所用時間以及算法本身所用時間方面進行分析,這個加速效果是合理的。
5?; 結?; 論
本文基于最新的GPU并行化接口C++ AMP,設計實現了并行蟻群算法,經過數值實驗分析,可以達到3倍的加速效果,對于大數量的蟻群算法求解提供了新的解決思路。加速效果不是很明顯,原因是CPU配置較高,GPU性能不是很好導致。
參考文獻
[1] COLORNI A, DORIGO M, MANIEZZO V, et al. Distributedoptimization by ant colonies [C]// Proceedings of European Conference on Artificial Life. Paris: [s.n.], 1991: 134?142.
[2] 蔣騰旭.改進的遺傳蟻群混合算法在TSP中的應用[J].計算機與現代化,2013(12):30?33.
[3] 余鵬,何學軍.基于蟻群算法的艦艇編隊海上補給路徑規劃方法[J].海軍工程大學學報,2014(2):108?112.
[4] 郭平,鄢文晉.基于TSP問題的蟻群算法綜述[J].計算機科學,2007(10):181?184.
[5] 王勝訓,李艷穎.一種求解TSP的自適應蟻群優化算法[J].西安工程大學學報,2013(6):840?844.
[6] 楊浩雄,胡靜,何明珂.配送中多車場多任務多車型車輛調度研究[J].計算機工程與應用,2013(10):243?246.
[7] 于濱,楊忠振,程春田.并行蟻群算法在公交線網優化中應用[J].大連理工大學學報,2007(2):211?214.
[8] 黃訓誠,耿阿囡,莊奕琪,等.基于蟻群算法的集成電路無網格布線[J].電子器件,2006(3):874?877.
[9] 王愛靜,郝志峰,黃翰,等.雙向反饋蟻群算法在網絡負載均衡問題的研究[J].計算機工程與應用,2011(36):112?114.
[10] 吳昊,倪志偉,王會穎.基于MapReduce的蟻群算法[J].計算機集成制造系統,2012(7):1503?1509.
[11] 楊燕,王全根,黃波.蟻群聚類算法的并行化設計與實現[J].控制工程,2013(3):411?414.
[12] 劉彩云,陳忠.一種蟻群算法的并行實現[J].長江大學學報(自科版)理工卷,2007(4):9?11.
[13] 曹明,甘云,王勝炎,等.基于MPI的并行蟻群算法的實現[J].電腦知識與技術,2012(12):2863?2864.
[14] 劉向嬌,吳素萍,劉佳梅.基于OpenMP求解旅行商問題的并行蟻群算法[J].微電子學與計算機,2011(7):149?151.
[15] 陳昊.基于OpenMP的并行蟻群算法求解協同空戰火力分配[J].傳感器與微系統,2013(1):20?24.
[16] 白洪濤,歐陽丹彤,李熙銘,等.基于GPU的共享信息素矩陣多蟻群算法[J].吉林大學學報:工學版,2011(6):1678?1683.
[17] 李建明,胡祥培,龐占龍,等.一種基于GPU加速的細粒度并行蟻群算法[J].控制與決策,2009,24(8):1132?1136.