?

面向多用戶的微觀交通仿真實驗系統設計

2021-08-04 03:46吳春江周世杰陳鵬飛
電子科技大學學報 2021年4期
關鍵詞:多用戶引擎微觀

吳春江,周世杰,陳鵬飛

(電子科技大學信息與軟件工程學院 成都 610054)

隨著大數據、人工智能、物聯網等新興技術的發展,智慧交通已成為智慧城市建設的關鍵環節,面向智慧交通的虛擬仿真實驗也成為國家虛擬仿真實驗教學項目的重要組成部分。在城市管理、交通工程、交通運輸等專業的教學實驗中,往往需要開展單路口、單道路、區域路網甚至城市路網的復雜交通實驗。然而,通過在實際交通環境中調整交通信號燈、改變路網結構、增減車道數量等路網參數來開展以上實驗,成本高、影響大,絕大多數情況下不可行。為此,往往需要借助道路交通虛擬仿真系統,運用計算機仿真技術,模擬道路交通復雜狀況,揭示交通流時空變化規律,有利于用戶掌握道路交通設計、預測、控制、誘導等知識與技術。

目前的交通仿真軟件如Aimsun next[1]、Trans Modeler[2]、 Paramics[3]、 Vissim[4]、 CORSIM[5]、Matsim[6]、MITSim[7]等都只是對具體場景進行仿真,不能滿足虛擬仿真教學實驗需求,即使是開源的SUMO[8]也不支持實時在線仿真以及在指定路網中進行不同類別的仿真實驗。

1 研究進展

交通仿真作為計算機仿真的一個分支,起源于20世紀50年代[9],該技術能夠在計算機上實現對真實路網及車流狀況的模擬,用以對交通態勢隨時間和空間的變化進行跟蹤描述。

本文對10個具有代表性的交通仿真系統從仿真類型、代碼開源、仿真功能、仿真地圖、車輛行為模型、在線仿真、仿真控制等幾個方面進行比較,結果如表1所示。目前的交通仿真軟件[10-20]都只是對具體場景進行仿真且功能較少,并不能滿足虛擬仿真教學實驗的要求,不支持實時在線仿真以及在指定路網中進行不同類別的仿真實驗,并且這些仿真系統操作起來都非常復雜。

表1 交通仿真系統對比

針對以上這些問題,本文首次研究并設計了一種面向多用戶的微觀交通仿真實驗系統(http://its.uestc.cn),具體貢獻如下:

1)設計并實現了一種微觀交通仿真引擎,該仿真引擎具有消耗低、易擴展等特點,支持獨立運行和分布式通信;

2) 設計并實現了一種面向多用戶的微觀交通仿真實驗系統,該系統采用分布式計算、分布式消息通信等技術,支持多個仿真引擎、多個仿真任務并發執行;

3) 本文對面向多用戶的微觀交通仿真實驗系統進行了性能測試,測試結果表明微觀交通仿真引擎的性能與仿真車輛數和仿真加速比成正比,并且在單臺服務器上,該仿真實驗系統能夠支持多個仿真引擎、多個仿真任務的并發執行。

2 系統設計

2.1 系統架構設計

本文所設計的一種面向多用戶的微觀交通仿真實驗系統的架構如圖1所示。

圖1 面向多用戶的微觀交通仿真實驗系統架構圖

在面向多用戶的微觀交通仿真實驗系統中,每個交通仿真引擎執行獨立的仿真任務,各個仿真引擎之間相互獨立、互不干擾。單臺仿真引擎服務器可以創建出多個仿真引擎,支持多個仿真任務的并發執行。再通過分布式計算技術和分布式消息通信機制,將多臺仿真引擎服務器進行統一管理,實現對每臺服務器上的每個仿真引擎的統一管理。通過仿真引擎服務器數量的增加,可以實現更多仿真引擎的管理與并行計算,達到面向多用戶的交通仿真任務并發執行的目的。

2.2 仿真引擎調度

本文所設計的面向多用戶的微觀交通仿真實驗系統,以仿真任務為功能單元,每個仿真引擎執行獨立的仿真任務,各個仿真引擎之間相互獨立、互不干擾,再通過微觀交通仿真實驗系統統一的任務調度和仿真引擎管理,創建多個仿真引擎執行不同的仿真任務,從而實現面向多用戶的并發仿真任務。

