张嘉敏,张嘉锐
(1.山东科技大学 交通学院,山东 青岛 266590;2.中国铁路济南局集团有限公司青岛机务段,山东 青岛 266041)
城市轨道交通是国家新型基础设施建设的七大领域之一。网络化已成为当今城市轨道交通发展的既成事实,据最新数据统计[1],截至2019年底,世界上共有520座城市开通城市轨道交通,涉及75个国家和地区,总运营里程超过28198km;中国累计有40座城市开通城市轨道交通,总运营里程达6730.27km,线网规模和客流规模均位居全球首位。交通系统仿真技术运用计算机模型再现和分析复杂交通现象,Railsys、Opentrack分别是德国汉诺威大学和铁路管理咨询公司、瑞士苏黎世联邦理工学院开发的铁路网络系统仿真软件,技术成熟度较高,但针对中国轨道交通系统的具体仿真应用,其可二次开发编程的灵活度具有一定的局限性,NetLogo在一定程度上可以较好弥补这方面的不足。
从物理构成角度考察,城市轨道交通网络是由线路、车站等行车设备及其之间的关联关系连接而成的多起讫点的静态网络(many-origin-to-many-destination networks),车站、区间、轨道等是网络结构功能的基础体系[2],是城市轨道交通列车运行的必要物理支撑。城市轨道交通线路间的关联关系包括对等关系、主次关系、并行分流、交叉衔接、完全衔接等,换乘站特别是大型换乘站是城市轨道交通网络的关键结合点,线路与换乘点的关联关系主要指线路通过还是终止于换乘点;交汇于换乘站点的线路,由于线路与换乘站点关系以及线路之间的不同关系,会产生不同的换乘方向个数,进而衍生线网规划设计与运营管理的复杂性,其中乘客的交换流向称为换乘方向[3]。
交通运输网络的物理统计特征主要包括节点中心性、小世界特性、无标度特征、权重和强度分布、社区结构以及静态/动态鲁棒性。从几何角度考察,通常交通运输网络的规划设计一般都有特定的形状,如放射状、矩形、网格状、三角形[4];其中网格型(棋盘型)结构和放射型结构是最常见、最基本的城市轨道交通线网的几何形态结构,在此基础上,考虑增加环线,又可形成“环线+网格型”和“环线+放射型”等多种演绎形态。早期的一些公共交通系统的网络结构设计主要着眼于简单的放射型,然而,从20世纪80年代以来发生了一些变化,对于交通网络设计大多数方法要么采用更为切合实际的、不规则的网格形状,要么认为网络结构对于建模无关紧要而不予以特别指定[5-6]。
文献[7]综合应用数学规划、网络模型和数据统计分析的方法研究复杂的公共交通网络。通过对北京地铁网络的动态属性的详细分析,文献[8]的研究表明,当考虑客流量时,城市轨道交通网络的异质性与脆性会随时间发生变化。作为城市公共交通的一种方式,城市轨道交通网络的形式化表示可以有两种类型,即基于频率(frequency-based)的表示方法和基于时刻表(schedule-based)的表示方法[9]。在基于频率方法的表达模型中,根据网络中边与节点的关系,一般采用拓扑有向图(如L型空间或P型空间)或连接矩阵的方式架构城市轨道交通物理网络。不同规模下城市轨道交通网络的节点度分布服从幂律分布,其网络具有典型的小世界特性和无标度特征[10]。综合来看,城市轨道交通网络的几何物理特性主要涵盖通达性、延展性、可靠性、便捷性、先进性,其中先进性具体表现为面向业务运作层面的数字化建设、信息化/自动化运行与维护、自助式智能化乘客服务等,在技术装备(如传感器与视频监测技术、基于CBTC列车运行控制系统)与管理水平(如车辆自动定位技术AVL、客流自动计数APC)上具备了现代化物理信息系统(CPS)的典型特征,为城市轨道交通网络的智能化运营提供了硬件基础。
NetLogo[11]是由Uri Wilensky在1999年发起的,由美国西北大学连接学习和计算机建模中心(CCL)负责持续开发,是一系列源自StarLogo的多主体建模语言的下一代。Net-Logo完全可编程,人在回路,可以在所有主流平台上(Mac,Windows,Linux等)作为一个独立应用程序运行;面向对象,移动主体(海龟)在由静态主体(瓦片)组成的网格上移动;交互性强,主体之间可以创建链接,形成聚集、网络和图;内置大量原语,特别适合于对随时间演化的复杂系统进行建模,可用2D或3D模式查看模型,提供对自然和社会现象进行仿真的可编程建模环境,界面构建包括输出区、开关、按钮、选择器、滑动条、监视器、文本框、注解,具有强大灵活的绘图系统,建模人员能够向成百上千的独立运行的“主体”(agent)发出指令,从而使得探究微观层面上的个体行为与宏观模式之间的联系成为可能,因为许多个体之间的交互可能会涌现出宏观模式。
网络环境是城市轨道交通系统运行的主要决定因素与基础载体,城市轨道交通网络环境具有多元化、交互性等特征,利用NetLogo平台,可以生成较为真实的城市轨道交通网络环境,相较于Anylogic[12]仿真软件,利用NetLogo以代码方式生成城市轨道交通网络环境,NetLogo更具灵活性和可实现性。基于NetLogo平台架设生成城市轨道交通网络环境,要统筹集成车站节点、轨道线路、列车、乘客这四大要素,及其相互间的非线性复杂交互演化。NetLogo仿真的基本思想是:生成增强现实的城市轨道交通网络环境场景,将轨道交通系统中的主要要素模拟成计算机中的主体(agents),各要素之间的交互行为模拟成agents的属性和行为,并引入交互机制,将人/车/路作为一个完整交通系统,设计动态性场景库,以供各主体agent在感知、分析的基础上进行决策、控制、优化、执行等活动。交通运输网络建模是一项富有挑战性的任务,城市轨道交通网络仿真环境的生成是其他相关具体网络仿真项目环节的依托与载体,如动态路径选择规划、客流分配、出行行为分析、能力计算[13]、运力运量匹配[14]、运输组织方案与运行图评估、客流强度自适应性测算、行车调度指挥、网络规模匡算与可达性分析等。
类似于其它仿真软件,城市轨道网络仿真环境可以用NetLogo底图导入的方式,但是由于相关技术资料获取的困难性,在没有底图的情况下,只能利用NetLogo以代码方式生成,而且相较于底图导入,虽然增加了编程技术难度,但更富仿真生成灵活性和界面效果友好性。在明确仿真目的,确定各项仿真技术参数的基础上,运用智能体建模,城市轨道交通网络环境生成NetLogo仿真流程如图1所示。
图1中各子环节生成代码示例如下,其中每行代码双分号后的文字为注释语句。
to setup
clear-all ;;将世界重设为初始、全空状态
setup-nodes ;;建立车站节点
setup-URT-network ;;建立城市轨道交通网络
setup-trains ;;创建列车主体
setup-OD ;;随机生成客流需求矩阵
reset-ticks ;;按时间步更新
end
to setup-nodes
set-default-shape circles"circle"
create-circles 6 ;;网络中创建6个节点
[
ask circle 0[
图1 城市轨道交通网络环境生成NetLogo仿真流程
setxy 0 0 ;;将车站0设置在中心位置
set size 4 ;;设置几何尺寸
set label 0 ;;设置标签
set station-type center-transfer-station ;;车站0的类型为中心换乘站
set station-capacity 4200 ;;参照地铁设计规范虚设车站最大容量
set alighting-proportion random 10/10 ;;设置列车在车站的下客率
]
ask circle 1[
setxy-5 10
set size 2
set label 1
set station-type transfer-station ;;车站1的类型为一般换乘站
set station-capacity 3200
set alighting-proportion random 10/10
]
ask circle 2[
setxy 8 10
set label 2
set station-type intermediate-station ;;车站2的类型为中间站
set station-capacity 2500
set alighting-proportion random 10/10
]
ask circle 3[
setxy 12-3
set size 2
set label 3
set station-type transfer-station ;;车站3的类型为一般换乘站
set station-capacity 3200
set alighting-proportion random 10/10
]
ask circle 4[
setxy 6-11
set size 3
set label 4
set station-type larger-transfer-station ;;车站4的类型为较大换乘站
set station-capacity 3600
set alighting-proportion random 10/10
]
ask circle 5[
setxy-4-9
set label 5
set station-type end-station ;;车站5的类型为始发/终到站,即端点站
set station-capacity 2000
set alighting-proportion random 10/10
]
]
End
to setup-URT-network
ask circle 0[create-link-with circle 1];;链接车站0与车站1,进而创建红线
ask link 0 1[
set thickness 1
set color red
set weight 1200 ;;weight的单位为米,即相邻两站间的距离
]
ask circle 0[create-link-with circle 3]
ask link 0 3[
set thickness 1
set color red
set weight 700
]
ask circle 1 [create-link-with circle 2];;创建绿线
ask link 1 2[
set thickness 1
set color green
set weight 850
]
ask circle 2[create-link-with circle 0]
ask link 2 0[
set thickness 1
set color green
set weight 1000
]
ask circle 0[create-link-with circle 4]
ask link 0 4[
set thickness 1
set color green
set weight 650
]
ask circle 5 [create-link-with circle 4];;创建蓝线
ask link 5 4[
set thickness 1
set color blue
set weight 1100
]
ask circle 4[create-link-with circle 3]
ask link 4 3[
set thickness 1
set color blue
set weight 900
]
end
create-cars num-trains
[
setxy-5 10 ;;设置所有列车初始地理位置
set train-speed 9.72 ;;设置列车速度
set capacity 1000 ;;设置单列车最大载客量
set npob 0 ;;设置初始车上乘客人数
]
to setup-OD
create-persons 15 ;;对称OD矩阵上半对角设置有15个元素
[
ask person 13 [ ;;person后边的数字13代表who值
;;person 13-person 17 分别代表OD 01,02,03,04,05
;;任意两个海龟的who编号都不会重复,此前已创建6个circles和7条links,who值已从0编号到12,故此处person的who值从13开始
set O 0 ;;乘客的O点为车站0
set D 1 ;;乘客的D点为车站1
set label 01 ;;乘客的标签为01
setxy 0 0 ;;乘客已经位于出发车站0
set color 9
hatch random-poisson 3*60*0.1 ;;OD需求矩阵元素对应同类乘客数量值
]
ask person 14[
set O 0
set D 2
set label 02
set color 15
hatch random-poisson 3*60*0.2
]
ask person 15[
set O 0
set D 3
set label 03
set color 25
hatch random-poisson 3*60*0.2
]
ask person 16[
set O 0
set D 4
set label 04
set color 35
hatch random-poisson 3*60*0.2
]
ask person 17[
set O 0
set D 5
set label 05
set color 45
hatch random-poisson 3*60*0.3
]
ask person 18[ ;;person 18--person 21分别代表 OD 12,13,14,15
set O 1
set D 2
set label 12
setxy-5 10
set color 55
hatch random-poisson 2*60*0.1;;set arr-rt random-poisson 2
]
ask person 19[
set O 1
set D 3
set label 13
set color 65
hatch random-poisson 2*60*0.3
]
ask person 20[
set O 1
set D 4
set label 14
set color 75
hatch random-poisson 2*60*0.4
]
ask person 21[
set O 1
set D 5
set label 15
set color 85
hatch random-poisson 2*60*0.2
]
ask person 22 [ ;;person 22--person 24分别代表 OD 23,24,25
set O 2
set D 3
set label 23
set color 95
hatch random-poisson 2*60*0.3
]
ask person 23[
set O 2
set D 4
set label 24
set color 105
hatch random-poisson 2*60*0.4
]
ask person 24[
set O 2
set D 5
set label 25
set color 115
hatch random-poisson 2*60*0.3
]
ask person 25 [ ;;person 25-person 26分别代表 OD 34,35
set O 3
set D 4
set label 34
set color 125
hatch random-poisson 2*60*0.4
]
ask person 26[
set O 3
set D 5
set label 35
set color 135
hatch random-poisson 2*60*0.6
]
ask person 27[ ;;person 27代表OD 45
set O 4
set D 5
set label 45
set color 107
hatch random-poisson 2*60
]
]
End
在NetLogo仿真平台依图1流程运行上述代码,生成一个具有6个车站节点、3条轨道线路(红线、绿线、蓝线)的城市轨道交通网络如图2所示。在该网络环境生成三条路径,r1:1-0-4-5,r2:1-2-0-4-5,r3:1-2-0-3-4-5,在该环境下再编制路径选择/客流分配代码并仿真运行500个时间步后,获得乘客在各条路径上的分布特征如图3所示,发现路径r3吸引了最多乘客,可视为关键路径。
图2 NetLogo生成的城市轨道交通仿真网络
图3 乘客在各条路径上的分布特征
《中国城市轨道交通智慧城轨发展纲要》[15]明确指出,城轨交通行业应推进城轨信息化,发展智能系统,建设智慧城轨,实现智慧网络管理,开创“交通强国、城轨担当”的新局面。在轨道交通数字化、网络化、信息化、智能化的总体发展趋势下,NetLogo等仿真技术可以动态地、形象而逼真地模仿/复现轨道交通系统的种种现象,经济而有效的评估交通问题的相关解决方案[16],是研究复杂交通问题的重要工具,亦是智能交通运输系统的重要组成部分之一,从而达到探究/解析轨道交通系统智能运营[17]的目的。本文研究了基于NetLogo的城市轨道交通网络仿真环境生成问题,并进行了实例验证,为后续进一步深入开展相关仿真研究奠定了基础与参考。实际轨道交通网络数据OD对数往往十分庞大(与车站数近似成平方关系),可以考虑在满足应用需求的前提下归并部分OD,划分区域OD,压缩路网模型规模,再利用NetLogo平台生成网络仿真环境。