一種基于gpu加速的蟻群算法優(yōu)化方法
【專利摘要】本發(fā)明公開(kāi)了一種基于GPU加速的蟻群算法優(yōu)化方法,包括以下步驟:1:初始化TSP問(wèn)題定義數(shù)據(jù),初始化蟻群參數(shù);2:定義兩個(gè)GPU內(nèi)核,為路徑創(chuàng)建內(nèi)核和信息素更新內(nèi)核,并初始化內(nèi)核;3:路徑創(chuàng)建內(nèi)核將m只螞蟻分別對(duì)應(yīng)到GPU的m個(gè)工作組,一個(gè)工作組內(nèi)設(shè)置了n個(gè)工作項(xiàng),每個(gè)工作組內(nèi)的n個(gè)工作項(xiàng)并行讀取計(jì)算參數(shù)到工作組本地內(nèi)存,m只螞蟻并行進(jìn)行路徑創(chuàng)建,每只螞蟻的路徑創(chuàng)建又由工作組的n個(gè)工作項(xiàng)并行計(jì)算;4:信息素更新內(nèi)核首先并行對(duì)信息素?cái)?shù)組進(jìn)行揮發(fā)操作,然后并行更新所有螞蟻?zhàn)哌^(guò)路徑上的信息素值;5:GPU輸出計(jì)算結(jié)果;本發(fā)明可以大幅縮短TSP問(wèn)題求解時(shí)間、減少功耗、節(jié)約硬件成本。
【專利說(shuō)明】一種基于GPU加速的蟻群算法優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)處理【技術(shù)領(lǐng)域】,涉及一種基于圖形處理單元(GPU, GraphicsProcessing Unit)加速的蟻群算法優(yōu)化方法。
【背景技術(shù)】
[0002]蟻群算法是一種基于種群的啟發(fā)式搜索算法,常用于求解優(yōu)化問(wèn)題的近似解。此類優(yōu)化問(wèn)題一般都可以轉(zhuǎn)換為旅行商問(wèn)題(TSP, Travel Salesman Problem)。目前TSP問(wèn)題已經(jīng)被證明是NP難的問(wèn)題,它在運(yùn)籌學(xué)和計(jì)算機(jī)科學(xué)理論中是一個(gè)非常重要的問(wèn)題。蟻群算法最早應(yīng)用于解決TSP問(wèn)題。TSP問(wèn)題的目標(biāo)是在一個(gè)有向帶權(quán)完全圖中尋找最小權(quán)值的漢密爾頓回路,目前蟻群優(yōu)化算法已應(yīng)用于許多組合優(yōu)化問(wèn)題,包括蛋白質(zhì)折疊或路由車輛的二次分配問(wèn)題,很多派生的方法已經(jīng)應(yīng)用于實(shí)變量動(dòng)力學(xué)問(wèn)題,隨機(jī)問(wèn)題,多目標(biāo)并行的實(shí)現(xiàn)。
[0003]GPU是一種專用的圖形渲染設(shè)備。最初GPU是專用于圖形處理的硬件,然而自從2006年以來(lái),越來(lái)越多的研究人員研究了利用GPU進(jìn)行通用計(jì)算的GPGPU領(lǐng)域,各大廠商也推出了專用的GPGPU語(yǔ)言,比如CUDA、OPENCL等。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是優(yōu)化原有基于CPU的計(jì)算方法,使之支持并行計(jì)算,設(shè)計(jì)出一套算法利用圖像處理器(GPU)加速執(zhí)行,使得蟻群算法在單個(gè)主機(jī)上求解TSP問(wèn)題的計(jì)算時(shí)間最多縮短為原有方法的1/23。
[0005]本發(fā)明所采用的技術(shù)方案是:一種基于GPU加速的蟻群算法優(yōu)化方法,其特征在于,包括以下步驟:
[0006]步驟1:初始化TSP問(wèn)題定義數(shù)據(jù),初始化蟻群參數(shù);
[0007]步驟2:定義兩個(gè)GPU內(nèi)核,所述的兩個(gè)GPU內(nèi)核為路徑創(chuàng)建內(nèi)核和信息素更新內(nèi)核,并初始化所述的兩個(gè)GPU內(nèi)核;
[0008]步驟3:路徑創(chuàng)建內(nèi)核將m只螞蟻分別對(duì)應(yīng)到GPU的m個(gè)工作組,一個(gè)工作組內(nèi)設(shè)置了 η個(gè)工作項(xiàng),每個(gè)工作組內(nèi)的η個(gè)工作項(xiàng)并行讀取計(jì)算參數(shù)到工作組本地內(nèi)存,m只螞蟻并行進(jìn)行路徑創(chuàng)建,每只螞蟻的路徑創(chuàng)建又由工作組的η個(gè)工作項(xiàng)并行計(jì)算;
[0009]步驟4:信息素更新內(nèi)核第一次執(zhí)行設(shè)置為η*η個(gè)工作項(xiàng),并行對(duì)信息素?cái)?shù)組進(jìn)行揮發(fā)操作,第二次執(zhí)行設(shè)置為與路徑創(chuàng)建內(nèi)核相同的工作組和工作項(xiàng)參數(shù),通過(guò)原子操作方法并行更新所有螞蟻?zhàn)哌^(guò)路徑的信息素;
[0010]步驟5:重復(fù)執(zhí)行步驟3和4直到達(dá)到設(shè)定的結(jié)束條件,GPU輸出計(jì)算結(jié)果。
[0011]作為優(yōu)選,步驟3的具體實(shí)現(xiàn)包括以下子步驟:
[0012]步驟3.1:每個(gè)工作項(xiàng)由一個(gè)二維的編號(hào)(bid,tid)表示,其中bid為工作組編號(hào),tid為工作組內(nèi)的工作項(xiàng)編號(hào);
[0013]步驟3.2:每個(gè)工作組內(nèi)工作項(xiàng)并行讀取其對(duì)應(yīng)螞蟻的η條數(shù)據(jù),其中禁忌表、城市是否可訪問(wèn)數(shù)組讀入到工作組本地內(nèi)存,城市距離和信息素?cái)?shù)組讀入GPU全局內(nèi)存;
[0014]步驟3.3:每個(gè)工作項(xiàng)按照式一并行計(jì)算轉(zhuǎn)移概率,計(jì)算結(jié)果保存到該工作組的本地內(nèi)存數(shù)組 P [n] = (P1, ρ2,.., ρη},
[0015]
【權(quán)利要求】
1.一種基于GPU加速的蟻群算法優(yōu)化方法,其特征在于,包括以下步驟: 步驟1:初始化TSP問(wèn)題定義數(shù)據(jù),初始化蟻群參數(shù); 步驟2:定義兩個(gè)GPU內(nèi)核,所述的兩個(gè)GPU內(nèi)核為路徑創(chuàng)建內(nèi)核和信息素更新內(nèi)核,并初始化所述的兩個(gè)GPU內(nèi)核; 步驟3:路徑創(chuàng)建內(nèi)核將m只螞蟻分別對(duì)應(yīng)到GPU的m個(gè)工作組,一個(gè)工作組內(nèi)設(shè)置了η個(gè)工作項(xiàng),每個(gè)工作組內(nèi)的η個(gè)工作項(xiàng)并行讀取計(jì)算參數(shù)到工作組本地內(nèi)存,m只螞蟻并行進(jìn)行路徑創(chuàng)建,每只螞蟻的路徑創(chuàng)建又由工作組的η個(gè)工作項(xiàng)并行計(jì)算; 步驟4:信息素更新內(nèi)核第一次執(zhí)行設(shè)置為η*η個(gè)工作項(xiàng),并行對(duì)信息素?cái)?shù)組進(jìn)行揮發(fā)操作,第二次執(zhí)行設(shè)置為與路徑創(chuàng)建內(nèi)核相同的工作組和工作項(xiàng)參數(shù),通過(guò)原子操作方法并行更新所有螞蟻?zhàn)哌^(guò)路徑的信息素; 步驟5:重復(fù)執(zhí)行步驟3和4直到達(dá)到設(shè)定的結(jié)束條件,GPU輸出計(jì)算結(jié)果。
2.根據(jù)權(quán)利要求1所述的基于GPU加速的蟻群算法優(yōu)化方法,其特征在于:步驟3的具體實(shí)現(xiàn)包括以下子步驟: 步驟3.1:每個(gè)工作項(xiàng)由一個(gè)二維的編號(hào)(bid,tid)表示,其中bid為工作組編號(hào),tid為工作組內(nèi)的工作項(xiàng)編號(hào); 步驟3.2:每個(gè)工作組內(nèi)工作項(xiàng)并行讀取其對(duì)應(yīng)螞蟻的η條數(shù)據(jù),其中禁忌表、城市是否可訪問(wèn)數(shù)組讀入到工作組本地內(nèi)存,城市距離和信息素?cái)?shù)組讀入GPU全局內(nèi)存; 步驟3.3:每個(gè)工作項(xiàng)按照式一并行計(jì)算轉(zhuǎn)移概率,計(jì)算結(jié)果保存到該工作組的本地內(nèi)存數(shù)組 P [η] = {ρ!,ρ2,.., ρη},
3.根據(jù)權(quán)利要求2所述的基于GPU加速的蟻群算法優(yōu)化方法,其特征在于:步驟3.4中所述的并行輪盤賭算法,其具體實(shí)現(xiàn)包括以下子步驟: 步驟3.4.1:并行計(jì)算轉(zhuǎn)移概率的前綴和; 步驟3.4.2:并行計(jì)算隨機(jī)值與轉(zhuǎn)移概率之差的絕對(duì)值; 步驟3.4.3:采用并行歸約的方法尋找絕對(duì)值最小的城市。
4.根據(jù)權(quán)利要求2所述的基于GPU加速的蟻群算法優(yōu)化方法,其特征在于:步驟4的具體實(shí)現(xiàn)包括以下子步驟: 步驟4.1:如果傳遞的功能參數(shù)編號(hào)為O,則按照下述式二并行計(jì)算信息素?fù)]發(fā)后的值
— (1- P^iJ, V(i,/) e L (式二 )其中P為小于I的正數(shù),代表信息素?fù)]發(fā)率,L為路徑的集合; 步驟4.2:如果傳遞的功能參數(shù)編號(hào)為1,更新螞蟻?zhàn)哌^(guò)路徑上的信息素,其計(jì)算公式如下:
【文檔編號(hào)】G06N3/00GK103955443SQ201410147893
【公開(kāi)日】2014年7月30日 申請(qǐng)日期:2014年4月14日 優(yōu)先權(quán)日:2014年4月14日
【發(fā)明者】何發(fā)智, 周毅, 侯能 申請(qǐng)人:武漢大學(xué)