如圖2所示,在面向多用戶的微觀交通仿真實驗系統中,每個仿真引擎都是一個獨立的進程或安裝在Docker容器中,仿真引擎管理模塊負責仿真引擎進程或Docker容器的創建及回收。

圖2 仿真引擎集群示意圖

當有新的仿真任務創建時,仿真引擎管理模塊會根據仿真任務的規模來預估仿真任務所需要的計算資源。如果系統中空閑的計算資源滿足仿真任務的需要,仿真引擎管理模塊則會分配一個仿真引擎去執行仿真任務。如果系統中沒有足夠的計算資源,仿真引擎管理模塊首先會將仿真任務放到等待隊列中,等待其他仿真任務執行結束釋放出足夠的計算資源,再分配一個仿真引擎去執行該仿真任務。等待隊列中的仿真任務按照先來先得的順序分配仿真引擎和計算資源。并且,根據前面所設計的系統架構,本文設計的實驗系統可以通過增加仿真引擎服務器的數量來擴展計算資源,用以滿足多個不同規模仿真任務的運行需求。

2.3 仿真任務通信

本文所設計的面向多用戶的微觀交通仿真實驗系統采用kafka作為任務管理端和仿真引擎之間的通信方式,以滿足高吞吐量的分布式消息通信。

當仿真引擎和計算資源分配成功后,任務管理模塊會將創建仿真任務需要的參數數據放入kafka消息隊列當中,仿真引擎會從kafka消息隊列中獲取參數數據,進行任務創建。同時,仿真引擎在執行完一定步數的仿真計算后,也會將仿真結果放入kafka隊列中,以供仿真總控端提取仿真數據,如圖3所示。

圖3 分布式交通仿真引擎消息通信

在面向多用戶的微觀交通仿真實驗系統中,仿真數據分為車輛仿真數據和信號燈仿真數據。為了區分這兩種實驗數據,仿真引擎在發送到kafka隊列的時候,會對數據加以處理,對于車輛仿真數據,數據是以“vehicle_”加上16位的仿真ID號組成;對于信號燈數據,數據是以“phase_”加上16位的仿真ID號組成。當kafka隊列收到這些數據之后,可以通過數據的標志進行車輛仿真數據和信號燈仿真數據的判斷。

3 性能測試

根據本文所提出的微觀交通仿真實驗系統設計思路,需要達到面向多用戶并發執行仿真任務的目的,為此,本文首先對該微觀交通仿真實驗系統進行性能分析。

根據所描述的仿真引擎設計,在本文微觀交通仿真引擎設計中,所有仿真車輛的每一步仿真計算方式都是相同的。由此可以分析出,本文所設計的微觀交通仿真引擎的計算消耗與仿真車輛數強相關,仿真車輛數越大,每一步仿真計算的消耗就越大,其時間復雜度為step×O(n),其中,step為仿真加速比(即仿真步數),n為仿真車輛數。同時,在本文所設計的微觀交通仿真引擎中,每個仿真車輛占用的內存為100 B左右,100萬仿真車輛占用的內存僅100 M。

根據以上分析,本文所設計的微觀交通仿真引擎對CPU的計算消耗需求大,對內存的消耗可忽略不計。同時,本文所設計的微觀交通仿真引擎的計算時間復雜度為step×O(n),即與仿真加速比和仿真車輛數相關。因此,本文設計了單仿真引擎仿真車輛數變化、單仿真引擎仿真加速比變化和多仿真引擎并發執行3種實驗來測試性能。

本文所設計的微觀交通仿真引擎性能測試的實驗環境如表2所示。

表2 微觀交通仿真引擎性能測試實驗環境

3.1 單仿真引擎仿真車輛數變化性能測試

單仿真引擎仿真車輛數變化主要測試仿真車輛數對計算資源的消耗。本文選取雙向8車道的9個十字路口地圖作為仿真地圖,該仿真地圖的最大容量為2 400輛仿真車輛。在單仿真引擎仿真車輛數測試實驗中,車輛生成速率設置為50,仿真加速比固定設置為20,通過仿真車輛數的變化觀察單仿真引擎的CPU資源消耗變化。測試結果如表3、圖4、圖5、圖6所示。

