疏散问题元胞自动机仿真方法

合集下载

基于元胞自动机模型的人员疏散行为模拟

基于元胞自动机模型的人员疏散行为模拟

基于元胞自动机模型的人员疏散行为模拟郭良杰;赵云胜【摘要】通过引入静态场、动态场及其他参数,建立了二维元胞自动机模型,并利用MATLAB编写模拟软件,可实现对人员疏散过程中的环境熟悉度、从众行为、摩擦阻碍作用、惯性行为、拥挤跌倒行为和竞争行为的模拟.通过实例仿真模拟结果表明:不同的期望速度下会出现“欲速则不达”的现象,同时出口处会产生不同程度的人员聚集;出口处障碍物相对出口纵向放置比横向放置更有利于人员疏散;在疏散环境陌生,或紧急情况下对环境判断能力降低时,适当的从众行为利于最优疏散路径信息的传递,从而有利于人员疏散,但是从众行为过于严重则易造成出口利用率降低或利用不平衡.【期刊名称】《安全与环境工程》【年(卷),期】2014(021)004【总页数】6页(P101-106)【关键词】元胞自动机;地面场模型;人员疏散行为;仿真模拟;从众行为【作者】郭良杰;赵云胜【作者单位】中国地质大学工程学院,湖北武汉430074;中国地质大学工程学院,湖北武汉430074【正文语种】中文【中图分类】X913.4近几年我国灾害频发,如近期发生的雅安地震、吉林宝源丰禽业公司氨气泄漏爆炸火灾以及厦门BRT公交车火灾等。

灾害发生后,人员聚集场所的紧急安全疏散再次成为人们关心的问题和研究的热点。

国内外针对此方面的研究主要集中在对紧急条件下疏散时间和人员逃生行为特征的研究,但由于实际数据的缺乏和实验准确性的不足,建立人员疏散模型并利用计算机进行仿真模拟已成为研究人员疏散行为的主要手段之一[1]。

目前较常用的人员疏散模型有连续型(社会力模型等)和离散型(格子气模型、元胞自动机模型等)之分。

本文基于元胞自动机模型对人员疏散过程中的现象和疏散行为进行了定性研究。

1 元胞自动机模型建立1.1 元胞自动机简介元胞自动机(Cellular Automata,CA)是由大量简单一致的个体通过局部联系组成的离散、分散及空间可扩展系统,它是在均匀一致的网格上由有限状态的变量(元胞)构成的动力系统[1]。

元胞自动机地铁人员疏散模型仿真

元胞自动机地铁人员疏散模型仿真

元胞自动机地铁人员疏散模型仿真
刘真余;芮小平;董承玮;张彦敏
【期刊名称】《计算机工程与应用》
【年(卷),期】2009(045)027
【摘要】基于元胞自动机模型对地铁人员疏散进行研究,通过对地铁的疏散个体微观建模,构建出元胞的移动规则,从而确定元胞下一时间步长的移动路径.针对地铁紧急情况下的疏散情形,提出了两种基于元胞自动机的疏散规则:概率计算方法和元胞空间场吸引法.利用VC++开发环境与OpenGL图形库对地铁的人员疏散情况进行仿真,描述不同疏散规则下的地铁疏散整个动态过程,并分别模拟得出不同的疏散效率,从而为指导地铁紧急情况下人员疏散提供理论依据.
【总页数】4页(P203-205,248)
【作者】刘真余;芮小平;董承玮;张彦敏
【作者单位】冲国科学院,研究生院,资源与环境学院,北京,100049;冲国科学院,研究生院,资源与环境学院,北京,100049;冲国科学院,研究生院,资源与环境学院,北京,100049;交通部科学研究院《交通标准化》杂志社,北京,100013
【正文语种】中文
【中图分类】TP391.9
【相关文献】
1.基于元胞自动机的地铁车站应急疏散模型仿真 [J], 赵雪;骆晨;李康
2.基于蚁群元胞自动机的地铁行人疏散模型 [J], 杜棋东;陈柔香;许爱军
3.基于元胞自动机模型的地铁人员疏散仿真研究 [J], 许爱军;谢依馨
4.基于元胞自动机的地铁车站行人疏散仿真 [J], 姚加林; 龙舜
5.基于改进元胞自动机模型的地铁车厢乘客疏散模拟 [J], 周美琦;杨晓霞;张纪会;刘天宇
因版权原因,仅展示原文概要,查看原文内容请购买。

《基于空间细化元胞自动机的行人疏散建模与仿真》范文

《基于空间细化元胞自动机的行人疏散建模与仿真》范文

《基于空间细化元胞自动机的行人疏散建模与仿真》篇一一、引言近年来,行人疏散建模与仿真在公共安全、城市规划、建筑安全等领域引起了广泛的关注。

空间细化元胞自动机作为现代建模和仿真的有效工具,其在处理大规模人群动态问题上的表现尤其出色。

本文旨在通过构建基于空间细化元胞自动机的行人疏散模型,进行行人疏散行为的仿真研究,为相关领域提供理论依据和参考。

二、元胞自动机模型与行人疏散元胞自动机是一种通过定义元胞(或单元)及其状态和变化规则,对离散的空间和时间进行建模的仿真方法。

在行人疏散过程中,可以将建筑物内部或特定区域的空间进行格网化,并采用元胞自动机进行仿真模拟。

然而,传统的元胞自动机在描述空间环境和个体行为方面往往较为简化,因此我们提出基于空间细化的元胞自动机模型进行行人疏散建模。

三、基于空间细化元胞自动机的行人疏散模型构建(一)模型假设与参数定义在构建模型时,我们假设每个元胞内的人员数量和速度等参数是可变的,同时考虑了多种影响因素,如空间布局、出口位置、出口容量等。

