如何自己编写一个交通仿真软件(二)原野。

一、葵花宝典

首先,抛开理论,研究研究模型(感谢自己的硕士论文,我打字打够了,女票的小手在哪里?)

首选需要对几个基本交通要素要求进行建模:

1、静态交通模型:

    车道(RoadLane,在计算机这货看来是个队列,用于容纳元胞空间);

    道路(是车道的集合,有方向的队列容器,内部有一系列车道);

    交叉口(棋盘类似,用来容纳元胞空间或者说,车辆或者行人空间,计算机看来是个矩阵) 

    路网(NetWork,计算机看来是个图,为了表示交通中的单行道和双行道的区别,注意,这个   应该是有向图);

2、动态交通模型:

车辆CAR 和行人(行人模型在本系统中为抽象的car没有体现,元胞自动机的粒度要小于车辆);

交通控制模型:信号灯、交通灯(信号控制,包含一组信号灯);

交通规则模型:速度限制(交通规则模型),可变信息板(vms)。


二、首先来看静态交通模型的表示:

1)车道和道路模型

这里面涉及到三个实体、车道、道路(有方向)

实际道路网络中的路段形式往往不是一直不变的,路段是由多条不同类型的车道组成的,如左转车道,右转车道,直行车道等等,而且,路段中进口道的宽度和出口道的宽度时不相等的,进口道往往进行了拓宽以增加交叉口的通行能力。在进行利用元胞自动机进行仿真系统建模的过程中,需要对这进口道展宽这一几何特征在元胞空间中进行描述。

在基于元胞自动机的交通仿真系统中,交通中的动态元素如车辆的移动是用不同位置处的元胞不断变化的状态来进行模拟的。为了模拟道路进口道展宽这一现象,需要引入特殊的元胞,这些元胞在仿真的任何时刻元胞状态都是被占用的状态(本文中称为堵塞元胞)。利用堵塞元胞(图中黑色格子),可以利用图4.1所示的方法来模拟进口道展宽。在进口道中,增加一条车道,该车道的一部分在起始状态全部由堵塞元胞占据,车道的剩余部分则是正常元胞空间网格,在正常元胞空间网格中如果元胞的状态为占用状态,则表示某一时刻该位置处被车辆占据,其他车辆不能进入。在被堵塞的元胞空间网格中(图中黑色部分),任何时刻都是被占用状态,这样就不能代表有表示车辆的状态变化,在宏观上表现为车俩不能进入这些空间。图4.1和图4.2 都是利用该方法建立的展宽渐变段元胞空间模型。

如何自己编写一个交通仿真软件(二)原野。

4.1 进口道左转展宽示意图

如何自己编写一个交通仿真软件(二)原野。

4.2 进口道右转展宽示意图

车道模型的代码 参见 SubSys_SimDriving.TrafficModel 命名空间RoadLane类。不再粘贴代码了,免得非程序猿跳脚。。

2)交叉口模型

交叉口是道路路网的重要节点,道路交叉口情况和环境复杂,多种因素交互作用,相互影响,如信号灯,不同流向的车流之间争夺有限的时空资源,往往产生多种冲突和矛盾,因此道路交叉口的管理水平往往对整个道路交通网络的运行状态起着决定性的作用。同时,道路交叉口也是交通仿真技术的难点和重点之一,不少交通仿真软件对于交叉口的处理采取了简化的手段,如Transims不对交叉口时空状态进行详细描述,仅仅在车辆经过交叉口的时候引入一个适当的延误来模拟交叉口对整个路网的影响,这对于大规模交通路网的宏观交通交通模拟仿真是可以接受的。然而对于细粒度的微观交通仿真,对交叉口的处理需要更加细化,需要对交叉口每一个仿真步长的时空状态进行细致的刻画和描述。这种要求使得类似于Transims的交叉口处理方法变得不适合用于交叉口的仿真。

按照交通管理方式的不同,平面交叉口有无控制交叉口、让路交叉口、信号控制交叉口和环岛交叉口等几种类型。实际道路网路中的交叉口的形状变化非常多,本文为简化建模,仅仅对常规四路交叉口进行建模,并且将其简化为矩形的网格状空间,每个空间代表一个元胞,当有车辆元胞占据时,元胞状态为1,否则为0。代表交叉口的矩阵的长度为系统容许的路段的最大车道数。利用这种方法,可以清晰描述交叉口范围内任意仿真时刻的车辆元胞的空间位置,也可以很容易的模拟车辆在交叉口的由于争夺空间资源而产生的冲突。在图中,当一个元胞空间被车辆元胞占据之后,其他车辆元胞就不可以再进入这个元胞空间。这一特性就可以避免交叉口中出现车辆穿越车辆的情况,关于车辆空间资源的竞争。有学者提出采用博弈论的方法来模拟两辆竞争道路系统空间资源的两辆车辆,并且提出了详尽的模型。[3]。本文中将问题简化,采取随机处理的方法,两个车辆中随机选择一辆车辆进入竞争的元胞空间,来避免复杂的计算。

如何自己编写一个交通仿真软件(二)原野。

交叉口模型用邻接矩阵表示;

然后是交叉口的模型代码参见RoadNode .cs源代码文件:

必须在数据结构上进行优化,为了快速检索大型交叉口的元素。发挥创新精神,建立了哈希矩阵这一个组合的数据结构,几年前发表在CSDN上,不知道现在如何了。找个链接贴过来:

      http://blog.csdn.net/sapperjiang/article/details/7157296 三年过去了398个人阅读。还可以。

3)路网模型

路网的表示。道路路网提供机动车辆行驶的环境,而在仿真系统中利用路网作为容纳车辆元胞的容器,提供车辆元胞演化和状态更新的空间,从元胞角度看,路网是所有车辆元胞可以达到的空间网格的集合。在道路路网外部是车辆元胞不可到达的区域。

交通仿真系统中的道路网络的拓扑结构可以按照图论中图的理论进行表示和抽象,按照图论的相关内容,对于不存在单行道的道路网络,可以将其表示为无向图,对于有单行道的道路网络,可以将其表示为有向图。考虑到交通仿真系统的复杂性,对于需要计算路段阻抗和效用函数的高级应用如,车辆动态路径规划问题,需要将道路网络进一步表示为带权有向图。关于无向图,有向图,带权有向图的概念请参见图论相关文献。

如何自己编写一个交通仿真软件(二)原野。

4.4有向图和无向图的矩阵表示法

如何自己编写一个交通仿真软件(二)原野。



4.5 有向图和无向图的邻接表表示法

由于道路网络规模可能很大,为了节省计算机资源,本文中采用邻接矩阵表示法来表示道路网络,在每个道路网络中引入广义费用或者阻抗函数作为道路路段的权重。关于路段阻抗函数的定义和分析将在路径规划中进行说明。



你可能感兴趣的:(地理信息系统,交通仿真软件,并行仿真,交通流理论,交通信息工程,元胞自动机。)