本發(fā)明涉及一種多終端協(xié)同接入網(wǎng)絡(luò)方法,尤其適用于一種基于spark的并行化遺傳算法求解多終端協(xié)同接入網(wǎng)絡(luò)方法
技術(shù)背景
spark是一個(gè)開(kāi)源的分布式計(jì)算框架,它基于彈性分布式數(shù)據(jù)集(rdd),rdd采用先進(jìn)的有向無(wú)環(huán)圖機(jī)制支持循環(huán)數(shù)據(jù)流操作,通過(guò)一次迭代導(dǎo)入內(nèi)存就可以完成多次迭代,類似于geneticalgorithm這樣需要大量迭代的算法非常適合在spark平臺(tái)上運(yùn)算。
遺傳算法(geneticalgorithm)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過(guò)程的計(jì)算模型,是一種通過(guò)模擬自然進(jìn)化過(guò)程搜索最優(yōu)解的方法。傳統(tǒng)的遺傳算法所進(jìn)行的交叉、變異、選擇等操作都是以個(gè)體的集合即種群為單位進(jìn)行的,對(duì)于每個(gè)個(gè)體都具有一定的并行性,所以遺傳算法具有天然的并行性,尤其當(dāng)處理大規(guī)模數(shù)據(jù)集時(shí),各個(gè)子種群間可實(shí)現(xiàn)完全的并行化處理。
多終端協(xié)同網(wǎng)絡(luò)是指多個(gè)終端之間以協(xié)同的方式共享廣域網(wǎng)通信能力,共同為用戶提供業(yè)務(wù),從而擺脫單個(gè)終端在性能、處理能力等方面的局限性,實(shí)現(xiàn)終端和網(wǎng)絡(luò)資源的高效利用。
隨著通信網(wǎng)絡(luò)技術(shù)和終端設(shè)備的不斷發(fā)展,用戶業(yè)務(wù)可選擇的終端和接入方式逐漸多樣化。為了克服單一無(wú)線接入技術(shù)的性能瓶頸,充分利用用戶周圍的終端和網(wǎng)絡(luò)資源,多終端協(xié)同通信模式應(yīng)運(yùn)而生。在多終端多網(wǎng)絡(luò)環(huán)境下,如何選擇合適的終端為用戶服務(wù)是一個(gè)難題,而基于spark的遺傳算法并行化多終端網(wǎng)絡(luò)選擇可以有效改善。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述技術(shù)問(wèn)題,提供一種方法簡(jiǎn)單,執(zhí)行效率高,有效降低了網(wǎng)絡(luò)終端優(yōu)選的計(jì)算量和復(fù)雜度,在多個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)并行化遺傳算法的基于spark的并行化遺傳算法求解多終端協(xié)同接入網(wǎng)絡(luò)方法。
為實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明的基于spark的并行化遺傳算法求解多終端協(xié)同接入網(wǎng)絡(luò)方法,選擇適合的多個(gè)通信終端集與大型服務(wù)器協(xié)同工作執(zhí)行數(shù)據(jù)業(yè)務(wù),步驟如下:
大型服務(wù)器確認(rèn)接入各個(gè)通信終端的數(shù)量和每個(gè)通信終端的網(wǎng)絡(luò)終端參數(shù);
大型服務(wù)器將所有的網(wǎng)絡(luò)終端參數(shù)信息存儲(chǔ)于集群的hdfs目錄中;
大型服務(wù)器以spark集群的方式切分儲(chǔ)存在hdfs目錄中的網(wǎng)絡(luò)終端參數(shù)信息;
對(duì)切分后的網(wǎng)絡(luò)終端參數(shù)信息進(jìn)行基于spark的并行化遺傳算法,從而得到適合當(dāng)前的多終端協(xié)同接入網(wǎng)絡(luò)方案的最終代種群數(shù)據(jù);
對(duì)最終代種群數(shù)據(jù)尋優(yōu),從而得到最適合當(dāng)前的多終端協(xié)同接入網(wǎng)絡(luò)方案;
大型服務(wù)器利用最適合當(dāng)前的多終端協(xié)同接入網(wǎng)絡(luò)方案與方案中的多個(gè)通信終端進(jìn)行并行化網(wǎng)絡(luò)通信。
進(jìn)一步的選擇步驟如下:
步驟1.根據(jù)需求將大型服務(wù)器的所有網(wǎng)絡(luò)終端參數(shù)進(jìn)行遺傳算法初始化,將初始化后的變量參數(shù)轉(zhuǎn)換為二進(jìn)制,將每個(gè)二進(jìn)制化后的參數(shù)變量作為個(gè)體樣本逐行存儲(chǔ)于大型服務(wù)器集群的hdfs中形成所有通信終端的初始種群樣本數(shù)據(jù);
步驟2.根據(jù)需要尋求終端的數(shù)量設(shè)定spark集群節(jié)點(diǎn)數(shù)量,將初始種群樣本數(shù)據(jù)按種群樣本數(shù)據(jù)個(gè)體總數(shù)/spark集群節(jié)點(diǎn)數(shù)的方式平均切分成多個(gè)基于spark集群的子種群;
步驟3.利用遺傳算法對(duì)多個(gè)基于spark集群的子種群中的各個(gè)終端參數(shù)變量進(jìn)行全局進(jìn)化尋優(yōu),以重排序的方法在進(jìn)化階段打亂子代各自子種群個(gè)體分布,合并所有子種群個(gè)體后進(jìn)行自然選擇,得到最終代種群個(gè)體;
步驟4.利用spark的apis函數(shù)reducebykey對(duì)所有最終代種群個(gè)體的適應(yīng)度進(jìn)行排序,得到全局適應(yīng)度符合所需終端要求的多個(gè)最優(yōu)個(gè)體,再對(duì)多個(gè)最優(yōu)個(gè)體解碼得到終端權(quán)值參數(shù),根據(jù)最優(yōu)終端權(quán)值參數(shù)值從候選終端中選擇最優(yōu)參數(shù)集,比較當(dāng)前終端集所能提供的數(shù)據(jù)速率rc是否滿足用戶需求數(shù)據(jù)速率rt,若滿足則結(jié)束選擇,否則返回步驟1繼續(xù)選取,直到選取最優(yōu)的終端集作為最優(yōu)多終端協(xié)同接入網(wǎng)絡(luò)方案;
步驟5.大型服務(wù)器利用最優(yōu)多終端協(xié)同接入網(wǎng)絡(luò)方案與相應(yīng)的通信終端進(jìn)行并行化網(wǎng)絡(luò)通信。
步驟3所述重排序的方法在進(jìn)化階段打亂子代各自子種群個(gè)體分布后合并所有子種群進(jìn)行自然選擇的步驟根據(jù)需要可進(jìn)行多次迭代循環(huán)操作,該步驟使個(gè)體在進(jìn)化空間內(nèi)盡可能分散,保持種群參數(shù)個(gè)體的獨(dú)立性,避免種群中大量個(gè)體都指向同一終端參數(shù),從而有效提高最終代個(gè)體種群選取終端參數(shù)的準(zhǔn)確率,當(dāng)滿足預(yù)設(shè)的迭代次數(shù)后輸出最終代個(gè)體種群進(jìn)行后續(xù)操作。
進(jìn)行全局進(jìn)化尋優(yōu)得到最終代種群個(gè)體的具體步驟為:
步驟3.1:在基于spark集群的子種群中啟動(dòng)apis函數(shù)map生成進(jìn)化過(guò)程,每個(gè)集群節(jié)點(diǎn)分別對(duì)切分后的子種群創(chuàng)建種群rdd;
步驟3.2:利用函數(shù)map對(duì)種群rdd執(zhí)行交叉操作,生成新的種群rdd’;
步驟3.3:對(duì)生成新的種群rdd’執(zhí)行變異操作得到種群rdd”;
步驟3.4:根據(jù)適應(yīng)度函數(shù)分別計(jì)算新生成的種群rdd”每個(gè)個(gè)體的相對(duì)適應(yīng)度值,將個(gè)體的適應(yīng)度與參數(shù)變量以鍵值對(duì)<適應(yīng)度,參數(shù)>的形式進(jìn)行儲(chǔ)存;
步驟3.5:合并所有的子種群,根據(jù)個(gè)體的相對(duì)適應(yīng)度值,執(zhí)行輪盤賭算法操作,選出進(jìn)入下一代的最優(yōu)個(gè)體;
步驟3.6:若滿足預(yù)設(shè)迭代次數(shù)條件,輸出最終代的種群,結(jié)束;若不滿足迭代次數(shù)條件,執(zhí)行步驟3.2進(jìn)行下一輪迭代。
所述步驟3.2進(jìn)一步為:
通過(guò)定義種群rdd全局列表,在每個(gè)spark集群節(jié)點(diǎn)上對(duì)全局樣本進(jìn)行交叉操作,利用函數(shù)take對(duì)各個(gè)spark集群節(jié)點(diǎn)上創(chuàng)建的全部種群rdd采樣,利用函數(shù)parallelize平均存儲(chǔ)到兩個(gè)種群rdd中,通過(guò)組成鍵值對(duì)的形式將兩個(gè)種群rdd分別作為隨機(jī)配對(duì)交叉的兩個(gè)父代;通過(guò)產(chǎn)生隨機(jī)數(shù)的方式來(lái)判斷染色體對(duì)是否進(jìn)行交叉,判斷結(jié)果與預(yù)定的交叉概率pc進(jìn)行比較選出種群中需要進(jìn)行交叉操作的染色體對(duì),然后隨機(jī)確定染色體對(duì)某一基因座后的位置為交叉點(diǎn),在該點(diǎn)相互交換兩個(gè)配對(duì)個(gè)體的部分染色體,最終輸出這兩個(gè)新染色體,將新染色體替換舊染色體生成新的種群rdd’。
所述步驟3.3進(jìn)一步為:
對(duì)完成交叉操作后的種群rdd’進(jìn)行變異操作:使用函數(shù)map逐條讀取交叉產(chǎn)生的染色體編碼,遍歷每個(gè)染色體的每一位基因座并產(chǎn)生隨機(jī)數(shù),將其與預(yù)定的變異概率pm進(jìn)行比較選出染色體中需要進(jìn)行變異操作的基因座進(jìn)行判斷,對(duì)滿足變異條件的基因座進(jìn)行取反操作,從而產(chǎn)出一個(gè)新的染色體對(duì)象;否則直接輸出該染色體對(duì)象,最后生成變異后的種群rdd”。
有益效果:本申請(qǐng)利用spark集群基于內(nèi)存分布式運(yùn)算的特性,把初始化后的網(wǎng)絡(luò)終端參數(shù)群按(種群個(gè)體總數(shù)/spark集群節(jié)點(diǎn)數(shù))平均切分成多個(gè)子種群分布在集群各個(gè)節(jié)點(diǎn)中實(shí)現(xiàn)并行化運(yùn)算,重排序打亂進(jìn)化階段子代各自子種群個(gè)體,使其在進(jìn)化空間中盡可能分散,保持種群參數(shù)個(gè)體的獨(dú)立性,避免了種群中大量個(gè)體都指向同一終端參數(shù),出現(xiàn)終端參數(shù)重復(fù)的問(wèn)題,并通過(guò)充分發(fā)揮了遺傳算法的潛能,分析適合當(dāng)前接入網(wǎng)絡(luò)的終端信息參數(shù),從中快速選取符合需求的最優(yōu)終端集,完成終端選擇。該方法執(zhí)行效率高,有效降低了網(wǎng)絡(luò)終端優(yōu)選的計(jì)算量和復(fù)雜度,提高選擇多終端協(xié)同接入網(wǎng)絡(luò)時(shí)業(yè)務(wù)的服務(wù)質(zhì)量和傳輸?shù)母咝浴?/p>
附圖說(shuō)明
圖1是本發(fā)明的整體流程圖;
圖2是本發(fā)明的交叉過(guò)程示意圖;
圖3是本發(fā)明的變異過(guò)程示意圖;
圖4是本發(fā)明的選擇多終端協(xié)同接入網(wǎng)絡(luò)過(guò)程示意圖;
具體實(shí)施方式
下面結(jié)合附圖對(duì)本申請(qǐng)的一個(gè)實(shí)施例做進(jìn)一步說(shuō)明:
如圖1所示,本發(fā)明的基于spark的并行化遺傳算法求解多終端協(xié)同接入網(wǎng)絡(luò)方法,選擇適合的多個(gè)通信終端集與大型服務(wù)器協(xié)同工作執(zhí)行數(shù)據(jù)業(yè)務(wù),步驟如下:
大型服務(wù)器確認(rèn)接入各個(gè)通信終端的數(shù)量和每個(gè)通信終端的網(wǎng)絡(luò)終端參數(shù);
大型服務(wù)器將所有的網(wǎng)絡(luò)終端參數(shù)信息存儲(chǔ)于集群的hdfs目錄中;
大型服務(wù)器以spark集群的方式切分儲(chǔ)存在hdfs目錄中的網(wǎng)絡(luò)終端參數(shù)信息;
對(duì)切分后的網(wǎng)絡(luò)終端參數(shù)信息進(jìn)行基于spark的并行化遺傳算法,從而得到適合當(dāng)前的多終端協(xié)同接入網(wǎng)絡(luò)方案的最終代種群數(shù)據(jù);
對(duì)最終代種群數(shù)據(jù)尋優(yōu),從而得到最適合當(dāng)前的多終端協(xié)同接入網(wǎng)絡(luò)方案;
大型服務(wù)器利用最適合當(dāng)前的多終端協(xié)同接入網(wǎng)絡(luò)方案與方案中的多個(gè)通信終端進(jìn)行并行化網(wǎng)絡(luò)通信。
進(jìn)一步的選擇步驟如下:
步驟1:根據(jù)需求將大型服務(wù)器的所有網(wǎng)絡(luò)終端參數(shù)進(jìn)行遺傳算法初始化,將初始化后的變量參數(shù)轉(zhuǎn)換為二進(jìn)制,將每個(gè)二進(jìn)制化后的參數(shù)變量作為個(gè)體樣本逐行存儲(chǔ)于大型服務(wù)器集群的hdfs中形成所有通信終端的初始種群樣本數(shù)據(jù);
步驟2:根據(jù)需要尋求終端的數(shù)量設(shè)定spark集群節(jié)點(diǎn)數(shù)量,將初始種群樣本數(shù)據(jù)按種群樣本數(shù)據(jù)個(gè)體總數(shù)/spark集群節(jié)點(diǎn)數(shù)的方式平均切分成多個(gè)基于spark集群的子種群;
步驟3:利用遺傳算法對(duì)多個(gè)基于spark集群的子種群中的各個(gè)終端參數(shù)變量進(jìn)行全局進(jìn)化尋優(yōu),以重排序的方法在進(jìn)化階段打亂子代各自子種群個(gè)體分布,合并所有子種群個(gè)體后進(jìn)行自然選擇,得到最終代種群個(gè)體,其具體步驟為:
步驟3.1:在基于spark集群的子種群中啟動(dòng)apis函數(shù)map生成進(jìn)化過(guò)程,每個(gè)集群節(jié)點(diǎn)分別對(duì)切分后的子種群創(chuàng)建種群rdd;
步驟3.2:利用函數(shù)map對(duì)種群rdd執(zhí)行交叉操作,生成新的種群rdd’:
如圖2所示,通過(guò)定義種群rdd全局列表,在每個(gè)spark集群節(jié)點(diǎn)上對(duì)全局樣本進(jìn)行交叉操作,利用函數(shù)take對(duì)各個(gè)spark集群節(jié)點(diǎn)上創(chuàng)建的全部種群rdd采樣,利用函數(shù)parallelize平均存儲(chǔ)到兩個(gè)種群rdd中,通過(guò)組成鍵值對(duì)的形式將兩個(gè)種群rdd分別作為隨機(jī)配對(duì)交叉的兩個(gè)父代;通過(guò)產(chǎn)生隨機(jī)數(shù)的方式來(lái)判斷染色體對(duì)是否進(jìn)行交叉,判斷結(jié)果與預(yù)定的交叉概率pc進(jìn)行比較選出種群中需要進(jìn)行交叉操作的染色體對(duì),然后隨機(jī)確定染色體對(duì)某一基因座后的位置為交叉點(diǎn),在該點(diǎn)相互交換兩個(gè)配對(duì)個(gè)體的部分染色體,最終輸出這兩個(gè)新染色體,將新染色體替換舊染色體生成新的種群rdd’;
重排序的方法打亂進(jìn)化階段子代各自子種群個(gè)體分布后合并所有子種群進(jìn)行自然選擇的步驟根據(jù)需要可進(jìn)行多次迭代循環(huán)操作,該步驟使個(gè)體在進(jìn)化空間內(nèi)盡可能分散,保持種群參數(shù)個(gè)體的獨(dú)立性,避免種群中大量個(gè)體都指向同一終端參數(shù),從而有效提高最終代個(gè)體種群選取終端參數(shù)的準(zhǔn)確率,當(dāng)滿足預(yù)設(shè)的迭代次數(shù)后輸出最終代個(gè)體種群進(jìn)行后續(xù)操作。
步驟3.3:對(duì)生成新的種群rdd’執(zhí)行變異操作得到種群rdd”:
如圖3所示,對(duì)完成交叉操作后的種群rdd進(jìn)行變異操作:使用函數(shù)map逐條讀取交叉產(chǎn)生的染色體編碼,遍歷每個(gè)染色體的每一位基因座并產(chǎn)生隨機(jī)數(shù),將其與預(yù)定的變異概率pm進(jìn)行比較選出染色體中需要進(jìn)行變異操作的基因座進(jìn)行判斷,對(duì)滿足變異條件的基因座進(jìn)行取反操作,從而產(chǎn)出一個(gè)新的染色體對(duì)象;否則直接輸出該染色體對(duì)象,最后生成變異后的種群rdd”;
步驟3.4:根據(jù)適應(yīng)度函數(shù)分別計(jì)算新生成的種群rdd”每個(gè)個(gè)體的相對(duì)適應(yīng)度值;將個(gè)體的適應(yīng)度與參數(shù)變量以鍵值對(duì)<適應(yīng)度,參數(shù)>的形式進(jìn)行儲(chǔ)存。
步驟3.5:合并所有的子種群,根據(jù)個(gè)體的相對(duì)適應(yīng)度值,執(zhí)行輪盤賭算法操作,選出進(jìn)入下一代的最優(yōu)個(gè)體;
步驟3.6:若滿足預(yù)設(shè)迭代次數(shù)條件,輸出最終代的種群,結(jié)束;若不滿足迭代次數(shù)條件,執(zhí)行步驟3.2進(jìn)行下一輪迭代。
步驟4:如圖4所示利用spark的apis函數(shù)reducebykey對(duì)所有最終代種群個(gè)體的適應(yīng)度進(jìn)行排序,得到全局適應(yīng)度符合所需終端要求的多個(gè)最優(yōu)個(gè)體,再對(duì)多個(gè)最優(yōu)個(gè)體解碼得到終端權(quán)值參數(shù),根據(jù)最優(yōu)終端權(quán)值參數(shù)值從候選終端中選擇最優(yōu)參數(shù)集,比較當(dāng)前終端集所能提供的數(shù)據(jù)速率rc是否滿足用戶需求數(shù)據(jù)速率rt,若滿足則結(jié)束選擇,否則返回步驟1繼續(xù)選取,直到選取最優(yōu)的終端集作為最優(yōu)多終端協(xié)同接入網(wǎng)絡(luò)方案;
步驟5.大型服務(wù)器利用最優(yōu)多終端協(xié)同接入網(wǎng)絡(luò)方案與相應(yīng)的通信終端進(jìn)行并行化網(wǎng)絡(luò)通信。