戴大東 吳宏杰,2* 陸 悠 李銘華 丁志平
1(蘇州科技大學電子與信息工程學院 江蘇 蘇州215009) 2(蘇州大學江蘇省計算機信息處理技術重點實驗室 江蘇 蘇州215006) 3(蘇州市公安局 江蘇 蘇州215006)
隨著汽車持有量的迅速增長,城市的中心區、商業區的“停車難”問題日趨嚴重[1]?!巴\囯y”還引起了一系列的交通與城市問題,如:增加不必要的區域交通流量、造成局部擁堵、車輛停放混亂、破壞街道秩序,甚至引發交通事故,最終導致降低了人們的小康生活質量[2]。為改善或解決該問題,停車誘導云平臺隨之產生,優秀的誘導系統可以優化資源配置、改善交通擁堵、減輕出行負擔、規范停車秩序,從而提升城市文明形象[3]。
另一方面,移動Agent技術的日益成熟,有效地簡化了分布式系統的設計、實現、維護[4]。作為一種新興的計算模式,移動Agent技術不僅支持自主及異步交互,還具有可靠性、協調性等優點,與傳統計算模式相比,能改善分布式計算當中網絡負載,提高通信效率,在分布式系統的設計和實時監控等方面都已進行一定程度的應用[5]。移動Agent技術已經在網絡監控、流量均衡負載、異構移動政務等領域中有良好的應用效果。但至今未見在分布式多停車場誘導系統的應用研究與應用[6]。
由此,本文提出一種基于移動Agent的停車誘導云平臺,將Agent在協作性、共享性、安全性方面的內在優勢與云平臺的開放性優勢相結合,優化停車場資源配置,實現車位資源共享,改善交通。
與傳統停車場系統最大的不同在于,云停車場引入了云計算技術以及物聯網管理,打破了傳統停車場原有的信息孤島,真正實現了統一的系統平臺管理[7]。相比較傳統停車場,云停車誘導平臺有如下優勢:
1) 開放性:作為第三方平臺可以方便接入分布式的停車場。
2) 共享性:通過云計算,能夠對多個停車單位規劃管理,讓空閑的停車位物盡其用,避免浪費。
3) 安全性:停車誘導云平臺通過系統能夠實時了解停車單位狀態、用戶的在線情況等,方便進行管理和調控,保障安全。
本系統組成采用“云-網-端”三層架構,如圖1所示?!岸恕本褪且苿覣gent;“網”就是Agent的移動與通信;“云”就是多個Agent的匯總。

