书签 分享 收藏 举报 版权申诉 / 7

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

  • 上传人:b***
  • 文档编号:2238614
  • 上传时间:2018-08-03
  • 格式:PDF
  • 页数:7
  • 大小:437.06KB
  • 摘要
    申请专利号:

    CN201510051451.2

    申请日:

    2015.02.01

    公开号:

    CN104778299A

    公开日:

    2015.07.15

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 17/50申请日:20150201|||公开

    IPC分类号:

    G06F17/50

    主分类号:

    G06F17/50

    申请人:

    浙江成功软件开发有限公司

    发明人:

    张子健; 陆宇飞; 陈奇; 江洁羽

    地址:

    310012浙江省杭州市文三路583号康新商务大厦c座2001-2004室

    优先权:

    专利代理机构:

    杭州求是专利事务所有限公司33200

    代理人:

    邱启旺

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种并行微观交通仿真中非阻塞式的车辆移动方法,该方法首先为每个路段中的车道创建一个车辆管理装置,用于管理车道上的车辆,并将组成路网的所有路段划分成多个组,每个组分配一个线程负责仿真车辆的状态。当车辆跨路段行驶时,则会带来并发与线程竞争问题,为解决这个问题,本方法利用一条硬件级的原子指令CAS指令,实现基于冲突检测的乐观并发策略,也就是非阻塞式的同步方案,避免了锁的使用,降低了并发仿真环境下线程间交互的性能损耗,使得整个微观交通仿真系统的性能有了明显提升,满足了城市规模道路交通系统的实时仿真需要。

    权利要求书

    1.  一种并行微观交通仿真中非阻塞式的车辆移动方法,其特征在于,包 括以下步骤:
    (1)仿真初始化阶段,包括以下子步骤:
    (1.1)为每一个路段中的每一条车道创建一个车辆管理装置(LVC);
    (1.2)将每一个路段映射到一个线程;
    (2)仿真进行阶段,若车辆仅在路段内部移动,则不涉及线程间的交互, 否则,若车辆从上游路段的车道进入下游路段中的车道,执行以下操作:
    (2.1)上游路段所处的线程将车辆从当前车道的LVC中除去,并将车辆 标记为游离状态,表示车辆不再属于任何路段;
    (2.2)上游路段所处的线程将车辆提交到下游车道的缓冲区中;
    (2.3)下游路段的线程从缓冲区中提取车辆并把车辆加入到下游车道的 LVC中,从而在并发环境下高性能地实现车辆的跨路段移动。

    2.
      根据权利要求1所述的并行微观交通仿真中非阻塞式的车辆移动方法, 其特征在于,所述步骤1.1中,每个LVC与每个路段中的每条车道是一一对应 关系,用于管理车道上的车辆,LVC由两部分组成:一个缓冲区,最多容纳一 个车辆对象的指针,用于保存刚刚从车道上游新进入的车辆;一个车辆容器, 用于保存车道上的车辆,车辆按位置的先后顺序排序。

    3.
      根据权利要求1所述的并行微观交通仿真中非阻塞式的车辆移动方法, 其特征在于,所述步骤1.2具体为:首先确定线程数量,用户可通过参数指定 线程数,若未指定,则默认线程数量即为CPU核心数量,假设线程数量为n, 则创建n个线程,存放在线程池之中;接下来把整个路网包含的所有路段分为 n组,每组固定分配给一个线程,组内所有路段中的车辆状态更新由该线程驱 动;路段分组方法需保证每个组的路段数尽可能相等,以使每个线程负载均衡。

    4.
      根据权利要求1所述的并行微观交通仿真中非阻塞式的车辆移动方法, 其特征在于,所述步骤2.2具体为:利用compare-and-swap(CAS)指令,上游 线程将车辆与下游车道缓冲区中的值进行一次原子交换,若交换得到空值,则 表示原缓冲区为空,表示车辆已经成功放入缓冲区中;否则上游线程交换得到 另一辆车,说明缓冲区中已有其它车辆,表示车辆发生碰撞,流程终止。

    5.
      根据权利要求1所述的并行微观交通仿真中非阻塞式的车辆移动方法, 其特征在于,所述步骤2.3具体为:利用CAS指令,下游线程将空值与缓存区 中的值进行一次原子交换,交换后下游线程得到缓冲区中的值(车辆或空值), 而缓冲区被换入空值;交换得到两种结果:a)若下游线程交换得到空值,说明 缓冲区中原本就没有车辆,此时终止流程;b)若下游线程交换得到的值非空, 则该值即为从上游车道驶入的车辆,此时将车辆加入到下游车道的LVC中, 将车辆状态更新为属于下游路段。

    说明书

    并行微观交通仿真中非阻塞式的车辆移动方法
    技术领域
    本发明涉及系统仿真领域、微观交通仿真领域,尤其涉及一种并行环境下 的微观交通仿真中非阻塞式的车辆移动方法。
    背景技术
    交通问题一直是一个严重的社会问题,制约着城市的发展。由于道路交通 系统是一个复杂的巨系统,单纯的理论研究或实验方法都不能很好的胜任,而 基于计算机仿真技术的微观交通仿真系统则是分析和解决交通问题的有效手 段。由于微观交通仿真系统需要模拟每一辆车的行为,因此对计算机的性能要 求较高,传统的微观交通仿真系统不能仿真大范围的交通系统。
    目前已有的并行微观交通仿真方法分两类,一类是创建多个线程,每个线 程完成特定的工作,但线程是非对称的,也就是每个线程负责不同的任务,因 此难以平衡线程之间的负载,也不能使线程数量根据CPU核心数灵活增减; 另一类并行仿真方法线程是对等的,但是在控制线程相互作用时使用了锁,即 阻塞式的同步方案。无论哪种方案,都还没有达到硬件性能的极限,影响微观 仿真系统性能的进一步提升。
    发明内容
    本发明的目的在于针对现有技术的不足,提供一种并行微观交通仿真中非 阻塞式的车辆移动方法。
    本发明的目的是通过以下技术方案来实现的:一种并行微观交通仿真中非 阻塞式的车辆移动方法,包括以下步骤:
    (1)仿真初始化阶段,包括以下子步骤:
    (1.1)为每一个路段中的每一条车道创建一个车辆管理装置(以下简称 LVC);
    (1.2)将每一个路段映射到一个线程;
    (2)仿真进行阶段,若车辆仅在路段内部移动,则不涉及线程间的交互, 否则,若车辆从上游路段的车道进入下游路段中的车道,由于不同路段分属于 不同的线程,因此会产生并发和竞争,此时需要执行以下操作:
    (2.1)上游路段所处的线程将车辆从当前车道的LVC中除去,并将车辆 标记为游离状态,表示车辆不再属于任何路段;
    (2.2)上游路段所处的线程将车辆提交到下游车道的缓冲区中;
    (2.3)下游路段的线程从缓冲区中提取车辆并把车辆加入到下游车道的 LVC中,从而在并发环境下高性能地实现车辆的跨路段移动。
    进一步地,所述步骤1.1中,每个LVC与每个路段中的每条车道是一一对 应关系,用于管理车道上的车辆,LVC由两部分组成:一个缓冲区,最多容纳 一个车辆对象的指针,用于保存刚刚从车道上游新进入的车辆;一个车辆容器, 用于保存车道上的车辆,车辆按位置的先后顺序排序。
    进一步地,所述步骤1.2具体为:首先确定线程数量,用户可通过参数指 定线程数,若未指定,则默认线程数量即为CPU核心数量,假设线程数量为n, 则创建n个线程,存放在线程池之中;接下来把整个路网包含的所有路段分为 n组,每组固定分配给一个线程,组内所有路段中的车辆状态更新由该线程驱 动;路段分组方法没有特殊要求,只需要保证每个组的路段数尽可能相等,以 使每个线程负载均衡。
    进一步地,所述步骤2.2中,所述下游路段车道对应的缓冲区属于临界资 源,上游线程将车辆提交到该缓冲区使用的是一种基于冲突检测的乐观并发策 略,也就是非阻塞式同步(Non-Blocking Synchronization)方案,不使用锁,具体 为:利用CAS指令,上游线程将车辆与缓冲区中的值进行一次原子交换,若 交换得到空值,则表示原缓冲区为空,表示车辆已经成功置入缓冲区中;否则 上游线程交换得到另一辆车,说明缓冲区中已有其它车辆,表示车辆发生碰撞, 流程终止;所述CAS(compare-and-swap)指令为硬件级的原子指令,CAS指令 包含3个操作数:内存地址V,旧的预期值A,新值B,当且仅当V中原有的 值和A值相等时,处理器用B值更新V中存储的值,否则就不执行更新,指 令的返回值视硬件的不同或者返回一个布尔值表示是否更新成功,或者返回V 中的旧值(不是新值B),上述整个操作是原子性的。
    进一步地,所述步骤2.3中,下游路段所处的线程从缓冲区中获取车辆同 样使用CAS指令,具体为:下游线程将空值与缓存区中的值进行一次原子交 换,交换后下游线程得到原缓冲区中的值(车辆),而缓冲区被置空;若下游 线程交换后仍为空值,说明缓存区中原本就没有车,此时终止流程;否则,下 游线程得到从上游线程驶入的车辆,此时应将车辆加入到下游车道的LVC的 车辆容器中,并更新车辆的位置状态为隶属于下游车道,同时进行安全性检查; 安全性检查指的是判断车辆位置是否与前面车辆重叠,若重叠表示车辆发生碰 撞,此时终止流程。
    与现有技术相比,本发明的有益效果是:1)线程之间是对称的,平等的, 可以任意增加或减少线程数量,可以完全利用不同核心数量的CPU;2)显著提 高了车辆移动的性能,从而提高了微观交通仿真的整体性能,利用硬件级的原 子指令,完全避免了锁的使用,消除了线程之间的同步开销,在普通4核心电 脑上支持超过100万台车辆的仿真,满足城市规模交通的实时仿真。
    附图说明
    图1是车道上车辆管理装置(LVC)的结构示意图;
    图2是上游车道的线程将车辆提交给下游车道的流程图;
    图3是下游车道的线程接收车辆的流程图。
    具体实施方式
    下面结合附图对本发明作进一步详细说明。
    本发明一种并行微观交通仿真中非阻塞式的车辆移动方法,包含以下步 骤:
    (1)仿真初始化阶段,包括以下子步骤:
    (1.1)为每一个路段中的每一条车道创建一个车辆管理装置(LVC)。
    车辆管理装置(以下简称LVC)用于管理车道上的车辆,其结构如图1所 示,由两部分组成:一个缓冲区,最多容纳一个车辆对象的指针,用于保存刚 刚从车道上游新进入的车辆;一个车辆容器,用于保存车道上的车辆,车辆按 位置的先后顺序排序。仿真初始化阶段需要为每个路段中的每条车道创建一个 LVC,LVC与车道是一一对应关系。
    (1.2)将每一个路段映射到一个线程。
    该步骤首先要确定线程数量,用户可通过参数指定线程数,若未指定,则 默认线程数量即为CPU核心数量,假设线程数量为n,则创建n个线程,存放 在线程池之中,以供后续使用。接下来把整个路网包含的所有路段分为n组, 每组固定分配给一个线程,组内所有路段中的车辆状态更新由该线程驱动。路 段分组方法没有特殊要求,只需要保证每个组的路段数尽可能相等,以使每个 线程负载均衡。
    (2)仿真行进阶段,当车辆在路段之内移动时,不产生进程间的交互, 故不需要额外的同步措施。但是当车辆从一个路段进入另一个路段时,由于不 同路段分属于不同的线程,因此会产生并发和竞争,此时需要执行以下步骤, 即完成非阻塞式的车辆移动:
    (2.1)上游路段所处的线程将车辆从当前车道的LVC中除去,并将车辆 标记为游离状态,表示车辆不再属于任何路段。
    上游线程将车辆从上游车道的LVC中删除,并将车辆位置更新为游离状 态,表示不再属于任何路段。车辆在跨路段移动过程中是不属于任何路段的, 只有在移动完成后才会属于某个特定的路段。因此在移动开始时需要先把车辆 的位置更新为游离状态。
    (2.2)上游路段所处的线程将车辆提交到下游车道的缓冲区中。
    下游车道LVC的缓冲区属于临界资源,上游线程将车辆提交到该缓冲区 时本发明使用的是一种基于冲突检测的乐观并发策略,也就是非阻塞式同步 (Non-Blocking Synchronization)方案,不使用锁。具体为:
    i)利用一条硬件级的原子指令:compare-and-swap(CAS)指令,CAS指令 包含3个操作数:内存地址V,旧的预期值A,新值B,当且仅当V中原有的 值和A值相等时,处理器用B值更新V中存储的值,否则就不执行更新,指 令的返回值视硬件的不同或者返回一个布尔值表示是否更新成功,或者返回V 中的旧值(不是新值B),最后上述整个操作是原子性的。目前大部分微处理器 都已经提供了CAS指令,如x86,IA64中的CMPXCHG指令。
    ii)利用CAS指令,上游线程将车辆与缓冲区中的值进行一次原子交换。 若交换得到空值,则表示原缓冲区为空,表示车辆已经成功置入缓冲区中;否 则上游线程交换得到另一辆车,说明缓冲区中已有其它车辆,表示车辆发生碰 撞,流程终止。
    步骤(2.1)、(2.2)的过程如图2所示。
    (2.3)下游路段所处的线程从缓冲区中获取车辆并把车辆加入到LVC中。
    下游线程从缓冲区提取车辆也是使用CAS指令,下游线程将空值与缓存 区中的值进行一次原子交换,交换后下游线程得到原缓冲区中的值(车辆),而 缓冲区被置空。另一方面,若下游线程交换后仍为空值,说明缓存区中原本就 没有车,此时应该终止流程。否则,下游线程得到从上游线程驶入的车辆,此 时应将车辆加入到下游车道的LVC的车辆容器中,并更新车辆状态,同时进 行安全性检查。其中更新车辆状态指的是将车辆位置更新为属于下游路段,安 全性检查检查指的是判断车辆位置是否与前面车辆重叠,若重叠表示车辆发生 碰撞,此时应终止流程。整个过程如图3所示。

    关 键  词:
    并行 微观 交通 仿真 中非 阻塞 车辆 移动 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:并行微观交通仿真中非阻塞式的车辆移动方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-2238614.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1