徐成成,鄭 亮,薛新風 XU Chengcheng,ZHENG Liang,XUE Xinfeng
(中南大學 交通運輸工程學院,湖南 長沙 410075)
隨著我國經濟的迅速發展,城市交通系統的建設快速增長和完善,為人們出行提供了很大便捷,但也帶來了越來越多的問題,如擁堵、安全、環境等。因此,需要建立科學合理的交通管控措施來緩解這些問題。通常,有三種方法可用于驗證管控措施的合理性:現場實驗、數學建模和仿真實驗?,F場實驗能夠提供最直接的證明,但由于高昂的人力、物力和財力成本及較差的可行性被較少采用。數學建模雖易于操作,但是簡單和解析的數學模型很難刻畫隨機的、非線性和復雜的交通巨系統。目前為止,認可度最高且使用范圍最廣的是通過成熟的仿真軟件來評價交通管控措施的科學性和合理性[1]。
成熟的仿真軟件可以提供優秀、可靠的仿真環境,但只使用仿真軟件來評價交通管控措施面臨諸多問題。例如,只能利用仿真軟件中已有的功能設計交通管控策略和評價指標,對于無法在仿真軟件中實現的管控策略則不能評價。為此,目前比較成熟的仿真軟件都提供了應用程序接口,研究者可以根據需要設計相應的仿真實驗場景和評價方法。同時,通過應用程序接口將仿真軟件和優化算法結合起來,搭建高效、可靠的仿真控制/優化平臺為研究交通管控問題提供了技術支持,具有重要的理論和實踐意義。陳德望等[2]將TSIS、VC、MATLAB集成,構建交通控制仿真平臺。陳茜等[3]利用接口原理將VC與TSIS集成構建仿真平臺,評價了交通管理措施對大型活動交通消散影響。李文勇等[4]利用接口原理將TSIS和VC進行集成,對交通誘導進行仿真分析。Liu等[5]研究了Paramics軟件的二次開發功能在感應信號控制、信號協調、匝道控制方面的應用。Yin[6]等利用Paramics軟件的應用程序接口研究了匝道控制公平性的問題。盧守峰等[1]利用COM接口技術和Excel Link將VISSIM、Excel VBA和MATLAB進行集成,構建仿真平臺。連仁包[7]利用COM接口技術和MATLAB引擎將.NET、VISSIM和MATLAB進行集成,構建交通仿真平臺。Tettamanti等[8-9]利用COM接口,將MATLAB、C++和VISSIM進行集成,并實現與一個真實信號機的通信,研究了模型預測控制策略(MPC)對城市管理的影響,在此基礎上,又利用COM接口、動態鏈接庫和MATLAB引擎接口技術,將VISSIM、VISUM、MATLAB進行集成,研究了城市交通網絡管理與控制問題。
目前,國內外關于VISSIM集成仿真控制/優化的研究文獻較少。本文旨在研究微、宏觀交通仿真模擬器VISSIM/VISUM與MATLAB的集成技術。該技術利用MATLAB為控制器,并編寫交通管控模型及優化算法,通過COM接口技術調用VISSIM/VISUM的仿真對象,并控制交通仿真的運行,而仿真相關數據通過COM接口技術返回MATLAB控制器。本文提供的方法不需要借助動態鏈接庫技術和MATLAB引擎接口技術,可以簡易高效地實現VISSIM、VISUM、MATLAB這三者之間的相互通信。
VISSIM是一種微觀的、基于時間間隔和駕駛行為的微觀建模工具,用于城市交通和公共交通運行的交通建模。VISSIM可以分析各種交通條件下的城市交通的運行狀況,如車道設置、交通構成、交通信號、公交站點等,是評價交通工程和城市規劃方案的有效工具。
VISUM是一種適用于交通規劃、交通需求建模及網絡數據管理的綜合性、高靈活性的宏觀仿真軟件。VISUM軟件系統由需求模型、路網模型和影響模型組成。其中,需求模型采用基于起訖點的方法或基于活動鏈的方法,通過各種類型需求的交通方式來計算出行需求。路網模型是一個包含私人交通和公共交通相關信息的多方式交通網絡。影響模型可以分析和綜合評估交通系統產生的一系列影響結果。
VISSIM可以將其微觀的路網信息,如路段長度、車道數量、交通組成、駕駛行為參數等,導入VISUM,形成宏觀的路網。VISUM也可以將其宏觀的路網信息,如路段長度、節點、OD矩陣等,導入VISSIM,形成微觀路網。
當前主流的微觀交通模擬器有:VISSIM、TransModeler、Synchro、S-Paramics、Q-Paramics、TSIS、AIMSUN[10]。主流的宏觀交通模擬器有:VISUM、TransCAD、Cube、Emme。相比于其他仿真模擬器,VISSIM和VISUM同為PTV開發的產品,將微觀和宏觀仿真模型無縫集成,與GIS集成,并且提供了全面的二次開發接口,另一方面支持腳本編寫,可以按照自己的需求修改、設計某些模塊,如:駕駛員行為模塊,車聯網模塊,信號機模塊,排放模塊,收費模塊等。因此,相比于其他交通模擬器,VISSIM和VISUM更適合本文的研究。
COM(Component Object Model,組件對象模型),是由微軟推出的一套接口規范,通過設定不同組件之間需要遵守的標準與協議,主要用來跨語言、跨進程之間的模塊通信。它遵循一些二進制和網絡標準,通過這種標準可以在任意兩個組件之間進行通信而不用考慮其所處的操作環境是否相同、使用的開發語言是否一致以及是否運行于同一臺計算機。COM允許開發者開發出各種各樣功能專一的組件,然后將它們按照需要組合起來,構成復雜的應用系統。COM具有很多優點:(1)可以將系統中的組件用新的替換掉,以便隨時進行系統的升級和定制;(2)可以在多個應用系統中重復利用同一個組件;(3)可以方便地將應用系統擴展到網絡環境下;(4)支持不同語言對組件的訪問。COM組件以接口對功能進行分類,便于組織、升級、維護,同時COM組件可以輕松實現進程間調用和分布式調用等優點受到廣泛應用。
VISSIM和VISUM都提供了COM接口,在安裝的時候,軟件默認會自動安裝COM組件,凡是支持COM技術的語言都可以訪問這些組件,從而達到二次開發的目的。VISSIM和VISUM的COM接口定義了一個層次模型,通過COM,使用者可以控制用戶模型中幾乎每一個元素,其中最初由用戶圖形界面提供的模擬器的功能和參數均可以通過編程來實現[11-12]。MATLAB支持COM接口技術,可以直接訪問VISSIM和VISUM中的組件。
MATLAB是目前廣泛使用的高級計算語言和交互式環境,包含了大量的工具箱和庫函數,廣泛用于算法開發、數據可視化、數據分析、數值計算等方面。本文將集成VISSIM、VISUM與MATLAB三種軟件,利用VISSIM和VISUM提供的優秀可靠的仿真環境,MATLAB高效的矩陣運算、數值分析的能力,構建先進的交通仿真控制平臺。實現MATLAB與VISSIM/VISUM之間相互通信的常見方法有如下幾種:
(1)直接利用COM接口。結合上一部分的內容,MATLAB可以通過COM接口直接調用VISSIM/VISUM。
(2) 借助MATLAB引擎和其他編譯器。使用Visual Studio(C/C++、VB、.NET)、Excel(VBA) 等編譯器作為主控程序,通過MATLAB引擎調用MATLAB,通過COM接口調用VISSIM/VISUM。該方法需要MATLAB運行環境,運行速度慢。
(3)轉譯M文件。利用MATLAB將M文件編譯成C/C++文件,Visual Studio直接調用C/C++文件,通過COM接口調用VISSIM/VISUM。該方法允許應用程序脫離MATLAB環境,但是由于Visual Studio不能完美識別轉譯的C/C++文件,兼容性差。
本文選擇操作最簡單,兼容性最好的第一種方式,具體實現方法如圖1所示。以MATLAB作為控制器,通過COM接口直接調用VISSIM對象和VISUM對象,VISSIM與VISUM的仿真數據也可以通過COM接口返回MATLAB控制器,從而實現VISSIM/VISUM與MATLAB之間的數據交互。上述集成技術操作簡單,不需要調試配置文件,適用范圍廣,為廣大科研工作者研究交通仿真控制/優化問題提供了可行有效的方法。
具體地,采用COM接口技術進行集成的一般步驟如下:
(1) 預先建立VISSIM/VISUM路網;
(2) 創建 VISSIM/VISUM COM server;
(3)加載VISSIM的路網文件和配置文件;加載VISUM的主文件;
(4)定義VISSIM/VISUM的子對象,如:Simulation,Link等;
(5)初始化參數,如:仿真周期、仿真速度、流量輸入等;

