基于可视化建模的人员仿真系统场景模型的实现

时间:2022-07-27 05:23:30

基于可视化建模的人员仿真系统场景模型的实现

摘要:随着计算机仿真技术的发展,人员疏散仿真逐渐得到越来越广泛的应用。该文主要介绍了城市交通枢纽人员应急疏散仿真系统(Simulation System of Crowd Evacuation Process)中场景建模工具的研究及其实现。依据面向对象的分层模块化设计方法,对场景元素对象化,从而使得该工具实现了可视化建模。

关键词:面向对象;可视化建模;GDI+

中图分类号: TP311文献标识码:A文章编号:1009-3044(2009)33-9322-03

The Design and Realization of Modeling for Evacuation Simulation System

LI Wen-ming, LING Wei-qing

(CIMS Research Center, Tongji University, Shanghai 201804, China)

Abstract: With the development of simulation technology, crowd evacuation simulation is becoming a kind of important application. This paper presents the implementation of the scene modeling tool for Evacuation Simulation of Transport Hub. The tool supports visual modeling through transforming the scene elements into objects based on an object-oriented design method.

Key words: object-oriented; visual modeling; GDI+

城市交通枢纽是当今城市交通网络中具有重要意义的节点,也是行人出行过程中不可或缺的公共场所之一。大型交通枢纽由于人员密度大,安全出口较少,在灾害发生的情况下,安全隐患大,容易导致人群聚集和逃散恐慌的出现,造成群死群伤事故。而传统的相关部门所采用的研究方法是进行与真实情况类似的演习,采用计算机仿真模拟代替实物模型及真实的演习,可以在很大的范围和程度上获得成功。城市交通枢纽人员应急仿真系统正是以灾害模型为背景,通过对场景数值模拟和人员行为数值模拟的仿真,在虚拟空间中仿真人员疏散过程,从而为灾害发生条件下的人员疏散的演练、评价提供了依据。

1 概述

在疏散过程中,人员的行为要受到静态的物理场景及其仿真区域的影响,建筑物的空间几何结构是人做出行为判断的基本依据。因此,在仿真中最重要的是场景模型的建立,好的仿真模型可以大大提高仿真精度以及仿真的真实性。目前,国内外多数疏散仿真是从人员仿真的角度来分析人员的行为模式,还比较少从场景建模和仿真的角度着手,这样面对日益复杂的疏散环境处理起来较为困难。该系统通过开发一种可视化的建模工具,以简单、直观、容易掌握为前提,充分发挥视图模型的可视化描述优势,以图形化拖曳方式建立系统的场景模型,将为非专业人员提供直观、自然的表达方式。

根据上述基本理论,该文主要从模型设计和实现的角度,比较详尽的介绍可视化的场景模型的实现。该文共分为两部分,第一部分主要描述了场景建模工具的主要模块和功能,从宏观上分析建模工具;第二部分则分别从建模元素类结构的设计,模型的表现层以及模型的保存等视角详细分析其实现所用到的关键技术。

2 可视化建模的总体设计框架图

城市交通枢纽的场景中包含着纷繁复杂的子区域以及相关的设施环境。相对应的CAD解析图中主要是一些短线段连接而成的区域以及墙壁障碍等。换言之,我们从可视化建模的需求出发,充分发挥视图模型的可视化描述的优势,通过采用面向对象编程的思想抽象出与现实场景中相对应的建模元素,然后经过组合排列元素,就可以构成复杂的场景模型。一个建模元素必须能够完全有描述这种图元的所有属性参数,并能够接受用户对元素的编辑消息以便实现所有对元素的编辑功能,如删除功能等;同时具有将自身所描述的元素记录到文件的功能,即将绘制图图形元素的过程用GDI+的调用表示出来。依据上面的要求,我们可以给出整个可视化建模工具的整体框架图,如图1所示。系统由四大部分组成:可视化的操作平台,场景元素工具,场景元素的编辑以及场景模型的保存与读取。下面分别来介绍各部分的功能。

