国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于隨機森林與變鄰域下降的車輛合乘求解

2020-07-06 13:35:36郭羽含胡德甲
計算機工程與應(yīng)用 2020年13期
關(guān)鍵詞:合乘鄰域約束

郭羽含,胡德甲

遼寧工程技術(shù)大學(xué) 軟件學(xué)院,遼寧 葫蘆島 125105

1 引言

隨著經(jīng)濟快速發(fā)展,人們生活水平日益提高,城市中私家車數(shù)量大量增加。隨之帶來的環(huán)境污染、交通堵塞以及私家車花費問題日漸嚴重[1],引領(lǐng)網(wǎng)約車、拼車系統(tǒng)等車輛合乘模式的逐漸興起[2]。生活中上下班拼車、回家拼車以及旅游拼車越來越普遍。車輛合乘是指有車人員和無車人員之間或有車人員與有車人員之間的一種合作形式,費用由合乘組成員共同分擔。隨著私家車數(shù)量的持續(xù)上升,無車人越來越少,長期車輛合乘應(yīng)運而生。長期車輛合乘主要是根據(jù)大中型城市上班族上下班時間接近、上班地點集中以及居住較分散的現(xiàn)狀以及解決上下班時間交通壓力過大的問題提出的上下班模式,是指具有合乘意愿且乘車路線相近的人們分成同一小組乘坐同一輛車,合乘費用分攤的模式。這種合乘關(guān)系是長期合作的關(guān)系,可以降低臨時或短期合乘的安全隱患,并減少臨時或短期合乘進行多次匹配所帶來的資源浪費。

合乘問題的研究對于物流優(yōu)化以及城市交通規(guī)劃具有重大意義。國內(nèi)外學(xué)者對合乘路徑規(guī)劃、車輛調(diào)度以及模型算法等領(lǐng)域研究較多。例如Dakroub等[3]針對小規(guī)模車輛合乘問題提出一種改進的遺傳算法高效求解合乘方案;Filcek 等[4]研究考慮司機與乘客之間不同標準多目標合乘優(yōu)化問題,通過加權(quán)函數(shù)聚合所有目標,應(yīng)用貪婪算法為全部合乘組生成最佳行駛路線;宋超超等[5]提出基于吸引粒子群算法解決多車輛合乘問題;邵增珍等[6]提出的兩階段聚類啟發(fā)式優(yōu)化算法解決多車輛合乘問題,第一階段通過提出匹配度概念將多車輛合乘問題轉(zhuǎn)化為單車輛匹配問題,第二階段基于“先驗聚類”插入思想提高算法效率。對客戶屬性以及滿意度研究較少,現(xiàn)在比較熱門的出行安全事件引起人們重視[2]。何勝學(xué)等[7]通過建立考慮性別偏好影響的通勤合乘匹配模型,利用同性同組占優(yōu)原則進行合乘匹配,分別處理了同性合乘、異性合乘、特別組合三種性別合乘模型,一定程度上提升了用戶滿意度但僅僅考慮了性別單個屬性。過去的研究主要是針對小規(guī)模車輛合乘問題的研究[8-10],He 等[11]通過建立考慮性別偏好影響的通勤合乘匹配模型,利用同性同組占優(yōu)原則進行合乘匹配,分別建立了同性合乘、異性合乘、特別組合三種性別合乘模型,一定程度上提高了安全系數(shù)和提升了用戶滿意度,但該方法僅考慮了合乘人員性別單個屬性,具有一定的局限性。盧佐安等[12]通過考慮客戶滿意度的因素,建立客戶滿意度最大和運輸成本最小雙目標函數(shù)優(yōu)化模型,較好的平衡了客戶滿意度和運輸成本,但過多考慮時間屬性,并沒有對其他因素進行較為全面的考慮。進一步,張玉青[13]提出通過KANO模型對用戶需求進行績效指標分類,根據(jù)分類結(jié)果,將不同用戶需求進行區(qū)別處理,該方法通過了解不同層次用戶需求,識別影響客戶滿意的至關(guān)重要的因素,利用KANO模型對屬性進行分類,以車輛合乘用戶進行檢驗,得到了較高的客戶滿意度。王銀虎[14]建立出租車服務(wù)水平最高為優(yōu)化目標,將合乘出租車動態(tài)調(diào)度拆解成一系列靜態(tài)時間點保證出租車司機在一定時間內(nèi)使得資源以及收入達到最優(yōu),進而提出“上下”雙層算法進行優(yōu)化,上層算法進行調(diào)參,下層算法基于上層算法得到參數(shù)對模型進行求解。可見,在合乘問題中,為了提高乘客在某一方面的滿意度,側(cè)重考慮某一乘客屬性以及乘客滿意度因素,得到的結(jié)果均有所提高。對于大規(guī)模車輛合乘問題求解不適用,存在求解時間長,得不到較優(yōu)解以及用戶屬性考慮片面達不到用戶滿意的問題。

