周毅強++王德昌++李炳煉++楊裕
摘 要:本文介紹一種基于WOT的綠道自行車調(diào)度的實現(xiàn)方法,通過真實環(huán)境的實驗,證明這種算法是可行性。
關(guān)鍵詞:WOT 調(diào)度算法 ANN算法
中圖分類號:TP3 文獻標(biāo)識碼:A 文章編號:1672-3791(2014)09(b)-0012-02
綠道(Greenway)是一種線形綠色開敞空間,通常沿著河濱、山脊、風(fēng)景道路等自然和人工廊道建立,內(nèi)設(shè)可供行人和騎車者進入的景觀游憩線路。本文提出一種基于WOT的綠道自行車調(diào)度算法,盡量使用最少的自行車數(shù)量服務(wù)盡可能多的綠道出游市民。
1 程序設(shè)計
我們將程序分為三個子程序。一、設(shè)計收集相關(guān)信息的JavaScript程序;二、預(yù)測前對源數(shù)據(jù)的分析處理程序;三、預(yù)測的BP算法。具體實現(xiàn)如下。
1.1 收集相關(guān)信息的JavaScript程序
由于國內(nèi)沒有相關(guān)的實時自行車網(wǎng)上租賃數(shù)據(jù)。因此我們選擇抓取西班牙巴塞羅那的“Bicing”自助自行車服務(wù)網(wǎng)站(https://www.bicing.cat/)的數(shù)據(jù)并進行分析。Bicing網(wǎng)站的單車租憑狀況是使用谷歌地圖來顯示,同時使用AJAX技術(shù)異步拿數(shù)據(jù),并且無刷新更新數(shù)據(jù)。這樣給我們抓數(shù)據(jù)帶來一些麻煩。我們不能直接請求一個HTML頁面來達到抓取數(shù)據(jù)的目的。另外,AJAX內(nèi)部其實也是通過HTTP協(xié)議來發(fā)送請求,由于瀏覽器不能看到AJAX發(fā)送的請求和參數(shù),我們則使用抓包工具分析請求的HTTP包結(jié)構(gòu)(URL以及參數(shù)),并模仿該格式向Bicing服務(wù)器發(fā)送欺騙包,其功能就是模仿用戶在它的頁面上點擊查詢功能。
由于數(shù)據(jù)從傳感器進入Bicing的系統(tǒng),處理后可以在其網(wǎng)站上獲取。我們獲得的直接數(shù)據(jù)是一段包含若干站點數(shù)據(jù)的HTML報文,需要對其進一步處理,提取有用數(shù)據(jù),把這些包含多個站點在某個時間的信息保存入單獨日志文件。
我們使用AJAX異步捕捉數(shù)據(jù)。因為AJAX使用HTTP協(xié)議發(fā)送請求,所以AJAX的請求與參數(shù)就不會顯示在瀏覽器。具體步驟如下。首先,我們設(shè)置一個時間器。當(dāng)時間到了,重發(fā)一個請求并重啟時間器。如果請求并沒有返回,新建一個XMLHttpRequest對象發(fā)送查詢請求。注意:在時間器結(jié)束前,我們需要不斷應(yīng)答數(shù)據(jù),然后抽取其中最有用的信息保存到文件中,如果數(shù)據(jù)應(yīng)答正確的話,否則拋棄該部分數(shù)據(jù)。
1.2 預(yù)測前對源數(shù)據(jù)的分析處理程序
在物聯(lián)網(wǎng)中,最大的特點就在于終端設(shè)備多樣性。在本系統(tǒng)中,除了在租賃現(xiàn)場使用傳感器收集數(shù)據(jù)外,相關(guān)的的重要數(shù)量,如驛站名稱、自行車剩余數(shù)量等應(yīng)該通過網(wǎng)站、手機等其它方式顯示給市民。因此需要對不同來源的數(shù)據(jù)統(tǒng)一處理。另一方面,JS腳本產(chǎn)生的日志文件是針對多個站點的,而每個站點數(shù)分鐘即產(chǎn)生一個日志文件,這樣每天都會產(chǎn)生數(shù)百個文件,單靠人工來整理是不可能的。
我們使用C++編寫整理上述收集的日志,把每個日志里的每個站點信息單獨歸為一個日志文件。在儲存采集到的數(shù)據(jù)文件中,主要有三組重要的數(shù)據(jù):出租點的號碼,某出租點自行車出租和空閑的數(shù)量。所有的信息抽取后生成為新的文件,以出租點的號碼來進行分組。
1.2 設(shè)計預(yù)測的BP算法
為了更準(zhǔn)確的預(yù)測,本系統(tǒng)使用成熟的BP算法。BP神經(jīng)網(wǎng)絡(luò)是一種神經(jīng)網(wǎng)絡(luò),一般由三層構(gòu)成,如輸入層,中間層(即隱藏層)和輸出層。在每兩層之間的聯(lián)系,而沒有在每一層中的神經(jīng)元之間的聯(lián)系。BP算法的主要思想是將學(xué)習(xí)過程分為兩個階段:第一,解決每個單元的實際輸出值根據(jù)輸入的信息通過輸入層,隱藏層處理的;第二,找出誤差之間的實際和預(yù)期的輸出,如果期望輸出值不在輸出得到的層,它是用來調(diào)整權(quán)重。
2 實驗
“Bicing”自助自行車服務(wù)中心在全市共有多個自行車租車點,提供約200輛自行車,有包含385個傳感器實時測量出在不同的出租站可用自行車的數(shù)量及空位。
圖一列出其中三個出租點收集的數(shù)據(jù)進行實驗,圖中的三條曲線分別是使用ANN算法進行觀測的結(jié)果,真實數(shù)值和平均值方法預(yù)測。
可以看出,該算法與實際情況相吻合。同時,可以從圖1得出三個結(jié)論。首先,在某個出租點自行車的出租數(shù)量在某些時間是飛速變化而某些時間卻維持不變,而這些時間與生活作息時間高度吻合。第二,與平均預(yù)測算法相比,ANN算法在自行車的出租數(shù)量變化不大的時間里,表現(xiàn)相對差些,但在出租數(shù)量變化頻繁的時間里表現(xiàn)良好,而這剛好才是我們關(guān)心的上下班高峰時間段。第三,該算法的預(yù)測結(jié)果與真實值有一定的距離,尤其在圖1(c)中表現(xiàn)明顯,這種現(xiàn)象主要是因為該算法需要考慮泛化能力而引起的正常誤差。圖2給出某天預(yù)測數(shù)據(jù)與原始數(shù)據(jù)的對比圖。
最后我們給出選擇捕捉數(shù)據(jù)的時間窗口大小對預(yù)測準(zhǔn)確性的影響。我們選擇從5分鐘到25分鐘不同大小的時間窗口,列出對應(yīng)的預(yù)測錯誤率,如圖2。
3 結(jié)論
本文提出了一種基于人工神經(jīng)網(wǎng)絡(luò)的自行車調(diào)度預(yù)測算法。由于預(yù)測目標(biāo),即出租自行車的數(shù)量是與以前的出租情況及生活作息高度相關(guān),因此我們采用三層人工神經(jīng)網(wǎng)絡(luò)算法作為預(yù)測的主要算法。通過實驗對比,這種算法在實際應(yīng)用中是可行的。
參考文獻
[1] Rob van Kranenburg.The Internet of Things:A critique of ambient technology and the all-seeing network of RFID[J].Network Notebooks,2007,2(1A):22-50.
[2] Trieschmann,Jammes S.and George E.Pinches,A Multivariate Model for Predicting Financially Distressed P-L Insures,Journal of Risk and Insurance, 1973,40:327-338.endprint