圖1 基于移動Agent的停車誘導云平臺架構圖
從圖1中我們可以看到停車云平臺的各個層次。ParkAgent的結構層:將停車任務中的空位信息與停車對象信息進行映射,通過Agent的管理和調度進行信息分享,結構化是實現開放性的重要基礎;ParkAgent的遷移層:停車對象在不同的停車區域之間遷移時,對車位資源能夠進行及時的更新,方便我們對車位資源進行統一調度與協調,為共享提供基礎;ParkAgent的協作層:統計各單位內部停車資源,分析用戶對停車單位各個頻段的使用率和實時的使用率,實時了解停車場的使用情況;ParkAgent的共享層:剩余停車資源可以在不同的停車單位之間實現共享與被共享;Park-Agent的安全是實時Agent系統在Internet上穩定、安全運行的重要保障,沒有安全保障,我們停車系統的應用就無從說起。
基于Agent的停車誘導云平臺需要具備高度開放性的結構,不會因為外界環境的改變而進行改變[8]?;诖?,云平臺首先要能自適應網絡環境變化,不與外界協作模塊捆綁。其次將組織控制與用戶需求分離,用多個Agent協作實現停車誘導控制功能,以便適應內外相應環境的突發狀況[9]。系統內部分為兩種協作方式:代理模式,由用戶使用系統提供的協作工具來完成相應的協作任務[10];智能模式,一種構造的自主性運作的協作。憑借停車誘導控制系統內部協調控制機制的不同,在停車誘導控制系統內提供如下一些Agent:任務Agent、資源Agent、監控Agent、調度Agent等。其中,任務Agent是整個停車誘導控制系統的中心所在,對停車進行組織與調度,接收其他任務或者外部的協作任務,在估量系統自身處理能力大小的情況下,將其中一些查詢請求和任務分配給調度系統,任務Agent制定和協調系統目標,對系統內各個Agent之間進行調度。監控Agent負責系統內各功能Agent工作狀態的監控[11]。調度Agent負責將任務Agent分配到協作系統或部門的任務進行調度,尋找合適的執行者來完成。在系統中,每個Agent分別對應著控制系統中的資源、協作等方面。這里,調度Agent負責停車誘導需求的網上協作,把系統內的通信協作獨立起來,不與外界的協作交互。監控Agent從各個單元Agent處得到每個控制設備和停車單位的資源數據,進行整個系統工作過程的監控[12]。系統共享數據庫則存儲著用戶的數據信息、系統操作日志以及系統工作時候的一些整體數據等,各個Agent程序所在節點還設置了相應Agent局部數據庫[13]。
舉個例子:一旦停車場內部出現空余的車位或者用戶的車輛駛入被我們檢測到,我們的監控Agent能夠及時地監測到并上傳至任務Agent,通過任務Agent的組織與協調,制定和調整系統任務,或者將任務委托至協作系統,通過共同協作完成對車位資源的管理。
移動Agent為獲取相應資源,需遷移到多個主機上面與這些主機進行交互[14]。如:當監控Agent檢測到停車場中的空位信息,或停車對象在不同的區域之間進行移動時,我們就要利用移動Agent的移動性將這些映射來的信息進行相應的調度并傳達至相應的Agent。
遷移算法
Input:
Hi:需要遷移的源節點
Hi+1:目標節點
S:對Agent加密的密鑰
T:用于申請ID的信任節點
MA:移動Agent
Encryp(x):使用S對x進行加密
Decode(x):使用S對x進行解碼
Save(x):將x保存到Hi+1
Copy(x):將x復制到Hi+1
Move_again(x):放棄x的遷移重新開始
1:Repeat
2:Initialize()
3:for each T do
4:MA_new = MA_old + New ID
5:Encryp(MA_new)
6:end for
7:for eachMA_new in do
8:copy(MA_new)
9:ifsuccessthen
10:Save(MA_new)
11:else
12:Move_again(MA_new)
13:end if
14:for eachdo
15:Decode(MA_new)
16:end for
17:end for
18:until all agent data transfers completed
Output:MA_new,the node successful migration to Hi+1
時間復雜度:T(n)=Ο(n2);根據算法當中7—17句重復執行次數得出時間復雜度;空間復雜度:S(n)=O(1);問題本身為存儲空間衡量尺度,本算法占用臨時工作單元不隨問題規模而改變,“就地”進行。
一般情況下,我們在移動Agent遷移開始之前無法知道訪問哪些主機及訪問的順序,這些都由移動Agent根據具體情況具體分析[15]。我們可以將移動Agent的旅行計劃看作一個路由表,表中的元素看作是一個二元組M(host,value)。二元組的次序對應著移動Agent在主機之間移動的順序。移動Agent在地址為 host 的主機上運行名稱為value的操作。移動Agent在主機之間的傳統移動方式過于單一,只有順序一種方式,無法描述復雜遷移,對此我們進一步擴充,包含3類遷移語義:SEQ(順序執行每個Mi)、PAR(存在出n個子Agent并行執行Mi)、SEL(執行其中任意一個Mi)。旅行計劃 Itinerary 定義為:
nnnItinerary::SEQ(Mi)|PAR(Mi)|SEL(Mi)i=1i=1i=1Mi::=Itinerary|(host,value)
定義(Agent 社會) Agent 社會是一個三元組S=〈Ag,Rel,Org〉,其中:
Ag是Agent 的有限集,即Ag={a1,a2,…,an};
Rel是所有Agent 內含的熟人關系集合,即∪a∈Ag?b∈RA(a),RA(b,a);RA(a)表示Agenta的所有熟人集合;RA(b,a)表示Agenta和b具有熟人關系。
Org∈Ag是一個特殊的Agent,稱為Agent 社會的注冊Agent。
Agent為在短時間完成系統指定的目標需要和多個熟人Agent進行協作交互。為了確保規定的Agent社會具有開放性和自由性。假設:社會C外的Agent可以請求社會當中,加入的Agent須到Org進行注冊記錄,而離開的Agent 則不需提供任何證明,可以直接離去[16]。
在Agent社會中,Agent執行的任務有3 種狀態:Task execution、task waiting和Task ready,在不同的任務狀態,Agent的行為也截然不同。
當Agent 接到任務調度時,進入Task execution;Agent因為等待其Agent返回結果,而進入task waiting狀態;當Agent當前任務已完成時,處于Task ready狀態,等待新的任務的來臨。為防止Agent在task waiting狀態長時間逗留,規定一個時間限t,如果task waiting狀態的持續時間超過t,則自動從task waiting狀態中跳出。
ParkAgent信息共享的實現過程:
1) 查詢搜索Agent通過設置的訪問安全機制驗證后實時獲取各停車單位資源數據,再借助網絡等其他方式獲取關聯資源數據,并將數據上傳至共享數據庫。
2) 用戶分析Agent通過對各節點停車單位信息需求情況的獲取,確定每個用戶所需數據的特征,獲取每個節點停車單位對信息不同的需求,建立各自的相關數據庫。
3) 數據分類Agent根據不同用戶需求對數據庫中信息進行識別、分類,將每條信息與節點數據庫中的信息進行比對,形成滿足用戶需求的數據組。
4) 數據傳遞Agent將與節點停車場興趣知識庫匹配的數據組送至各節點。
5) 用戶可以根據需要到共享數據庫查找信息。當用戶獲取數據時,用戶智能代理自動把其需求的數據種類與其興趣庫中的數據比對,及時對興趣庫的記錄進行更新。
信息共享平臺的創建和實施,可針對節點停車場特定的信息需求進行數據的搜索、加工和傳遞,從而使其及時準確地獲取到所需的數據;具有較強的靈活性,既可向節點停車場傳遞信息,也允許用戶主動搜尋數據;對停車場內部資源信息分類,建立停車資源共享數據數據庫,保障了用戶數據的安全性;借助Agent完成數據的傳輸和處理,使各節點停車場間數據的共享有序、高效地進行,顯著提高了系統運行效率[17]。
移動Agent系統是由移動Agent和多個為之提供服務的主機構成的,他們當中不乏一些惡意主機,這些惡意主機會試圖攻擊移動Agent,竊取移動Agent的重要數據,并對Agent的數據進行修改,使之異構[18]。因而,當移動Agent在潛在的惡意環境中執行任務時,對移動Agent的保護尤為重要。如果ParkAgent當中重要移動數據的機密性和完整性沒有得到保障被竊取,如:竊取用戶的資料,或被惡意節點篡改我們的用戶信息或者系統信息,帶來的后果都將是非常嚴重的,所以說ParkAgent的安全是實時Agent系統在Internet上穩定、安全運行的重要保障。
移動Agent工作在Internet上,Internet中的節點有可能會受到非法Agent的攻擊而致使服務失效、系統崩潰等后果[19]。在移動Agent的遷移中,為安全著想,我們先將移動Agent加密再送至目標節點,在目標節點使用密鑰進行解碼,通過這樣一個安全機制可以阻止惡意節點的攻擊和破壞。
ParkAgent安全遷移過程如下:
假設:Hi為需要遷移Agent的源節點,Hi+1為遷移的目標節點。
1) 信任節點首先申請一個移動Agent送至Hi,然后為該Agent提供一個與注冊用戶相關聯的ID(身份證明,證明合法)。
2) 根據信任節點路徑尋找適合的目標節點,通知移動Agent準備遷移。
3) 當Hi+1與移動Agent達成一致后,移動Agent副本開始朝目標節點遷移。本設計采用分布事務與權限機制獲得安全機制。通過安全機制保證移動Agent遷移一致性和安全。
4) 若遷移成功,自動刪除申請的移動Agent副本并使密鑰失效。若遷移出錯則放棄遷移,轉到步驟2并重新開始。
5) Agent完成信息傳輸。
基于上述移動Agent技術,在蘇州市公安局信息部門指導下,成功研發了基于移動Agent的云平臺。該平臺由云端服務器提供服務,云端服務器囊括了停車場和私人用戶管理模塊、信息交互模塊、費用支付處理模塊等[20]。停車場和用戶管理模塊用于管理停車場、車位和用戶信息;信息交互模塊用于處理用戶請求、管理車位信息、處理車位預約信息和處理錯誤信息;信息發布模塊用于實時發布各單位的車位資源和誘導消息;費用支付處理模塊用于主要是對支付信息進行相應的處理。
在本文當中,我們將每個Agent作為一種服務對外提供,每一個Agent都是一種服務。云平臺中包含著大量的Agent并將其形成了一個Agent的資源城,根據客戶的需求進行服務,將城中所有Agent進行統一的調度和管理。
例如:當用戶想對目的地車位預約時,首先登入客戶終端,管理Agent首先判別當前是否為新用戶,如果是新用戶就進行注冊服務,注冊時需提交用戶的簡單檔案(為用戶的簡介,可以存儲用戶的一些特征,例如:對車位位置的需求、時間需求等),然后將這些內容存入個人的信息庫。如果不是新用戶,則登錄系統,查看選取車位,如果和預存數據不同,則進行更新。登錄成功后管理Agent從個人信息庫取出用戶的檔案報告給協作Agent,進而將這些信息發送云端進行查找并反饋回來。
軟件部分功能如下所示:
1) 車位出租與共享 停車場運維員或者私人用戶使用管理模塊向外界發布車位共享的消息:車位位置、收費標準等。停車場管理員或用戶只有通過停車管理云平臺運營商進行身份認證后,才可對外發布車位出租的信息。
2) 車位查詢與預約 用戶通過手機終端查找目的地附近的車位資源并選擇滿足要求的車位進行預約服務,停車誘導平臺隨后將預約信息發送至停車單位鎖定車位,并將預約成功信息返還給用戶。
3) 在線支付 停車誘導平臺自動將車位的預約信息進行記錄,硬件部分導入用戶駛入和駛出的時間并根據計費的規則將費用計算出來發送給用戶,用戶根據發送的金額向車位所有者進行付款。
我們利用虛擬化技術把硬件資源在硬件層上建立虛擬機層,云中的Agent都安放在虛擬機中,再加上負載均衡,實現了虛擬機和Agent的動態管理,設置云控制區實時監測虛擬機和Agent的運行時狀態,便于我們及時發現錯誤。
硬件部分主要分為如下一些模塊:
1) 出入模塊:將此模塊放置在停車單位的出入部分,監測車輛的進入及相應的時間。本模塊設計的內容主要利用射頻識別技術,它是一種短距離識別技術,其可以主動地識別汽車的RFID,將車輛信息存儲在系統的數據庫內,可以有效地監控車輛的信息。
2) 收費控制模塊:在單片機的控制下與出入模塊聯合作業,根據出入停車位的時間差來計算費用,并顯示在LCD上。
3) LCD顯示模塊:顯示各停車單位的車位信息:進出時間、空閑車位數。
4) 單片機控制模塊:硬件系統中樞所在。
5) 操作鍵盤模塊:我們可以通過此模塊進行各種人工操作,例如轉換、查詢各類信息等部分。
6) 通信模塊:通過此模塊可與計算機進行數據傳輸。
硬件系統所反饋的車位資源等信息將通過Agent之間的協作、遷移、共享上傳到云端,形成對本系統的信息支撐。
如圖2為車位統計界面,從圖中可以看到附近車位的剩余狀態。同時我們還可以看到相應的價格,實現價格透明,有效避免胡亂收費的現象。當我們選擇目的地時就可以查看目的地周圍停車場的實時狀態,然后跟從導航駛入目的地完成停車服務,以此來實現誘導的作用,避免盲目的尋找,從而解決“停車難”問題。

圖2 車位統計界面
本系統通過接入停車誘導云平臺,對停車場的車位資源能夠進行充分的利用和共享,顯著改善“停車難”的難題。我們在蘇州市車流量大的分布式停車場進行了試用與推廣,交通部門流量數據顯示它不僅為出行者提供實時準確的車位資源,而且減少了不必要的交通流,從而促進改善城市交通擁堵情況。同時,本系統有以下兩方面仍需改進,是我們后期工作與研究的重點。第一,雖然已經實現了異地空位的有效調度,但是異地空位導航時,仍舊依賴百度等第三方算法的默認路徑規劃,更優的解決方法是解區域空位約束下的局部路徑優化問題;第二,空位資源異地調度時,雖然考慮局部流量,但還未考慮區域流量。該問題的難點在于全局與局部資源的平衡。