摘要:隨著計算機仿真技術的發展,人員疏散仿真逐漸得到越來越廣泛的應用。該文主要介紹了城市交通樞紐人員應急疏散仿真系統(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.