任芷樂(lè)
媽媽開(kāi)車(chē)外出時(shí),因難以找到停車(chē)位,停車(chē)總要花費(fèi)很多時(shí)間。盡管有些手機(jī)App能顯示當(dāng)前車(chē)庫(kù)車(chē)位的空位數(shù),但往往等我們把車(chē)開(kāi)過(guò)去時(shí)車(chē)庫(kù)就已經(jīng)停滿(mǎn)了。如果能提前預(yù)測(cè)車(chē)庫(kù)在幾分鐘之內(nèi)有空位,可以直接開(kāi)過(guò)去停車(chē),該有多好啊。
要想預(yù)測(cè)出幾分鐘之后的車(chē)庫(kù)空位,我認(rèn)為必須用一種可根據(jù)歷史停車(chē)信息推斷出未來(lái)空位信息的智能算法。
經(jīng)過(guò)搜索,我發(fā)現(xiàn)有很多智能預(yù)測(cè)算法,其中BP神經(jīng)網(wǎng)絡(luò)可根據(jù)歷史信息推算出未來(lái)的信息。在BP神經(jīng)網(wǎng)絡(luò)研究者的探索下,BP神經(jīng)網(wǎng)絡(luò)的各方面都趨向成熟,如今已被運(yùn)用到多個(gè)領(lǐng)域,如數(shù)據(jù)挖掘、模式識(shí)別、圖像處理、股票預(yù)測(cè)、市場(chǎng)分析等。
能不能用該算法預(yù)測(cè)車(chē)庫(kù)的空位數(shù)?
一、實(shí)施步驟
我選擇位于溫州市區(qū)車(chē)流量較大地區(qū)一個(gè)車(chē)容量為210輛的停車(chē)場(chǎng)作為研究對(duì)象,選取了從2017年10月21日 0:00:00到2017年10月26日 21:15:08的1612條即時(shí)車(chē)庫(kù)空位數(shù)據(jù)按照以下步驟進(jìn)行研究。
1.讀入車(chē)庫(kù)空位數(shù)據(jù)集。抽取成1612行、6列的數(shù)據(jù)格式,第1到第5列為輸入層數(shù)據(jù),第6列為輸出層數(shù)據(jù)。
2.劃分?jǐn)?shù)據(jù)集。前865條為訓(xùn)練數(shù)據(jù)集,后747條為測(cè)試數(shù)據(jù)集。
3.輸入數(shù)據(jù)歸一化處理。采用最大最小歸一化方式:xk=(xk-xmin)/(xmax-xmin)。
4.初始化BP網(wǎng)絡(luò)訓(xùn)練結(jié)構(gòu)。設(shè)置輸入層節(jié)點(diǎn)數(shù)為n=5個(gè),隱含層節(jié)點(diǎn)為j=50個(gè),輸出層節(jié)點(diǎn)k=1個(gè)的三層結(jié)構(gòu)。初始化輸入層、隱含層和輸出層節(jié)點(diǎn)之間的連接權(quán)值wij,wjk(隨機(jī)值),并給出隱含層節(jié)點(diǎn)和輸出層節(jié)點(diǎn)的閾值θj和θk(隨機(jī)值),這里迭代次數(shù)為5000次,學(xué)習(xí)率net.lr=0.01,學(xué)習(xí)目標(biāo)精度net.goal=0.0003,節(jié)點(diǎn)傳遞函數(shù)=‘logsig。
5.隱含層輸出計(jì)算。根據(jù)輸入層5個(gè)時(shí)間節(jié)點(diǎn)的車(chē)庫(kù)空位Oi以及隱含層的連接權(quán)值wij、隱層閾值θj,計(jì)算隱含層輸出Oj。
Ij=■wijOi+θj Oj=■
6.輸出層輸出計(jì)算。根據(jù)隱含層輸出Oj、連接權(quán)值wjk和輸出層閾值θk,計(jì)算輸出層輸出Ok(預(yù)測(cè)的車(chē)庫(kù)空位數(shù))。
Ok=■Ojwjk+θk
7.誤差計(jì)算,根據(jù)誤差反向傳播,并更新權(quán)值和閾值。期望輸出Yk,輸出層誤差Errk,隱含層誤差Errj。
Errk=Ok(1-Ok)(Yk-Ok)
Errj=Oj(1-Oj)■Errkwjk
權(quán)值和閾值更新:
Vwjk=lr*ErrkOj Vwij=lr*ErrjOi
wjk=wjk+Vwjk wij=wij+Vwij
V =lr*Errk V =lr*Errj
θk=θk+V θj=θj+V
8.判斷模型迭代是否結(jié)束或是否達(dá)到目標(biāo)精度net.goal=0.0003,若沒(méi)有則按第5步驟繼續(xù)計(jì)算。
二、實(shí)驗(yàn)分析
按照以上步驟,我用matlab分別對(duì)該停車(chē)場(chǎng)5min后、10min后、15min后的車(chē)輛數(shù)進(jìn)行仿真預(yù)測(cè),并和真實(shí)值進(jìn)行對(duì)比。
由預(yù)測(cè)值與實(shí)際值的對(duì)比得出以下結(jié)論。
1.用BP神經(jīng)網(wǎng)絡(luò)算法基本能預(yù)測(cè)出未來(lái)5min、10min、15min的停車(chē)場(chǎng)車(chē)輛數(shù),由此可得出空位數(shù)。
2.車(chē)輛數(shù)變化較小的時(shí)段,預(yù)測(cè)誤差也較小。
3.將預(yù)測(cè)數(shù)據(jù)和實(shí)際數(shù)據(jù)進(jìn)行對(duì)比,計(jì)算出未來(lái)5min的停車(chē)場(chǎng)車(chē)輛預(yù)測(cè)平均誤差率為1.76%,未來(lái)10min預(yù)測(cè)平均誤差率為2.90%,未來(lái)15min預(yù)測(cè)平均誤差率為3.91%。由此可見(jiàn),預(yù)測(cè)平均誤差率5min后的最小,10min后的次之,15min后的最大,也就是說(shuō),預(yù)測(cè)效果5min后的最佳,10min后的次之,15min后的最差。
4.將預(yù)測(cè)數(shù)據(jù)和實(shí)際數(shù)據(jù)進(jìn)行對(duì)比,5min后、10min后、15min后的預(yù)測(cè)車(chē)輛數(shù)和實(shí)際數(shù)的最大差值分別為16輛、27輛、39輛。
5.將預(yù)測(cè)數(shù)據(jù)和實(shí)際數(shù)據(jù)進(jìn)行對(duì)比,5min后、10min后、15min后的預(yù)測(cè)車(chē)輛數(shù)和實(shí)際數(shù)相差小于1輛的預(yù)測(cè)次數(shù)比例分別為46.72%、38.15%、34.94%。預(yù)測(cè)車(chē)輛數(shù)和實(shí)際數(shù)相差小于5輛的比例分別是93.19%、81.04%、71.03%,而預(yù)測(cè)車(chē)輛數(shù)和實(shí)際數(shù)相差小于10輛的比例分別是99.07%、95.06%、89.45%,滿(mǎn)足率較高。
6.將預(yù)測(cè)所得的數(shù)據(jù)按照車(chē)輛數(shù)100進(jìn)行劃分,少于或等于100輛定義為閑時(shí),大于100輛定義為忙時(shí),分別計(jì)算閑時(shí)和忙時(shí)的預(yù)測(cè)誤差率可得,閑時(shí)未來(lái)5min、10min、15min的停車(chē)場(chǎng)車(chē)輛預(yù)測(cè)平均誤差率分別為2.84%、4.43%、5.86%;忙時(shí)未來(lái)5min、10min、15min的停車(chē)場(chǎng)車(chē)輛預(yù)測(cè)平均誤差率分別為1.10%、1.97%、2.73%。
三、實(shí)驗(yàn)結(jié)論
1.BP神經(jīng)網(wǎng)絡(luò)算法可用來(lái)預(yù)測(cè)車(chē)庫(kù)未來(lái)5min、10min、15min的車(chē)輛數(shù)。其中預(yù)測(cè)效果5min后的最佳,10min后的次之,15min后的最差。
2.在預(yù)測(cè)空位超過(guò)10個(gè)的情況下,有空位的幾率非常高,用戶(hù)可優(yōu)先選擇附近空位超過(guò)10個(gè)的車(chē)庫(kù)。
3.此預(yù)測(cè)方法所得忙時(shí)的預(yù)測(cè)誤差率比閑時(shí)預(yù)測(cè)誤差率小,而人們更需要的是忙時(shí)的預(yù)測(cè),所以忙時(shí)誤差率小對(duì)用戶(hù)更有利。
四、研究思考
1.有些時(shí)段的誤差偏大,我認(rèn)為主要原因可能是BP神經(jīng)網(wǎng)絡(luò)算法本身學(xué)習(xí)時(shí)間比較長(zhǎng)、收斂比較慢,或是我的參數(shù)初始值選得不好、我選擇的用來(lái)學(xué)習(xí)的數(shù)據(jù)不具有代表性等等。今后我還會(huì)嘗試改善算法,進(jìn)一步縮小誤差。
2.我研究的對(duì)象是有210個(gè)車(chē)位的停車(chē)場(chǎng),在我調(diào)取數(shù)據(jù)的時(shí)間段內(nèi)均沒(méi)有車(chē)位停滿(mǎn)的情況,那么針對(duì)車(chē)位很緊張的車(chē)庫(kù),BP神經(jīng)網(wǎng)絡(luò)算法能否準(zhǔn)確預(yù)測(cè)呢?
3.人工神經(jīng)網(wǎng)絡(luò)是人們常用的預(yù)測(cè)方法之一,BP神經(jīng)網(wǎng)絡(luò)算法只是其中之一,還有其他很多的算法,比如支持向量機(jī)、極限學(xué)習(xí)機(jī)等先進(jìn)方法,把這些算法運(yùn)用到車(chē)庫(kù)空位預(yù)測(cè)中,效果如何?
發(fā)明與創(chuàng)新·中學(xué)生2018年5期