用户可视化操作平台,通过提供可视化的操作环境,将接受来的用户消息,如鼠标、键盘操作转换为相对应的操作。

场景元素工具,提供多种基本元素的绘制生成。考虑到疏散仿真中疏散场景的差异对疏散仿真的影响,依据疏散仿真对疏散场景的敏感程度,可以对疏散场景进行简单的分类,该建模工具为用户提供了建立场景模型所需要的各类基本元素,主要包括:1) 障碍,CAD解析图中一系列解析出来的短线段在场景模型图中均可以简化为障碍。障碍工具的开发同时为下一步仿真算法中的避碍提供了可能。考虑到交通枢纽中相关的设备建筑众多,长度宽窄各不相同,其间的拓扑连接关系更是花样繁多。但是对于疏散仿真而言,我们关心的是其在疏散过程中的性能表现。因此采用简化设备建筑的具体类别以及其形状的方法设置其属性,即主要包括长度、相应的起点坐标和终点坐标以及颜色(红色)等。2) 出口,疏散中,人的行为最基本的特征就是要在避开障碍的前提下选择到最近的出口的最短路径。为了描述这一点,在模型中引入了一个出口类。它主要用来反映实际的平面图中交通枢纽的安全出口等。3) 电梯,电梯类其实是可以作为出口类来看待,但是鉴于有水平梯和升降梯,这里我们单独抽象出来作为一个类来看待。4) 区域,区域主要用来表明整个交通枢纽中各个功能区域,人员可以在这个区域中初始分布以及进行一定的活动。按照各个区域的功能不同,主要包括设备区、自由活动区、等待区、电梯区等,每个区域都设置有一个引导点,并用不同的颜色用于表示所划分的区域差异。亦即将一个较大的场景地图划分为若干个独立的小区域,仿真开始阶段,在相应类别的区域已分布有不同密度的人员,然后就可以依据引导点以及仿真算法进行仿真。

场景元素的编辑。为了方便用户使用,系统将为用户提供了一套常用的图形元素作为默认的场景元素库。但是,面对用户的使用习惯以及复杂的现场状况,系统还要提供自定义场景元素的功能。该功能主要分为新建、删除、替换以及整个模型的放大、缩小、拖动等基本操作。其中,新建功能实现了用户绘制图元的功能,删除功能实现用户删除任何图元的功能,替换功能实现了区域中不同功能区域间的替换编辑功能。而缩放功能要实现对整个场景模型的放大、缩小功能,同时应该注意的是实现的时候要清醒把握实际坐标值到屏幕坐标值的转换。

场景模型的保存与读取。绘出的图元随时可能进行添加删除等操作,因此要求图形要求有文件保存的功能,关闭后可重新打开再进行编辑。图形的存储方式和方法可有多种,但良好的存储方法将为整个系统的设计及功能的实现奠定基础。该文定义了一个记录元件信息的集合类,用它记录元件的位置坐标、状态和方向,并把它存到文件中,当要调用的时候只需把文件里的数据读出来,再利用重绘函数就可以画出各图元,从而实现了图形的二次使用,这也体现了数据图形一体化。

3 建模工具实现的关键技术

3.1 模型类的设计

城市综合交通枢纽中的可视化模型图元类是系统中重要的部分,它是整个场景模型的基础,为下一步的仿真算法提供了可能。因此设计合理的类结构关系是非常关键的。根据前述对整个场景的分析,系统中的场景模型元素可以分为功能区域类、障碍类、出口类、电梯类等四大类。利用面向对象的继承、多态机制的思想,该文中设计了一个Sharp基类,它包括了各类的公共属性。而其他所有的场景类,即障碍类(Obstacle)、出口类( Exit)、电梯类( Elevator)、区域类( RegionType)皆由Sharp类继承而来,如图2所示。这样每个具体的场景类只需在Sharp类的基础上加上自己所需的成员数据。同时,当系统增加新的场景类时,只需在图形平台上加上此类即可。这样保证了代码的复用和此建模平台的扩展性和独立性。

