基于netlogo的大规模人群行为仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于netlogo的大规模人群行为仿真
题目:基于netlogo的大规模人群行为仿真
基于netlogo的大规模人群行为仿真
摘要
随着数字化人体运动仿真技术的日趋成熟,尤其是其应用的迅速,也得到了很好的推广,虚拟合成领域中的大规模的人口流动模拟技术开始成为研究的热点。

大规模的人群运
动模型的主要工作是研究在各种环境中,情节下的人群的运动规律和特征,建立大规模的
人群运动仿真模型,并在计算机上生成的三维空间(虚拟环境)中逼真的描述在运动过程
中的人群的运动过程。

人口规模的运动仿真技术提供了一个人群的运动分析和演示工具,装
具有广泛的应用领域。

Netlogo是一个基于Agent的仿真建模工具。

本文主要描述了Netlogo的工作原理和主要特性,并通过一个简单的实例描述了该工具的建模和实验过程。

虚拟人群行为的驱动方
法可以通过设计的虚拟人群行为属性来描述人群将采取的行为;以生产规则来实现虚拟仿
真人群行为事件/响应模式。

最后,将人群行为建和实现方法模应用在人群紧急疏散逃生
模拟中,并可取得了良好的效果。

关键词:虚拟人群;人群仿真;行为研究;虚拟视觉;路径规划
目录
1 引言 (6)
1.1 课题研究意义及其应用 (6)
1.2 Netlogo的特性与开发 (7)
1. 3 课题研究的内容 (7)
2 人群行为仿真建模 (8)
2.1 人群行为仿真模型的初始化 (8)
2.2 人群运动的仿真 (13)
3 模型的结果及分析 (18)
3.1 构建实验控件 (18)
3.2 实验结果及分析 (19)
3.2.1 最大旋转角对实验的影响 (19)
3.2.2 人口数量对实验的影响 (21)
3.2.3 出口大小对实验的影响 (22)
4 结论与展望 (24)
参考文献 (25)
致谢................................ 错误!未定义书签。

附录 (27)
1 引言
1.1课题研究意义及其应用
大规模人群运动仿真,就是研究人群在各种环境、情节下的运动特征与规律,建立大规模人群运动的仿真模型,并在计算机生成空间(虚拟环境)中以三维的方式逼真地展示大规模人群的运动过程[1]。

随着计算机数值模拟技术的迅速发展,人群行为仿真技术开始成为人群疏散仿真、城市规划和计算机疏散软件开发方面的研究热点。

人群行为仿真是研究人群运动的基础,综合考虑各方面因素对人群运动的影响,对人群运动进行分析,建立相应的模型,从而将在虚拟的环境中模拟出的人群的行为应用于各个领域[2]。

大规模人群运动仿真技术,提供了人群运动的分析和演示工具,可应用的领域相当广泛。

研究影响人群行人的运动因素,建立一个适当的行人的运动模型,通过计算机对行人的运动进行模拟,模拟人群聚集过程中可能出现的状况,预测发生事故的场景,给公共活动场所的建设和人群疏散提供参考,并对群体活动现场的工作布置与安全工作安排的积极意义,极大地保证了人身安全。

大规模人群的运动仿真技术可应用于许多公共安全领域,如码头,机场,体育场馆,地铁站等大型公共设施与设计[3]。

以体育馆为例,可应用大规模的人群流动数值模拟技术,根据球场的规模、常规情况和特殊情况下得疏散情况来设置安全出口。

无论是对走廊宽度设计,还是出口和出口位置的合理数量的设计都需要复杂的辅助分析,才能够更好地设计出更合适的公共场作。

人群运动仿真可以在球迷发生冲突,火灾,恐怖袭击和其他非常规的情况下,辅助人员建立在紧急疏散计划,可以应用于消防设备的合理布置,警力分布;也可作为场馆管理人员的消防安全,反恐演习和训练的辅助工具。

与传统方法相比,大规模人群仿真技术,具有直观,灵活,高效,经济和人员等诸多优点的安全风险。

人口规模的运动仿真技术示范功能能够逼真的模拟人群运动,如地购物商场,欢呼的体育场,铁站等人流量很大的公共场作的人群行为。