我们定义了包括个体行为特征、空间环境特征和动态变化特征等在内的多种参数。

(二)模型构建基于上述假设和参数定义,我们构建了基于空间细化元胞自动机的行人疏散模型。

该模型包括元胞的划分、个体行为的设定、动态变化规则的制定等部分。

在元胞划分上,我们根据实际场景的空间布局进行细致的划分;在个体行为设定上,我们考虑了行人的行走方向、速度、避障行为等因素;在动态变化规则上,我们根据行人的行为特征和空间环境的变化进行动态调整。

四、行人疏散仿真与结果分析(一)仿真实现我们利用计算机编程技术实现了基于空间细化元胞自动机的行人疏散仿真。

在仿真过程中,我们根据实际情况设置了不同的场景和参数,对行人疏散过程进行了多次模拟。

(二)结果分析通过对仿真结果的分析,我们可以得到以下结论:1. 空间布局对行人疏散效率有显著影响。

合理的空间布局可以有效地提高疏散效率,减少拥堵和混乱现象的发生。

《基于空间细化元胞自动机的行人疏散建模与仿真》范文

《基于空间细化元胞自动机的行人疏散建模与仿真》范文

《基于空间细化元胞自动机的行人疏散建模与仿真》篇一一、引言随着城市化进程的加速,大型公共场所如商场、体育场馆、地铁站等人员密集区域的安全问题日益突出。

行人疏散模拟是评估这些场所安全性的重要手段之一。

本文旨在介绍一种基于空间细化元胞自动机的行人疏散建模与仿真方法,通过对元胞自动机模型进行空间细化处理,提高模型精度,以更真实地反映行人疏散过程。

二、空间细化元胞自动机模型元胞自动机是一种模拟空间和时间演化的模型,通过定义元胞的状态和转换规则来模拟复杂系统的行为。

在行人疏散建模中,元胞通常代表空间中的一个小区域,每个元胞具有特定的状态,如空闲、占用等。

本文所提的空间细化元胞自动机模型,在传统元胞自动机模型的基础上进行了空间细化处理。

具体而言,通过对空间进行更细致的划分,使得每个元胞的大小和形状更接近于真实场景中的空间布局。

这样,模型可以更准确地描述行人在不同空间环境下的行为和决策过程。

三、建模过程1. 定义模型参数:包括元胞大小、形状、数量以及行人的基本属性(如速度、视野范围等)。

2. 构建空间网络:根据实际场景的空间布局,构建元胞自动机模型的空间网络。

3. 设定转换规则:根据行人的行为特征和决策过程,设定元胞状态转换的规则。

例如,当某个元胞被行人占用时,其状态从空闲变为占用;当行人离开该元胞时,其状态重新变为空闲。

4. 初始化模型:将行人和元胞的状态进行初始化,设定初始时刻的场景状态。

5. 模拟疏散过程:根据设定的转换规则和时间步长,逐步模拟行人的疏散过程。

四、仿真实验与结果分析为了验证空间细化元胞自动机模型在行人疏散建模与仿真中的有效性,我们进行了仿真实验。

实验场景为一个大型公共场所,具有复杂的空间布局和多种出口。

我们将空间细化元胞自动机模型应用于该场景,并与其他模型进行了对比。

仿真结果表明,空间细化元胞自动机模型能够更真实地反映行人疏散过程。

在模拟过程中,我们观察到行人在不同空间环境下的行为和决策过程得到了较好的体现,尤其是在拥挤区域的疏散过程中,模型的准确性得到了进一步提高。

基于改进元胞自动机模型的人员疏散过程建模及仿真

基于改进元胞自动机模型的人员疏散过程建模及仿真
科技与社会
基于改进元胞自动机模型的 人员疏散过程建模及仿真
国防科学技术大学机电工程与自动化学院 袁林 朱琪 鄢昆鸟
公共安全是经济发展和社会稳定的基础。 近年 来,由于火灾、地震、恐怖活动等突发因素诱发的公 共 场 所 人 员 安 全 事 故 屡 见 报 道 ,2009 年 1 月 23 日—28 日,全国发生亡人火灾 3 人以上的 34 起,共 造成了 50 人死亡。 其中,广西、浙江、北京分别造成 了 3 人、5 人、6 人死亡的系列火灾, 福建长乐市造 成群死群伤事故的重特大火灾,共造成 15 人死亡, 24 人受伤。 而这其中,很大一部分是由于不能正常 逃生而造成的死亡。 因此,为使人员在灾难发生时 能够临危不乱,正确有序地撤离灾难现场,进而挽 救人民群众生命财产, 加强平时的演练十分必要。 虽然,实战演练是有效提高人员在遭遇灾难时能够 迅速做出反应、实现成功逃生的主要手段,但实战 演练花费大、操作困难。 因此,人员疏散的计算机仿 真对提高公共场所的安全疏散性能具有重要的现 实意义。
图 4 地图信息
52
2010/06
图 5 元胞选路方式示意图
科技与社会
标位置是否可达,即目标位置是否被其他元胞占据 和灾难源的情况下的疏散控制。
或者是否存在障碍物,如果被其他元胞占据或是存
5. 人员素质评定
在障碍物,则要改变目标;如果可达,则向着出口方
在灾难现场,人员的素质往往决定了人员能否
向移动。 对于每一次移动,对所有人员都进行一次 有效逃生,因此,人员素质的差异决定了人员的逃

的情形是可以向正前方、左方或右方移动,即不能
后退。 图 1 所示为行人所具有的八种可能状态。
图中,
分别代表 t 时刻

