核心演算法:社會力模型 (Social Force Model)
本工具實作 Helbing, Farkas & Vicsek (2000) 提出的完整三層力模型。每位行人被視為質量 m = 80 kg 的粒子,運動方程式為:
m · dv/dt = F_drive + F_social + F_body + F_friction
- 驅動力:F_drive = m · (v₀_eff · ê − v) / τ,其中 v₀ = 1.34 m/s(Weidmann 1993 正常步行速度),τ = 0.5 s(鬆弛時間),ê 為導航場梯度方向。啟用不耐煩模型時,v₀_eff 會隨等待時間增加(見行為模型章節)。
- 社會斥力(心理距離):F_social = A · exp((r_ij − d_ij) / B) · n̂_ij,其中 A = 2000 N,B = 0.08 m(Helbing 2000 Nature 原始參數)。A 與 B 必須配套使用,決定行人保持舒適距離的強度與衰減範圍。
- 身體壓縮力(接觸時):F_body = k · max(0, r_ij − d_ij) · n̂_ij,其中 k = 1.2×10⁵ kg/(m·s²)。模擬人體在高密度下的物理擠壓。
- 滑動摩擦力(接觸時):F_friction = κ · max(0, r_ij − d_ij) · Δv_t · t̂_ij,其中 κ = 2.4×10⁵ kg/(m·s)。行人接觸時切線方向的摩擦阻力,能再現出口前的「拱形堵塞」(arching) 現象。
牆壁作用力同樣採用此三層結構,以行人半徑 r = 0.27 m(SFPE Handbook 建議值)作為接觸判定基準。
行人速度參考值 (Desired Speed v₀)
| 情境 | 速度 (m/s) | 來源 |
|---|
| 🟢 老年人步行 | 0.8 – 1.0 | Weidmann 1993 |
| 🟢 正常步行 | 1.2 – 1.5 | Weidmann 1993 (平均 1.34) |
| 🟡 快步行走 | 1.5 – 2.0 | 趕時間、疏散初期 |
| 🟠 慢跑 / 緊急疏散 | 2.0 – 3.0 | Helbing 2000 |
| 🔴 恐慌奔跑 | 3.0 – 5.0 | Helbing 2000 (Nature) |
| 🔴 全力衝刺 | 5.0 – 8.0 | 短距離極限 (非持續) |
⚠️ 速度 > 3 m/s 時,出口處易形成拱形堵塞 (arching),密度急劇升高。此時 Helbing 柱子設計才會發揮分流效果。
疏散行為模型
本工具實作兩項 FDS+Evac 標準行為模型,使模擬更接近實際疏散情境:
- Pre-movement Delay(疏散行為前期,SFPE Handbook Table 3-14):行人生成後不立即移動,而是停留一段隨機延遲時間,模擬「警報認知 → 決定疏散」的前置過程。延遲時間服從 log-normal 分布,以 Box-Muller 法採樣。參考值:辦公室 μ≈60s、醫院 μ≈120s、住宅深夜 μ≈180s。畫面中灰色點代表仍在 pre-movement 階段的人員,HUD 顯示「等待啟動」人數。
- 不耐煩模型(Impatience, Lakoba 2005 / FDS+Evac):行人長時間低速停滯時,有效期望速度線性增加:v₀_eff = v₀ + η × (v₀_max − v₀),其中不耐煩程度 η = min(1, waitTime / patienceTime)。低速(<0.3 m/s)時 waitTime 累積,移動時以 0.5× 速率衰減。v₀_max 建議值 2.0–3.0 m/s(快步至小跑)。
全局尋路:BFS 導航場
當幾何障礙物或出口變更時,系統從所有出口格子同時發起 BFS 洪水填充(8 方向鄰居,對角步長 √2),產生一張距離場(Distance Field)。障礙物內部格子被標記為不可達 (∞)。
行人沿距離場的負梯度方向行走(中央差分計算),自動繞過 U 型牆壁等凹形障礙物。梯度計算中,障礙物鄰居以「當前值 + 罰值 20」取代,使梯度自然遠離牆壁。柵格解析度為 0.5 m/cell。
Fruin 行人服務等級 (Level of Service, LOS)
依據 Fruin (1971) 及 SFPE Handbook Table 3-12,以局部密度(人/m²)定義六個服務等級。本工具使用 Lagrangian 圓形鄰域法(半徑 2 m)估算每位行人的局部密度,每 10 個模擬步計算一次。
| LOS | 密度 (人/m²) | 面積 (m²/人) | 狀態描述 |
|---|
| A | < 0.54 | > 1.85 | 自由流動,可任意選擇路線 |
| B | 0.54 – 1.08 | 0.93 – 1.85 | 受限流動,可繞過他人 |
| C | 1.08 – 1.62 | 0.62 – 0.93 | 速度受限,須調整步伐 |
| D | 1.62 – 2.17 | 0.46 – 0.62 | 非常緩慢,肢體接觸增加 |
| E | 2.17 – 2.71 | 0.37 – 0.46 | 幾乎停止,壓迫感強烈 |
| F | > 2.71 | < 0.37 | 極危險擁擠,踩踏風險 |
HUD 中的 LOS badge 即時反映場內最高密度點的等級,色彩與底部圖例一致。每位行人的壓力色彩由局部密度(LOS)與排斥力合力取最大值後平滑(EMA α=0.15)決定。
疏散完成曲線(Evacuation Curve)
模擬期間每秒記錄一次累積疏散人數,繪製 N(t) vs t 折線圖。此圖表為消防工程報告的核心輸出,用於評估 RSET(Required Safe Egress Time,必要安全疏散時間),並與 ASET(可用安全疏散時間,取決於火災煙霧蔓延速度)比較。RSET < ASET 為設計合格判定準則。
效能優化
- 空間雜湊格 (Spatial Hash Grid):鄰居搜尋從 O(N²) 降至 O(N),格子邊長 2 m,搜尋半徑 3 m。
- 密度採樣節流:局部密度(O(N²))每 10 個模擬步計算一次,大幅降低 CPU 負擔。
- WebGL 粒子渲染:Agent 位置以 Float32Array(stride=4:x, y, stress, isActive)傳入 GPU,gl.POINTS 繪製。isActive=0(灰色)代表 pre-movement 等待中,isActive=1 依壓力色彩映射。
- 雙 Canvas 架構:WebGL Canvas 繪製粒子,2D Canvas 繪製格線/HUD/障礙物,避免上下文切換。
預載場景
預設載入「會議廳緊急疏散」場景,設計參考 RiMEA 瓶頸測試基準及 Helbing 的出口柱子實驗。場景包含不對稱出口(主出口 8 m + 側門 4 m)、走廊瓶頸(8 m 通道)、以及 Helbing 經典圓柱配置。
⚠️ 關於出口柱子:Helbing (2000) 指出在恐慌奔跑(desired speed > 3 m/s)且極端高密度下,出口前方精確位置的柱子可打破拱形堵塞 (arching)、反而提高疏散流量。然而在正常步行速度 (1.34 m/s) 與中等密度條件下,拱形堵塞不易形成,柱子主要作為障礙物反而降低通行效率。使用者可自行刪除柱子對比驗證。
局限性
- 前端效能限制:Agent 上限約 400–500 人,超過此數量可能導致幀率下降。
- SFM 為連續型模型,不適用於極端高密度(>8 人/m²)的踩踏模擬。
- 不含心理決策模型(如恐慌蔓延、從眾行為),僅模擬物理層面的力學互動。
- 人口均質性:目前所有行人使用相同參數,未區分老年人、兒童、輪椅使用者等族群。
- 僅支援單層平面模擬,不含樓梯速度衰減(Fruin:樓梯下行 0.76 m/s,上行 0.57 m/s)。
- 本工具為概念設計用,若需精確疏散時間認證,應使用 Pathfinder、STEPS 等專業離線工具。
參考文獻
- Helbing, D., & Molnár, P. (1995). Social force model for pedestrian dynamics. Physical Review E, 51(5), 4282.
- Helbing, D., Farkas, I., & Vicsek, T. (2000). Simulating dynamical features of escape panic. Nature, 407(6803), 487–490.
- Weidmann, U. (1993). Transporttechnik der Fußgänger. Schriftenreihe des IVT Nr. 90, ETH Zürich.
- Fruin, J. J. (1971). Pedestrian Planning and Design. Metropolitan Association of Urban Designers and Environmental Planners. — LOS A–F 定義來源。
- Lakoba, T. I., Kaup, D. J., & Finkelstein, N. M. (2005). Modifications of the Helbing-Molnár-Farkas-Vicsek Social Force Model. Simulation, 81(5), 339–352. — 不耐煩模型。
- SFPE Handbook of Fire Protection Engineering (5th ed., 2016). — Pre-movement delay 分布、速度參考值、LOS 密度門檻。
- RiMEA — Richtlinie für Mikroskopische Entfluchtungs-Analysen (2016). 微觀疏散分析指南 v3.0.