因此,它可以应用于国防科研,电影和电视媒体,娱乐,游戏等[4]。

大规模人群仿真技术是一个新兴的技术,技术还处在初级阶段,各方面的技术还不够
成熟,但随着计算机硬件的发展和研究领域,技术的快速发展,迅速改变。

国内外学者进行了大量的研究工作,大规模人群运动仿真技术的应用现状及前景非常好[5]。

1.2Netlogo的特性与开发
Netlogo具有多智能体建模语言,它功能强大,易于使用,易于开发。

Netlogo包含完整的文档和教程,很多可以直接使用和修改,系统还提供了大量的模型,模型库提供涉及医学,计算机科学,化学,物理学,数学,生物学和经济社会的哲学,自然科学和社会科学,特别适合初学者学习[7]。

在Netlogo中有海龟(turtles)、块(patches)和观察员(observer)三类智能体。

观察员可以观察和控制仿真世界的运行。

海龟是可以移动的对象,可以代替现实世界中的任何一种有活动特性的物体,可以代替模型中的一个人、一只昆虫、一辆汽车或一片草地;而块则代表了海龟所生存的环境,整个环境是由若干个块拼接构成,可代替模型中的一个房间、一片绿地、一个桌子等[8]。

通过控制海龟和块,通过编程为其设定各种属性和运行规则,可以并行地控制成千上万的海龟和块,使其具有自己的运动规则并在彼此的相会作用中形成群体的运动。

这里的交互作用包括海龟和块的交互及海龟和海龟的交互,前者体现了主体与环境的关系,后者则体现了主体之间的关系,在人群行为仿真过程中,可表现为人与人的相互作用及人与环境之间的相互作用[9]。

1.3 课题研究的内容
该课题研究模拟的是人群处在陌生的环境中,在各种外界与心理条件的影响下找到出口的时间的检测。

人群运动是大自然中一种既复杂又有趣的运动,它有同蚁群、蜂群、鱼群和鸟群等动物群体的行为相似的地方,又有其独特的规律它的研究真是耐人寻味。

人群的运动的特殊性主要表现在它是由离散的流动的人群组成的,并受到心理因素的影响。

它的视觉效果和规律都很复杂,似乎是随机排列,但却有着一定的规律,令人难以捉摸。

人群行为的研究是仿真建模的重要环节,而其仿真模型对于电影动画的制作、生物学研究以及现代军事化大型战斗群体协同作战控制都有重要的意义。

本文构建了基于Netlogo的开发平台,根据自然界人群运动的特点进行建模仿真,这个模型同时满足人群的基本运动特征,并可以通过全局变量的设置是人群行为更加生动逼真。

利用大规模人群仿真技术的演示功能,分析每个人的心理行为,结合人与人之间和人与环境之间的差异想不同的方向移动,最终找到安全出口。

2 人群行为仿真建模
2.1人群行为仿真模型的初始化
NetLogo是一个多主体建模仿真集成环境,大量的可移动主体在二维空间中交互作用,随着时间推进,微观个体的属性不断发生变化,系统的宏观特征也因此而变化。

虚拟世界由主体构成,主体能够接受命令,进行活动,所有主体的行为并行发生。

NetLogo中共有三类主体,turtles(小海龟)、patches(瓦片)、observer(观察者)。

to setup ;;定义例程setup
clear-all ;;设置整个世界为初始状态
;;创建100个turtles,创建后各turtle默认坐标是(0,0)
create-turtles 100
;;命令所有turtle执行语句setxy random-xcor random-ycor
;;各turtle 坐标随机产生,实现turtles在空间中的随机分布
ask turtles
[setxy random-xcor random-ycor]
end
turtles指能够在世界中移动的主体。

crt population
[ set color blue ;; random shades look nice
set size 1.5 ;; easier to see
setxy (random-float (world-height - 10) + min-pycor + 1)
(random-float (world-height - 2) + min-pycor + 1)
;; set heading random-pycor + 90
]
世界是二维的,划分为由patches组成的网格,每个patch占据一个矩形小块。