改进的元胞自动机人员疏散仿真模型研究

改进的元胞自动机人员疏散仿真模型研究

改进的元胞⾃动机⼈员疏散仿真模型研究龙源期刊⽹ /doc/93f3a1530740be1e640e9a41.html改进的元胞⾃动机⼈员疏散仿真模型研究作者:王丹青巩青歌来源:《软件导刊》2014年第01期摘要:近⼏年来,地震、⽕灾等⾃然灾害频繁发⽣,恐怖袭击事件突发频率也呈⽇益攀升之势,公共安全问题成为社会热点,灾难突发时⼈员疏散问题的建模与仿真技术成为研究热点。

⽴⾜已有的元胞⾃动机模型,充分考虑了⼈员在疏散时的⼼理特点和⾏为特点,提出了⼀种改进的元胞⾃动机模型,通过改进的元胞⾃动机模型对⼈员疏散问题进⾏建模与仿真,更加真实再现了⾏为⼈在紧急疏散时表现出来的从众性和⾃组织性,其研究成果为⼈群疏散仿真研究提供了有⼒⽀持。

关键词:元胞⾃动机;蚁群算法;信息素中图分类号:TP337 ⽂献标识码:A ⽂章编号⽂章编号:16727800(2014)001003403作者简介作者简介:王丹青(1990-),⼥,武警⼯程⼤学信息⼯程系硕⼠研究⽣,研究⽅向为⼈群疏散的计算机仿真;巩青歌(1964-),⼥,武警⼯程⼤学研究所教授、硕⼠⽣导师,研究⽅向为数据库技术、计算机仿真。

0 引⾔元胞⾃动机是⼀个具有⾏为规则的动态模型,通过它可以表现出复杂的⾏为,因此它已经成为复杂系统建模的⼀个重要⼯具。

其中,复杂环境下的⼈群疏散就是元胞⾃动机模型的⼀个重要应⽤领域。

在元胞⾃动机理论基础之上建⽴⼈员疏散模型的⽅法是:在均匀⼀致的⽹格上建⽴由元胞构成的动⼒系统[1]。

⽬前,利⽤元胞⾃动机研究⼈群疏散模型主要有以下⼏个⽅向:①针对⼤空间中的⼈员疏散问题,考虑偏好矩阵[2]与场地设计的元胞⾃动机模型;②根据⼈员在不同⽹格内的移动特性来确定其⾏⾛速度与⽅向,改进传统元胞⾃动机模型中⼈员⾏为的简单规则;③利⽤⼆维矩阵来定义元胞的状态,开发了元胞⾃动机的可视模型;④在经典元胞⾃动机模型的基础上,量化确定摩擦⼒和排斥⼒[3]等,精确⾏为规则运算。

疏散问题元胞自动机仿真方法

疏散问题元胞自动机仿真方法

姓名:张雪蕾学号:201211131114姓名:崔星宇学号:201211131072姓名:王佳颖学号:201211131054基于元胞自动机的人员疏散仿真研究摘要:本文要仿真模拟学校某层教学楼中的人员疏散[1],主要方法是建立元胞自动机模型。

本文首先规定了学校教室和走廊的规格,并将教室和走廊平面均匀地划分成大小相等且符合实际的正方形网格,每个网格作为一个元胞,可以由教室中的学生或者障碍物占据。

模型的建立是先将此楼层的人员疏散过程分成教室和走廊两个部分分别考虑、并分别建立模型。

在教室中,根据每一个元胞距离教室门口的位置长短,建立了元胞位置危险度矩阵,然后在此基础上给出教室中书桌所在元胞的位置和教室墙壁所在元胞的位置。

我们采用Moore neighborhood的元胞邻居方式,学生的行走方式取决于其邻居八个元胞及其本身在位置危险度矩阵中所对应的危险度的大小;有多个学生竞争同一元胞时,则采用生成随机数作为前进概率的方法,概率最大的可以成功抢到该目标元胞位置。

这样每一次时间步的更新,都会有至多一个人走出本间教室,一间90人的教室需要大约26.25s就可使教室人员全部走出教室。

在走廊中,我们考虑走廊只能至多三排学生并行的情况,并规定走廊上的行走规则与教室里的一致。

我们采用扩展的Von-Neumann neighborhood的元胞邻居方式,学生的行走方式取决于其邻居五个元胞及其本身在位置危险度矩阵中所对应的值的大小。

每一时间步的更新会有至多三个人走出走廊。

最终,我们将教室和走廊的情况整合在一起考虑,得到了模拟学校学生在进行疏散时的元胞自动机模型。

用此元胞自动机模型对该层教学楼的人员疏散问题进行仿真模拟,若每一时间步为0.25秒,我们得到时间步更新次数为333(即83.25s),四间教室共360人均可全部逃离教学楼,该结果与实际情况十分相符。

关键字:人员疏散元胞自动机位置危险度随机数法一、问题重述和分析:某学校教学楼的某层,有一排4间相同的教室,学生们可以沿教室外的走廊一直走到出口,现用元胞自动机模型,模拟学生疏散的过程。

基于元胞自动机的行人视线受影响的疏散流仿真研究

基于元胞自动机的行人视线受影响的疏散流仿真研究

