章 瑀
(中國鐵路上海局集團有限公司杭州電務段,助理工程師,浙江 杭州 310009)
半獨立路權下的新型有軌電車與公路車輛共享交叉口,為提高電車的運行效率,交叉口信號通常給予有軌電車一定的通行優先權。在制定信號優先控制策略時,一般借助VISSIM等微觀交通仿真工具進行交叉口的路網建模與通行效率評價,進而輔助運營管理的決策。然而對于管理人員而言VISSIM 的建模過程較為復雜,當各仿真輸入變量出現較大變化時需重新在軟件中修改并進行仿真而不能快速獲取評價結果,因此有必要基于VISSIM 所提供的COM(Component Object Model,組件對象模型)接口進行二次開發,為運管者提供方便操作的用戶界面及圖表化的評價數據顯示,使有軌電車的運營管理更加高效。
VISSIM作為常用的微觀交通仿真軟件,廣泛用于建模與分析各類交通信號、通道設置下的公共交通和城市交通運行情況,因其底層包含的交通仿真模型都有嚴格的數學分析或邏輯流程為基礎,保證了輸出的仿真評價結果對信號優化及工程實施都具有一定借鑒意義[1]。
VISSIM 由交通仿真器與信號狀態產生器兩部分構成,兩者之間通過內部接口交換信號狀態與車輛運行檢測數據,見圖1。交通仿真器包含了各類車輛運動模型,如基于心理-生理駕駛行為的車輛跟馳模型,基于規則算法的車輛換道模型,基于泊松分布的車輛到達模型等。而信號狀態產生器則以一微小固定間隔(最小為0.1 s)從交通仿真器中提取車輛運行檢測數據,用于確定下一仿真秒的信號狀態,同時將該信號狀態反饋給交通仿真器。
為實現有軌電車的信號優先控制邏輯,可使用VISSIM 提供的外部信號狀態發生器VAP(Vehicle Actuated Programming,車輛感應邏輯編程),該附加模塊提供了一個可編程的、基于信號相位及可感應控制的仿真環境,在仿真過程中,通過設置于路段中的檢測器實時采集電車運行數據并結合獲取到的信號顯示信息來實現電車信號的優先控制。此外,通過VISSIM提供的COM接口還可對仿真中的模型參數進行提取和修改,在此基礎上通過編程開發用戶界面,以便運管人員更加靈活方便地進行仿真輸入,獲取評價結果。

圖1 VISSIM的構成及與COM接口的調用關系
目前有軌電車通過交叉口時的信號控制方案主要有固定周期配時控制、絕對優先、相對優先等。
固定周期配時即無優先的信號控制方案,交叉口信號各相位以固定時間周期循環運行,有軌電車運行至交叉口時只能跟隨同一方向的車流一起放行,此方案投入最小,也不會對現有交通造成額外影響,有軌電車通行效率較低。
絕對優先與相對優先都是主動優先的信號控制策略[2]。在交叉口接近區段以及離去區段布設電車位置檢測器,根據對電車位置信息的檢測來實現交叉口信號的調整控制,給予電車通行優先權,具體的調整方法包括紅燈早斷、綠燈延長、插入相位等[3]。絕對優先即無條件優先,無論有軌電車接近交叉口時當前信號是何種顯示,信號機在確保沖突相位關閉的情況下為其開放通過信號,響應優先請求。相對優先則在絕對優先控制的基礎上增加了公路交通信號最小綠燈時長的判斷條件,保證了當前正在放行的車流能得到最低程度的疏解,避免有軌電車的優先給公路交通造成過多延誤與擁堵。

圖2 主動優先信號控制流程
圖2 描述了主動優先控制下的信號感應控制與有軌電車行為之間的對應聯系。當有軌電車通過接近區段的檢測器1時,有軌電車發出優先通行請求,若此時交叉口信號機顯示的相位與電車通行方向非沖突,則不需做任何信號切換即可使電車通過交叉口;若當前為沖突相位,相對優先下還需要判斷此時交叉口信號相位是否已經滿足了設置的最小綠燈時長,在滿足條件時再根據下一相位是否為沖突顯示,進行紅燈的早斷或者插入可供有軌電車通過的相位,以允許電車駛入交叉口區段。有軌電車經過布置于交叉口出口處的檢測器2 時,交叉口區段電車出清,此時根據是否已滿足當前信號相位的規定顯示時間來決定是否切換至下一相位,至此一次主動優先下的信號控制流程結束。
在VISSIM中進行絕對優先、相對優先等信號感應邏輯控制的實現時,可借助其提供的VisVAP 工具,利用繪制信號流程圖的方式并結合獲取到的檢測器狀態來實現所需的邏輯過程。提供邏輯控制函數的動態鏈接庫vap216.dll、相位過渡轉換定義文件.pua 以及VisVAP 編譯生成的.vap 邏輯控制文件三者一同構成并實現了VAP信號感應控制。
VISSIM 所 提 供 的VISSIM_COMSERVERLib 組件為連接外部的客戶端程序提供了新的方法,將VISSIM 作為服務器并通過COM 接口,使客戶端程序得以從VISSIM 中獲取仿真信息,并可向VISSIM傳輸仿真參數等控制指令,最終實現對VISSIM仿真過程的控制[4]。
本文將在微軟Visual StudioNET 環境下以C#語言實現客戶端的界面設計并完成COM 所提供接口方法的使用。在一個新工程中,通過添加引用的方式即可將VISSIM_COMSERVERLib 組件添加進工程。圖3為VISSIM_COM 接口對象所包含的層次結構[5],Vissim為根節點,其他所有對象都由其派生而來,如Net(路網)、Simulation(仿真)、Evaluation(評價)等,Net 節點下還包括了構成交通路網的其他要素,如Links(路段集合)、VehicleInputs(車輛輸入集合)等,每一集合都可索引至具體的已建模對象,COM提供了若干方法可對每一對象進行特定操作。