圖4 仿真車輛數變化

圖5 隨仿真車輛數的CPU占用率

圖6 隨仿真車輛數變化的計算耗時

表3 單仿真引擎仿真車輛數性能測試

可以看出,隨著仿真車輛數的增加,單仿真引擎所占用的CPU與仿真計算耗時也隨之增加,增長趨勢基本相符,與仿真引擎的性能分析結果一致。

3.2 單仿真引擎仿真加速比變化性能測試

單仿真引擎仿真加速比主要測試仿真加速比對仿真計算資源的消耗。本文選取雙向8車道的十字路口地圖作為仿真地圖,該仿真地圖的最大容量為380輛仿真車輛。實驗中,仿真車輛生成速率設置為50,當仿真車輛數達到仿真地圖最大容量時,通過調整仿真加速比來觀察CPU資源消耗的情況。測試結果如表4、圖7、圖8所示。

表4 單仿真引擎仿真加速比變化性能測試

圖7 隨仿真加速比變化的CPU占用率

從表4、圖7、圖8所展示的結果可以看出,隨著仿真加速比的增加,單仿真引擎所占用的CPU與仿真計算耗時也隨之增加,與仿真引擎的性能分析結果一致。

圖8 隨仿真加速比變化的計算耗時

3.3 多仿真引擎并發執行性能測試

本文在如表2所示的單臺服務器上,對面向多用戶的微觀交通仿真實驗系統進行了多仿真引擎并發執行的性能測試。本文選取雙向8車道的單十字路口地圖作為仿真地圖,該仿真地圖的最大容量為380輛仿真車輛,通過對仿真引擎數的增加來觀察仿真任務并發執行數對服務器CPU資源消耗的影響,測試結果如表5、圖9所示。

表5 多仿真引擎并發執行性能測試

圖9 多仿真引擎并發執行的CPU占用率

從表5、圖9所展示的結果可以看出,在無仿真任務和仿真任務并發執行的情況下,CPU占用率與仿真引擎的數量成線性比例增長。在單臺服務器上,本文所實現的一種面向多用戶的微觀交通仿真系統可以支持多個仿真引擎、多個仿真任務的并發執行。并且,還可以通過增加服務器的數量來支持更多的仿真任務并發執行。

同時,由于仿真引擎只有在請求仿真任務的時候才會增加對CPU的消耗,而且仿真任務的執行時長是根據仿真請求步數確定的,不會無限地執行下去,會有一定的空閑期。因此,在實際的應用過程中,出現多個仿真任務并發執行的情況相對較少,從理論上講,單臺服務器可以支持更多的仿真引擎和仿真任務執行。

4 結 束 語

本文從仿真類型、代碼開源、仿真功能、在線仿真、仿真控制等幾個方面對多種交通仿真系統進行了橫向比較。其次,針對道路交通虛擬仿真實驗的多用戶、多并發、可操作等特性,提出了一種面向多用戶的微觀交通仿真實驗系統,并從系統架構和仿真引擎方面對該仿真系統進行了設計。最后,對面向多用戶的微觀交通仿真實驗系統的性能進行了分析,并從單仿真引擎仿真車輛數變化、單仿真引擎仿真加速比變化和多仿真引擎并發執行3個方面對該系統進行了測試。測試結果表明,本文所實現的一種面向多用戶的微觀交通仿真系統可以支持多個仿真引擎、多個仿真任務的并發執行,并且可以通過增加服務器的數量來支持更多的仿真任務并發執行,能夠滿足多用戶的同時在線仿真需求。

猜你喜歡
多用戶引擎微觀
安泰科多用戶報告訂閱單
安泰科多用戶報告訂閱單
安泰科多用戶報告訂閱單
安泰科多用戶報告訂閱單
一種新的結合面微觀接觸模型
藍谷: “涉藍”新引擎
微觀的山水
無形的引擎
基于Cocos2d引擎的PuzzleGame開發
微觀中國
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合