observer是一个全局主体,它观察着由turtles和patches构成的世界,能够执行指令获取世界全部或部分的状态,或实现对世界的控制。

三个主体空间之间的关系如图2-1虚拟空间所示:
图2-1 虚拟空间
在NetLogo主界面窗口中建立一个陌生环境模型。

将世界重设为初始、全空状态,所有瓦片变黑,基本上是将过去一笔勾销,为新模型运行做好准备。

在视图中设置来定义陌生环境的边界。

整个视图是由许多瓦片组成的网格,每个瓦片是一块正方形的“地面”(ground),瓦片也有自己的坐标。

瓦片原点(origin)的坐标是(0,0),一般位于整个环境的中间位置,其他瓦片的坐标也就是与原点的垂直距离和水平距离。

用pxcor和pycor 表示瓦片的坐标,像几何中标准坐标平面一样,向右移动pxcor增加,向上移动pycor增加。

设置不同位置瓦片的颜色,形成黄色的墙体和红色的出口,并能通过调节滑轴设置出口的大小[10]。

ask patches with [(pxcor = min-pxcor) or
((pxcor < 30) and (abs pycor = max-pycor))
]
[ set pcolor yellow ]
ask patches with [pxcor = 30]
[ ifelse abs pycor > window-edge
[ set pcolor yellow ]
[ set pcolor red ] ]
可以把瓦片想象成地板上铺的方形瓷砖。

默认情况下房子正中的一片瓷砖标记为(0,0),意味着如果我们在水平和垂直方向画等分线,交叉点这在此处。

这样我们就有了一个在房间中定位对象的坐标系统,如图2-2坐标系统所示:
图2-2 坐标系统
在NetLogo中,从右到左的瓷砖数称为世界宽度(world-width)。

如图2-3世界宽度所示:
图2-3 世界宽度
从顶到低的瓷砖数称为世界高度(world-height)。

图2-4世界高度所示:
图2-4 世界高度
这些数字由顶、低、左、右边界(top, bottom, left and right)来定义。

在这些图中,max-pxcor 是3 , min-pxcor是 -3, max-pycor 是 2 ,min-pycor 是 -2. 当你改变瓦片大小时,瓦片(瓷砖)的数量不变,只是屏幕上瓦片的大小变化了。

ask patches with [ (pxcor = min-pxcor) or
((pxcor < 30) and (abs pycor = max-pycor))
]
[ set pcolor yellow ]
ask patches with [pxcor = 30]
[ ifelse abs pycor > window-edge
[ set pcolor yellow ]
[ set pcolor red ]
]
海龟是在世界中移动的主体,设置滑动条调节海龟数量的多少,设置海龟形状为人。

控制者可“控制所有的仿真变量:人口数量、出口大、影响人群运动的各种心理因素等。

在netlogo中形成的界面如图2-5程序实现界面所示:
图2-5 程序实现界面
建模的一个目的是对那些难以在实验室中进行研究的问题收集数据。

绘图室NetLogo 显示数据的一个主要方式。

人群仿真这个模型的图只有一条线:人的数量。

这条线显示了随着时间推进模型中人口数量发生了怎么样的变化。

如果忘记这条线代表的是什么时,可以在图形窗口的右上角单击”Pens”,打开画笔图例。

一个关键字说明了每条线是什么。

在本例中就是人口数量,纵坐标表示的是人口的数量,横坐标表示的是时间。

按下"go"按钮在图中会绘制出一条随着时间变化人口数量降低的一条曲线。

如图2-6人数数量和疏散时间关系曲线所示:
图2-6 人数数量和疏散时间关系曲线
视图的尺寸由5个设置共同决定:最小X、最大X,最小Y、最大Y和瓦片尺寸。

当图快被充满时,水平轴增加,以前的数据被压缩只占一部分空间,更多的空间用来绘制将来的图形。

如果你想保存图上数据以备查看,或在另一个程序里进行分析,使用File菜单的"Export Plot"。

这些数据就被保存,数据格式可以被电子表格,如Excel,或数据库程序识别。

也可以通过Ctr+单击(Mac)或右击(Windows)弹出快捷菜单,然后选择"Export..."。

