臧天哲 顧保南
(同濟大學交通運輸工程學院, 201804, 上海)
在城市軌道交通(以下簡稱“城軌”)建設階段,需要對其規劃線網不斷進行優化,其方案評價離不開城軌線網客流分配環節。城軌線網優化涉及的變化因素眾多,如線路數量、換乘站及換乘方案、線位及站位、敷設方式、運營組織模式等,其中每個因素變化所對應的方案評價都需進行線網客流分配,因而線網客流分配在線網規劃中會大量重復發生。文獻[1-3]對城軌線網的建模方法和客流分配算法進行了研究,但未能對線網客流分配全過程進行集成以實現自動化運行。文獻[4]以城市道路網絡為研究對象,對其客流分配自動化進行了研究。本文基于對城軌線網客流分配過程的研究,旨在開發城軌線網客流分配自動化計算程序。
目前,常用的主流宏觀仿真軟件,如VISUM、TransCAD等,都可以對大規模城軌線網進行四階段的計算。相比于其他宏觀仿真軟件,VISUM軟件在計算模型豐富度和接口易用性等方面均具有一定優勢,因此,本文使用VISUM軟件作為程序開發的基礎平臺。基于VISUM軟件的城軌線網客流分配評價指標手動計算方法主要包含線網供給方案建模、線網需求建模、交通分配計算及計算結果輸出與顯示等4個部分。在VISUM軟件中手動完成上述計算過程需要龐大的輸入、修改及校對工作量,且進行多方案比選時也會產生較多重復性工作,給研究工作帶來諸多不便。VISUM軟件本身為用戶開放了豐富的接口(如COM-API(組件對象模型-應用程序編程接口)),通過這些接口可以編寫外部程序以控制VISUM軟件的自動化運行。因此,需要對城軌線網客流分配評價指標的計算過程進行深入分析,開發外部程序調用VISUM軟件的計算模塊,實現基礎數據輸入、各項指標計算及計算結果輸出的自動化運行,充分發揮軟件本身在計算模塊上的優勢,既滿足實際工作所需的復雜的分析計算要求,又提高了客流分配工作的效率。
本研究開發的程序需要自動讀取所需的外部數據,并在VISUM軟件中完成線網供給方案模型的構建,主要包括車站、線路和時刻表等對象的創建及屬性設置。該程序應能夠對供給方案的變化進行便捷的設定,并能夠在程序中顯示不同的供給方案。供給方案的變化包括規劃設計與運營管理兩個層面:規劃設計方面的變化包括多條規劃設計線路的OD(起訖點)、換乘節點及路由等可能的方案變化;運營管理層面的變化包括某條或多條線路的列車停靠站點、時刻表等可能的方案變化。該程序能夠體現城市城軌線網供給方案變化,并在供給方案變化的條件下進行評價指標的計算。
本研究開發的程序需要自動讀取所需的外部數據,并在VISUM軟件中完成線網需求模型的構建,包括站間OD矩陣,以及需求時間序列等的設置。該程序的需求模型應能便于對近期和遠期、高峰與非高峰等的客流變化進行設定,且在OD需求變化的情況下自動計算評價指標。
本研究開發的程序需在VISUM軟件中建立交通分配計算流程體系,按照給定條件的指定路徑搜索方法,以及乘客選擇模型等分配計算方法,設置計算所需參數,并自動進行交通分配計算。
本研究開發的程序需要與指定數據庫對接,并能自動且快速地計算出本線及線網的各項評價指標,以及輸出指標計算結果;該程序還能夠輸出圖片,對線網總體與局部的各種指標進行顯示。
基于需求分析,城軌線網客流分配自動化計算程序劃分為線網供給方案建模、線網需求方案建模、交通分配計算及數據輸出等4個主要功能模塊。城軌線網客流分配自動化計算程序的主要技術流程,如圖1所示。