圖1 MATLAB和VISSIM/VISUM接口原理
(6) 控制VISSIM/VISUM仿真運行。
VISSIM/VISUM COM對象模型有一個嚴格的對象等級,如果要進入不同的低等級對象,就必須按照這個等級來進行操作,如:要訪問VISSIM中的simulation對象就必須先訪問VISSIM對象。在VISSIM和VISUM中,VISSIM和VISUM分別是最高等級對象,其他的對象都是它們的子對象。以下代碼說明了如何利用MATLAB調用VISSIM/VISUM運行仿真。

根據研究的需要可從不同粗粒程度進行交通仿真:微觀層面,把每輛車作為基本單元,獲得比較精確的評價指標,但是需要花費大量時間;宏觀層面,把交通流作為基本研究對象,可快速得到交通評價指標,但是結果精度不高。本研究綜合考慮了微觀仿真和宏觀仿真的優勢,集成了VISSIM/VISUM和MATLAB的交通仿真控制/仿真平臺,并根據實際需求設計路網評價指標。
研究實例是以一個虛擬的路網作為研究對象,利用平臺集成技術研究交通仿真在不同層面上的效率。首先,建立路網有兩種途徑:(1)先用VISUM建立宏觀路網,再將已經建立好的宏觀路網導入VISSIM中生成微觀路網;(2)先用VISSIM建立微觀路網,再將微觀路網導入VISUM中形成宏觀路網。本部分的實例采用方法(2),利用旅行時間作為評價指標,從微觀和宏觀兩個層面研究仿真效率的問題。圖2為本文選取的虛擬路網,A點和B點為交通流的發生點,C點和D點為交通流的吸引點,①、②、③、④、⑤、⑥、⑦、⑧為8條單向可變道路段。從A點到C點有兩條路徑:A-①-③-④-⑥-⑦-C和A-①-③-⑤-⑥-⑦-C,記為路徑1和路徑2。從A點到D點有兩條路徑:A-①-③-④-⑥-⑧-D和A-①-③-⑤-⑥-⑧-D,記為路徑3和路徑4。從B點到C點有兩條路徑:B-②-③-④-⑥-⑦-C和B-②-③-⑤-⑥-⑦-C,記為路徑5和路徑6。從B點到D點有兩條路徑:B-②-③-④-⑥-⑧-D和B-②-③-⑤-⑥-⑧-D,記為路徑7和路徑8。選擇這8條路徑比較兩個層面的仿真效率。該路網10分鐘的具體OD數據見如表1。

