一种基于gpu的社会力模型人群实时仿真方法

文档序号:10593907阅读:376来源:国知局
一种基于gpu的社会力模型人群实时仿真方法
【专利摘要】本发明涉及一种基于GPU的社会力模型人群实时仿真方法。包括:S1.设行人的受力感知范围;S2.根据当前场景的结构信息和行人受力感知范围,采用均匀网格分割法来划分虚拟场景,得到网格化的场景;S3.根据已分割好的场景,在行人受力感知范围内对与当前行人所在网格相邻的8个近邻网格中的行人进行并行化查询获得其他行人的分布信息;S4.根据行人受力感知范围内其他行人的分布信息并行化计算行人间相互作用力;S5.根据社会力模型的思想,CPU串行化计算行人的自驱力、行人与障碍物之间的作用力,结合行人间相互作用力,计算出当前行人新的速度和位置信息,完成群体的更新工作。本发明大大降低了算法的时间复杂度。
【专利说明】
-种基于GPU的社会力模型人群实时仿真方法
技术领域
[0001] 本发明设及计算机图形学、系统仿真、虚拟现实等领域,更具体地,设及一种基于 GPU的社会力模型人群实时仿真方法。
【背景技术】
[0002] 随着现代经济的迅速发展,人民的生活水平得到了巨大的提升,城市化已经成为 了主流的趋势。城市人口迅猛增长,城市规模无限制扩大的同时,也带来了很多难W解决的 问题。在大型城市里,由于人口众多、资源较为集中、±地面积较为有限,容易出现很多人聚 集在一个相当小区域的现象。城市的办公楼和公寓变得越来越复杂,大型建筑业日益增多, 公共场所人群聚集的情况不可避免,但是所面临的安全问题也越来越严重。
[0003] 与此同时,与体育、文化、娱乐和宗教活动有关的大型活动在世界各地也都定期举 行。一旦发生突发事件,如果人群得不到很好的疏散,就会发生阻塞拥挤现象,人群在恐慌 情况下极易发生拥挤踩踏等灾难事件,容易造成严重的人员伤亡。发生突发事件时,如何快 速有效地组织人员及时疏散,从而有效地减少事故造成的人员伤亡,已成为国内外公共安 全研究的重点。
[0004] 随着计算机技术的飞跃发展,通过与计算机信息技术的相结合,建立基于计算机 的人群仿真系统来研究公共场所人群疏散问题,具有低投入、易操作、可重复、数据易采集 等优势。社会力模型作为人群仿真的经典模型之一,它借鉴牛顿力学对行人在不同环境下 的主观意愿、行人间相互作用W及行人与环境间的相互作用进行建模,并用社会力的概念 进行描述,能够真实地重现许多现实世界里可观察到的人群现象和规律。
[0005] 但是,随着人群规模的增大,社会力模型指数级的算法时间复杂度单纯依靠(PU串 行已无法满足当前的需求,导致了原模型很难应用于大规模实时人群仿真场景中。
[0006] 为了能够利用社会力模型对上万规模的人群进行实时仿真,有必要降低原算法的 时间复杂度W适应大规模人群仿真,同时也可W利用更先进的技术、更多的硬件资源完成 运一需求。

【发明内容】

[0007] 本发明为克服上述现有技术所述的至少一种缺陷,提供一种基于GPU的社会力模 型人群实时仿真方法,该方法借助社会力模型能够真实地模拟出现实世界里人群运动的特 点,利用GPU多核并行计算的方法,在人群数量急剧增加的过程中保证了仿真的效率。
[000引为解决上述技术问题,本发明的技术方案如下: 一种基于GPU的社会力模型人群实时仿真方法,包括: 51. 设行人的受力感知范围; 52. 根据当前场景的结构信息和行人受力感知范围,采用均匀网格分割法来划分虚拟 场景,得到网格化的场景; 53. 根据已分割好的场景,在行人受力感知范围内对与当前行人所在网格相邻的8个近 邻网格中的行人进行并行化查询获得其他行人的分布信息; S4.根据行人受力感知范围内其他行人的分布信息并行化计算行人间相互作用力; S5.根据社会力模型的思想,CPU串行化计算行人的自驱力、行人与障碍物之间的作用 力,结合行人间相互作用力,计算出当前行人新的速度和位置信息,完成群体的更新工作。
[0009] 上述方案中,所述分布信息包括行人分布情况和行人总数。
[0010] 上述方案中,设行人受力感知范围为圆形,步骤S2中虚拟场景分割时网格大小L与 行人受力感知范围的半径R相等。
[0011] 上述方案中,步骤S3的具体步骤包括: S31.初始化得到虚拟场景中每个网格的行人分布情况W及行人总数; 533. 并行化查询当前行人所在网格的8个近邻网格,当查询到近邻网格内行人数不为0 时,将该网格内行人加入到当前行人所在网格的近邻行人分布表中,得到当前行人所在网 格受力感知范围的行人分布信息; 534. 将当前行人所在网格中的其他行人分布信息及其8个近邻网格的其他行人分布信 息存入到受力感知范围表。
[0012] 上述方案中步骤S4的具体步骤包括: 541. -个block表示一个网格单元,block中的每个线程thread代表该网格单元中的一 个行人; 542. 利用threadidx. X为0的线程得到当前网格W及其8个近邻网格行人的数据信息; 543. 遍历近邻网格内所有的行人更新其受力情况,如果所遍历的行人状态没有更新 过,则进行更新工作,否则不再更新其信息; 544. 将行人所受的排斥力、反弹力和摩擦力叠加,返回行人间的相互作用力。
[0013] 上述方案中,步骤S5中更新的计算公式如下:

其中,^表示行人的加速度,t表示时间; 表示行人的自驱 漁 力,蜡征)和帮約分别表示行人期望速度的大小和方向,Tf表示松弛时间,撫《和瑪好)表 示行人1的质量和速度,S ;;'..'和.之,^">...分别表示行人间的相互作用力和行人与障碍物间的作 彷的 用力J表示除行人i外的其他行人,W表示场景中的障碍物,通过上式(1)可W得到行人的当 前加速度,根据行人的当前加速度得到行人的速度和位置信息。
[0014] 与现有技术相比,本发明技术方案的有益效果是: 本发明在早期的社会力模型基础上引入了行人受力感知范围的概念,并根据该范围的 大小采用均匀网格分割法对模拟的当前场景进行分割,将每个网格作为并行化人群实时仿 真方法的独立更新单元,充分利用GPU多线程的特点,完成了行人状态的并行化查询和更新 工作。本发明相对于现有的社会力模型,由于缩小了并行化计算的范围,大大降低了算法的 时间复杂度,可W由指数级降为线性级,同时也提高了仿真时的帖速,使得本发明的方法能 够满足实时性的要求。
【附图说明】
[0015] 图1为本发明一种基于GPU的社会力模型人群实时仿真方法具体实施例的人群信 息更新过程示意图。
[0016] 图2为本发明一种基于GPU的社会力模型人群实时仿真方法具体实施例的流程图。
[0017] 图3为本发明中均匀网格法分割场景及行人受力感知范围的示意图。
[0018] 图4为本发明的方法与原社会力模型算法的CPU与GPU的FI^性能对比图。
【具体实施方式】
[0019] 附图仅用于示例性说明,不能理解为对本专利的限制; 为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺 寸; 对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可W理解的。
[0020] 下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0021] 实施例1 本发明的方法是采用人群仿真经典模型之一的社会力模型,结合GPU并行技术,使模型 能够应用到大规模实时人群仿真中。
[0022] 如图1所示,是本发明一种基于GPU的社会力模型人群实时仿真方法具体实施例的 人群信息更新过程示意图,该过程主要由两部分组成:GPU并行化查询更新行人状态和CPU 串行化计算、擅染行人运动。两部分相互协调完成整个人群实时仿真工作,在仿真的过程 中,各部分具体的实现功能如下: CPU端的主要工作有:初始化系统参数,包括环境参数、行人运动参数、社会力模型参 数、行人数量W及行人初始位置信息等;根据场景和行人信息进行图形绘制,主要包括图形 顶点操作、纹理操作W及擅染操作等;串行化计算行人的自驱力、行人与障碍物之间的作用 力、行人受到的吸引力等;根据CPU端和GPU端得到的行人受力情况,计算行人所受合力大 小,然后基于牛顿力学计算出行人的当前加速度,进而对行人的速度和位置信息进行更新。
[0023] GPU端的主要工作有:资源初始化,准备GPU并行计算相关资源和准备存储空间接 收内存传递过来的数据;并行化近邻查询,并行化计算行人间相互作用力;计算行人间所受 力的合力。
[0024] 具体地,如图2所示,为本发明一种基于GPU的社会力模型人群实时仿真方法具体 实施例的流程图。参见图2,本具体实施例一种基于GPU的社会力模型人群实时仿真方法的 具体步骤包括: SlOl.设行人的受力感知范围。
[0025] 行人在运动的过程中只会关注其自身某个范围内的变化,不会考虑远处变化的影 响。本发明基于运一特点,提出了行人受力感知范围的概念。每个行人都可W根据自己的受 力感知范围来获取该范围内其他行人的相关信息,而对于范围外的行人则忽略,运样不仅 降低了社会力模型的算法时间复杂度,而且可W充分利用GPU并行化计算能力并行化更新 行人状态。
[0026] 其中,在本步骤中,其他行人的分布信息包括但不限于其他行人的分布情况和行 人总数。
[0027] S102.根据当前场景的结构信息和行人受力感知范围,采用均匀网格分割法来划 分虚拟场景,得到网格化的场景。
[0028] 在此步骤中,采用均匀网格分割法对当前场景进行分割时网格大小是依据行人受 力感知范围进行的。具体地: 根据社会力模型行人间相互作用力的计算公式可得,当行人间的距离为2m时,此时行 人间的社会力只有5.0 X 1(:厂5災,几乎可W忽略不计,据此行人受力感知范围设置时可 W定义半径R为2m的圆所在范围定为行人受力感知范围。在仿真的过程中,每个行人都会根 据自己的受力感知范围来获取该范围内其他行人的相关信息,根据查询到的信息计算得到 受力感知范围内其他行人作用于该行人的社会力大小,然后根据牛顿定律得到此刻该行人 的加速度并结合当前行人的运动状态调整自身的速度大小及方向,实现行人位置的更新。
[0029] 在考虑了行人受力感知范围内行人的作用后,社会力模型的算法时间复杂度由原 来的按绣吗降到了包錢I *MMC较巧,R表示行人受力感知范围,R取如,錢举轉麵表示行 人感知范围内能够容纳其他行人的最大值。对于划分场景的网格大小L,当只需要考虑W该 行人所在的网格单元为中屯、的周围8个网格单元中的行人对其影响时,网格单元的大小L大 于等于行人受力感知范围R。另一方面,从算法复杂度的角度考虑,网格单元L越大,每个网 格内就会容纳更多的行人,算法的时间复杂度就会越高,因而需要网格单元大小L越小越 好,综合来看,取网格大小L=R。如图3所示,半径为R的虚线圆形表示的行人受力感知范围, 虚拟场景W该行人受力感知范围的半径R为基准进行分割,使得虚拟场景被分割成很多个 均匀的网格单元,每个网格一般情况下有8个相邻的网格,每个网格单元中要么不包含行 人,要么包含一个或者多个行人。
[0030] S103.根据已分割好的场景,在行人受力感知范围内对与当前行人所在网格相邻 的8个近邻网格中的行人进行并行化查询获得其他行人的分布信息。在此步骤中,分布信息 包括但不限于行人分布情况和行人总数。本步骤的具体步骤具体如下: 51031. 初始化阶段:初始化得到虚拟场景中每个网格的行人分布情况W及行人总数情 况; 51032. 通过GPU中当前线程位置的blockIdxW及threadidx获取该当前行人所在网格 的编号; 51033. 通过当前行人所在网格的编号得到其8个近邻网格的编号; 51034. 并行化近邻查询阶段:并行化查询当前行人所在网格的8个近邻网格,当查询到 近邻网格内行人数不为0时,将该网格内行人加入到当前行人所在网格的近邻行人分布表 中,得到当前行人所在网格受力感知范围的行人分布信息。具体仿真时,CUDA中线程束warp 起到真正执行的作用,而每个线程束warp包含32条线程,运样将线程块大小设置为32(32个 线程)。近邻网格包括8个,对当前行人所在网格相邻的8个网格行人的分布情况进行查询需 要8个线程,而每个线程块有32个进程,因而可W将4个网格的近邻查询操作总计32个 threads构成一个线程块block。并行化近邻查询后,可W得到当前网格受力感知范围的行 人分布情况; S1035.将当前行人所在网格中的其他行人分布信息及其8个近邻网格的其他行人分布 信息存入到受力感知范围表。在所有近邻查询完成后,要计算行人受力感知范围内其他行 人产生的作用力,还需要考虑行人所在网格中行人的影响,因而最后可W用threadidx.X为 O的线程将当前行人所在网格中的行人及其近邻网格的行人一起存入到受力感知范围表 中。
[0031] S104.根据行人受力感知范围内其他行人的分布信息并行化计算行人间相互作 用力。
[0032] 由于行人自驱力、人与墙壁的作用力的计算耗时呈线性关系,可W用CPU串行计 算。此外,如果将行人作用力的计算W及行人速度位置的更新工作放在一起,必然会导致相 邻网格数据更新的读写矛盾,运样的话只能采取部分并行化更新策略,势必会影响并行的 效果,因此,本发明中只并行化计算行人间作用力,具体步骤如下: S1041.资源配置:由于不存在数据更新的读写矛盾,因而用一个block表示一个网格单 元,block中的每个线程thread代表该网格单元中的一个行人; S42.初始化:利用threadidx.x为0的线程得到当前网格W及其8个近邻网格行人的数 据信息;所述数据信息具体包括但不限于当前行人所在网格单元编号、8个近邻网格编号、 当前行人所在网格的行人数目、近邻网格行人数目、当前行人速度、当前行人位置、近邻网 格行人位置。
[0033] S1043.遍历近邻网格内所有的行人更新其受力情况,如果所遍历的行人状态没有 更新过,则进行更新工作,否则不再更新其信息; S1044.将行人所受的排斥力、反弹力和摩擦力叠加,返回行人间的相互作用力。
[0034] S105.根据社会力模型的思想,CPU串行化计算行人的自驱力、行人与障碍物之间 的作用力,结合行人间相互作用力,计算出当前行人新的速度和位置信息,完成群体的更新 工作。
[0035] 具体地,步骤S105中更新的计算公式如下:

其中,;表示行人的加速度,t表示时间; 表示行人的自 dt 驱力,粹I錢)和琴觸分别表示行人期望速度的大小和方向,表示松弛时间,巧i和 萌掉3表示行人i的质量和速度,嘉氣和I為分别表示行人间的相互作用力和行人与障碍 物间的作用力,j表示除行人i外的其他行人,W表示场景中的障碍物,通过上式(1)可W得到 行人的当前加速度,根据行人的当前加速度得到行人的速度和位置信息。
[0036] 更新完行人的位置信息后,就可W对行人的位置进行判断,当判断行人处于场景 外的,则可W将行人从行人集中移除,然后判断人群是否疏散完毕,当判断行人处于场景内 的,接着判断人群是否疏散完毕,如果没有疏散完毕,接着执行步骤S103及其后续步骤,直 到人群疏散完毕。
[0037] 利用本发明的方法与原社会力模型算法进行一系列仿真实验,图4为仿真实验的 比较结果。参见图4当群体的数目很少的情况下是无法体现出它的优化程度,而当人群数目 增大时,在同等硬件配置条件下,并行化算法的优势就体现出来了。运里采用帖速FPS运一 参数作为优化结果的评价参数,相同条件下,帖速越高的算法用于计算的时间越少,时间复 杂度越低。从图中可W看出,随着人群数目的不断增加,基于GPU算法的帖速相对于基于CPU 的倍数不断增加,最多可达到6.5倍,并且在人群数目为10240人时,FPS仍有21,基本可W满 足实时的效果。
[0038] 本发明的方法借助社会力模型能够真实地模拟出现实世界里人群运动的特点,引 入行人受力感知范围的概念,并根据该范围的大小采用均匀网格分割法对模拟场景进行分 害d,然后将每个网格作为并行化人群实时仿真算法的独立更新单元,充分利用GPU多线程的 特点,完成了行人状态的并行化查询和更新工作。本发明提出的基于GPU的社会力模型人群 实时仿真方法不仅在时间复杂度上要优于原模型,而且仿真时的帖速也得到了很大的提 高,基本能够满足实时性的要求,能够适用于大规模人群实时仿真。
[0039] 相同或相似的标号对应相同或相似的部件; 附图中描述位置关系的仅用于示例性说明,不能理解为对本专利的限制; 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发 明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可W做 出其它不同形式的变化或变动。运里无需也无法对所有的实施方式予W穷举。凡在本发明 的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保 护范围之内。
【主权项】
1. 一种基于GRJ的社会力模型人群实时仿真方法,其特征在于,包括:51. 设行人的受力感知范围;52. 根据当前场景的结构信息和行人受力感知范围,采用均匀网格分割法来划分虚拟 场景,得到网格化的场景;53. 根据已分割好的场景,在行人受力感知范围内对与当前行人所在网格相邻的8个近 邻网格中的行人进行并行化查询获得其他行人的分布信息;54. 根据行人受力感知范围内其他行人的分布信息并行化计算行人间相互作用力; S5.根据社会力模型的思想,CPU串行化计算行人的自驱力、行人与障碍物之间的作用 力,结合行人间相互作用力,计算出当前行人新的速度和位置信息,完成群体的更新工作。2. 根据权利要求1所述的基于GPU的社会力模型人群实时仿真方法,其特征在于,所述 分布信息包括行人分布情况和行人总数。3. 根据权利要求1所述的基于GPU的社会力模型人群实时仿真方法,其特征在于,设行 人受力感知范围为圆形,步骤S2中虚拟场景分割时网格大小L与行人受力感知范围的半径R 相等。4. 根据权利要求1所述的基于GPU的社会力模型人群实时仿真方法,其特征在于,步骤 S3的具体步骤包括:531. 初始化得到虚拟场景中每个网格的行人分布情况以及行人总数;532. 并行化查询当前行人所在网格的8个近邻网格,当查询到近邻网格内行人数不为0 时,将该网格内行人加入到当前行人所在网格的近邻行人分布表中,得到当前行人所在网 格受力感知范围的行人分布信息;533. 将当前行人所在网格中的其他行人分布信息及其8个近邻网格的其他行人分布信 息存入到受力感知范围表。5. 根据权利要求1所述的基于GPU的社会力模型人群实时仿真方法,其特征在于,步骤 S4的具体步骤包括:541. -个block表示一个网格单元,block中的每个线程thread代表该网格单元中的一 个行人;542. 利用threadldx.x为0的线程得到当前网格以及其8个近邻网格行人的数据信息;543. 遍历近邻网格内所有的行人更新其受力情况,如果所遍历的行人状态没有更新 过,则进行更新工作,否则不再更新其信息;544. 将行人所受的排斥力、反弹力和摩擦力叠加,返回行人间的相互作用力。6. 根据权利要求1至5任一项所述的基于GPU的社会力模型人群实时仿真方法,其特征 在于,步骤S5中更新的计算公式如下:其中,:?表示行人的加速度,t表示时间I示行人的自驱 力,讀_和髮_分别表示行人期望速度的大小和方向,表示松弛时间,_ :和 表示行人i的质量和速度,和分别表示行人间的相互作用力和行人与障碍物间的作 用力,j表示除行人i外的其他行人,W表示场景中的障碍物,通过上式(1)可以得到行人的当 前加速度,根据行人的当前加速度得到行人的速度和位置信息。
【文档编号】G06F9/455GK105955797SQ201610281593
【公开日】2016年9月21日
【申请日】2016年4月28日
【发明人】纪庆革, 王福川, 印鉴
【申请人】中山大学, 广州智海纵横信息科技有限公司, 广州中大南沙科技创新产业园有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1