針對長期車輛合乘問題(Long-Term Car Pooling Problem,LTCPP),為了最大化用戶對合乘結(jié)果的滿意度,需要考慮多個優(yōu)化目標。本文首先構(gòu)建了帶有車容量和時間窗約束的多目標優(yōu)化模型,在將其轉(zhuǎn)化單目標優(yōu)化時,權(quán)重因子的選擇對優(yōu)化結(jié)果起著至關(guān)重要的作用。人為設(shè)定權(quán)重因子主觀性太強,達不到絕大多數(shù)用戶的滿意。因此,本文使用機器學(xué)習(xí)中決策樹集成算法Bagging模型中的隨機森林算法對歷史合乘數(shù)據(jù)及用戶滿意度進行分析,并得到各個指標對用戶滿意度的重要性影響,作為對應(yīng)優(yōu)化目標的權(quán)重。然后,提出了一種求解LTCPP的變鄰域下降(Variable Neighborhood Descent,VND)算法。實驗結(jié)果表明,結(jié)合隨機森林算法和VND算法能夠高效地為LTCPP提供高質(zhì)量的解決方案。

2 問題定義和數(shù)學(xué)模型

對LTCPP問題進行了簡單定義,介紹了數(shù)學(xué)模型。

2.1 問題定義

LTCPP就是指假設(shè)每個參與者都擁有一輛私家車,并且他們的目的地相同或相近,出行時間接近。合乘前概況圖如圖1 所示。每位參與者都有各自的最早出發(fā)時間、期望出發(fā)時間、最晚到達時間、期望到達時間、年齡、性別、最長駕駛時間以及最大載客量。每位參與者也有獨乘和合乘兩種方式,在滿足每位參與者時間窗和車容量的前提下,將所有用戶分成若干個合乘組(一個合乘組形成后如圖2 所示),每個小組中的合乘者按照輪流駕駛的原則利用算法最小化所有小組出行花費的總和。

圖1 合乘前用戶出行示意圖

圖2 合乘后用戶出行示意圖

2.2 數(shù)學(xué)模型

2.2.1常量定義

C:參與合乘的用戶集合;

0:目的地;

E:邊集合,

K:合乘組集合;

Xi:用戶i性別,用0、1表示;

Ai:用戶i年齡;

Ti:用戶i所能接受的最長駕駛時間;

Ri:用戶i的車容量;

edti:用戶i的最早出發(fā)時間;

qdti:用戶i期望出發(fā)時間;

lati:用戶i最晚到達時間;

qati:用戶i期望到達時間;

(xi,xj):用戶i的地理坐標;

dij:用戶i、j間的距離;

tij:用戶i前往用戶j所需的駕駛時間;

ρ:懲罰系數(shù)。

2.2.2變量定義

yik變量表示用戶i是否在合乘組k中,0表示用戶i不在合乘組k中,1表示在。

φi變量表示用戶i出行方式,0 表示用戶i與其他用戶合乘,1表示用戶i單獨出行。

ti變量表示用戶i當司機時的實際駕駛時間。

Agek變量表示合乘組k內(nèi)成員年齡Ai的平均值。

Xbk變量表示合乘組k的性別懲罰值,同性懲罰值為0,否則為1。

2.2.3目標函數(shù)及約束

LTCPP 以最小化所有用戶出行花費最小為優(yōu)化目標,即最小化所有合乘組出行花費之和。設(shè)k為一個合乘組用戶的集合,用戶h(h∈k)為某日合乘組k的司機,用戶h在滿足|k|≤Rh以及用戶i(i∈k)的時間窗的約束下從h出發(fā)依次走遍用戶i(i∈k?i≠h)最終到達目的地0即為可行路徑,從所有可行路徑中選擇最優(yōu)路徑。將所有用戶h(h∈k)的最優(yōu)路徑長度累加后除以合乘組k的成員數(shù)量|k|,即為合乘組k的平均每日出行花費。

此外,為了增加用戶滿意度,還需要最小化用戶實際出發(fā)/到達時間與期望的實際出發(fā)/到達時間的差距、合乘所產(chǎn)生的額外駕駛時間、用戶年齡與組內(nèi)平均年齡差值、用戶性別與組內(nèi)平均性別值差值以及單獨出行用戶數(shù)。將多個優(yōu)化目標的加權(quán)和作為目標函數(shù),并通過引入懲罰值來減少單獨出行的用戶數(shù)量。目標函數(shù)如公式(1)所示,其中,α、β、γ、δ、ε分別為所有合乘組平均每天行駛里程之和、所有用戶實際出發(fā)到達時間與期望出發(fā)到達時間差值之和、所有用戶擔任司機時實際駕駛時間與單獨出行時間差值之和、所有用戶年齡與組內(nèi)平均年齡差值之和、所有用戶性別與組內(nèi)平均性別值差值之和的權(quán)重因子。

s.t.

約束(2)確保滿足車容量約束,即合乘小組人數(shù)小于等于用戶車容量;約束(3)確保用戶h在合乘小組k中做司機的駕駛時間不超過其最大駕駛時間;約束(4)和(5)確保滿足用戶出發(fā)時間約束,即用戶h在合乘小組k中做司機時,確保用戶i的出發(fā)時間大于等于其最早出發(fā)時間;約束(6)和(7)確保滿足用戶到達時間約束,即用戶h在合乘小組k中做司機時,確保用戶i的到達時間小于等于其最晚到達時間;約束(8)~(10)確保若用戶i(或j)在司機h的行駛路徑中,則用戶i(或j)必須在合乘組k中;約束(11)確保用戶的出行方式一致性;約束(12)~(14)為二進制約束;約束(15)~(17)為非負約束。

