本期我们将介绍VISSIM 4.3 版本二次开发的基本指令,包括路网运行控制、仿真参数设置、检测参数获取及控制算法嵌入。同时将附上一个完整的匝道控制案例源代码(包含inp路网文件)。 1前 言
自VISSIM二次开发系列前十一期文章发布以来,小编收到了很多反馈和问题,主要集中在以下几点:
(1) 许多读者朋友是用matlab、vb或者其他平台进行VISSIM二次开发,对C#不熟悉;
(2) 有许多特定的需求,比如:无人驾驶场景模拟,驾驶行为参数标定、交叉口自适应控制等;
(3) 希望公开检测参数获取和匝道控制的源代码。 第一个问题,希望读者朋友们能够掌握开发的原理和方法,平台仅仅是工具;第二个问题,如果有好的案例或者DEMO,希望能够拿出来分享,有问题也可以通过智联交通QQ群一起讨论;第三个问题,本期会介绍4,3版本开发的基本指令,并附上匝道控制案例的完整源代码。
2匝道控制场景
本期以一个匝道控制场景的构建过程为例,总结VISSIM 4.3二次开发的基本指令。
如图1所示为实施匝道控制的快速路瓶颈区域,因其地理位置原因(该匝道是南环高架南段唯一的一处上匝道,毗邻商圈),上匝道需求较大,匝道汇入主线为3并2,且汇入后的2车道宽度较窄,匝道车流汇入持续对主线交织区产生干扰,导致汇入点通行能力下降。,高峰时段主线排队部分时段超过1公里。为缓解拥堵,使上匝道车辆有序进入主线,管理部门拟在入口匝道处设计信号控制灯,在周边分流路口设置VMS信息板,并与地面信号控制相协调,限于篇幅,本文仅介绍匝道控制的一种方案——ALINEA控制(相关资料参考第五期)。
(a) 匝道控制地理位置
(b) 高峰期快速路主线拥堵
图 1 快速路瓶颈区域
如图2所示为瓶颈区域早高峰车速及车流量变化,由匝道上下游车速、流量数据可见:匝道下游的主线通行能力保持稳定,在4000pcu/h左右,而上游主线流量在2800~3200pcu/h,匝道流量达到900~1200pcu/h水平时,主线上游流量交通状态开始恶化。因此将匝道交通汇入量控制在900pcu/h以下能够保证快速路主线运行的通畅和通行能力的保持。
(a) 早高峰瓶颈区域各路段车速变化
(b) 早高峰瓶颈区各路段车流量变化 图 2 瓶颈段早高峰车速及流量变化
3 VISSIM建模
首先在VISSIM软件中搭建好相应的快速路模型,设置好相应的检测器,本案例中一共设置了三类检测器,即:行程时间检测器(TravelTime)、交织区占有率检测器(DataCollection)、排队长度检测器(QueueCounter),各检测器布设位置如图3(b)所示。
(a) 快速路模型(车速<10km/h 显示红色)
(b) 检测器布设 图 3 VISSIM快速路建模
在进行检测参数读取时,为了简便起见,预先在VISSIM软件中激活各检测器并设置好要检测的参数(检测周期也需与代码中设置的一致,本文设置100仿真秒),如图4所示。
图 4 软件中完成相应检测设置
同时需要设置匝道信号灯,控制类型为周期控制,控制周期120仿真秒,如图5所示。需要说明的是,以上检测器和信号灯编号均为1。
图 5 匝道控制信号灯
4匝道控制C#实现
本文中依据以构建一个匝道控制仿真实验工具为例进行说明,基本的
VISSIM 4.3 COM接口库加载、C#开发环境设置、控件设置等内容参考第一期文章,不再敖述,实验工具界面如图6所示。
(a) 仿真参数设置
(b) 控制参数设置
(d) 检测参数设置
图 6 匝道控制仿真实验工具
整个系统的运行流程如图7所示:
图 7 运行流程
启动路网,完成初始化后按照循环单步仿真的逻辑运行,根据设定的检测周期和控制周期调用相应的函数,到达仿真周期后退出路网并执行系统复位。相关
函数如下:
① IntialSystem() 初始化路网对象、控件参数等; ② RsetSystem() 系统变量及控件参数复位 ③ DetectNetwork() 获取路网各检测器参数 ④ RampControl() 匝道控制函数