圖1 城軌線網客流分配自動化計算程序的主要技術流程
線網供給方案模塊的主要功能是在VISUM軟件中完成線網供給方案模型的構建,以描述城軌車站、線路及列車等對象的特性,包括線網中節點與路段的生成,車站、線路、車次、車輛編組的建立與屬性設置,以及交通小區的生成等。
線網需求模塊的主要功能是在VISUM軟件中完成線網需求模型的構建,即乘客出行信息的描述。該模塊主要包括城軌OD矩陣的導入和乘客出行特征屬性的設置。
交通分配計算模塊的主要功能是基于VISUM軟件的計算流程完成交通分配計算。具體操作步驟如下:建立交通分配計算流程,設置相應計算參數,通過運行交通分配計算流程得到計算結果。
數據輸出模塊的主要功能是將VISUM軟件中得到的分配計算結果進行輸出。具體操作步驟如下:按指定對象和字段生成數據列表并將其保存至本地數據庫,將需要的計算結果繪制成圖并保存為本地圖片。
3.1.1 節點與路段生成
在VISUM軟件中構建城軌線網時,節點代表站點的位置,路段代表區間。路段具有方向性,由起始節點編號與到達節點編號來描述。VISUM軟件通過路段屬性表述路段上的交通特性。在構建城軌線網時需設置允許通過的交通方式、行駛速度、行駛時間等屬性。本程序從城軌線網.shp格式文件中讀取節點與路段信息,并在VISUM軟件中完成節點與路段對象的創建及其屬性設置。
3.1.2 交通小區設置
交通小區的設置主要涉及小區與小區連接線兩個對象。小區是乘客每次出行的起點與終點,它將交通供給與交通需求關聯起來。小區連接線用于將小區連接到路網,即小區質心和連接點之間的離開或到達路徑。本程序基于城軌站間OD矩陣進行客流分配,因此為每個站點需建立1個小區和1條小區連接線。
3.1.3 站點設置
在VISUM軟件中,通過車站、站點區域與站點等3個層面的對象來描述1個車站的特征。站點定義了1條線路的始發或到達點,列車在此處停泊并完成上下客。站點區域描述了軌道交通線網中從到達節點進入站點以及站點間的通路等區域。車站是等級最高的對象,涵蓋車站的名稱以及其他全部的構建屬性。車站包含整個站點區域集合,亦包含所有的站點。1個車站可以包含1個或多個站點區域。1個站點區域唯一從屬于1個車站,并可包含1個或多個站點。當1個車站包含多個站點區域時,1個車站內的不同站點區域之間的步行時間可以用來描述換乘步行時間。本程序在節點位置建立對應的車站、站點區域以及站點三級對象,并從外部基礎數據中讀取車站信息,完成車站名稱、換乘步行時間等屬性的設置。
3.1.4 線路、線路路徑與時刻表的設置
在VISUM軟件中,列車運行的相關信息通過線路、線路路徑、行駛時刻表及車輛歷程等對象來進行描述。線路對象是1條或多條線路路徑和對應時刻表的集合,概括了1條線路的基本信息。線路路徑對象描述了線路在1個方向上的空間路徑,是1個交路上行或下行方向的列車停靠站點的集合。行駛時刻表對象描述了1條線路路徑下各個車站的停站時間以及各個區間的行駛時間,但并不指定發車時間。車輛歷程對象是指1個行駛時刻表下的1趟車次,通過指定發車時間,并與行駛時刻表中包含的停站時間以及區間運行時間相結合,即可得到所有車站的到發時間。本程序根據外部基礎數據中的列車時刻表數據,自動建立線路、線路路徑、行駛時刻表與車輛歷程等對象,并完成相關屬性的設置。
列車時刻表是描述所有列車始發、停靠,終到站的站點信息,以及始發時間、到達時間、停靠時間等的表格。通常情況下,列車時刻表的單元格內容為到發時間,1列表示1個車次,1行表示1座車站。根據實際的列車時刻表手動設置VISUM軟件中的停站方案與時刻表,這包含大量的重復性工作,因此,本程序需要實現軌道交通線路的停站方案的制定,以及時刻表的自動化設置。具體實現的技術流程主要包含以下兩個步驟。
3.1.4.1 線路停站方案識別
采用VISUM軟件仿真1條線路中列車的實際運行情況時,需設置好列車需要停靠的車站。1條軌交線路1個方向的1個停站方案對應VISUM軟件中的1個線路路徑對象。具體如下:創建1個空集合L用于存儲線路路徑。讀取列車時刻表中第1班車次對應的1列,創建1個新的線路路徑對象l0。依次讀取此列每個時刻表的數值,若不為空值就代表該班列車在當前停站方案下停靠此站,將該車站的編號添加到l0中,直至該列的所有非空值讀取完畢。新建對象l1,取值為l0,將l1添加至L中,并初始化l0。讀取列車時刻表的下列,將該車次停靠車站的編號添加到l0中,并與L中所有線路路徑對比:若l0與l1一致,表示該車次屬于l1對應的停站方案;若l0與l1不一致,則新建對象l2,取值為l0,將l2添加至L中,并初始化l0。以此類推,對列車時刻表中的每列循環計算,即可確定1條線路的所有停站方案,以及每個車次與停站方案的對應關系。
3.1.4.2 列車時刻表建立
將列車到發時間輸入至線網供給方案模型。VISUM軟件中的行駛時刻表對象描述了1條線路路徑下列車在各個車站的停站時間,以及在各個區間的行駛時間,但并不指定發車時間。因此,需明確每個車次屬于1個停站方案下的某個停站時間方案。針對車次k,在式(1)中已經確定了該車次對應的列車停站方案m,則在線路路徑對象lm下新建行駛時刻表對象p0。對于該車次停靠的車站i,停站時間的計算方法為:
tk,i,停=tk,i,發-tk,i,到
(1)
式中:
tk,i,停——車次k的列車在車站i的停站時間;
tk,i,發——車次k的列車在車站i的發車時間;
tk,i,到——車次k的列車在車站i的到站時間。
列車從車站i至車站i+1的區間運行時間的計算方法為:
tk,i,運=tk,i+1,到-tk,i,發
(2)
式中:
tk,i,運——車次k的列車從車站i至車站i+1的區間運行時間;
tk,i+1,到——車次k的列車在車站i+1的到站時間;
tk,i,發——車次k的列車在車站i的發車時間。
依次計算k在每個停靠車站的停站時間和區間運行時間,并將其存儲在行駛時刻表對象p0中。比較p0與lm下的所有行駛時刻表對象,從而判斷k屬于哪種停站時間方案。
在VISUM軟件中確定了k的停站時間和區間運行時間后,若要確定該車次在所有停靠車站的到發時間,還需指定該車次的發車時間。設k屬于m下的停站時間方案s,則在lm的行駛時刻表對象ps下新建車輛歷程對象vk,指定其發車時間屬性為tk,1,發。至此,該車次在所有停靠車站的到發時間已經確定。循環執行以上步驟,就可以確定列車在每條線路每個停站方案每個方向上的到站和發車時間。
3.1.5 車輛編組設置
車輛編組信息可以通過車輛單元和車輛組合兩個對象進行描述。車輛單元是指1節車輛,車輛組合是由多節車輛單元組合成的列車編組。車輛單元包含座席數量與載客容量等屬性,車輛組合的這些屬性值等于車輛組合所包含的車輛單元的對應屬性值之和。本程序根據基礎數據中各條線路的列車編組信息,自動創建相應的車輛單元和車輛組合對象,并建立其與線路之間的聯系。
3.2.1 OD矩陣創建
需求矩陣描述了起點小區和終點小區之間的需求。OD矩陣中的數值代表起點小區和終點小區之間的出行量,是交通分配中不可或缺的部分。本程序以小區數量為維度創建OD矩陣,并讀取基礎數據中的OD矩陣數據。
3.2.2 需求組成部分與時間序列設置
需求組成部分是由采用同一種出行方式的乘客組成的集合。在分析時段內,出行需求的時間分布通過一個開始時間和一個需求時間序列來描述,即可以將分析時段劃分為更小的時間間隔,并指定每個時間間隔內的需求占總需求的比例。本程序針對城軌線網客流進行分配時,將需求組成部分對應的交通方式設定為公共交通,并按照基礎數據中的乘客出行時間分布設置時間序列。
3.3.1 計算流程的建立
針對公交出行的建模,VISUM軟件提供了3種不同的公交分配方法,即基于交通系統的分配方法、基于發車頻率的分配方法和基于時刻表的分配方法。這3種方法所需的輸入數據不同,其結果的精度及計算時間也不同。對于已有時刻表信息的城軌線網,本程序選擇基于時刻表的分配方法建立交通分配計算流程。
3.3.2 計算參數的設置
VISUM軟件構建的交通分配計算模型,主要包括路徑搜索、路徑預選、路徑阻抗計算、路徑選擇等步驟。本程序從基礎數據中讀取參數設置信息,并依次對交通分配計算模型中的參數進行設置。
3.3.3 交通分配的計算
在完成計算流程的建立以及模型參數的設置后,本程序按照給定算法運行分配計算流程,從而得到計算結果。
本文以上海城軌線網為研究對象,分別通過手動方式和本文開發的自動化程序建立城軌線網客流分配模型,并進行客流分配工作。與手動方式相比,自動化計算程序的效率提升主要體現在以下方面:
1) 線網供給建模。在建立城軌線網客流分配模型時:手動方式下需在VISUM軟件中創建對象,并為每類對象創建自定義屬性并賦值,當需要進行方案比選時還需重復進行這些操作;而自動化計算程序可以自動地讀取建模所需數據,并自動完成多方案的建模工作。
2) 線網需求建模。采用多個時段的OD矩陣進行交通分配,手動操作時需要逐一設置分配時段,并為每個時段添加矩陣。本程序可以自動按需讀取需求矩陣并將其導入模型。
3) 結果輸出與顯示。在導出交通分配計算結果時:手動操作方式下每次分配后需在線網、線路、路段、車站等多個層面創建列表,并為每個列表選取不同的字段;本程序可以通過讀取參數文件,按規則自動創建列表并導出至本地數據庫。在繪制計算結果趨勢圖時:手動操作方式下需為每張圖片設置圖形樣式,當需要顯示多個屬性時就會產生大量重復工作;本程序可以讀取預設的圖形參數,自動繪制各種類型的圖片。
本文研究了城軌線網客流分配的自動化計算方法,并通過軟件二次開發編寫了基于VISUM軟件的城軌線網客流分配自動化計算程序。通過對實例的分析,采用該方法進行城軌線網客流分配評價指標的計算,不僅可以滿足評價所需的復雜的分析計算要求,而且提高了評價工作的效率。