3 隨機森林與變鄰域下降

介紹了使用隨機森林算法計算特征重要性的方法,以及求解LTCPP的VND算法。

3.1 隨機森林算法

LTCPP問題屬于多目標優(yōu)化問題,在將其轉(zhuǎn)化單目標優(yōu)化時,權(quán)重因子的選擇對優(yōu)化結(jié)果起著至關(guān)重要的作用。但現(xiàn)今權(quán)重因子的選擇大多憑經(jīng)驗人為設(shè)定,主觀性太強,袁麗莎等[15]提出了一種結(jié)合深度神經(jīng)網(wǎng)絡(luò)和隨機森林的手掌靜脈分類新方法,自動提取手掌靜脈特征并進行分類識別,避免了人工選擇特征提取算法的局限性。為了避免人為設(shè)定權(quán)重因子的主觀性,本文通過隨機森林算法根據(jù)歷史合乘組信息以及用戶滿意度,計算出各個特征對用戶滿意度的重要性影響,即采用特征重要性作為對應(yīng)優(yōu)化目標的權(quán)重因子。

3.1.1決策樹的構(gòu)造

特征和類別:

特征1(difD) 用戶與合乘組重心的距離;

特征2(difI) 用戶實際出發(fā)/到達時間與期望時間的時間差;

特征3(difT) 用戶合乘產(chǎn)生的額外駕駛時間;

特征4(difA) 用戶與合乘組平均年齡的差值;

特征5(sexD) 用戶所在合乘組的性別分布。

這5個特征對應(yīng)于目標函數(shù)中的5個優(yōu)化目標。

類別用戶對合乘組的滿意度評分,取值為1~10,共10個類別。

收集到歷史合乘組信息后,需要對每個用戶對應(yīng)的特征值進行計算,得到的特征值及類別將用于后續(xù)決策樹模型的訓(xùn)練,如表1為樣本集示例。

表1 樣本示例

特征值計算過程如下所示。

用(xk,yk)表示合乘組k的重心,則:

用戶i到合乘組k重心的距離difDi:

用戶i實際出發(fā)時間與期望出發(fā)時間差difDi:

用戶i實際到達時間與期望到達時間差difFi

用戶i實際的與理想的出發(fā)到達時間差difIi

用戶i參與合乘產(chǎn)生的額外駕駛時間:

用Agek表示合乘組k組內(nèi)平均年齡,則:

用戶i與合乘組k平均年齡的差值difAi:

用戶i所在合乘組的性別累加sexSi:

用戶i所在合乘組的成員數(shù)量MNi:

用戶i所在合乘組的性別分布sexDi,組內(nèi)成員全為同性sexDi取值為1,否則為0:

構(gòu)造決策樹,就需要根據(jù)樣本數(shù)據(jù)集的數(shù)據(jù)特征對數(shù)據(jù)集進行劃分,直到針對所有特征都劃分過,或劃分的數(shù)據(jù)子集的所有數(shù)據(jù)的類別標簽相同。劃分數(shù)據(jù)集的原則就是將無序的數(shù)據(jù)變得更加有序,也就是使數(shù)據(jù)集的熵值變得更小,而節(jié)點特征的選取都可以使數(shù)據(jù)集的熵值減小,從根節(jié)點到子節(jié)點選取的依據(jù)全都是選擇使熵值變化最大的特征,即選取信息增益最大的特征。

構(gòu)造決策樹過程如下。

(1)收集數(shù)據(jù):收集歷史合乘組信息以及用戶的滿意度評分。

(2)數(shù)據(jù)預(yù)處理:根據(jù)合乘組信息計算對應(yīng)的特征值,得到樣本數(shù)據(jù)集。決策樹構(gòu)造算法只適用于標稱型數(shù)據(jù),因此,還需要對連續(xù)型變量進行離散化處理。

(3)構(gòu)造模型:構(gòu)造決策樹模型。

(4)訓(xùn)練和測試模型:將數(shù)據(jù)分成訓(xùn)練集和測試集對決策樹模型進行訓(xùn)練和測試。

(5)使用模型:將完整的決策樹算法投入接下來的隨機森林。

3.1.2隨機森林

隨機森林是包含多個決策樹的模型,其輸出的類別是由單個樹輸出的類別的眾數(shù)而定,因此它要比單個決策樹模型具有更高的分類準確性。此外,隨機森林模型具有能夠輸出特征重要性的特點,本文根據(jù)這一特點來確定各優(yōu)化目標的權(quán)重,計算過程如下:

(1)從原始歷史合乘數(shù)據(jù)集中使用Bootstraping 方法隨機抽取n個訓(xùn)練樣本,共進行k輪抽取,得到k個訓(xùn)練集。k個訓(xùn)練集之間相互獨立,數(shù)據(jù)點可以有重復(fù)。

(2)對于k個訓(xùn)練集分別訓(xùn)練出k個決策樹模型。

(3)對于單個決策樹模型,每次劃分是根據(jù)信息增益選擇最好的特征進行劃分,直到該節(jié)點的所有訓(xùn)練樣本數(shù)據(jù)都屬于同一類。

