專利名稱::一種基于云計算平臺的物流配送方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及物流配送領(lǐng)域,尤其涉及一種基于云計算平臺的物流配送方法。
背景技術(shù):
:物流配送是物流活動中直接與消費者相連的環(huán)節(jié),在物流各項成本中,配送成本占了相當(dāng)高的比例。配送線路安排是否合理,對配送速度、成本、效益影響很大,在配送用戶量大、配送節(jié)點多的情況下配送路線的確定更為復(fù)雜。采用科學(xué)合理的方法對配送路徑進行規(guī)劃安排是物流配送的一個重要環(huán)節(jié)。當(dāng)前物流配送的路徑規(guī)劃主要采用常規(guī)的最短路徑計算方法,如迪杰斯特拉算法(Dijkstra)、弗洛伊德算法(Floyed)、SPFA算法(ShortestPathFasterAlgorithm)等,以上算法都只應(yīng)用于路徑節(jié)點較少、路徑簡單的應(yīng)用中,當(dāng)路徑節(jié)點數(shù)量增多、路徑復(fù)雜的情況,算法的計算路徑的速度緩慢,甚至無法接受。隨著物流行業(yè)的迅猛發(fā)展,傳統(tǒng)地物流路徑計算方式已經(jīng)不能適應(yīng)當(dāng)前大規(guī)模的物流分發(fā)配送的需求,針對這種情況,目前主要采用分級、分組配送的方式來減少路徑節(jié)點的數(shù)量,將路徑規(guī)劃出主干線和支干線來減少路徑計算的時間,但因引入主干線上和各物流分發(fā)中心負(fù)載不堪重負(fù),運營成本大幅提高,而支干線上又因配送分散人力物力資源無法動態(tài)協(xié)調(diào),造成人力物力資源的極大浪費。在現(xiàn)有技術(shù)中,CN102278996公開了一種使用蟻群優(yōu)化算法進行路徑規(guī)劃的方法,然而,蟻群優(yōu)化算法作為一種群體智能算法,收斂速度較慢,相當(dāng)耗時。隨著物流配送規(guī)模的發(fā)展,配送的節(jié)點越來越多,路徑規(guī)劃的難度越來越大,傳統(tǒng)的運行于單機的優(yōu)化算法已不能滿足目前的需求,高效、快速地物流配送方法成為一個亟待解決的難題。
發(fā)明內(nèi)容為了解決上述技術(shù)問題,本發(fā)明將蟻群優(yōu)化算法應(yīng)用于物流配送的路徑規(guī)劃中,并基于hadoop云計算平臺實現(xiàn)蟻群優(yōu)化算法的并行化處理,實現(xiàn)大規(guī)模的物流配送。本發(fā)明利用hadoop平臺的HDFS(HadoopDistributedFileSystem)分布式文件系統(tǒng)和MapReduce并行編程框架實現(xiàn)蟻群優(yōu)化算法,通過MapReduce將蟻群優(yōu)化算法并行化,加速每輪迭代時間,并利用HDFS分布式文件系統(tǒng)來存儲參數(shù)和中間文件,利用HDFS的高效率、高可靠性來提高蟻群優(yōu)化算法的參數(shù)讀取更新速度,加速路徑搜索進程。具體地,為解決其技術(shù)問題,本發(fā)明所采用的技術(shù)方案為:一種基于云計算平臺的物流配送方法,其步驟包括:5)獲取每個配送節(jié)點的坐標(biāo)信息;6)從HDFS讀取參數(shù)并初始化蟻群算法,并構(gòu)建節(jié)點距離矩陣和路徑轉(zhuǎn)移概率矩陣;7)通過所述基本參數(shù)、節(jié)點距離矩陣、路徑轉(zhuǎn)移概率矩陣來進行啟發(fā)式的路徑搜索,將基本的蟻群優(yōu)化算法并行化改寫MapReduce的結(jié)構(gòu);8)輸出蟻群優(yōu)化算法搜索到的最短路徑信息,并根據(jù)所述最短路徑信息進行物流配送。其中,步驟2)中數(shù)據(jù)參數(shù)存儲于HDFS分布式文件系統(tǒng),通過map任務(wù)將參數(shù)數(shù)據(jù)讀取,利用MapReduce的默認(rèn)輸入格式讀取參數(shù)。步驟3)中路徑搜索為每一只螞蟻建立一個map任務(wù),并開始路徑搜索,搜索的結(jié)果經(jīng)過combiner合并化簡輸出結(jié)果并輸出到HDFS臨時空間,然后再經(jīng)過partition重新分區(qū)將數(shù)據(jù)映射到reduce,reduce對map所找到的最短路徑進行信息素更新。圖1為基于云計算平臺Hadoop的蟻群優(yōu)化算法流程圖;圖2為hadoop集群上運行蟻群優(yōu)化算法的示意圖;圖3為參數(shù)處理的map流程圖;圖4為reduce任務(wù)處理示意圖;圖5為mapReduce迭代過程示意圖;圖6為mapReduce過程以及各map/reduce對應(yīng)蟻群的基本行為不意·圖7為輸出的最短路徑的結(jié)果示意圖。具體實施例方式本發(fā)明利用云計算平臺實現(xiàn)大規(guī)模的路徑規(guī)劃,實現(xiàn)快速、高效的物流配送。物流配送問題就是在給定的η個待配送的節(jié)點集合C(I,2,...,η)中找出每個節(jié)點只經(jīng)過一次且最后回到起點的最短路徑的封閉回路。該最短路徑的目標(biāo)函數(shù)可定義為:η_IMinA=^(,+1)+(η,I)£=1其中d(i,i+1)表示第i和第i+1個節(jié)點之間的距離,d(n,I)表示第η個節(jié)點和第I個節(jié)點的距離,其中第I個節(jié)點為起點。如圖1所示,是基于云計算平臺Hadoop的蟻群優(yōu)化算法流程圖。在獲取η個配送節(jié)點的坐標(biāo)信息之后,隨機生成m條配送路徑,并分配給m只螞蟻,其中η為配送節(jié)點的數(shù)目,m為蟻群優(yōu)化算法中螞蟻的初始數(shù)目。其中蟻群算法的運行參數(shù)存放到HDFS(HadoopDistributedFileSystem),主要參數(shù)包括啟發(fā)因子、期望因子、信息素蒸發(fā)速率、螞蟻數(shù)量、迭代次數(shù)、每次迭代的信息素總和以及每個配送節(jié)點的坐標(biāo)數(shù)據(jù)。配送節(jié)點的數(shù)目決定了當(dāng)前路徑規(guī)劃的規(guī)模,是影響最終物流配送的重要因素。當(dāng)配送節(jié)點較多時,節(jié)點的坐標(biāo)數(shù)據(jù)是一個非常大的輸入?yún)?shù),按照傳統(tǒng)的輸入方式會出現(xiàn)讀取參數(shù)非常慢的情況且內(nèi)存占用率極高,甚至無法求出最優(yōu)的配送路徑。本發(fā)明利用分布式文件系統(tǒng)來存儲節(jié)點坐標(biāo)數(shù)據(jù),可以很好的利用分布式文件系統(tǒng)的大容量、高效率儲存等性能,可避免算法的瓶頸出現(xiàn)在數(shù)據(jù)10上,讓算法更專注于路徑搜索上。通過圖1可以看出hadoop集群下蟻群優(yōu)化算法的運行過程和數(shù)據(jù)流向,MapReduce在程序運行中主要分兩個階段,一個是參數(shù)讀取階段,一個是路徑搜索和信息素更新階段,如圖2所示,下面針對這兩個階段進行詳細講解。蟻群優(yōu)化算法的基本參數(shù)和中間參數(shù)都存放在HDFS文件系統(tǒng)上,為充分利用分布式存儲和分布式運算的優(yōu)勢,本發(fā)明將蟻群參數(shù)的讀取處理采用MapReduce的分布式結(jié)構(gòu)來處理。蟻群優(yōu)化算法的map操作主要是將程序分解然后運行于分布式機群,reduce操作是針對map任務(wù)的輸出結(jié)果進行化簡,最終求出最優(yōu)路徑,以此來提高程序運行效率。第一階段從HDFS讀取參數(shù)并初始化蟻群算法,并構(gòu)建節(jié)點距離矩陣和路徑轉(zhuǎn)移概率矩陣。節(jié)點距離距陣是節(jié)點與節(jié)點之間的距離信息的一個二維數(shù)組,路徑轉(zhuǎn)移概率矩陣是指當(dāng)前節(jié)點轉(zhuǎn)移到其它一個節(jié)點的概率組成的一個矩陣。路徑轉(zhuǎn)移概率是通過當(dāng)前節(jié)點到另外一個節(jié)點的啟發(fā)因子和路徑上的信息素加權(quán)計算之后在所有未經(jīng)過的節(jié)點中的一個比例計算而來,所有未經(jīng)過的節(jié)點的轉(zhuǎn)移概率之和為1,其它已經(jīng)經(jīng)過的節(jié)點轉(zhuǎn)移概率為O?;緟?shù)格式:第一行:啟發(fā)因子(ALPHA1.0)第二行:期望因子(BETA2.0)第三行:信息素蒸發(fā)速率(R0U0.5)第四行:螞蟻數(shù)量(N_ANT_C0UNT50)第五行:迭代次數(shù)(N_IT_C0UNT1000)第六行:信息素總量(DBQ100.0)節(jié)點輸入數(shù)據(jù):第一行:節(jié)點數(shù)量(N_CITY_C0UNT1000)第二行:第O個節(jié)點索引和坐標(biāo)信息(02343)第三行:第I個節(jié)點索引和坐標(biāo)信息(14235)...數(shù)據(jù)參數(shù)是文件的方式存儲于HDFS分布式文件系統(tǒng),通過map任務(wù)將參數(shù)數(shù)據(jù)讀取,利用mapReduce的默認(rèn)輸入格式讀取參數(shù),map輸入key為參數(shù)存在文件中的行數(shù),輸入value是參數(shù)字符串(如BETA=2.0),通過內(nèi)部map解析,輸出key值為參數(shù)名(如BETA),輸出參數(shù)value值為參數(shù)值(如2.0)。首先建立一個工作任務(wù)配置JobConfconf=newJobConf(getConf(),getClass())Jobjob=newJob(conf,“mraco”)設(shè)置任務(wù)的輸入?yún)?shù)路徑,以及輸入輸出格式FileInputFormat.addlnputPath(conf,newPath(“/user/hadoop/input”)FileOutputFormat.setOutputPath(conf,newPath(“/user/hadoop/output,,)設(shè)置輸入輸出格式j(luò)ob.setOutputKeyClass(Intffritable.class)job.setOutputValue(Text,class)分別設(shè)置任務(wù)的Map、Combiner、Reduce的類job.setMapperClass(AcoMapper.class)job.setCombinerClass(AcoReducer.class)job.setReducerClass(AcoReducer.class)任務(wù)一旦設(shè)置完成就進入運行階段,多個map任務(wù)從HDFS分布式文件系統(tǒng)中讀取數(shù)據(jù),經(jīng)過內(nèi)部解析,輸出到第一階段的reduce任務(wù)進行處理。參數(shù)處理的map流程圖如圖3所示。在第一階段參數(shù)處理的map任務(wù)階段完成后,map輸出的結(jié)果存放在HDFS分布式文件系統(tǒng)臨時空間上,作為第一階段參數(shù)處理的reduce任務(wù)的輸入,經(jīng)reduce任務(wù)的處理后蟻群優(yōu)化算法的基本參數(shù)輸入內(nèi)存,為第二階段的MapReduce的任務(wù)做準(zhǔn)備,reduce任務(wù)處理流程如圖4所示。第一階段reduce任務(wù)通過讀取map輸出的中間結(jié)果,對參數(shù)數(shù)據(jù)進行分析然后存入全局?jǐn)?shù)據(jù)區(qū),供第二階段所有的map任務(wù)使用。由于每個map輸出的key值是唯一的,為了避免reduce任務(wù)的利用率太低,這里采用Partition欺騙的方式優(yōu)化中間結(jié)果傳送的方式,通過重構(gòu)Partition函數(shù)對map輸出的數(shù)據(jù)重新分區(qū),構(gòu)建一個虛假的映射關(guān)系將大量分散的數(shù)據(jù)集中映射到reduce任務(wù)上統(tǒng)一處理,這里采用hash函數(shù)重構(gòu)映射關(guān)系。完成第一階段的MapReduce之后,為每只螞蟻構(gòu)建一個map任務(wù),進入每只螞蟻各至的獨立搜索過程。通過第一階段獲得的啟發(fā)因子等基本參數(shù)、節(jié)點路徑矩陣、轉(zhuǎn)移概率矩陣來進行啟發(fā)式的路徑搜索,將基本的蟻群優(yōu)化算法并行化改寫MapReduce的結(jié)構(gòu)運行于分布式集群中來提高蟻群算法的效率。圖5為每一次蟻群優(yōu)化算法迭代的MapReduce迭代過程。路徑搜索為每一只螞蟻建立一個map任務(wù),并開始路徑搜索,搜索的結(jié)果經(jīng)過combiner合并化簡輸出結(jié)果并輸出到HDFS臨時空間,然后再經(jīng)過partition重新分區(qū)將數(shù)據(jù)映射到reduCe,reduCe對map所找到的最短路徑進行信息素更新。然后進入下一次迭代周期,直到達到指定的迭代次數(shù)或找到理論上的最優(yōu)解。(I)路徑搜索的map任務(wù)InKey:螞蟻編號或索引值,螞蟻數(shù)量取自第一階段的參數(shù)InValue:起始節(jié)點,可以隨機產(chǎn)生也可以預(yù)定義OutKey:最短路徑所包含的一條分支,由兩個節(jié)點組成OutValue:當(dāng)前分支在全路徑中所占比例,后續(xù)按比例更新信息Map任務(wù)是蟻群優(yōu)化算法的重點,每只螞蟻分別建立一個map任務(wù)進行路徑搜索,完成路徑搜索之后,輸出一條最優(yōu)路徑。為螞蟻定義類CAnt,分別包含ChooseNextCity、Move、Search、CalPathLenth、Init方法用來定義螞蟻的行為。Init:每只螞蟻在計算路徑之前需要做的初始化工作,包括起始節(jié)點、初始化路徑表等。Search:開始路徑搜索,找到最短路徑,本方法由ChooseNextCity和Move兩個方法組成。ChooseNextCity:在未走過的節(jié)點中選擇一個當(dāng)前最優(yōu)節(jié)點,利用基本蟻群算法的轉(zhuǎn)移概率計算公式,計算出下一個將要選擇的節(jié)點?;巨D(zhuǎn)移概率計算公式如下權(quán)利要求1.一種基于云計算平臺的物流配送方法,其步驟包括:1)獲取每個配送節(jié)點的坐標(biāo)信息;2)從HDFS讀取參數(shù)并初始化蟻群算法,并構(gòu)建節(jié)點距離矩陣和路徑轉(zhuǎn)移概率矩陣;3)通過所述基本參數(shù)、節(jié)點距離矩陣、路徑轉(zhuǎn)移概率矩陣來進行啟發(fā)式的路徑搜索,將基本的蟻群優(yōu)化算法并行化改寫MapReduce的結(jié)構(gòu);4)輸出蟻群優(yōu)化算法搜索到的最短路徑信息,并根據(jù)所述最短路徑信息進行物流配送。2.根據(jù)權(quán)利要求1所述的基于云計算平臺的物流配送方法,其特征在于,步驟2)中數(shù)據(jù)參數(shù)存儲于HDFS分布式文件系統(tǒng),通過map任務(wù)將參數(shù)數(shù)據(jù)讀取,利用MapReduce的默認(rèn)輸入格式讀取參數(shù)。3.根據(jù)權(quán)利要求1所述的基于云計算平臺的物流配送方法,其特征在于,步驟3)中路徑搜索為每一只螞蟻建立一個map任務(wù),并開始路徑搜索,搜索的結(jié)果經(jīng)過combiner合并化簡輸出結(jié)果并輸出到HDFS臨時空間,然后再經(jīng)過partition重新分區(qū)將數(shù)據(jù)映射到reduce,reduce對map所找到的最短路徑進行信息素更新。全文摘要本發(fā)明公開了一種基于云計算平臺的物流配送方法,將蟻群優(yōu)化算法應(yīng)用于物流配送的路徑規(guī)劃中,并基于hadoop云計算平臺實現(xiàn)蟻群優(yōu)化算法的并行化處理,實現(xiàn)大規(guī)模的物流配送。本發(fā)明利用hadoop平臺的HDFS(HadoopDistributedFileSystem)分布式文件系統(tǒng)和MapReduce并行編程框架實現(xiàn)蟻群優(yōu)化算法,通過MapReduce將蟻群優(yōu)化算法并行化,加速每輪迭代時間,并利用HDFS分布式文件系統(tǒng)來存儲參數(shù)和中間文件,利用HDFS的高效率、高可靠性來提高蟻群優(yōu)化算法的參數(shù)讀取更新速度,加速路徑搜索進程。文檔編號G06Q10/08GK103226762SQ201310133110公開日2013年7月31日申請日期2013年4月17日優(yōu)先權(quán)日2013年4月17日發(fā)明者黃強,蔣勇,蔡凱,劉斌申請人:深圳東原電子有限公司