* 国家重点基础研究发展计 划 ( 批 准 号: 2006CB705500 ) 、 国 家 科 技 支 撑 计 划 ( 批 准 号: 2006 BCG01 A01 ) 和 国 家 自 然 科 学 基 金 ( 批 准 号: 50678004 ) 资助的课题 . 通讯联系人 . E-mail : cfshao@ center. njtu. edu. cn
2. 3. 基本规则 行人疏散仿真模型建立在大小为 ( W + 2 ) × ( W + 2 ) 的二维离散 元 胞 网 格 系 统 内, 即把行人疏散空 间的移动区域 分 割 为 W × W 个 大 小 相 等 的 离 散 元 W 用 来 衡 量 系 统 规 模; 用 障 碍 物 占 据 系 统 胞空格, 边界元胞形成房间 围 墙, 在墙上留有空格元胞作为 每个空格位置只能容 房间的安全 出 口 . 在 系 统 内, 纳一个行 人; 每 个 行 人 也 只 能 占 据 一 个 元 胞 空 格 . 行人的仿真过程也 被 离 散 化 为 相 等 的 时 间 步 长, 在 行人仅仅能移动一个元胞 每个离散的时间步 长 内, 的位置, 行人或停 止 等 待, 或 以 最 大 的 速 度 V max = 1 移动 . 行人 不 能 穿 越 和 跨 越 围 墙, 只能通过房间安 全出口离开系统, 疏散行人离开系统后将不再进入 系统 . 在模型演化的 每 个 离 散 时 间 步 长 内, 行人可以 等待或者向自己周 围 的 8 个 方 向 移 动, 移动领域如 图 4 ( a ) 所示 . 行人移动领域内的 9 个备选位置都拥 有自己的动态参数和移动收益( 如图 4 ( b ) 所示) .
岳 昊
1)2)
邵春福
1)
关宏志
2)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:张雪蕾学号:201211131114姓名:崔星宇学号:201211131072姓名:王佳颖学号:201211131054基于元胞自动机的人员疏散仿真研究摘要:本文要仿真模拟学校某层教学楼中的人员疏散[1],主要方法是建立元胞自动机模型。

本文首先规定了学校教室和走廊的规格,并将教室和走廊平面均匀地划分成大小相等且符合实际的正方形网格,每个网格作为一个元胞,可以由教室中的学生或者障碍物占据。

模型的建立是先将此楼层的人员疏散过程分成教室和走廊两个部分分别考虑、并分别建立模型。

在教室中,根据每一个元胞距离教室门口的位置长短,建立了元胞位置危险度矩阵,然后在此基础上给出教室中书桌所在元胞的位置和教室墙壁所在元胞的位置。

我们采用Moore neighborhood的元胞邻居方式,学生的行走方式取决于其邻居八个元胞及其本身在位置危险度矩阵中所对应的危险度的大小;有多个学生竞争同一元胞时,则采用生成随机数作为前进概率的方法,概率最大的可以成功抢到该目标元胞位置。

这样每一次时间步的更新,都会有至多一个人走出本间教室,一间90人的教室需要大约26.25s就可使教室人员全部走出教室。

在走廊中,我们考虑走廊只能至多三排学生并行的情况,并规定走廊上的行走规则与教室里的一致。

我们采用扩展的Von-Neumann neighborhood的元胞邻居方式,学生的行走方式取决于其邻居五个元胞及其本身在位置危险度矩阵中所对应的值的大小。

每一时间步的更新会有至多三个人走出走廊。

最终,我们将教室和走廊的情况整合在一起考虑,得到了模拟学校学生在进行疏散时的元胞自动机模型。

用此元胞自动机模型对该层教学楼的人员疏散问题进行仿真模拟,若每一时间步为0.25秒,我们得到时间步更新次数为333(即83.25s),四间教室共360人均可全部逃离教学楼,该结果与实际情况十分相符。

关键字:人员疏散元胞自动机位置危险度随机数法一、问题重述和分析:某学校教学楼的某层,有一排4间相同的教室,学生们可以沿教室外的走廊一直走到出口,现用元胞自动机模型,模拟学生疏散的过程。

由于教室和走廊都是矩形的,我们可以将教室和走廊都划分成二维网格的形式,因而,我们不妨假设教室和走廊的分布如下图:在教室中时,学生在教室中的分布是由座位分布决定,灰色部分为座位区域,黑色部分为墙壁和书桌。

如果我们想要得到每个元胞的变化规则,就要制定每个学生的行走规则。

我们可以根据生活中的常识,人们一定会走向与出口距离更短的位置;当某元胞被墙壁、书桌和学生占据时,可以认为距离出口的长度为大于整间教室对角线的长度的最小整数,除墙壁、书桌和学生以外的每个元胞上的值表示与门口的距离,得到一张数字表格,此数字表格可以确定每个元胞的位置危险度,危险度越小的元胞越安全。

根据Moore neighborhood[4]的元胞邻居方式,每个学生每一时间步只需考虑周围八个邻居元胞及其本身所在位置的位置危险度。

如果该九个元胞的位置危险度存在唯一最小值,学生显然会选择该元胞作为下一个目标(此时存在该元胞的目标为自己的情况,即此元胞的不动);由于该九个元胞的危险度可能存在多个最小值,此时学生将以相同概率选择这几个元胞之一作为下一个目标,如图1所示。

另外由于可能出现多个学生同时竞争一个元胞位置,则令这几个学生下一步走到该元胞的可能性相同,如图2所示。

由上述表述,可以得到每一个元胞的变化规则,且每一次时间步的更新表示的是每个人只可能走至多一步,因而每一次模拟至多有一个人走到教室的“门”的位置,即认为其下一步将走出教室到达走廊。

图 1 图 2研究走廊时,假设只能有3排人行走,学生到达走廊后,仍按照教室里的行走规则行走,即人们一定会走向与出口距离更短的位置。

当某元胞被墙壁和学生占据时,可以认为该元胞的位置危险度为大于整个教学楼对角线的长度的最小整数,除墙壁和学生以外的每个元胞上的位置危险度表示为与走廊门口的距离;当学生到达教室门口位置时,受心理因素影响,我们可酌情将教室门口所在位置的位置危险度定义为其左侧元胞的位置危险度,由此仍可得到与教室情况类似的一张元胞位置危险度表,危险度越小的元胞越安全。