(4)將生成的多棵決策樹組成隨機森林,按多棵樹分類器投票決定最終分類結(jié)果。

(5)計算特征重要性。

特征重要性即特征對分類結(jié)果的影響比重。特征重要性通常用Gini 指數(shù)或者袋外數(shù)據(jù)錯誤率作為評價指標來衡量。

本文以Gini指數(shù)作為衡量標準來計算特征重要性,下面是具體計算過程:

Gini指數(shù)又稱基尼不純度,表示樣本集合中一個隨機選中的樣本在子集中被分錯的概率。Gini 指數(shù)為這個樣本被選中的概率乘以它被分錯的概率。當一個節(jié)點中所有樣本都屬于同一個類別時,Gini指數(shù)為零。節(jié)點m的基尼指數(shù)為:

式中,K為類別個數(shù),pmk表示節(jié)點m中隨機選中一個樣本屬于k類別的概率。

特征j在節(jié)點i的重要性為選擇特征j對節(jié)點m進行一次劃分后Gini 指數(shù)差值,劃分后產(chǎn)生新的節(jié)點l、r,那么:

集合M表示決策樹i中特征j出現(xiàn)的節(jié)點集合,那么特征j在這棵樹上的重要性:

假設(shè)隨機森林中有n棵樹,那么特征j的全局重要性為通過特征j在單顆樹中的重要性的累加:

最后,將所有求得的特征重要性做歸一化處理:

3.2 變鄰域下降算法

變鄰域下降(VND)算法是順序地在多個鄰域內(nèi)搜索的啟發(fā)式算法,它的成功在于不同的鄰域結(jié)構(gòu)通常具有不同的局部最小值,因此VND 比一般的局部搜索算法更有可能搜索到全局最優(yōu)解。VND以隨機或結(jié)構(gòu)化的初始解開始,然后在當前解的當前鄰域內(nèi)進行探索,如果找到更好的解,則以新的解決方案作為當前解,返回第一個鄰域重復(fù)搜索過程,否則進入下一個鄰域探索。當探索完所有鄰域,無法找到比當前解更好的解決方案時,算法停止。算法1展示了VND的偽代碼。

算法1 變鄰域下降算法(VND)

1.構(gòu)造初始解s

2.定義鄰域結(jié)構(gòu){N1,N2,…,Nkmax}

3.Fortokmaxby 1

(1)找到s的最佳鄰居解

(2)If//當前解獲得改進

(3)End If

4.End For

5.Returns

基于該算法框架,本文將其用于求解LTCPP,3.2.1小節(jié)介紹了初始解的構(gòu)造方法,3.2.2小節(jié)介紹了4種鄰域結(jié)構(gòu),3.3.3 小節(jié)介紹了LTCPP 完整解決方案的求解方法。

3.2.1初始解的構(gòu)造

相比于隨機生成的初始解,一個設(shè)計良好的初始解可以縮短搜索到最優(yōu)解的時間。因此,本文提出如下方法來產(chǎn)生初始解決方案。

該方法的主要思路是按照用戶的地理分布,每次從用戶集合中選擇相距最遠的兩個用戶分別建立合乘小組,然后將與他們臨近的用戶分配到各自所在的合乘小組中,直至所有用戶都被分配到合乘組為止。初始解構(gòu)造方法的偽代碼如算法2所示。

算法2 初始解構(gòu)造方法

1.對所有用戶按照其坐標x+y的值進行排序,排序后的用戶存儲在集合U中

2.pools←{} //合乘小組集合

3.WhileU.size()!=0 do

(1)IfU.size()==1

U.remove(d1);

pools.add(pool);

break;

(2)End If

(3)選擇U中排列在第一位的用戶d1←U.get(0)建立一個合乘小組pool1,并將其從集合U中移除

(4)使Cpool1←Rd1-1 表示d1所在合乘組小組還可容納用戶數(shù)量

(5)While(Cpool1!=0)&&(U.size()!=0)do

從集合U選擇離d1最近的用戶i加入pool1,并將其從U中移除;

(6)End While

(7)pools.add(pool1)

(8)IfU.size()==0

break

(9)End If

(10)選擇U中排列最后一位的用戶d2←U.get(U.size()-1)建立一個合乘小組pool2,并將其從集合U中移除

(11)使Cpool2←Rd2-1 表示d2所在合乘組小組還可容納用戶數(shù)量

(12)While(Cpool2!=0)&&(U.size()!=0) do

從集合U選擇離d2最近的用戶j加入pool2,并將其從U中移除;

(13)End While

(14)pools.add(pool2)

4.End While

5.Returnpools

3.2.2鄰域設(shè)計

鄰域N(s)可以定義為鄰居解s′是通過對當前解s應(yīng)用某種變化得的},本文設(shè)計了4種鄰域結(jié)構(gòu),分別與分割、2-opt、移動、合并操作相關(guān)聯(lián)。這4 種鄰域會被順序地進行搜索。

(1)分割鄰域N1

