并行微观交通仿真中非阻塞式的车辆移动方法

文档序号:8457398阅读:514来源:国知局
并行微观交通仿真中非阻塞式的车辆移动方法
【技术领域】
[0001]本发明涉及系统仿真领域、微观交通仿真领域,尤其涉及一种并行环境下的微观交通仿真中非阻塞式的车辆移动方法。
【背景技术】
[0002]交通问题一直是一个严重的社会问题,制约着城市的发展。由于道路交通系统是一个复杂的巨系统,单纯的理论研宄或实验方法都不能很好的胜任,而基于计算机仿真技术的微观交通仿真系统则是分析和解决交通问题的有效手段。由于微观交通仿真系统需要模拟每一辆车的行为,因此对计算机的性能要求较高,传统的微观交通仿真系统不能仿真大范围的交通系统。
[0003]目前已有的并行微观交通仿真方法分两类,一类是创建多个线程,每个线程完成特定的工作,但线程是非对称的,也就是每个线程负责不同的任务,因此难以平衡线程之间的负载,也不能使线程数量根据CPU核心数灵活增减;另一类并行仿真方法线程是对等的,但是在控制线程相互作用时使用了锁,即阻塞式的同步方案。无论哪种方案,都还没有达到硬件性能的极限,影响微观仿真系统性能的进一步提升。

【发明内容】

[0004]本发明的目的在于针对现有技术的不足,提供一种并行微观交通仿真中非阻塞式的车辆移动方法。
[0005]本发明的目的是通过以下技术方案来实现的:一种并行微观交通仿真中非阻塞式的车辆移动方法,包括以下步骤:
[0006](I)仿真初始化阶段,包括以下子步骤:
[0007](1.1)为每一个路段中的每一条车道创建一个车辆管理装置(以下简称LVC);
[0008](1.2)将每一个路段映射到一个线程;
[0009](2)仿真进行阶段,若车辆仅在路段内部移动,则不涉及线程间的交互,否则,若车辆从上游路段的车道进入下游路段中的车道,由于不同路段分属于不同的线程,因此会产生并发和竞争,此时需要执行以下操作:
[0010](2.1)上游路段所处的线程将车辆从当前车道的LVC中除去,并将车辆标记为游离状态,表示车辆不再属于任何路段;
[0011](2.2)上游路段所处的线程将车辆提交到下游车道的缓冲区中;
[0012](2.3)下游路段的线程从缓冲区中提取车辆并把车辆加入到下游车道的LVC中,从而在并发环境下高性能地实现车辆的跨路段移动。
[0013]进一步地,所述步骤1.1中,每个LVC与每个路段中的每条车道是一一对应关系,用于管理车道上的车辆,LVC由两部分组成:一个缓冲区,最多容纳一个车辆对象的指针,用于保存刚刚从车道上游新进入的车辆;一个车辆容器,用于保存车道上的车辆,车辆按位置的先后顺序排序。
[0014]进一步地,所述步骤1.2具体为:首先确定线程数量,用户可通过参数指定线程数,若未指定,则默认线程数量即为CPU核心数量,假设线程数量为n,则创建η个线程,存放在线程池之中;接下来把整个路网包含的所有路段分为η组,每组固定分配给一个线程,组内所有路段中的车辆状态更新由该线程驱动;路段分组方法没有特殊要求,只需要保证每个组的路段数尽可能相等,以使每个线程负载均衡。
[0015]进一步地,所述步骤2.2中,所述下游路段车道对应的缓冲区属于临界资源,上游线程将车辆提交到该缓冲区使用的是一种基于冲突检测的乐观并发策略,也就是非阻塞式同步(Non-Blocking Synchronizat1n)方案,不使用锁,具体为:利用CAS指令,上游线程将车辆与缓冲区中的值进行一次原子交换,若交换得到空值,则表示原缓冲区为空,表示车辆已经成功置入缓冲区中;否则上游线程交换得到另一辆车,说明缓冲区中已有其它车辆,表示车辆发生碰撞,流程终止;所述CAS(compare-and-swap)指令为硬件级的原子指令,CAS指令包含3个操作数:内存地址V,旧的预期值A,新值B,当且仅当V中原有的值和A值相等时,处理器用B值更新V中存储的值,否则就不执行更新,指令的返回值视硬件的不同或者返回一个布尔值表示是否更新成功,或者返回V中的旧值(不是新值B),上述整个操作是原子性的。
[0016]进一步地,所述步骤2.3中,下游路段所处的线程从缓冲区中获取车辆同样使用CAS指令,具体为:下游线程将空值与缓存区中的值进行一次原子交换,交换后下游线程得到原缓冲区中的值(车辆),而缓冲区被置空;若下游线程交换后仍为空值,说明缓存区中原本就没有车,此时终止流程;否则,下游线程得到从上游线程驶入的车辆,此时应将车辆加入到下游车道的LVC的车辆容器中,并更新车辆的位置状态为隶属于下游车道,同时进行安全性检查;安全性检查指的是判断车辆位置是否与前面车辆重叠,若重叠表示车辆发生碰撞,此时终止流程。
[0017]与现有技术相比,本发明的有益效果是:1)线程之间是对称的,平等的,可以任意增加或减少线程数量,可以完全利用不同核心数量的CPU ;2)显著提高了车辆移动的性能,从而提高了微观交通仿真的整体性能,利用硬件级的原子指令,完全避免了锁的使用,消除了线程之间的同步开销,在普通4核心电脑上支持超过100万台车辆的仿真,满足城市规模交通的实时仿真。
【附图说明】
[0018]图1是车道上车辆管理装置(LVC)的结构示意图;
[0019]图2是上游车道的线程将车辆提交给下游车道的流程图;
[0020]图3是下游车道的线程接收车辆的流程图。
【具体实施方式】
[0021]下面结合附图对本发明作进一步详细说明。
[0022]本发明一种并行微观交通仿真中非阻塞式的车辆移动方法,包含以下步骤:
[0023](I)仿真初始化阶段,包括以下子步骤:
[0024](1.1)为每一个路段中的每一条车道创建一个车辆管理装置(LVC)。
[0025]车辆管理装置(以下简称LVC)用于管理车道上的车辆,其结构如图1所示,由两部分组成:一个缓冲区,最多容纳一个车辆对象的指针,用于保存刚刚从车道上游新进入的车辆;一个车辆容器,用于保存车道上的车辆,车辆按位置的先后顺序排序。仿真初始化阶段需要为每个路段中的每条车道创建一个LVC,LVC与车道是一一对应关系。
[0026](1.2)将每一个路段映射到一个线程。
[0027]该步骤首先要确定线程数量,用户可通过参数指定线程数,若未指定,则默认线程数量即为CPU核心数量,假设线程数量为n,则创建η个线程,存放在线程池之中,以供后续使用。接下来把整个路网包含的所有路段分为η组,每组固定分配给一个线程,组内所有路段中的车辆状态更新由该线程驱动
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1