本發(fā)明涉及一種用于微觀交通仿真的交通流量預(yù)測方法,屬于交通預(yù)測分析技術(shù)領(lǐng)域。
背景技術(shù):
對于交通流預(yù)測,國內(nèi)外很多學(xué)者做過大量的研究,得到了很多預(yù)測方法,比如歷史數(shù)據(jù)平均值法、卡爾曼濾波理論、人工神經(jīng)網(wǎng)絡(luò)法等,不同方法各有優(yōu)缺點(diǎn)。本發(fā)明采用改進(jìn)粒子群優(yōu)化的bp神經(jīng)網(wǎng)絡(luò)。
由于近年來數(shù)據(jù)采集手段的發(fā)展,人工神經(jīng)網(wǎng)絡(luò)重新成為了一個(gè)研究熱點(diǎn)。在預(yù)測方面,相較于其它方法,人工神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的魯棒性、自適應(yīng)非線性的特點(diǎn)以及分布式信息存儲、并行信息處理的能力,非常適合用于預(yù)測交通流這種異常復(fù)雜的開放性系統(tǒng)。bp神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最廣泛的人工神經(jīng)網(wǎng)絡(luò)模型之一,但是單純的bp神經(jīng)網(wǎng)絡(luò)具有易陷入局部極小值以及實(shí)時(shí)性不強(qiáng)等問題,需要進(jìn)一步利用優(yōu)化算法對其進(jìn)行收斂速度和全局尋優(yōu)能力的優(yōu)化。
粒子群優(yōu)化算法被中國科學(xué)院文獻(xiàn)情報(bào)中心與湯森路透旗下的知識產(chǎn)權(quán)與科技事業(yè)部聯(lián)合發(fā)布的《2015研究前沿》評為數(shù)學(xué)與計(jì)算機(jī)領(lǐng)域的十大研究熱點(diǎn),相較于模擬退火、遺傳算法等優(yōu)化算法,其具有復(fù)雜度低、計(jì)算量小、適用性強(qiáng)、收斂速度快等優(yōu)點(diǎn)。但是由于粒子種群的快速趨同效應(yīng),容易發(fā)生早熟收斂的現(xiàn)象。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是利用粒子群優(yōu)化算法對bp神經(jīng)網(wǎng)絡(luò)算法和微觀仿真模型進(jìn)行優(yōu)化,提高交通流量預(yù)測的實(shí)用性。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供了一種用于微觀交通仿真的交通流量預(yù)測方法,其特征在于,包括以下步驟:
步驟1、根據(jù)研究范圍內(nèi)得實(shí)際路網(wǎng)情況,建立交通仿真模型;
步驟2、利用歷史數(shù)據(jù)對交通仿真模型中的參數(shù)進(jìn)行調(diào)整標(biāo)定;
步驟3、在每一個(gè)預(yù)測周期內(nèi),通過布設(shè)在道路上的檢測器,采集每個(gè)檢測器的實(shí)際交通流量,將實(shí)際交通流量作為輸入值;
步驟4、將輸入值輸入預(yù)測算法,從而得到每個(gè)檢測器的預(yù)測流量,所述預(yù)測算法包括以下步驟:
步驟4.1、確定bp神經(jīng)網(wǎng)絡(luò)算法的拓?fù)浣Y(jié)構(gòu),初始化網(wǎng)絡(luò)權(quán)值和閾值,單獨(dú)運(yùn)算bp神經(jīng)網(wǎng)絡(luò)算法得到誤差值;
同時(shí),初始化粒子群優(yōu)化算法粒子和速度,對其賦予隨機(jī)值;
步驟4.2、將上一步得到的誤差值的倒數(shù)作為適應(yīng)度值輸入粒子群優(yōu)化算法;
步驟4.3、根據(jù)輸入的適應(yīng)度值確定每個(gè)粒子個(gè)體的極值和群體的極值,初次的個(gè)體極值和群體極值在步驟4.1中所賦予的隨機(jī)值中尋找;
步驟4.4、根據(jù)粒子群算法的更新公式對粒子的速度和位置進(jìn)行更新,每次粒子更新之后,以一定概率重新初始化粒子來擴(kuò)大搜索空間并保持種群的多樣性,更新后重新訓(xùn)練bp神經(jīng)網(wǎng)絡(luò)得到新的適應(yīng)度值;
步驟4.5、判斷是否滿足預(yù)設(shè)的迭代次數(shù)或精度要求,若滿足,則進(jìn)入步驟4.6,若不滿足,則返回步驟4.2;
步驟4.6、將粒子群優(yōu)化算法輸出的最優(yōu)群體極值作為最優(yōu)的權(quán)值和閾值輸入bp神經(jīng)網(wǎng)絡(luò)算法進(jìn)行網(wǎng)絡(luò)訓(xùn)練,網(wǎng)絡(luò)訓(xùn)練包括以下步驟:
步驟4.6.1、計(jì)算隱含層輸出及輸出層輸出;
步驟4.6.2、計(jì)算預(yù)測輸出和期望輸出之間的誤差;
步驟4.6.3、更新權(quán)值和閾值;
步驟4.6.4、判斷終止條件是否滿足,如果不滿足,則返回步驟4.6.1,若滿足,則輸出每個(gè)檢測器的預(yù)測流量;
步驟5、交通仿真模型根據(jù)預(yù)測算法輸出的每個(gè)檢測器的預(yù)測流量進(jìn)行仿真運(yùn)算,輸出當(dāng)前時(shí)間段內(nèi)的仿真結(jié)果,得到仿真流量值,判斷仿真得到的流量值和預(yù)測算法得到的流量值誤差是否達(dá)到預(yù)先設(shè)定的要求,如果達(dá)到要求,結(jié)束運(yùn)算,如果沒有達(dá)到要求,則將仿真得到的仿真流量值作為輸入值,重復(fù)步驟4及步驟5。
優(yōu)選地,在所述步驟2中,將歷史數(shù)據(jù)輸入交通仿真模型得到仿真結(jié)果,通過比對仿真結(jié)果和歷史的實(shí)際檢測數(shù)據(jù),得到交通仿真模型的模擬精度,從而對交通仿真模型中的參數(shù)進(jìn)行調(diào)整標(biāo)定。
優(yōu)選地,步驟4.4中,所述粒子群算法的更新公式為:
式中,
本發(fā)明在優(yōu)化算法中引入了自適應(yīng)變異算子,即在粒子每次更新后以一定概率重新初始化粒子,使其能夠跳出之前搜索到的最優(yōu)位置,提高尋找到更優(yōu)值的可能性。
通過本發(fā)明可以得到一系列交通評價(jià)指標(biāo),同時(shí)能夠直觀的展現(xiàn)出未來一段時(shí)間內(nèi)路段的交通情況;并且使用者可以根據(jù)預(yù)測流量值,在仿真系統(tǒng)內(nèi)對計(jì)劃采用的疏導(dǎo)措施進(jìn)行模擬推演并分析其預(yù)期效果,從而對決策的制定和實(shí)施提供重要參考價(jià)值。
附圖說明
圖1為一種用于微觀交通仿真的交通流量預(yù)測方法示意圖;
圖2為bp神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
具體實(shí)施方式
為使本發(fā)明更明顯易懂,茲以優(yōu)選實(shí)施例,并配合附圖作詳細(xì)說明如下。
結(jié)合圖1,本發(fā)明提供的一種用于微觀交通仿真的交通流量預(yù)測方法,包括以下步驟:
步驟s-1:路網(wǎng)模型建立
在仿真軟件中,根據(jù)研究范圍內(nèi)的實(shí)際路網(wǎng)情況,建立路網(wǎng)模型,包括道路、路面標(biāo)志標(biāo)線、以及交通信號燈、車檢器等交通設(shè)施。
步驟s-2:利用實(shí)際數(shù)據(jù)進(jìn)行模型標(biāo)定
根據(jù)仿真模型的具體需求,采用合適的歷史數(shù)據(jù)輸入仿真軟件中。通過比對仿真結(jié)果和實(shí)際檢測數(shù)據(jù),可以得到仿真模型的模擬精度,從而對模型中的參數(shù)進(jìn)行調(diào)整標(biāo)定。在微觀仿真模型中,通常通過調(diào)整車速分布等參數(shù)提高仿真模型的精度。
微觀仿真模型為交通影響分析的模塊,將預(yù)測得到的流量值作為輸入值輸入微觀仿真模型中,從而得到預(yù)測的交通狀態(tài)以及相關(guān)交通評價(jià)指標(biāo)。
微觀仿真模型主要由三部分組成,第一部分是路網(wǎng)模型,用于精確描述路網(wǎng)的拓?fù)浣Y(jié)構(gòu),包括交通信號燈、車檢器等交通設(shè)施;第二部分是交通生成模塊,用于對交通仿真模型進(jìn)行交通數(shù)據(jù)輸入和生成;第三部分是車輛行為模型,微觀仿真模型的模擬對象是單一車輛,因此其車輛行為模型主要用于模擬車輛的跟馳、變道等精確行為。其中路網(wǎng)模型及車輛行為模型都采用仿真軟件中現(xiàn)有的成熟模型,而交通生成模型則需要通過算法獲得預(yù)測路網(wǎng)上的車流量、車輛分布等信息,將預(yù)測值作為仿真模型的輸入值。
步驟s-3:采集實(shí)際流量,輸入預(yù)測算法
在每一個(gè)預(yù)測周期內(nèi),通過布設(shè)在道路上的檢測器(通常為線圈),采集實(shí)際的交通流量。將實(shí)測得到的流量值作為輸入值輸入預(yù)測算法。
步驟s-3-1-1:確定網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
在bp神經(jīng)網(wǎng)絡(luò)算法中,需要首先確定網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。
步驟s-3-1-2:初始化網(wǎng)絡(luò)權(quán)值和閾值
確定輸入層節(jié)點(diǎn)數(shù)n,隱含層節(jié)點(diǎn)數(shù)l,輸出層節(jié)點(diǎn)數(shù)m,并初始化輸入層、隱含層和輸出層之間的權(quán)值wij和wjk以及隱含層閾值a和輸出層閾值b。初次單獨(dú)運(yùn)算bp神經(jīng)網(wǎng)絡(luò)算法得到誤差值。
步驟s-3-2-1:粒子和速度初始化
粒子群算法首先在可行解空間中初始化一群粒子,每個(gè)粒子都代表極值優(yōu)化問題的一個(gè)潛在最優(yōu)解,用位置、速度和適應(yīng)度值三項(xiàng)指標(biāo)表示該粒子特征。
粒子在解空間中運(yùn)動,通過跟蹤個(gè)體極值pbest和群體極值gbest更新個(gè)體位置,個(gè)體極值pbest是指個(gè)體所經(jīng)歷位置中計(jì)算得到的適應(yīng)度值最優(yōu)位置,群體極值gbest是指種群中的所有粒子搜索到的適應(yīng)度最優(yōu)位置。
粒子每更新一次位置,就計(jì)算一次適應(yīng)度值,并且通過比較新粒子的適應(yīng)度值和個(gè)體極值、群體極值的適應(yīng)度值更新個(gè)體極值pbest和群體極值gbest位置。
粒子群優(yōu)化算法首先需要初始化粒子和速度,對其賦予隨機(jī)值。
步驟s-3-2-2:bp神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的誤差作為適應(yīng)度值
將步驟s-3-1-2中通過網(wǎng)絡(luò)訓(xùn)練得到的誤差值的倒數(shù)作為適應(yīng)度值輸入粒子優(yōu)化算法,此算法中適應(yīng)度值越大越優(yōu)(誤差值越小越優(yōu))。
步驟s-3-2-3:尋找個(gè)體極值和群體極值
根據(jù)輸入的適應(yīng)度值確定每個(gè)粒子個(gè)體的極值和群體的極值。初次的個(gè)體極值和群體極值在步驟s-3-2-1中所賦予的隨機(jī)值中尋找。
步驟s-3-2-4:速度、位置和粒子適應(yīng)度更新
根據(jù)粒子群算法的更新公式對粒子的速度和位置進(jìn)行更新,更新后重新訓(xùn)練bp神經(jīng)網(wǎng)絡(luò)得到更新后的適應(yīng)度值。
粒子群算法的更新公式為:
式中,
步驟s-3-2-5:個(gè)體極值和群體極值更新
根據(jù)新的適應(yīng)度值來更新每個(gè)粒子個(gè)體的極值和群體的極值。
步驟s-3-2-6:以一定概率重新初始化粒子
每次粒子更新之后,以一定概率重新初始化粒子來擴(kuò)大搜索空間并保持種群的多樣性。
步驟s-3-2-7:判定是否滿足終止條件
如果不滿足預(yù)設(shè)的迭代次數(shù)或精度要求,則重復(fù)步驟s-3-5到步驟s-3-7,直至滿足終止條件。
步驟s-3-1-3:獲得最優(yōu)權(quán)值和閾值
將粒子群算法的結(jié)果(即最優(yōu)群體極值)作為最優(yōu)的權(quán)值和閾值輸入bp神經(jīng)網(wǎng)絡(luò)進(jìn)行網(wǎng)絡(luò)訓(xùn)練。
步驟s-3-1-4:網(wǎng)絡(luò)訓(xùn)練
隱含層輸出計(jì)算:
hj表示隱含層輸出,f表示隱含層激勵函數(shù)(根據(jù)需求有多種表示式),n表示輸入層節(jié)點(diǎn)數(shù),xi表示神經(jīng)網(wǎng)絡(luò)輸入值,aj表示隱含層閾值。
輸出層輸出計(jì)算:
ok表示預(yù)測輸出,bk表示輸出層閾值。
步驟s-3-1-5:計(jì)算誤差
計(jì)算預(yù)測輸出ok和期望輸出yk之間的誤差ek:
ek=y(tǒng)k-okk=1,2,...,m
m表示輸出層節(jié)點(diǎn)數(shù)。
步驟s-3-1-6:權(quán)值和閾值更新
權(quán)值更新公式為:
wjk=wjk+ηhjekj=1,2,...,l;k=1,2,...,m
閾值更新公式為:
bk=bk+ek
式中,η表示網(wǎng)絡(luò)學(xué)習(xí)率,x(i)表示神經(jīng)網(wǎng)絡(luò)輸入值,bk表示輸出層閾值。
步驟s-3-1-7判斷是否終止迭代
判斷終止條件是否滿足,如果不滿足,則返回步驟s-3-1-4,直至滿足終止條件,輸出預(yù)測流量值。
步驟s-4:獲得預(yù)測線圈流量數(shù)據(jù),生成車輛:
每一個(gè)預(yù)測時(shí)間段內(nèi),微觀仿真軟件可以通過接口從預(yù)測算法中獲得此時(shí)間段內(nèi),研究路段內(nèi)每個(gè)線圈的流量,從而得到預(yù)測時(shí)間段內(nèi)車輛的分布狀態(tài)。
通過預(yù)測算法得到的流量值為線圈流量,而兩個(gè)線圈之間的車輛數(shù)通過下列公式計(jì)算:
(1)自由流的情況下,對于道路上第i個(gè)線圈和它的下一個(gè)線圈之間的路段,計(jì)算出所需的時(shí)間t,那么從現(xiàn)在向前的t時(shí)間內(nèi)通過第i個(gè)線圈的車輛數(shù)就是這兩個(gè)線圈之間路段上的車輛數(shù),車輛數(shù)可以從數(shù)據(jù)庫中取得。時(shí)間t的計(jì)算可通過下面的公式:
式中,li,i+1為第i個(gè)和第i+1個(gè)線圈之間的距離;vi和vi+1分別為車輛到達(dá)上下兩個(gè)線圈時(shí)的速度。
(2)交通擁堵的情況下,利用m3分布模型。假設(shè)車輛處于兩種行駛狀態(tài):一部分是車隊(duì)狀態(tài)行駛;另一部分車輛按自由流狀態(tài)行駛。分布函數(shù)f(t)為:
式中:
設(shè)此路段路長為l2,則得到此路段上的車輛為
步驟s-5:根據(jù)預(yù)測的車流量進(jìn)行仿真運(yùn)算
仿真模型根據(jù)預(yù)測算法得到的流量數(shù)據(jù)進(jìn)行仿真運(yùn)算,輸出平均車速、延誤等交通指標(biāo)。
步驟s-6:
輸出該時(shí)間段內(nèi)仿真結(jié)果,得到各路段的流量值。
步驟s-7:仿真流量值和預(yù)測算法得到的流量值擬合
判斷是否滿足終止條件,即仿真得到的流量值和預(yù)測算法得到的流量值誤差是否達(dá)到預(yù)先設(shè)定的要求。如果達(dá)到誤差要求,結(jié)束運(yùn)算;如果沒有,則將仿真得到的流量數(shù)據(jù)輸入預(yù)測算法中,重復(fù)步驟s-3到s-7,直到預(yù)測得到的流量與仿真得到的流量誤差達(dá)到要求,運(yùn)算結(jié)束。