分割鄰域N1(s)是通過對當前解s應(yīng)用分割操作得到的解的集合。對當前解s中所有合乘組(合乘組成員數(shù)量為1 的除外)應(yīng)用一次分割操作來獲得當前解s的一個鄰居解。分割操作即將一個合乘組分割為兩個新的合乘組,分割時需要考慮所有的可能情況。例如合乘組成員數(shù)量為4,則有1、3和2、2兩種分割方式,數(shù)字表示分割后新的合乘組成員數(shù)量。新的合乘組成員組成也是通過枚舉所有可能的組合找到能使得目標函數(shù)降低的分割方式。一旦合乘組找到使得目標函數(shù)降低的分割方式,則確認該分割操作,換下一個合乘組應(yīng)用分割操作。如圖3展示了1、3分割的一個例子。

圖3 分割操作

(2)2-opt鄰域N2

2-opt鄰域N2(s)是通過對當前解s應(yīng)用兩兩交換操作得到的解的集合。通過將當前解s中的所有合乘組與其他合乘組進行成員兩兩交換來獲得當前解s的鄰居解,該交換操作嘗試合乘組中的所有用戶,一旦交換后使得目標函數(shù)降低,則確認該交換,換下一個合乘組應(yīng)用交換操作。在圖4 中,通過將合乘小組(1)、(2)中的成員進行互換得到新的合乘小組。新的合乘組用戶與合乘組重心的距離更近。

圖4 2-opt操作

(3)移動鄰域N3

移動鄰域N3(s)是通過對當前解s應(yīng)用移動操作得到的解的集合。通過將當前解s中所有的合乘小組的成員移動到其他的合乘小組來獲得當前解s的鄰居解。移動后的合乘小組仍需滿足車容量約束。嘗試移動合乘組中的每一個用戶至其他合乘組,直到移動后使得目標函數(shù)降低,則確認該移動,換下一個合乘組進行移動。在圖5 中,合乘小組(2)中距離其他成員較遠的成員被移動到合乘組(1)中。

圖5 移動操作

(4)合并鄰域N4

合并鄰域N4(s)是通過對當前解s應(yīng)用合并操作得到的解的集合。通過將當前解s中組員數(shù)量未達到車容量的合乘小組進行兩兩合并來獲得當前解s的鄰居解。合并后的合乘小組需滿足車容量約束。嘗試將合乘組與其他每一個未達到車容量的合乘組進行合并,一旦合并后使得目標函數(shù)降低,則確認該合并操作,換下一個合乘組進行合并。在圖6中,相距很近的合乘小組(1)、(2)被合并為一個合乘小組。

圖6 合并操作

3.2.3完整解的求解方法

將LTCPP 的解表示為兩層結(jié)構(gòu)。第一層表示用戶的分組情況,第二層表示用戶擔任司機時的具體路由信息。該信息與每個用戶i∈C相關(guān)聯(lián),具體包括:用戶i擔任司機的行駛路徑Pi、接載合乘組成員的時間表Ci、行駛里程數(shù)disi、行駛時間timi、到達目的地時間arvi以及用戶是與其他用戶合乘還是單獨出行φi。解的結(jié)構(gòu)如圖7所示。

圖7 一個解決方案的表述

通過VND 算法可以得到用戶的分組情況,即得到了解的第一層信息。因此,接下來介紹如何根據(jù)分組信息得到LTCPP完整解決方案。

該問題是賦權(quán)哈密頓回路最小化問題,即給定n個點以及點與點間的距離,找到一條回路由指定的起點前往指定的終點,經(jīng)過圖中所有點且只經(jīng)過一次,要求整個回路的總距離最短。這一問題可以通過枚舉法進行求解,其計算量為(n-2)!。這種精確算法對于大多數(shù)問題是不可行的,但在本文中,一個合乘小組的成員數(shù)量通常不大于5,因此該問題規(guī)模非常小,完全可以使用枚舉法來獲得最優(yōu)的哈密頓回路。圖8(a)給出了一個計算實例,其中U1、U2、U3、U4 為同一合乘小組,通過對除起點和終點外的其他點的順序進行全排列,可以得到U1 作為司機時所有可能的行駛路徑如圖8(b)所示。路徑1的距離:(6+2+3.5+21)=32.2,類似地,可以得到路徑2、3、4、5、6 的距離分別為:35.5、34、37.5、34.5、35。因此路徑1 為U1 的最佳行駛距離,即R1={U1,U2,U3,U4},其他第二層解信息可以基于該變量得到。

圖8 哈密頓回路示例

在計算最短哈密頓回路時,進行時間窗檢查,對于不滿足時間窗約束的合乘組,通過將其不斷地劃分為更小的合乘組直到所有的合乘組都滿足時間窗約束。

4 實驗與分析

本章將仿真實驗,以驗證算法的有效性及效率,并對實驗結(jié)果進行分析。

4.1 實驗環(huán)境

本文所提出的算法均由Java 語言實現(xiàn)。實驗所用的計算機配置為2.7 GHz Intel Core i5CPU,8 GB 內(nèi)存,操作系統(tǒng)為OS High Sierra 10.13.6。

4.2 實驗數(shù)據(jù)

由于LTCPP 沒有基準數(shù)據(jù)集,因此,本文采用如下方法生成測試實例。以坐標原點(0,0)表示目的地,用戶地理坐標x、y取值范圍為[?60,60],用戶以3種分布方式:集中(C)、隨機(R)、混合(RC)分布在原點周圍,用戶數(shù)量分別設(shè)置為 100、200、400、600、800、1 000、1 500、2 000。所有測試實例均由程序生成。