表1 虛擬路網的OD
為保證程序的順利運行及宏觀和微觀路網的一致性,同一臺電腦上需要同時安裝VISSIM、MATLAB、VISUM這三個軟件,并且對軟件和路網進行如下設置:
(1)分別注冊VISSIM/VISUM COM Server:VISSIM和VISUM安裝的時候,默認進行COM Server注冊,如若注冊失敗,則可以按照《VISSIM COM接口用戶手冊》和《COM-Documentation for VISUM》對COM Server進行手動注冊。
(2)構建交通需求:VISSIM和VISUM都采用OD構建交通需求。
(3)VISSIM采用動態交通分配:仿真時間設置為600s并仿真多次用于路徑搜索,使得動態交通分配算法收斂,目的是使路網達到一種穩定的交通狀態,即旅行時間和交通流量均不發生變化。設定算法的終止條件是:相同OD,不同路徑上的旅行時間之差小于5%,即:路徑1和路徑2,路徑3和路徑4,路徑5和路徑6,路徑7和路徑8上的旅行時間之差均小于5%。(4)VISUM中阻抗函數選擇:BPR函數,見式(1):

式中:ta為路段a上的阻抗;t0為零流阻抗;qa為路段a上的交通量;ca為路段a的實際通行能力;α、β為阻滯系數,在本例中α=0.15、β=4。
(5) VISUM中交通流分配方法選擇:均衡分配法,即根據用戶均衡進行分配。
(6) VISUM中路網參數設置:路段通行能力設置為900pcu/(h·車道),自由流狀態下的速度為60km/h。
完成上述設置之后,集成仿真平臺的運行流程圖如圖3所示:
圖4演示了多精度交通仿真控制平臺的實例運行界面。圖4的下層圖片是MATLAB控制器的界面,用于調用并控制VISSIM和VISUM;中層圖片是VISUM在執行交通流分配時的界面;上層圖片是VISSIM仿真界面。仿真運行的數值結果如表2所示。

圖3 集成仿真平臺流程圖

圖4 集成VISSIM/VISUM和MATLAB仿真平臺的實例

表2 仿真結果
從表2可知,微觀仿真和宏觀仿真由于計算方法的不同導致結果出現一定的差別。從仿真次數來看,VISUM只需要仿真1次就能得到交通流分配的結果,而VISSIM需要仿真17次才能達到算法終止的條件。從仿真時間來看,VISUM單次仿真需要花費4.5915s,VISSIM單次仿真需要4.7996s,相差不多,但是由于VISSIM需要進行多次仿真才能使算法達到收斂標準,因而總仿真時間達到74.8513s,遠遠高于VISUM。一般來說,在仿真環境都接近現實的情況下,微觀仿真模擬器計算出的結果更加精確,但是耗時較長,宏觀仿真模擬器計算更快,但是精度較低。
本文集成了VISSIM/VISUM與MATLAB并構建了多精度交通仿真控制平臺。該平臺集成了三者的優勢:宏觀交通仿真的高效性、微觀交通仿真的高精度以及MATLAB強大的矩陣運算、數值計算性能等,支持從宏觀和微觀兩個層面研究交通管控措施優化問題。最后,通過一個交通仿真實例驗證了此仿真優化平臺的可行性和可操作性。該方法具有如下優勢:(1)快速建立路網,提高工作效率,如:微觀路網與宏觀路網的互導;(2)宏觀路網數據應用到微觀仿真中,如:VISSIM可以借助VISUM來獲取GIS數據;(3)支持從宏觀和微觀兩個層面評價交通管控措施的優劣。值得注意的是,將本文提出的方法應用到實際路網時,需要先對微觀模擬器VISSIM和宏觀模擬器VISUM進行標定,以使仿真環境盡可能地接近現實,提高實驗結果的可靠性。