根据扩展的Von-Neumann neighborhood[4]的元胞邻居方式,每个学生每一步只需考虑周围八个邻居元胞和自己的位置危险度。

如果该六个元胞的位置危险度存在唯一最小值,学生显然会选择该元胞作为下一个目标(此时存在该元胞的目标为自己的情况,即此元胞的不动);由于该六个元胞的危险度可能存在多个最小值,此时学生将以相同概率选择这几个元胞之一作为下一个目标。

由于可能出现多个学生同时竞争一个元胞位置,则令这几个学生下一步走到该元胞的可能性相同。

由上述表述,可以得到每一个元胞的变化规则,且每一次时间步的更新表示的是每个人只可能走至多一步,因而每一次模拟至多有3个人走到走廊“出口”的位置,即认为其下一步将走出走廊,逃离教学楼。

二、假设:1、教室和走廊均为矩形;2、该楼层有四间教室,且教室布局完全相同,相邻教室共用一面墙壁;3、走廊长度为四间教室内部长度之和加上墙壁的长度;4、教室出口设置在左侧墙壁,走廊出口设置在走廊上方;5、该楼层共有116×26个元胞,每个元胞的大小为0.4×0.4m2;6、走廊内部有3排元胞,即最多只能有3排人行走;7、墙壁只占单排元胞,课桌和人占据单个元胞;三、模型建立与求解:教室部分:一般情况下,教室多为矩形,出口设置在左侧面墙壁,本文采用的教室如图所示,白色为过道区域,灰色为座位区域,黑色为课桌和墙壁,将教室平面划分为二维网格,每个网格相当于一个元胞,大小为0.4×0.4m2,人员只能占据一个元胞,在白色和灰色区域移动。

每个格点对应一个位置危险度,人员根据其领域内格点的位置危险度确定下一时刻的运动情况,采用Moore邻居[2],人员可向8个方向运动或保持静止。

每一时步取0.25秒[3],教室内的人员每个时步更新一次。

在整个演化过程中,人员每次更新位置只能移动一个格点。

人员运动规则如下:1)计算格点与出口的距离S xy,设门的位置为(x0,y0)S(x,y)={√(x−x0)2+(y−y0)2(格点为空格)116 (格点被人、墙、书桌占据)式中,(x,y)为元胞在系统中的坐标,x0、y0为门在系统中的坐标。

2)确定每个格点的位置危险度A(x,y)A(x,y)={0 (格点在门口处)116 (格点被人、墙、书桌占据)S xy(格点与出口的距离为S xy)其中x、y为格点位置,3)比较人员其邻域内各格点的位置危险度,位置危险度最小的格点作为该人员下一时刻的运动目标格点。

若运动目标格点位置危险度小于该人员所在格点的位置危险度,人员运动到该格点;大于等于该人员所在格点的位置危险度,则该人员静止不动。

4)在人员选择下一目标格点时,如果移动区域内存在多个位置危险度最小值的格点,人员以相同的概率随机选择其中一个格点作为下一步目标格点。

5)模型采用并行更新,存在多人同时竞争一个空闲位置的情况,人员之间存在冲突时,系统将以相等概率随机选择一个人占据该格点,被选择的人将移动到该格点,没有被选中的人将留在原地保持位置不变。

6)当人员移动到“门”所在的位置时,其下一时间步,具体情况根据走廊人员移动规则确定。

教室的情况:N=10 N=30 N=60N=90 N=105算法流程图:走廊部分:一般情况下,走廊也为矩形,且我们考虑走廊能走3排人的情况,出口设置在上方,如图所示,白色为过道区域。

因而我们可以建立一个包含所有教室和走廊的大小为116×26的大矩阵A,其中第1列代表走廊的墙,第2、3、4列代表走廊,第5列表示教室的左侧含门的墙。

按照教室划分网格的规则,将走廊平面划分为二维网格,每个网格相当于一个元胞,大小为0.4×0.4m2[2],人员只能占据一个元胞,在白色区域移动。

每个格点对应一个位置危险度,人员根据其领域内格点的位置危险度确定下一时刻的运动情况,采用扩展的Von-Neumann邻居,人员可向5个方向运动或保持静止。

每一时步取0.25秒[3],走廊内人员每个时步更新一次。

在整个演化过程中,人员每次更新位置只能移动一个格点。

人员运动规则如下:1)计算格点与出口的距离S xy,设门的位置为(x0,y0)S(x,y)={√(x−x0)2+(y−y0)2(格点为空格)M (格点被人、墙、书桌占据)式中,(x,y)为元胞在系统中的坐标,x0、y0为门在系统中的坐标,M为大于整个楼层对角线长度的最小整数,在本题中为116。

2)确定每个格点的位置危险度A(x,y)A(x,y)={0 (格点在出口处)M (格点被人、墙占据)S xy(格点与出口的距离为S xy)其中x、y为格点位置。

同时我们将格点在门口处的位置危险度定义为其左侧格点的位置危险度。

3)我们认为当学生到达教室门口位置时,受心理因素影响,我们可酌情将教室门口所在位置的位置危险度定义为其左侧元胞的位置危险度。

4)比较人员其邻域内各格点的位置危险度,位置危险度最小的格点作为该人员下一时刻的运动目标格点。

若运动目标格点位置危险度小于该人员所在格点的位置危险度,人员运动到该格点;大于等于该人员所在格点的位置危险度,则该人员静止不动。