4.3 實驗結(jié)果

用戶數(shù)量(Size)、訓(xùn)練集比例(Training set)以及測試集比例(Test set)對隨機森林得分(Score)的影響如表2所示,由于隨機森林隨機提取測試集,即使相同的用戶數(shù)據(jù)、訓(xùn)練集比例以及測試集比例也會得到不同的實驗結(jié)果,每次相同數(shù)據(jù)進行50 次實驗取平均值得到表中數(shù)據(jù),從表中數(shù)據(jù)可知,訓(xùn)練集比例以及測試集比例對所構(gòu)造的森林得分無較大影響,訓(xùn)練集比例取值為0.6時,森林得分較好;測試集比例不能過小,以免影響測試森林得分,無法公正評估森林準確性。隨著用戶數(shù)量的增加,得到的森林越加準確,到最后35 000個數(shù)據(jù)時,森林得分趨于穩(wěn)定,所以本文中取35 000 個用戶歷史數(shù)據(jù),訓(xùn)練集比例為0.6,測試集比例為0.4進行實驗。

表2 用戶數(shù)量、訓(xùn)練集測試集結(jié)果分析表

選取35 000個用戶歷史數(shù)據(jù),測試集比例為0.6,訓(xùn)練集比例為0.4,進行100 次實驗,因為隨機森林測試集選取的隨機性,每次得到的各項權(quán)重因子并不完全相同,取森林得分測試結(jié)果高于0.975的實驗,進行平均處理得到各項權(quán)重因子。部分實驗結(jié)果如表3所示。

通過隨機森林模型對歷史分組數(shù)據(jù)進行學(xué)習(xí),得到各個特征對用戶滿意度的影響權(quán)重。其中,特征difD的重要性為0.71,特征difI的重要性為0.14,特征difT的重要性為0.03,特征difA的重要性為0.04,特征sexD的重要性為0.07。特征重要性將作為下一階段采用VND 算法求解LTCPP 時目標函數(shù)中各優(yōu)化目標的權(quán)重,即α=0.71,β=0.14,γ=0.03,δ=0.04,ε=0.07。將與文獻[16]中的聚類蟻群算法(Clustering Ant Colony algorithm,CAC)進行對比,該文獻中的各優(yōu)化目標的權(quán)重均由人為設(shè)定。實驗結(jié)果如表4所示,其中,Size表示用戶數(shù)量,Rcar表示合乘后平均每天的出行車輛減少率,該值可以計算為:Rdis表示為合乘后平均每天用戶行駛里程減少率,Din表示平均用戶與合乘組的距離,Ain表示平均用戶與合乘組平均年齡的差值,Rs表示合乘組全為同性成員的比率,Tg表示平均每位用戶每天的實際出發(fā)到達時間與理想的時間差,Te表示合乘后平均每位用戶每天的額外駕駛時間,Tc表示算法求解時間,表示CAC算法在5個節(jié)點集群上計算時間,表示CAC算法在10個節(jié)點集群上計算時間。

表3 權(quán)重因子實驗結(jié)果

表4 實驗結(jié)果

4.4 結(jié)果分析

4.4.1有效性分析

為了驗證通過VND 算法得到的合乘方案的有效性,從指標Rcar、Rdis、Din、Ain、Rs、Tg、Te進行驗證。從表1可以看出,用戶參與合乘后平均每天可以減少Rcar=72%的出行車輛,每天總行駛里程減少Rdis=67%。用戶離合乘組重心的平均距離Din=2.4 km,這說明一個合乘組中的成員通常分布在以2.4 km 為半徑的圓形范圍內(nèi)。用戶與合乘組內(nèi)平均年齡的差值約為Ain=5歲。合乘組成員性別均相同的概率Rs=26%。用戶每天的實際出發(fā)到達時間與理想的時間差Tg=7 min。合乘后平均每位用戶每天的額外駕駛時間Te=7 min。

表5展示了通過VND獲得的合乘方案相較于CAC的改進百分比,值為正表示得到改進,反之,則表示未得到改進。從總體上來看,通過VND獲得的合乘方案,比CAC獲得的合乘方案在各個指標下均有一定程度的改進。其中,Din平均改進17%,這說明VND 得到的合乘方案,合乘組內(nèi)成員間距離更近。Rs平均改進31%,這說明VND 得到的合乘方案,合乘組內(nèi)成員性別多為同性。Te平均改進28%,這與Din相一致,合乘組內(nèi)成員距離越近,則用戶的額外駕駛時間越短。

表5 與CAC對比結(jié)果

4.4.2效率分析

圖9 展示了算法運行時間隨用戶數(shù)量的增長趨勢。其中CAC為文獻[16]中所提出的算法,DCAC是其在 Spark 上實現(xiàn)的分布式版本,DCAC(5 nodes)表示DCAC 在5 個節(jié)點集群上的運行時間,類似地,DCAC(10 nodes)表示集群節(jié)點個數(shù)為10。

圖9 算法運行時間