2.2人群运动的仿真
仿真的基本框架中至少要有初始化例程和仿真执行例程:初始化例程实现对模型初始状态的设置,生成所需的turtles,设置其状态,以及其它工作。

该仿真程序执行通过go 实现,在例程中需要执行各种命令来完成一个仿真步长的工作。

创建一个按钮,和gol例程相联系,设置该按钮为一个永久(forever)按钮,点击后会不断重复执行仿真例程,直到它接到停止命令或用户再次点击按钮时仿真停止。

NetLogo模型包括例程和可视化部件两部分,二者相互联系,共同作用完成仿真。

首先在Interface中创建可视化控件,然后在Procedures中实现相应的代码,通过设置控件的属性将二者联系起来。

Interface中主要有三类部件:参数控制、运行控制、仿真显示[11]。

仿真的基本框架如图2-7所示:
图2-7 仿真的基本框架
当一个人处在过陌生的环境中时,他们是通过怎样的找到安全出口的。

通过观察你会发现人们找到安全出口的方法很多,有的人单独的找来找去,而有的人是很容易的结成团队走来走去。

当个人走来走去时,碰到墙壁时人们的运动方向发生怎样的变化?如果你长期观察这种变化,你应该注意到模式的形成具有一定的规律。

此模型是一个研究处于陌生状态中的人群行为。

此运动规则也像鱼群、羊群、鸟群等。

)每个人随机的处于不同的位置,各自的运动方向从很大程度上取决于各自的心理需求。

当人们处在陌生的环境中是处于恐慌状态下,不自觉的会根据恐慌程度的不同引发不同的心理问题,从而影响个体的运动方向,影响结队的程度,进而影响人群的运动。

研究发现人处在陌生的公共环境中影响其运动规律的因素主要是心理活动。

心理活动是人们对环境的认知与理解所作出的反应,进而影响人的行为活动,这与他们对待环境的态度和价值判断有关。

所以,环境心理学与公共设施的设计有着密切的关系。

在某些陌生场合,人们人们不自觉的结成团队。

在某种程度上满足心理上的安全感。

例如人们处在无标识出口的陌生的校园环境里,人们以更加随机的方式形成小组,在各个小组之间的影响下和小组内人与人之间的影响下有规律的运动。

群体的运动过程是每个个体的简单运动行为的密集相互作用的结果。

群体的运动规则主要表现在:“对齐”、“分离”、“凝聚力”。

“对齐”意味着一个人会把这运动在附近的人都朝同一方向。

如图2-8“对齐”规则所示:
图2-8 “对齐”规则
“分离”意味着一个人会避免另一个人离得太近了。

如图2-9“分离”规则所示:
图2-9 “分离”规则
“凝聚力”意味着一个人将走向附近的其他的人(除非另与另一个人离得太近)。

如图2-10“凝聚力”规则所示:
图2-10 “凝聚力”规则
当两个人太近,“分离”规则取代了其他两个,直到达到最小分离停用“分离”规则。

三条规则只影响人的移动的方向,与人的运动速度没有关系,每只鸟都向前移动用相同的恒定速度。

当人群处于一个封闭性的房间里,会有目的但漫无方向的找到安全出口,无法避免的会碰到障碍物、墙壁,当人遇到不可抗的阻力时会产生一定的心理反应,影响人群的运动方面向相反的方向运动。

如图2-11“碰壁返回”规则所示:
图2-11 “碰壁返回”规则
创建生物群体,并将它们随机分布在空间中并能随机的运动。

当人群个体遇到墙体时会自动的按一定的角度反方向返回,遇到出口时个体消失,场景内的人数减一。