3.2 可视化模型的表现层实现

在场景模型的可视化建立过程中,要利用成员数据来绘制图元。解决这一问题的基本思路是通过鼠标与系统进行实时的交互,在鼠标的三个事件(MouseDown,MouseMove,MouseUp)下分别编程。鼠标按下时,通过所选择的要绘制的图元,把鼠标按下的位置记录到对应的类的点集合中,再调用类中的函数Draw函数首次绘制图元;当鼠标移动时,调用函数消去原先绘制的图元,并跟踪记录点集合中的点坐标,最后,当鼠标左键弹起时,再次调用对应的Draw函数,最终画出图元,并且向图元集合中保存图元的各种数据信息。这一系列鼠标事件均是是通过.NET框架提供的GDI+来完成的。GDI+是Windows系列操作系统用来执行绘画及其他相关图形操作的一套子系统。GDI+允许创建独立于设备的应用程序,只需调用GDI+库输出的类的一些方法即可完成图形操作。

3.3 模型的序列化读取和保存

交通枢纽的场景模型基本上都是由一定大数量的子模型组成,反映整个场景模型需要建立多个视图模型。考虑到场景模型可能会非常庞大,如果使用关系数据库保存模型数据可能会影响仿真的性能,同时便于在以后重新创建精确的模型副本,故采用序列化(Serialization)和反序列化(Deserialization)的方式保存和读取场景模型。

所谓序列化就是将对象状态转换成可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。简单来说序列化就是把内存的东西写到硬盘或内存中,而反序列化就是从硬盘中把信息读到内存中。由于该系统是基于.NET框架的,而.NET框架对序列化机制具有非常好的支持,其实现是依靠格式器来完成的。.NET框架为程序员提供了两种类型的格式器,一种通常是应用于桌面类型的应用程序的BinaryFormatter格式器,它将程序数据转化成二进制数据;另一种是通常应用于.NET Remoting和XML Web服务等领域的SoapFormatter格式器,它提供了内存数据至XML数据格式转换的功能。这两种方式的格式器以不同的数据格式来存储程序数据,各有其优缺点。系统中,由于模型的数据量很大,并且考虑到需要快速的把模型数据读取到内存中进行仿真以及要兼顾CAD解析图的兼容性,对比两种格式器,利用二进制格式器进行序列化和反序列化更符合本系统的要求。

根据上面系统类的设计和流程的介绍,所开发出来的系统的主界面和通过可视化建模得到的模型如下图所示,模型中红色的线条代表障碍,绿色并带有Exit字样的为出口,图中的区域类用各种颜色的多边形来表示,各种颜色所代表的区域功能可以通过右边的区域图例读出来。

4 结束语

该文通过使用OOP技术,通过建模元素的对象化并以可视化的图形建模方式展现出来,将一个功能繁多、结构复杂的系统划分成由许多功能单一、相对独立的建模元素经排列组合而成,从而使场景模型易于维护修改,提高了软件模块的可重用和可移植性。场景建模工具是一个用于对场景进行建模和模型设计的平台,它提供了一个良好的交互式图形环境,这样便于相关的设计人员对场景模型进行修改和重新规划,适合于不同场景的人员疏散,同时也为下一步进行仿真奠定了基础。

参考文献:

[1] 刘运通,石建军,熊辉.交通系统仿真技术[M].北京:人民交通出版社,2002.

[2] 翟文国,佟俐鹃.一种矢量图形编辑工具的设计与实现[J].计算机工程,2001,27(12):14-17.

[3] Chand M,韩江.GDI+图形程序设计[M].北京:电子工业出版社,2005.

[4] Hoffman K,Kruoger L.C#.NET技术内幕[M].董梁,高猛,译.北京:清华大学出版社,2006.

上一篇:基于XML的改进型Struts Web应用架构研究 下一篇:《Java程序设计》教学中存在的问题及改革