從圖中可以看出,兩種算法均隨著用戶數(shù)量的增加而增加。但很明顯,VND 算法的運行時間遠低于CAC算法,且VND 算法的增長趨勢要比CAC 算法平緩很多,這說明無論是處理小規(guī)模問題還是大規(guī)模問題VND 算法都表現(xiàn)出了較優(yōu)的性能。根據(jù)表4 中的實驗結(jié)果可以計算得到,VND要比CAC平均節(jié)省55%時間。此外,從圖中可以看出,對于用戶數(shù)量少于600 的小規(guī)模實例,VND 的運行時間低于CAC 和DCAC。但繼續(xù)增加用戶數(shù)量,集群計算的優(yōu)勢開始顯現(xiàn),DCAC 的運行時間要比VND 運行時間短。因此,在計算資源充足的條件,相比較VND,采用DCAC對大規(guī)模問題求解具有更高的時間效率。而在單機環(huán)境下,VND 要比CAC表現(xiàn)更好。

4.4.3案例分析

為了更好地理解和說明提出的多目標優(yōu)化模型和求解算法VND 如何為LTCPP 提供好的解決方案,以R-1為例進行案例分析。實例R-1包含100個用戶,用戶地理位置分布如圖10 所示。通過VND 算法獲得的分組結(jié)果如圖11所示,其中,具有相同圖案且用虛線連接的同戶被分在同一個合乘組。圖11所展示的分組即為合乘方案第一層信息,接下來再對合乘方案的第二層信息進行分析。

在合乘方案中,U1 單獨出行(φ1=1),從圖10可以看出,U1 距離其他用戶較遠,若將其與其他用戶分配到同一個合乘組,接載U1 會導(dǎo)致合乘組成員的額外駕駛時間增加,可能會違反用戶的最大駕駛時間約束,或?qū)е履繕撕瘮?shù)值增加。因此,將用戶額外駕駛時間作為優(yōu)化目標,可以使得分布過于零散的用戶偏向于單獨出行,旨在提升所有用戶的出行體驗。出于相同的原因,U90、U71、U37 等用戶也將單獨出行。

圖10 R-1地理位置分布

圖11 R-1分組結(jié)果

從圖11 可以看出,U38、U75、U94(φ38=φ75=φ94=0)為同一個合乘組,用戶數(shù)據(jù)如表6 所示。當一個合乘組產(chǎn)生后,VND 算法首先會檢查車容量約束。U38、U75、U94 的車容量均為4,而合乘組成員數(shù)量為3,所以沒有違反車容量約束。

表6 用戶數(shù)據(jù)

然后,為每個用戶計算其擔任司機時的最佳行駛路徑,即求解賦權(quán)哈密頓回路最小化問題。按照3.2.3 小節(jié)提出的方法,可以得到U38、U75、U94 的最佳行駛路徑。第一天,由U38 擔任司機,最佳行駛路徑為U38-U75-U94,第二天由U75 擔任司機,最佳行駛路徑為U75-U38-U94,第三天由U94 擔任司機,最佳行駛路徑為U94-U38-U75。之后3 人繼續(xù)輪流擔任每日的司機。詳細的出發(fā)到達時間如圖12所示。

圖12 出發(fā)到達時間

在計算用戶最佳行駛路徑,進行時間窗檢查,包括:(1)出發(fā)/到達時間窗約束;(2)最大駕駛時間約束。從圖12 可知,U38 每日實際出發(fā)時間依次為:6:42、6:48、6:32,其可接受的最早出發(fā)時間為6:30,滿足出發(fā)時間窗約束。U38 每日實際到達時間依次為:7:25、7:35、7:19,其可接受的最晚到達時間為8:00,滿足到達時間窗約束。U38 與目的地(坐標為(0,0))的距離為,駕駛時間等于43/1=43 min(行駛速度可按照實際情況進行調(diào)整)。與U75、U94 合乘后,U38 從自己的位置出發(fā),依次接載U75、U94,再從U94 的位置前往目的地,所花費的時間為47 min,其可接受的最大駕駛時間為63 min,滿足最大駕駛時間約束。同樣的計算和檢驗方法應(yīng)用于U75 和U94,只要其中有一位用戶沒有滿足時間窗約束的行駛路徑,該合乘組被視為無效合乘組,VND 算法會將該合乘組劃分為兩個小的合乘組,重復(fù)該過程,直到所有的合乘組滿足時間窗約束。

接下來從用戶與合乘組的距離、用戶的額外駕駛時間、用戶實際出發(fā)/到達時間與期望時間的差值、用戶與合乘組平均年齡的差值以及合乘組用戶性別分布情況來分析該合乘組的優(yōu)劣。

U38 與合乘組的距離被計算為U38 與合乘組重心的距離,合乘組重心為(8.6,-36.3),則U38 與合乘組距離為6.8 km,U75 與合乘組的距離為2.3 km,U94 與合乘組的距離為5.5 km,則平均的用戶與合乘組的距離為4.9 km。用戶與合乘組的距離越大,說明合乘組成員間的距離越大,則用戶所在合乘組每天行駛的里程數(shù)越多。因此,該值與合乘組每日行駛里程數(shù)具有正相關(guān)關(guān)系。U38 擔任司機時總的駕駛時間為47 min,U75 擔任司機時總的駕駛時間為54 min,U94 擔任司機時總的駕駛時間為55 min,則該合乘組平均每天行駛的里程數(shù)為:52 km,該值會作為優(yōu)化目標納入到目標函數(shù)中,以減少合乘組每天行駛的里程數(shù)。