5)在人员选择下一目标格点时,如果移动区域内存在多个位置危险度最小值的格点,人员以相同的概率随机选择其中一个格点作为下一步目标格点。

6)模型采用并行更新,存在多人同时竞争一个空闲位置的情况,人员之间存在冲突时,系统将以相等概率随机选择一个人占据该格点,被选择的人将移动到该格点,没有被选中的人将留在原地保持位置不变。

7)直到走廊里首次全为0时,所有学生都逃离教学楼。

疏散前疏散后运行结果:N=60 N=120 N=180N=30四、结论:在本题中,用该模型进行人员疏散仿真模拟,运行次数为333(即83.25s)时,四间教室共360人可全部逃离教学楼。

该结果与实际情况相符,所以模型的仿真效果良好。

五、检验:我们将模型运行30次,得到不同的运行次数,分别为:333,340,334,328,339,322,335,336,333,339,337,331,340,335,332,338,326,3 34,330,329,334,319,334,329,333,332,331,335,329,344。

对此我们求得其均值为333.0333,方差为28.1023,方差所表示的相差的时间约为7.1s,因此模型是比较稳定的。

六、参考文献:[1] 刘来福,黄海洋,曾文艺.数学模型与数学建模.北京:北京师范大学出版社.2009.[2] 薛鹏,周金旺,白克钊,孔令江,刘慕仁.多房间中人员在走廊疏散的元胞自动机模拟研究.广西师范大学物理科学与技术学院,广西桂林541004[3]刘永淇.室内人员疏散的元胞自动机模拟研究.广西师范大学硕士学位论文 2011年4月[4]/p-508816577.html七、附录:Matlab代码附录一,教室情况:function [D]=choic(D)A=zeros(29,22);%生成一个29行22列的零矩阵,并且处理好后的A矩阵将表示每个元胞对门口的渴望程度B=ones(25,22);%生成25行22列的每个位置是1的矩阵,这个是为了处理A(5:29,:)=sqrt((cumsum(B,1)-1).^2+(cumsum(B,2)-1).^2);%运用计算技巧计算好每个元胞距门口的距离C=ones(4,22);%生成4行22列的每个位置是1的矩阵A(1:4,:)=sqrt((cumsum(C,1)-5).^2+(cumsum(C,2)-1).^2);%运用计算技巧计算好每个元胞距门口的距离M=ceil(sqrt(113^2+26^2));%取整个楼层的对角线的向上取整作为最远的距离,这里也是编写完走廊之后为了将两个程序拼写在一起才做的微调,否则取房间的对角线向上取整即可A(:,[1 22])=M;A([1 29],:)=M;%给出墙壁的障碍量A([4 5],[10 11 12 13])=M;%给出讲台的障碍量A(8:2:24,[4 5 6 10 11 12 13 17 18 19])=M;%给出桌子的障碍量A(9:2:25,[5 11 12 18])=A(9:2:25,[5 11 12 18]);%给出位于邻接座位中间位子的距门口的距离,这里去除了+1的情况A(5,1)=0;%给出门口的位置%D=zeros(29,22);%另给出一张表,表示在同样大小的教室%D(9:2:25,[4 5 6 10 11 12 13 17 18 19])=M;%给出教室中人员的位置%在这里给出矩阵D是为了验证程序写的正确性时便于调用X=zeros(29,22); %给出目标矩阵,即人作出的选择,下一刻,即将要走向的位置Y=zeros(29,22); %给出想要运动到X中的同一目标(x,y)的人所在的位置,其上值为x*sqrt(2)+y*sqrt(3)表示目标要到(x,y)去Z=rand(29,22);%生成一张随机数表,用于最后的决策判断,注意这个表所应该放置的位置H=zeros(29,22);%生成矩阵H式为了作为最后成功抢到位置的人所在的位置%A(5,1)=0;%给出初始值%D(5,1)=0;%给出D的门口的位置%X(5,1)=0;%Y(5,1)=0;%Z(5,1)=0;%这些量是在单独考虑一个房间时使房间门口的人走出去,如果考虑整个楼层,则使教室的人走出去的工作放在run函数中了for x=2:28;%给出x的循环范围for y=2:21;%给出y的循环范围if D(x,y)==M %九宫格的中心如果是人的话才进行如下操作E=max(A,D);%取A和D中对应值的最大的表示此刻人也在教室,同时除本人所在的位置之外的每个元胞的值表示此人距门口的距离F=E((x-1):1:(x+1),(y-1):(y+1));%取出以(x,y)为中心的九宫格F(2,2)=A(x,y);%九宫格的中心对别人有影响,对自己没有,所以改回原来的值G=sort(F);%对列排序b=G(1,:);%取行向量d=sort(b);%对行向量排序if length(find(F==d(1)))==1 %先考虑找到的最小值为1个的情况[r,c]=find(F==d(1)); %找到最小值的位置if r==2&&c==2 %最小值恰好在中心X(x,y)=D(x,y);%目标矩阵是其本身,保持不变Y(x,y)=x*sqrt(2)+y*sqrt(3);%给出到达目标矩阵(x,y)的位置上的值else p=x-2+r; %最小值不在中心的时候找到的最小值位置即为目标位置q=y-2+c;if p~=1X(p,q)=M;%给出目标矩阵Y(x,y)=p*sqrt(2)+q*sqrt(3);%给出到达目标矩阵(x,y)的位置上的值else X(x,y)=D(x,y);Y(x,y)=x*sqrt(2)+y*sqrt(3);endendelse length(find(F==d(1)))==2; %考虑同时出现两个最小值得情况[r,c]=find(F==d(1));s=rand(1);if s>0.5p=x-2+r(1);q=y-2+c(1);if p~=1;X(p,q)=M;Y(x,y)=p*sqrt(2)+q*sqrt(3);else X(x,y)=D(x,y);Y(x,y)=x*sqrt(2)+y*sqrt(3);endelsep=x-2+r(2);q=y-2+c(2);if p~=1;X(p,q)=M;Y(x,y)=p*sqrt(2)+q*sqrt(3);else X(x,y)=D(x,y);Y(x,y)=x*sqrt(2)+y*sqrt(3);endendendendendendfor x=2:28;%给出x的循环范围for y=2:22;%给出y的循环范围if X(x,y)>0;Y1=Y((x-1):1:(x+1),(y-1):(y+1));%对目标(x,y)给出九宫格Y2=Z((x-1):1:(x+1),(y-1):(y+1));%给出九宫格的随机数作为之后的判断w=x*sqrt(2)+y*sqrt(3);%(Y1==w)*Y2;%从九宫格中找到以中心为目标的人所对应的随机数t=max(max((Y1==w).*Y2));%找到以中心为目标的人所对应位置的最大值[r1,c1]=find((Y1==w).*Y2==t);%找到最大值的位置H(x-2+r1,y-2+c1)=M;%将抢到中心的位置在H中的位置值改为M endendend%对以(5,1)为目标的应该如何讨论for x=2:28;%给出x的循环范围for y=1;%给出y的循环范围if X(x,y)>0;Y1=Y((x-1):1:(x+1),y:(y+1));%对目标(x,y)给出九宫格Y2=Z((x-1):1:(x+1),y:(y+1));%给出九宫格的随机数作为之后的判断w=x*sqrt(2)+y*sqrt(3);%(Y1==w)*Y2;%从九宫格中找到以中心为目标的人所对应的随机数t=max(max((Y1==w).*Y2));%找到以中心为目标的人所对应位置的最大值[r1,c1]=find((Y1==w).*Y2==t);%找到最大值的位置H(x-2+r1,c1)=M;%将抢到中心的位置在H中的位置值改为MendendendD=D+X-H;%应用一个十分简单地公式给出下一个时间步的教室中的人员分布情况end附录二,走廊情况:function [D] =corridor( D)%这个是为了刻画走廊中的人员疏散时的情况M=ceil(sqrt(113^2+26^2));B=zeros(113,5);%B矩阵是为了给出走廊上的位置危险度B(:,[1,5])=M;B(113,:)=M;%因为走廊没有障碍物,有障碍物也只能是人,在三行走廊中,中间位置的有更多的选择,%所以我们将每个位置距门口中间位置的距离定义为该元胞处的位置危险度,且门口的三个位置位置危险度为0B1=ones(112,2);B(1:112,3:4)=sqrt((cumsum(B1,1)-1).^2+(cumsum(B1,2)-1).^2);B(1:112,2)=B(1:112,4);%然后给出门口的位置危险度,我们认为门口的位置危险度与其左侧的相同B(5,5)=B(5,4);B(33,5)=B(33,4);B(61,5)=B(61,4);B(89,5)=B(89,4);B(1,2:4)=0;%门口位置的三个位置的位置危险度为0%至此,走廊上的每个元胞的位置危险度都由B矩阵给出%下面给出矩阵D,表示出人在走廊的位置%D=zeros(113,5);%当教室中的人出来之后,就可以通过改变D进而确定人在走廊中的位置%这里的矩阵D应该是在验证时用到,在程序正文中可以不出现X=zeros(113,5);%给出目标矩阵XP=zeros(113,5);%矩阵P给出以X中某个(x,y)为目标的人的位置的x值Q=zeros(113,5);%矩阵Q给出以X中某个(x,y)为目标的人的位置的y值Z=rand(113,5);%生成一张随机数表,为了之后的决算H=zeros(113,5);for y=2:4;for x=2:112;if D(x,y)==M %六个格子下方中间记做此六个格子的中心,如果是人的话才进行如下操作E=max(B,D);%取A和D中对应值的最大的表示此刻人也在教室,同时除本人所在的位置之外的每个元胞的值表示此人距门口的距离F=E((x-1):(x),(y-1):(y+1));%取出以(x,y)为中心的六个格子F(2,2)=B(x,y);%六个格子的中心对别人有影响,对自己没有,所以改回原来的值G=sort(F);%对列排序b=G(1,:);%取行向量d=sort(b);%对行向量排序if length(find(F==d(1)))==1 %先考虑找到的最小值为1个的情况[r,c]=find(F==d(1)); %找到最小值的位置if r==2&&c==2 %最小值恰好在中心X(x,y)=D(x,y);%即在中心不动P(x,y)=x;%要到(x,y)去,给出以(x,y)为目标的位置Q(x,y)=y;else p=x-2+r; %最小值不在中心的时候找到的最小值位置即为目标位置q=y-2+c;X(p,q)=M;P(x,y)=p;%要到(x,y)去,给出以(x,y)为目标的人位置Q(x,y)=q;endelse length(find(F==d(1)))==2; %考虑同时出现两个最小值得情况,也应该只有可能出现两个最小值[r,c]=find(F==d(1));s=rand(1);if s>0.5p=x-2+r(1);q=y-2+c(1);X(p,q)=M;P(x,y)=p;%要到(x,y)去,给出以(x,y)为目标的位置Q(x,y)=q;elsep=x-2+r(2);q=y-2+c(2);X(p,q)=M;P(x,y)=p;%要到(x,y)去,给出以(x,y)为目标的位置Q(x,y)=q;endendendendendfor y=5;%对在门这一列单独拿出来说for g=1:4x=5+(g-1)*28;if D(x,y)==M; %四个格子右下格子记做此四个个个格子的中心,如果是人的话才进行如下操作E=max(B,D);%F=E((x-1):(x),(y-1):y);%取出以(x,y)为中心的四个个格子F(2,2)=B(x,y);%四个格子的中心对别人有影响,对自己没有,所以改回原来的值G=sort(F);%对列排序b=G(1,:);%取行向量d=sort(b);%对行向量排序if length(find(F==d(1)))==1 ; %找到的最小值为1个[r,c]=find(F==d(1)); %找到最小值的位置if r==2&&c==2 %最小值恰好在中心X(x,y)=D(x,y);%即在中心不动P(x,y)=x;%要到(x,y)去,给出以(x,y)为目标的位置Q(x,y)=y;else p=x-2+r; %最小值不在中心的时候找到的最小值位置即为目标位置q=y-2+c;X(p,q)=M;P(x,y)=p;%要到(x,y)去,给出以(x,y)为目标的位置Q(x,y)=q;endendendendendfor x=1:112;%给出x的循环范围for y=2:4;%给出y的循环范围if X(x,y)>0;P1=P(x:1:(x+1),(y-1):(y+1));%对以目标(x,y)为中心(此处的中心为六个格子中第一排的中间位置)的周围六个元胞Q1=Q(x:1:(x+1),(y-1):(y+1));Z1=Z(x:1:(x+1),(y-1):(y+1));%给出六个元胞的随机数作为之后的判断%(P1==x&Q1==y).*Z1;%从九宫格中找到以中心为目标的人所对应的随机数t=max(max((P1==x&Q1==y).*Z1));%找到以中心为目标的人所对应位置的最大值[r,c]=find((P1==x&Q1==y).*Z1==t);%找到最大值的位置H(x-1+r,y-2+c)=M;%将抢到中心的位置在H中的位置值改为Mendendend%同样地,对门这一列单独拿出来说if X(5,5)==M;H(5,5)=M;endif X(33,5)==M;H(33,5)=M;endif X(61,5)==M;H(61,5)=M;endif X(61,5)==M;H(61,5)=M;endD=D+X-H;end附录三,整个教学楼的情况:function [C]=run(C)%给出整层教学楼的逃生情况模拟,C表示教学楼中人的分布,run函数的作用就是将整个楼层的时间步状态更新一次,呈现出新的人员分布状况%这里应该先判断走廊的情况M=ceil(sqrt(113^2+26^2));L=C(1,1:5);[r,c]=find(L==M);%给出第一行,即走廊门口处的人所在的位置C(:,1:5)=corridor(C(:,1:5));%走廊依托之前的形式进行一个时间步的变化C(r,c)=0;%上一时间步的处于门口的位置的人走出教室%给出教室的人员时间步更新C(1:29,5:26)=choic(C(1:29,5:26));C(29:57,5:26)=choic(C(29:57,5:26));C(57:85,5:26)=choic(C(57:85,5:26));C(85:113,5:26)=choic(C(85:113,5:26));end附录四,画图:function drawing(C)%这个是为了画出图来A=zeros(113,26);M=ceil(sqrt(113^2+26^2));A1=zeros(29,22);A1(:,[1 22])=M;A1([1 29],:)=M;A1([4 5],[10 11 12 13])=M;%给出讲台的障碍量A1(8:2:24,[4 5 6 10 11 12 13 17 18 19])=M;%给出桌子的障碍量A1(9:2:25,[5 11 12 18])=A(9:2:25,[5 11 12 18]);%给出位于邻接座位中间位子的距门口的距离,这里去除了+1的情况A1(5,1)=0;%给出门的位置A([1,29,57,85],5:26)=M;A(113,:)=M;A(:,[1,5,26])=M;A(1:29,5:26)=A1;A(29:57,5:26)=A1;A(57:85,5:26)=A1;A(85:113,5:26)=A1;%至此给出了教室的形状,障碍物的分布,门口的位置imshow(max(A,C)==0)%取最大的作为人员在教室的分布,以及给出教室轮廓和障碍物图像end附录五,画出动图:function [ ] = gif(~)%画出动图A=zeros(113,26);M=ceil(sqrt(113^2+26^2));A1=zeros(29,22);A1(:,[1 22])=M;A1([1 29],:)=M;A1([4 5],[10 11 12 13])=M;%给出讲台的障碍量A1(8:2:24,[4 5 6 10 11 12 13 17 18 19])=M;%给出桌子的障碍量A1(9:2:25,[5 11 12 18])=A(9:2:25,[5 11 12 18]);%给出位于邻接座位中间位子的距门口的距离,这里去除了+1的情况A1(5,1)=0;%给出门的位置A([1,29,57,85],5:26)=M;A(113,:)=M;A(:,[1,5,26])=M;A(1:29,5:26)=A1;A(29:57,5:26)=A1;A(57:85,5:26)=A1;A(85:113,5:26)=A1;%至此给出了教室的形状,障碍物的分布,门口的位置C=zeros(113,26);C1=zeros(29,22);C1(9:2:25,[4 5 6 10 11 12 13 17 18 19])=M;C(1:29,5:26)=C1;C(29:57,5:26)=C1;C(57:85,5:26)=C1;C(85:113,5:26)=C1;%至此给出了整个楼层的人员分布情况表如矩阵C所示,此时给出的是初始情况,每个人都坐在座位上for g=1:340;%200次肯定可以结束,可以尝试用while,这里懒得了……imshow(max(A,C)==0,'InitialMagnification','fit')%取最大的作为人员在教室的分布,以及给出教室轮廓和障碍物图像%其后两个参数是为了调整图像的大小pause(0.25);C=run(C);end。

相关文档
最新文档