圖3 VISSIM_COM接口節點層次
3.1 需求分析
1)交叉口線位類型是制約有軌電車通行效率的因素之一,根據不同的線位類型進行建模分析也是VISSIM仿真的基礎,故在客戶端操作流程的起始需要對線位類型進行選擇,常見的有軌電車線位布置有路中直行式、路側直行式、路中轉彎式、路中轉路側等。
2)不同的信號控制策略適用不同的流量背景,故客戶端中用戶應根據實際調查得到的交通流量及流量組成進行自定義的輸入。
3)固定周期配時信號下包含了各相位的綠燈時長,主動優先感應控制下包含了各相位的最小綠燈時長,客戶端提供對信號控制參數的設置,并提供信號控制策略的選擇。
4)有軌電車的發車時刻、發車頻率的合理性也是VISSIM仿真評價的應用之一,客戶端提供電車發車時刻的自定義編輯。
5)此外為便于用戶可以觀察到仿真的運行過程,還提供仿真速度,仿真周期的選擇,對仿真得到的評價結果進行圖表化的展示,得到行程時間、延誤時間、車輛排隊長度這三方面的評價數據并提供仿真信息的匯總打印功能。
3.2 詳細設計
1)加載既有路網工程文件。加載路網的前提是設計人員已對典型的交叉口路網進行了建模,對主動優先的信號控制邏輯進行了實現并對VISSIM 仿真底層模型的參數進行了初步校核,得到了一個較完善可靠的仿真工程。
作為VISSIM-COM 接口調用層次的根節點,Vissim類所提供的方法是其他路網元素得以定義的基礎。如:
Vissim v-tram=new Vissim();//定 義 一 個Vissim類對象
v-tram.LoadNet(“tramcross.inp”);//使用Vissim類的方法加載路網文件
v-tram.LoadLayout(“tramcross.ini”);//加 載 路 網配置文件
調用成功即會打開VISSIM軟件,并在窗口中加載指定的路網文件及配置。對于調用過程中的異常,COM 通過返回HRESUTs 來報告錯誤信息,可在客戶端中對拋出的這些異常進行彈窗提示。
2)設置仿真輸入參量。用戶可以根據電車沿線實際調查所得的交通量,對交叉口的車流量、路口轉向比、車型組成進行輸入。以設置某一路口的車流量為例:
Net nt=v-tram.Net;//通過根節點構建Net路網類
VehicleInputs.vehinputs=nt.VehicleInputs;//通 過Net類獲取仿真中車輛輸入集合
VehicleInput.vehinp1=vehinputs.GetVehicleInputByNumber(1);//根據索引號從集合中獲取一條
輸入記錄
vehinp1.set_AttValue("VOLUME",Convert.
ToDouble(w_input.Text));//將客戶端的輸入數據添加至該記錄的“流量”屬性中,見圖4。

圖4 車流量的設置實現過程
對于固定周期配時下的信號參量設置,也采取類似方法。 由根節點不斷向下遍歷直至SignalGroup(單一信號燈組),通過set-AttValue方法將客戶端獲取的數據添加入VISSIM 仿真的參數中。對于主動優先下的信號控制,由于COM未提供可讀寫的接口方法,可將客戶端獲取到的最小綠燈時間等參量通過文本的方式直接寫入工程文件的指定字段中。
3)設置發車時刻及仿真控制。客戶端中以表格的形式供用戶輸入電車的發車時刻,對上下行分別定義兩個List(隊列)用于存放用戶的輸入數據。當運行仿真時,程序以仿真時間為上限循環調用COM提供的單步仿真函數RunSingleStep(),當循環至用戶自定義的時刻時,上行或下行線路即發送一輛電車AddVehicleToTransitLine()。
循環完成即代表仿真結束,使用根節點的Exit()方法退出VISSIM程序,同時刪除已創建的對象實例。
4)評價數據的圖表化顯示。仿真結束,評價的原始數據主要以文本形式進行存儲,可使用.NET中File 類的相關方法進行文本文件的信息處理,提取有效信息進行圖形繪制。對于仿真信息的匯總打印,使用WinForm 所提供的PrintDocument 等組件,將用戶輸入的仿真信息以及評價圖表通過DrawString()、DrawImage()等方法進行重新組織編排,將重要信息匯總于一頁。
3.3 仿真測試 通過客戶端窗口中各控件的事件響應以及對VISSIM_COM 接口的調用,在客戶端輸入參數進行測試,所實現的仿真控制效果見圖5。

圖5 客戶端效果
對各信號控制策略下的不同電車線位類型交叉口進行多次測試顯示,只要在初始建模過程中按照統一順序進行路網元素的編排,保證車輛輸入集合、路段集合等集合中的索引一致對應,客戶端程序即可通過索引號獲取正確的路網元素,以實現對仿真輸入參量的控制,進而提高客戶端的通用性。
本文提出了基于VISSIM_COM接口通過NET平臺開發客戶端供有軌電車運營管理者輔助決策的新思路,并給出了詳細的方法與步驟。該客戶端程序充分利用了兩個平臺的優勢,通過NET編制的圖形界面,實現了對VISSIM在有軌電車優先控制仿真方面的交互,簡化了以往直接通過VISSIM進行仿真參數輸入修改的繁瑣步驟。當然為了提高仿真的真實性,在建模之前應盡可能地進行實地的交通調查,進行底層模型參數的校核,從而得到更接近實際、更具參考價值的評價結果。