本發(fā)明涉及一種基于雙修補(bǔ)機(jī)制的災(zāi)后多中心物資配送方法及系統(tǒng),屬于物資配送。
背景技術(shù):
1、災(zāi)后物資配送問題,是車輛路徑問題的一種具體應(yīng)用,其每個配送點的時間要求均需兼顧。所以,災(zāi)后物資配送問題通常描述為時間累積cvrp,其目標(biāo)為到達(dá)所有配送點的時間總和最小化,這有別于傳統(tǒng)cvrp以最小化車輛總路程的目標(biāo)。
2、在實際的災(zāi)后物資配送問題中,管理部門會根據(jù)受災(zāi)區(qū)域情況,配備多個物資配送中心,如此會更高效地進(jìn)行物資配送。該問題屬于多中心ccvrp,屬于典型的組合優(yōu)化問題。相較于cvrp,mdccvrp在車輛數(shù)上的約束不僅體現(xiàn)在總車輛數(shù)上,而且每個配送中心處駐扎的最大車輛數(shù)亦有約束。
3、可見,為克服車輛數(shù)上的約束問題,亟需一種基于雙修補(bǔ)機(jī)制的災(zāi)后多中心物資配送方法及系統(tǒng)。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種基于雙修補(bǔ)機(jī)制的災(zāi)后多中心物資配送方法及系統(tǒng),提出了一種雙修補(bǔ)機(jī)制,盡可能地修補(bǔ)種群中的不可行個體,使得算法的搜索能夠朝向可行區(qū)域進(jìn)行,以獲得最優(yōu)的物資配送策略。
2、為達(dá)到上述目的,本發(fā)明是采用下述技術(shù)方案實現(xiàn)的:
3、第一方面,本發(fā)明提供了一種基于雙修補(bǔ)機(jī)制的災(zāi)后多中心物資配送方法,包括:
4、獲取受災(zāi)區(qū)域內(nèi)的路網(wǎng)基礎(chǔ)數(shù)據(jù)、車輛數(shù)據(jù)、配送點數(shù)據(jù)和受災(zāi)點數(shù)據(jù);
5、將所述路網(wǎng)基礎(chǔ)數(shù)據(jù)、車輛數(shù)據(jù)、配送點數(shù)據(jù)和受災(zāi)點數(shù)據(jù)輸入至預(yù)設(shè)的物資配送路徑規(guī)劃模型中,獲得所述物資配送路徑規(guī)劃模型生成的物資配送策略,其中,
6、所述物資配送路徑規(guī)劃模型以車輛由各配送點出發(fā)到達(dá)所有受災(zāi)點的總時間最小化為優(yōu)化問題,通過模因演算法求解優(yōu)化問題得到路徑規(guī)劃的最優(yōu)解,所述模因演算法通過雙修補(bǔ)機(jī)制修補(bǔ)初始種群和進(jìn)化過程中存在車輛約束違背的個體。
7、進(jìn)一步的,預(yù)設(shè)的所述物資配送路徑規(guī)劃模型的目標(biāo)函數(shù)和約束條件包括:
8、???????????????????????????????????(1)
9、????????????????????????????????(2)
10、????????????????????(3)
11、??????????????????(4)
12、?????????????????????????????????????(5)
13、???????????????????????????????????????????(6)
14、???????????????????????????????????????(7)
15、???????????????????????????????????(8)
16、?????????????(9)
17、??????????????????????????????????????????(10)
18、?????????????????????????????????????(11)
19、???????????????????????????????????(12)
20、??????????????????????(13)
21、其中,g=(v,e)為受災(zāi)區(qū)域,其中頂點集v包括 v c和 v d兩個子集合, v c={v1,v2,v3,…,vn}表示受災(zāi)點集合, v d={vn+1,v?n+2,v?n+3,…,v?n+m}表示配送中心點集合,e為邊集,代表道路,(vi,vj)?∈e(vi,vj∈v)為任意兩個頂點間的邊;車隊k駐扎在 v d各車場處,車容量為q,中心d∈ v d處的最大駐扎車輛數(shù)為kd;令車輛k到達(dá)配送點i處的時間為,配送點i的物資需求量為qi;若配送點i未被車輛k服務(wù),則為0;
22、公式(1)為目標(biāo)函數(shù);公式(2)確保車輛到達(dá)受災(zāi)點后,隨即離開;公式(3)約定每個受災(zāi)點僅配送一次物資;公式(4)確保車輛最終回到相同的配送中心點,公式(5)約束每輛車最多進(jìn)行一趟服務(wù);公式(6)、(7)約束了總車輛數(shù)和每個配送中心點的最大車輛數(shù);公式(8)約束車輛不能超過最大負(fù)載量q;公式(9)則給出了車輛達(dá)到受災(zāi)點的時間計算方式,并通過充分大的數(shù)p避免子路徑;公式(10)-(11)定義了車輛到達(dá)時間;公式(12)-(13)定義了二值變量分別表示車輛k是否從配送中心點d出發(fā)以及其是否經(jīng)過邊(i,j);
23、目標(biāo)函數(shù)的解表示為:
24、?(14)
25、其中,|rd|表示由車場d出發(fā)的路徑數(shù),問題的解由所有車場路徑組成。
26、進(jìn)一步的,所述通過模因演算法求解優(yōu)化問題得到路徑規(guī)劃的最優(yōu)解包括:
27、生成初始種群,對于種群中存在車輛約束違背的個體,采用雙修補(bǔ)機(jī)制修補(bǔ);
28、將種群中的最優(yōu)可行解保存至s中;
29、判斷算法是否達(dá)到終止條件,若是,則將s作為路徑規(guī)劃的最優(yōu)解,否則,初始化迭代次數(shù),執(zhí)行迭代步驟,直至達(dá)到預(yù)設(shè)的最大迭代次數(shù)后,采用雙修補(bǔ)機(jī)制修補(bǔ)種群中存在車輛約束違背的個體,更新s;
30、所述迭代步驟包括:
31、采用交叉算子生成子個體,對生成的子個體進(jìn)行局部搜索;
32、判斷子個體是否是種群的非克隆個體,若是,則將子個體加入種群,對種群中的個體進(jìn)行排序,并剔除最末個體。
33、進(jìn)一步的,所述初始種群由多策略初始種群生成方法生成,所述多策略初始種群生成方法包括基于聚類的初始化方法、基于最佳插入法的初始化方法和隨機(jī)性方法,其中,
34、基于聚類的初始化方法產(chǎn)生的個體數(shù)量為1,基于最佳插入法的初始化方法產(chǎn)生的個體數(shù)量為1,隨機(jī)性方法產(chǎn)生的個體數(shù)量為種群規(guī)模減去2。
35、進(jìn)一步的,對于初始種群中存在車輛約束違背的個體,采用雙修補(bǔ)機(jī)制修補(bǔ),包括:
36、檢查當(dāng)前個體中的車輛數(shù)是否超出了預(yù)設(shè)的最大車輛數(shù),如果是,執(zhí)行修補(bǔ)步驟;如果不是,算法結(jié)束;
37、創(chuàng)建當(dāng)前個體的副本,對副本實施?reptotv?修補(bǔ);
38、檢查修補(bǔ)后的副本的總車輛數(shù)是否在允許的范圍內(nèi),如果是,將副本賦值為原始個體,接受修補(bǔ)結(jié)果,如果不是,執(zhí)行進(jìn)一步修補(bǔ);
39、如果修補(bǔ)后的當(dāng)前個體中存在配送中心點車輛越界問題,對當(dāng)前個體實施repdepv?修補(bǔ)。
40、進(jìn)一步的,所述reptotv?修補(bǔ),包括:
41、步驟1?oldind←ind;
42、步驟2?drs←{};
43、步驟3?保留ind中|k|負(fù)載量多的路徑,將其余路徑移至drs;
44、步驟4?ics[|k|]←{{},{},…,{}};
45、步驟5?對于drs中的每條路徑r
46、步驟5.1?對于r中的受災(zāi)點按照物資需求量由大到小排序;
47、步驟5.2?對于r中的每個受災(zāi)點r[i](i=1→|r|)
48、如果ind中存在路徑ind[j],使得插入受災(zāi)點r[i]后,仍能夠滿足容量約束q,則ics[j]←ics[j]∪r[i]。否則返回oldind,結(jié)束修補(bǔ);
49、步驟6?對于ind中每條路徑ind[j]?(j=1→|k|)
50、采用最佳插入法將ics[j]中的所有受災(zāi)點插入到路徑ind[j]中;
51、步驟7?返回ind。
52、進(jìn)一步的,所述repdepv?修補(bǔ),包括:
53、步驟1?定義長度為配送中心數(shù)的數(shù)組cnt[|vd|],用以統(tǒng)計各配送中心處已用車輛數(shù),初始化所有元素為0;
54、步驟2?對于ind中的每條路徑r
55、步驟2.1?mincst←infvalue,infvalue為實數(shù)范圍內(nèi)的最大值;
56、步驟2.2?對于車輛數(shù)未滿配送中心d∈vd?(kd>cnt[d])
57、?步驟2.2.1?計算更換路徑r的配送中心為d所產(chǎn)生的額外車輛行駛時間time(r,d),其計算公式如下:
58、?(15)
59、其中,表示配送中心至r中第1個配送點的時間;
60、步驟2.2.2?如果mincst>time(r,?d),則mincst←time(r,?d),d*←d;
61、步驟2.3?以d*替換r的配送中心;
62、步驟2.4?cnt[d*]←cnt[d*]+?1;
63、步驟3?對ind采用單點插入及交換兩種傳統(tǒng)局部搜索算子進(jìn)行鄰域搜索;
64、步驟4?返回ind。
65、第二方面,本發(fā)明提供了一種基于雙修補(bǔ)機(jī)制的災(zāi)后多中心物資配送系統(tǒng),其特征在于,所述系統(tǒng)包括:
66、獲取模塊:用于獲取受災(zāi)區(qū)域內(nèi)的路網(wǎng)基礎(chǔ)數(shù)據(jù)、車輛數(shù)據(jù)、配送點數(shù)據(jù)和受災(zāi)點數(shù)據(jù);
67、路徑規(guī)劃模塊:用于將所述路網(wǎng)基礎(chǔ)數(shù)據(jù)、車輛數(shù)據(jù)、配送點數(shù)據(jù)和受災(zāi)點數(shù)據(jù)輸入至預(yù)設(shè)的物資配送路徑規(guī)劃模型中,獲得所述物資配送路徑規(guī)劃模型生成的物資配送策略,其中,
68、所述物資配送路徑規(guī)劃模型以車輛由各配送點出發(fā)到達(dá)所有受災(zāi)點的總時間最小化為優(yōu)化問題,通過模因演算法求解優(yōu)化問題得到路徑規(guī)劃的最優(yōu)解,所述模因演算法通過雙修補(bǔ)機(jī)制修補(bǔ)初始種群和進(jìn)化過程中存在車輛約束違背的個體。
69、第三方面,本發(fā)明提供了一種計算機(jī)設(shè)備,包括處理器及存儲介質(zhì);
70、所述存儲介質(zhì)用于存儲指令;
71、所述處理器用于根據(jù)所述指令進(jìn)行操作以執(zhí)行根據(jù)第一方面所述方法的步驟。
72、第四方面,本發(fā)明提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,其特征在于,該程序被處理器執(zhí)行時實現(xiàn)第一方面所述方法的步驟。
73、與現(xiàn)有技術(shù)相比,本發(fā)明所達(dá)到的有益效果:
74、該基于雙修補(bǔ)機(jī)制的災(zāi)后多中心物資配送方法及系統(tǒng),提出了一種雙修補(bǔ)機(jī)制,盡可能地修補(bǔ)種群中的不可行個體,使得算法的搜索能夠朝向可行區(qū)域進(jìn)行,以獲得最優(yōu)的物資配送策略。