U38與目的地(坐標為(0,0))距離為43 km,所需要的駕駛時間為43/1=43 min(行駛速度可按照實際情況進行調(diào)整)。與U75、U94 合乘后,U38從自己的位置出發(fā),依次接載U75、U94,再從U94 的位置前往目的地,所花費的時間為47 min。因此,參與合乘后,U38 的額外駕駛時間為4 min。同理,U75 的額外駕駛時間為19 min,U94 的額外駕駛時間為21 min,則平均的用戶的額外駕駛時間為15 min。同樣的,該指標以一定的權(quán)重作為優(yōu)化目標納入到目標函數(shù)中,旨在減少用戶額外駕駛時間過長,導(dǎo)致用戶滿意度低。

U38 實際出發(fā)/到達時間與其期望的時間(6:35/7:20)的差值約為8 min。U75 實際出發(fā)/到達時間與其期望的時間(6:50/7:35)的差值約為8 min。U75實際出發(fā)/到達時間與其期望的時間(6:40/7:20)的差值約為9 min。平均的用戶實際出發(fā)/到達時間與期望時間的差值為8 min。同樣的,該指標以一定的權(quán)重作為優(yōu)化目標納入到目標函數(shù)中,旨在縮小用戶出發(fā)/到達時間與其期望實際的差距,增加用戶滿意度,提升用戶體驗。

此外,組內(nèi)平均年齡為32,U38 與組內(nèi)平均年齡的差值為0,U75 與組內(nèi)平均年齡的差值為5,U94 與組內(nèi)平均年齡的差值也為5,則平均的用戶與合乘組的年齡差為3。該指標同樣以一定的權(quán)重作為優(yōu)化目標納入到目標函數(shù)中,旨在減少合乘組內(nèi)用戶的年齡差。該合乘組的成員全為男性,性別分布合理,在目標函數(shù)中為0,若為其他性別分布,則在目標函數(shù)具有一定的懲罰值,旨在增加同性別用戶被分在一個合乘組的幾率,這是出于用戶出行安全的考慮。

需要說明的是,該案例中用戶與合乘組的距離和用戶的額外駕駛時間比表4中的對應(yīng)指標的平均值大,這是由于實例R-1中的用戶屬于隨機分布,相對于集中分布和混合分布,隨機分布的用戶地理位置過于分散,用戶間距離較大,從而導(dǎo)致這兩個值增大。

鑒于篇幅限制,以合乘組(U38、U75、U94)為例進行了分析,其他合乘組分析方法相似。

5 結(jié)論

目前,我國城市交通擁堵嚴重,并由此導(dǎo)致一系列問題,嚴重影響了城市居民的生活質(zhì)量。而車輛合乘可以在現(xiàn)有資源條件下有效減少私家車出行數(shù)量,從而緩解交通擁堵問題。針對LTCPP,本文首先構(gòu)建了基于用戶滿意度的帶有車容量和時間窗約束的多目標優(yōu)化模型,并通過隨機森林算法確定各優(yōu)化目標的權(quán)重,旨在解決人為設(shè)定權(quán)重因子主觀性太強的問題。然后,提出了解決LTCPP的VND算法。實驗結(jié)果表明,采用VND算法獲得的解決方案,每日私家車出行量可以減少72%,每日行駛的總里程數(shù)減少67%,合乘成員通常分布在半徑為2.4 km的圓形范圍內(nèi),合乘組成員平均年齡差在5 歲左右,同性被分到同一個的概率在26%,用戶實際出發(fā)到達時間與期望的時間差7 min 左右,用戶需額外駕駛時間在7 min左右。從時間效率上來看,VND算法相較于CAC 可以節(jié)省55%的時間。因此,結(jié)合隨機森林算法和VND算法能為LTCPP高效得提供高質(zhì)量的解決方案。

猜你喜歡
合乘鄰域約束
基于人工智能出行算法的網(wǎng)約合乘行為法律規(guī)制
“碳中和”約束下的路徑選擇
稀疏圖平方圖的染色數(shù)上界
約束離散KP方程族的完全Virasoro對稱
車輛合乘問題的分布式復(fù)合變鄰域搜索算法*
考慮性別偏好影響的通勤合乘匹配模型*
基于鄰域競賽的多目標優(yōu)化算法
基于博弈論的汽車合乘推廣研究
關(guān)于-型鄰域空間
適當放手能讓孩子更好地自我約束
人生十六七(2015年6期)2015-02-28 13:08:38
康平县| 略阳县| 临湘市| 靖边县| 建湖县| 乳源| 大渡口区| 黑河市| 临湘市| 卓尼县| 临江市| 淳化县| 蛟河市| 商城县| 罗平县| 黄陵县| 柯坪县| 繁昌县| 奉新县| 福鼎市| 铜山县| 浙江省| 砀山县| 江阴市| 鹿泉市| 墨脱县| 遂平县| 五峰| 郑州市| 武清区| 琼结县| 余江县| 乐业县| 高尔夫| 上杭县| 象州县| 西吉县| 舟山市| 沛县| 泗水县| 金溪县|