例程如下:
if [pcolor] of patch-ahead 1 = red
[ set population ( population - 1 )
die
]
if [pcolor] of patch-ahead 1 = yellow
[
; get the coordinates of the patch we'll be on if we go forward 1
let new-px [pxcor] of patch-ahead 1
let new-py [pycor] of patch-ahead 1
if (abs new-px = max-pxcor) or (pxcor != 0 and new-px = 0)
; if so, reflect heading around x axis
[ set heading (- heading) ]
if (abs new-px = 30) and ( pycor >= window-edge ) ; if so, reflect heading around x axis
[ set heading ( - heading )
]
if (abs new-px = 30) and ( pycor <= window-edge ) ; if so, reflect heading around x axis
[ set heading ( - heading )
]
; check: hitting top or bottom wall?
if (abs new-py = max-pycor) or (pxcor = 0)
; if so, reflect heading around y axis
[ set heading (180 - heading) ]
]
3 模型的结果及分析
3.1 构建实验控件
使用netlogo软件构建实验所需的条件控件。

在本次实验中可以调节的变量分别是:实验主体(agent)的个数;最大旋转角;最大凝聚力;最大对齐程度,最大独立转弯。

由于数值变量的不同人群行为有很大的区别,采用滑轴的方式改变变量值,经过多次调节在最大程度上接近现实世界人群运动行为。

变量滑轴的左下角为变量名称或对该变量的注释,滑轴上的红色游标提取滑轴上的数值并且所提取的数值将显示在滑轴的右下角。

主体个数可根据实验需要通过"population"滑轴调节;出口的大小可由"window-edge"滑轴调节;"vision"滑轴表示最大旋转角度;"minimun-separation"滑轴表示最小分离;"max-alingn-turn"滑轴表示最大化对齐度;"max-cohere-turn"滑轴表示最大凝聚度;"max-separate-turn"表示最大独立转弯;调节滑轴大小,改变影响人群行为的因素,比较仿真结果的变化。

图3-1实验控件是人群仿真模型中的开关和滑动条:
图3-1 实验控件
3.2 实验结果及分析
模型的配置给了你尝试不同场景或假设的机会。

修改配置,运行模型,观察这些改变所引起的反应,使你能更深入的了解所模拟的现象。

开关和滑动条用来修改模型配置。

3.2.1 最大旋转角对实验的影响
我们来试试这些行为的效果。

我们看看如果改变vision的设置的话,人群会怎么变化。

设置"population" 滑动条为500.
设置"window-edge" 滑动条为10.
设置"vision"的值为2.
按下"setup" 和 "go" ,运行的ticks为1000时记录下数据。

设置"population" 滑动条为500.
设置"window-edge" 滑动条为10.
设置"vision"的值为7.
按下"setup" 和 "go" ,运行的ticks为500时记录下数据。

在比较运行相同时间长度同一模型多次运行得到的图时,让模型在特定的时刻停止或启动很有帮助,因为我们可以让模型在同一时刻停止。

实现这一功能,要使用NetLogo内建的时钟计数器(tick counter)
修改 go 例程:
to go
if ticks >= 500 [ stop ]
ask turtles[ bounce ]
ask turtles [ flock ]
;; the following line is used to make the turtles
;; animate more smoothly.
repeat 5 [ ask turtles [ fd 0.2 ] display ]
;; for greater efficiency, at the expense of smooth
;; animation, substitute the following line instead:
;; ask turtles [ fd 1 ]
tick
;;if count turtles = 0
;;[ stop ]
end
两次记录的结果如图3-2和图3-3所示,滑动条"vision"的值分别是“2”和“7”。

图3-2 "vision"的值为"2"时的结果状态
图3-3 "vision"的值为"7"时的结果状态
比较两个结果的区别,对比海龟的最大旋转角对人群的影响。

在实验中,每个人的位置是在黄色框内随机生成的,在仿真的过程中我们可以看到每
个人自由的移动,并能受到外界因素的干扰,调大"vision"的数值,人群抱团行为更加明显,但不一定能节省找到出口的时间。

因此要适当的设置"vision"的数值,根据真实情况下人群心理变化,模拟人群行为,建立更切合实际的模型。

3.2.2 人口数量对实验的影响
我们看看如果改变"population"的设置的话,人群会怎么变化。

设置"population" 滑动条为800.
设置"window-edge" 滑动条为15.
设置"vision"的值为3.
按下"setup" 和 "go" ,运行的ticks为1000时记录下数据。

设置"population" 滑动条为200.
设置"window-edge" 滑动条为15.
设置"vision"的值为3.
按下"setup" 和 "go" ,运行等到所有的人消失时记录下图形和时间。

两次记录结果如图3-4和图3-5所示,"population"的值分别为“800”和“200”。

图3-4 "population"的值为"800"时的结果状态
图3-5 "population"的值为"200"时的结果状态
比较两个结果的区别,对比海龟的最大旋转角对人群的影响。

在实验中,每个人的位置是在黄色框内随机生成的,设置两个不同的人口数量,为了结果对比明显,第一次实验中人口数量设置为“800”,第二次实验中人口数量设置为“200”。

在仿真的过程中我们可以看到每个人自由的移动,并在绘图中得出一条随着时间变化人口不断减少的曲线。

研究曲线发现人口数量越大,所有的人全部找到安全出口的时间就会越长,因此人群找到安全出口的时间跟人口数量成正比关系。

3.2.3 出口大小对实验的影响
我们看看如果改变"population"的设置的话,人群会怎么变化。

设置"population" 滑动条为800.
设置"window-edge" 滑动条为10.
设置"vision"的值为3.
按下"setup" 和 "go" ,运行的ticks为1000时记录下数据。

设置"population" 滑动条为800.
设置"window-edge" 滑动条为20.
设置"vision"的值为3.
按下"setup" 和 "go" ,运行等到所有的人消失时记录下图形和时间。

两次记录结果如图3-6和图3-7所示,"window-edge"的值分别为“20”和“10”。

图3-6 "window-edge"的值为"20"时的结果状态
图3-7 "window-edge"的值为"10"时的结果状态
比较两个结果的区别,对比海龟的最大旋转角对人群的影响。

在实验中,每个人的位置是在黄色框内随机生成的,设置两个不同的出口宽度,为了结果对比明显,第一次实验中出口大小设置为“10”,第二次实验中出口大小设置为“20”。

在仿真的过程中我们可以看到每个人自由的移动,并在绘图中得出一条随着时间变化人口不断减少的曲线。

研究曲线发现出口越大,所有的人全部找到安全出口的时间就会越短,
因此人群找到安全出口的时间跟出口大小成反比关系。

在以上的研究中,如果你不耐烦,想让模型运行的更快,可以快进也可以关闭视图更新。

快进(速度滑动条右移)关闭视图更新,因此模型运行的更快,这是因为更新视图需要时间。

4 结论与展望
用基于netlogo的人群行为建模方法来研究人群行为是人群运动仿真技术的一个研究方向。

本文主要介绍了一种简单的一般情况下人群的建模方法,并结合实例说明其在现实生活中的应用。

实例证明,Netlogo可用于采集有人与环境之间,人与人之间的实验数据,从而进行有效的仿真,模拟现实世界的人群行为,为娱乐游戏、建筑的设计、国防研究提供可靠的理论依据。

用NetLogo对处于陌生环境中的人群行为建模可以进行快速、灵活的试验,而在现实情况下这是很困难的。

建模也给了你少受偏见的影响去观察各种情景的机会,因为你可以检查系统内部的动态。

但你会发现随着你建模越来越多,对许多现象的原有的想法会遇到挑战。

人群运动仿真技术可应用的领域相当广泛,其中应用最早、需求最迫切是公共安全领域,主要应用于一些突发公共安全事件中的大规模人群紧急疏散模拟。

这些应用系统的场景较为单一,人群具备单一的目标(如逃生),人群的行为特征较为明显,因此建立的人群运动模型较为逼真可信。

该模型只能用于基本的简单的生物群体运动的模拟。

描述高级人人群行为是非常困难,并随着规则数量的增多和仿真人数的增加,实验难度也会大大的增加。

随着科学的发展,人们对行为规则模拟真实性要求越来越高,需要考虑群体运动时个体拥挤所产生的碰撞和在不同场所人群的不同心理等规则,因此逼真的大规模的人群模拟效果是难以保证,总之,上述几个方面是基于行为规则的方法所面临的主要问题。

随着城市建设的不断快速发展,人身安全已经变成了社会关注的焦点,人员密集场所。

相关文档
最新文档