做人群仿真这几年车站、机场、体育场馆都碰过说实话最折腾人的还是医疗机构人群仿真。同样是SimWalk这类社会力模型软件用在医院里和用在其他公共建筑里完全是两种手感。医院里不只有“正常走路的人”还有坐轮椅的、推病床的、抱着孩子挂号的家属、边走边问路的老人每类人的速度、路径、行为逻辑完全不一样。这篇把我在医疗机构仿真项目里攒下的建模流程、参数取值、结果判读和踩坑经验都整理出来给准备接医院项目或者正在为医院动线发愁的朋友做个参考。1. 医院仿真为什么值得单独开一篇1.1 医院和其他公共场所的本质差异医院仿真难难在它不像车站、体育馆那样“人从入口进、通过检票口、到目的地坐下”这种单一流线。医院是一个典型的多任务、多目的地、多类人群混合的系统。先说人群构成。普通场馆里的行人绝大多数是健康成年人速度分布相对集中行为也简单——从A走到B。医院完全不是这样门急诊区域有大量老年人、儿童、孕妇还有行动障碍患者和陪护家属。一个人生病后步速会明显下降推轮椅、推病床的又占据额外空间。我做过一个综合医院的项目光是早高峰时段患者与陪护的比例就接近1:1.5儿童医院甚至能到1:2以上。这些人群不能用单一速度参数去描述否则模型出来的密度分布一定失真。再说行为模式。医院里的人不是单纯“路过”而是发生大量折返流。典型的门诊动线是入口→挂号→候诊→诊室→缴费→检验检查→再回诊室→缴费→取药→离院。中间任何一步都可能因为问询、排错队、检查结果没出来而折返。这种“非直达”行为在建模时必须显式拆成多段路径否则人一进大厅就直接冲向药房和现实完全不符。最后是空间约束。医院内部通道的东西比别的建筑多担架床、轮椅、输液架、自助机、导诊台、临时隔离屏风、候诊椅。走廊宽度常常只有两米多再被床和轮椅占掉一部分有效通行宽度大幅下降。这种空间下的拥挤不是简单“人多”导致的而是“通行能力不足行为复杂”叠加出来的。1.2 医院项目究竟在仿真哪些东西给医院做仿真诉求通常分三类。第一类是日常运营评估。最常见的问题是门诊大厅高峰时段会不会堵挂号排队要排多久候诊区面积够不够自助服务设备要放几台、放在哪里这类项目核心是流量、密度、排队时间、平均等待时间这些指标。第二类是疏散安全评估。医院有大量行动不便者疏散时间天然比其他建筑长。消防审查、安全评估、应急预案制定都会要求做疏散模拟算出必需疏散时间找出瓶颈楼层和瓶颈出口。SimWalk在这里的典型用法是设置不同速度的人群、关闭部分出口、观察总疏散时间和最后一个人离开的时间。第三类是流线和空间改造验证。比如新建门急诊楼方案阶段就要验证“把挂号收费集中在一层大厅还是分层设置”哪种更顺畅或者老楼改造想调整诊室布局、药房窗口位置先跑一轮仿真看效果再动工。不管哪一类最后交付给院方的都不是“一个好看的动画”而是可量化、可对比、经得起复核的指标。下一节就从项目开工前的数据摸底说起。2. 开工之前把医院的“人”和“路”摸透2.1 现场调研清单与图纸整理很多人在医院仿真项目翻车翻在调研不充分。软件操作只是最后几步前面的数据质量决定了模型可信度。我的调研清单分五块。第一是建筑底图CAD平面图必须拿到最新的竣工图尤其是改扩建过的区域旧图和现场经常对不上。第二是功能房间挂号收费窗口数量、药房窗口数量、诊室数量、候诊区座椅数、楼梯和电梯的位置与数量。第三是设备设施自助挂号机、自助缴费机、取报告机的位置这些设备在使用时会形成“排队操作”两个动作。第四是家具和障碍物候诊椅、屏风、导诊台、临时围挡建模型时要么作为障碍物要么作为排队区的一部分。第五是垂直交通参数电梯数量、载重、速度、开门时间楼梯宽度和踏步尺寸。图纸到手后不要直接导入软件就开始画。我习惯先做一轮“图纸净化”删掉标注、尺寸、家具块等无关图层只保留墙体、门窗、柱子、楼梯。SimWalk导入CAD后墙体、柱子这些障碍物边界要逐根核对特别是玻璃隔断这种“看得见但走不过去”的东西必须手动补上障碍物多边形否则行人会直接从玻璃里穿过去模拟结果完全不能用。2.2 人流构成、高峰曲线与视频标定数据医院和车站最大的不同在于它有非常明显的“潮汐高峰”。综合医院门诊一般早上7点半到9点是挂号高峰9点到11点是就诊高峰10点到12点是检查检验高峰下午相对平缓但取药窗口在下午又会迎来一个次高峰。我们做仿真不是跑一个静态的“平均人数”而是要把这种时变曲线转成逐时段行人到达率。确定到达率的方法只有一个现场视频。我带团队做过最扎实的一次调研是在目标医院的门诊入口、挂号大厅、电梯厅三个点位架摄像机连续录三个工作日每个工作日从早7点到晚6点晚上回去逐帧人工计数。三个点位的设备都很简单关键是处理好院方的隐私授权和患者知情同意拍摄角度尽量只拍到通道和人群轮廓。计数结果要整理成两类数据。一类是各时段的进入人数用于设置模型中的行人输入速率另一类是特定区域的瞬时人数和排队长度用于事后标定模型。标定这一步非常重要——仿真软件默认参数跑出来的结果往往和实测差20%以上靠的就是这些实测数据把模型掰回来。后面的第5章我会专门说标定的坑。人群构成比例也要在调研阶段定下来。综合医院的门诊区域我通常按患者40%-50%、家属40%-50%、医务人员5%-10%来设。儿科门诊要把家属比例上调到60%以上。急诊和住院部又是另一套比例住院部的护工、探视家属、小推车物流通道要单独建模。这些比例直接影响平均速度不可以拍脑袋写。3. SimWalk建模实操从CAD图纸到能跑的模型3.1 图纸导入、可行走区域与障碍物布置SimWalk的建模逻辑不难理解把建筑平面图变成一张“可以走”的地图行人在这张地图上受目的地吸引、被障碍物和他人排斥一步步移动。用生活化的类比就是SimWalk像在给蚂蚁画一个迷宫每个行人是迷宫里的一只蚂蚁软件里设置它的出生点、想去的地方和走路偏好。第一步是导入图纸。SimWalk支持DXF、DWG等格式导入后先设置比例尺。这一步我吃过亏有的CAD图纸用毫米为单位有的用米为单位比例设置错了整个模型全部作废。建议导入后立刻量一条已知尺寸的轴线比如跨距是7.2米的柱网在软件里量出来必须也是7.2米否则调比例。第二步是画可行走区域也就是行人能踩到的地面范围。医院里这块要注意护士站、收费窗口背后、诊室内部工作区、药房柜台内侧这些区域行人是进不去的都必须从可行走区域里抠掉。候诊区的座椅区域也要单独处理椅子上坐了人就不能再站人严格的做法是把座椅区域画成障碍物。第三步是定义不可通行边界。墙体、柱子、门窗、玻璃隔断、自动扶梯的中间大跨都是障碍物。医院还有一些“软障碍物”——可移动屏风、临时排队栏杆、宣传展架这些建议先问院方哪些是固定摆的固定摆的进模型临时挪动的忽略免得模型和现场对不上。3.2 输入源、目的地与路径比例的设置逻辑地图画好后开始定义行人从哪里来、到哪里去。SimWalk里对应的是输入源和目的地再通过路径把两者连起来。医院的输入源有几个主要出入口、急诊入口、住院部入口、电梯厅、地下车库入口。目的地有挂号收费区、各诊室区域、药房取药窗、检验科、放射科、功能检查区、收费处。每个输入源到每个目的地之间都建立路径并且要按流量比例分配。这里最关键的量是“路径比例”。以门诊大厅为例早高峰进入大厅的100个人里可能有35人去挂号、20人去自助机操作、15人直接去电梯厅上楼、15人去导诊台问询、15人去药房。这组比例必须来自现场调研或院方提供的统计数据不能自己猜。猜出来的路径比例再好看也是自嗨。路径设置时SimWalk默认行人走最短路径但医院现实不是这样——人到了挂号窗口发现队伍太长会转去自助机走到导诊台问完路还得折返回去上扶梯。模拟这类行为要拆成两段路径先让行人从入口走到导诊台再在导诊台设置“换乘点”把一部分人分配到下一段路径。相当于在软件里把一次出行拆成多个“行程段”每个行程段有自己的目标点。这种拆法还有个好处可以处理排队。挂号、缴费、取药这类目标点一定要把排队逻辑挂进去而不是让行人走到窗口前原地站着。SimWalk里的排队服务区可以设置服务时间分布和服务人员数量这比用静态障碍物模拟排队准确得多。3.3 医院人群参数速度分布、行人尺寸与排队行为人群参数是整个模型里最体现功力、也最容易被忽略的部分。期望速度方面我给的推荐值如下。健康成年患者和家属平地期望速度1.0到1.5米/秒分布中心设在1.2米/秒老年患者和家属0.6到1.0米/秒中心0.8米/秒坐轮椅患者0.7到1.0米/秒推床转运0.4到0.6米/秒穿白大褂的医务人员1.3到1.6米/秒他们在医院里走路明显比患者快。这里补充一下参数逻辑。SimWalk基于社会力模型行人有一个期望速度心里想走多快实际速度受前方人群和障碍物影响会降下来。医院模型一定要设速度分布而不是固定速度因为老年患者一多整体流线会被拖慢用单一速度会把密度算偏低。行人尺寸方面默认行人半径一般0.35到0.4米也就是肩宽约0.7到0.8米。医院里要分几类普通成人半径0.35米携带行李的陪护和检查报告袋等体积影响不算大半径调到0.38米挂输液架的患者半径0.4到0.45米轮椅患者建议用自定义多边形宽度约0.65米、长度1.1米病床转运则要单独定义成“床2个推床人员”的组合总长2.2米左右、宽0.8米左右。尺寸给小了走廊的通过量会虚高排队队伍也会显得比现实宽松。排队行为同样要分场景。挂号窗口和取药窗口常见的是单列蛇形排队可以设成一段排队区行人沿着蛇形栏杆走候诊区是“进入大厅→找空位坐下”的模式不是线性排队建议用区域目标点让行人进入候诊区后随机选择座位缴费窗口前往往是多列并行排队要建多个服务台、多条队列。给一份我常用的参数速查表:人群类型期望速度均值米/秒期望速度范围米/秒行人半径/尺寸米典型场景健康患者/家属1.21.0-1.50.35门急诊公共区老年患者/家属0.80.6-1.00.36老年科、门诊医务人员1.41.3-1.60.35全院各区域轮椅使用者0.90.7-1.00.65*1.1门诊、住院病床转运0.50.4-0.60.8*2.2住院部、检查通道儿童随家长1.00.8-1.20.25儿科这套参数不是从软件说明书里抄的是拿现场视频一步步校准出来的。后面第5章再讲怎么标定。4. 模拟结果怎么看改造方案怎么比4.1 密度热图与Fruin服务水平判别模拟跑完SimWalk会输出一大堆数据最直观的是密度热图。颜色从蓝到红渐变蓝色是自由流红色是拥挤停滞。拿到热图先看三个位置大厅中心交叉区、挂号收费窗口前、电梯厅入口。密度热图要结合Fruin服务水平来看。这是行人交通领域经典的分级标准按每平方米人数或人均占有面积把服务水平分成A到F六级。人均面积3.25平方米以上是A级行人可以自由选择速度、无冲突1.39到2.32平方米是C级一般步行舒适度还过得去0.93到1.39平方米是D级行人有明显避让行为开始感觉拥挤低于0.93平方米就是E级接近通行能力上限0.46平方米以下属于F级基本停滞排队和推挤是常态。换算成密度来说超过每平方米1人就开始“拥挤”达到每平方米1.5人以上走行速度会明显下降。医院门诊大厅在早高峰有两个小时处于每平方米0.8到1.2人的密度是非常正常的关键是看红色区域持续时间和覆盖范围。如果一个区域在热图上红了整整两个小时那就不是“高峰正常波动”而是结构性瓶颈必须改。看热图时我还习惯开“时段切片”按15分钟一段输出密度。医院是动态系统8点10分和8点40分的拥挤位置可能完全不同前者在大厅入口处后者可能已经转移到电梯厅。不给院方看这种时间变化他们很难理解“为什么大厅入口不堵了、楼上却堵了”。4.2 排队长度、等待时间与瓶颈定位排队数据是医院院方最关心的因为直接关系到患者的体感。挂号窗口排20人和排5个人患者体验完全是两个世界。SimWalk的排队统计可以输出每个服务窗口的队列长度随时间的变化曲线、最大排队人数、平均排队人数、平均服务等待时间。我的一般做法是输出高峰两小时内每15分钟取一个队列长度点拉成曲线和实测数据对比。如果模型标定得好排队曲线在形状和峰值上会和现场视频统计比较接近。判断标准上门诊挂号窗口平均等待时间控制在10到15分钟以内是可以接受的超过20分钟就属于明显排队过长取药窗口同理。缴费窗口的高峰持续时间如果超过40分钟基本可以判断窗口数量不足。排队之外还要找“隐性瓶颈”。医院里最经典的是挂号不堵、缴费不堵但电梯厅堵成一片。原因是垂直交通能力不足而不是服务窗口不足。遇到这种情况要单独统计电梯厅的瞬时聚集人数和平均等待时间。电梯厅的通行能力计算我习惯先手算校核——一台1.6吨电梯一次大约能上13到15个人每台电梯单程大约90秒如果早高峰每小时有1500人上楼那需要多少台电梯算一算就知道瓶颈是不是在垂直交通。4.3 一个门诊大厅改造比选的完整例子说一个我做过的典型方案比选场景是一个综合医院的门诊大厅改造。现状问题很明确早高峰挂号收费区排队严重大厅中部的自助机被人群包围电梯厅入口和挂号队伍形成交织人流互相打架。院方提了两个改造方向一是把挂号收费窗口从6个增加到9个二是保留6个窗口但在大厅入口处增加8台自助挂号缴费机并调整自助机摆放位置。如果只看窗口数方案一似乎最直接。但仿真结果告诉我增加3个窗口只把平均排队时间从12分钟压到9分钟大厅密度并没有明显下降。原因很简单大厅的瓶颈不在服务能力而在挂号队伍占用通道空间、与通往电梯厅的流线交叉。多开窗口只是把更多人流吸到同一个区域反而加剧交叉。方案二在入口处新增自助机、并把原自助机从中央移动到靠墙区域后排队曲线明显改善峰值排队人数从34人降到15人平均等待时间从12分钟降到6分钟电梯厅入口区域的Fruin服务水平从E级回到D级。把这两个方案的成本、排队曲线、密度热图放到一起对比院方很快就采纳了方案二。这个例子的启发是医院改造不是“哪里堵加哪里”而是要看堵的根源。入口流线、空间分配、设备位置、服务能力的组合拳往往比单一增加窗口有效。SimWalk在这个环节的价值不是给一个“标准答案”而是让每个方案在同样的输入条件下跑一遍用数据说话。5. 医院项目翻车高发区与排查思路5.1 模型标定偏差实测与模拟对不上医院仿真最容易翻车的地方是模型跑出来的流量和实测对不上。常见表现是模拟出来的大厅峰值人数比现场视频少20%。排查方向我按优先级给三个。第一是检查到达率是否设置正确。模型的输入不能直接用“总门诊量”要按调研的15分钟到达间隔去设。总门诊量8000人不代表早高峰15分钟就均匀分布了800人医院高峰和低谷差异极大。第二是检查速度参数。如果模拟里行人整体走太快单位时间内通过入口的人数偏多大厅里囤积的人数就偏少。这时把患者速度分布中心从1.2下调到1.0把老年人群比例上调密度一般会明显改善。遇到仿真比实际流量大的情况则反过来检查是不是行人尺寸设小了。第三是检查路径比例。把挂号直接做成唯一目的地忽略问询、折返、走错路带来的重复流量大厅人数也会偏低。建议在模型中额外设置3%到5%的“问询折返”流量这部分人到达导诊台后原路返回或转向能显著提高模型与实测的吻合度。标定的目标不是追求某个单点和实测完全相等而是全局误差控制在10%以内。我一般比较三个指标大厅峰值人数、窗口峰值排队人数、高峰小时通过主入口的总人数。三个指标同时贴近模型才算基本可信。5.2 队伍卡死、死锁与调度设置模拟跑着跑着队伍突然不走了或者某些行人原地踏步这是SimWalk项目里最常见的“翻车现场”。医院场景尤其多因为排队多、空间窄、还有轮椅病床这类大尺寸对象。卡死最常见的原因是排队区规划不当。挂号窗口前排队的蛇形空间画得太窄队尾甩到主通道上两侧来向的行人把队伍截断后面的人永远挤不到队尾。解决办法是给每条排队区留足容量一个窗口前排队区至少要能容纳高峰时段排队人数且队尾不能侵入通道。如果现实中队尾本来就到通道了说明空间就是不够仿真把它暴露出来反而是价值。病床和轮椅组合模型也容易卡死。小尺寸的行人在大尺寸物体周围插空绕行被夹在墙角和床之间动弹不得。这不算软件bug是模型空间不足的体现。排查时把卡死区域调成密度热点图往往发现对应区域实测里也是拥堵点。还有一种卡死和随机种子有关。SimWalk每次运算是随机的某些种子下局部排队顺序不对会导致死锁。跑方案比选时务必固定随机种子保证不同方案之间的差异来自方案本身而不是随机噪声。正式汇报前同一方案至少要跑3到5个种子取统计均值别拿单次结果下结论。5.3 垂直交通的近似处理医院的高层住院楼和门急诊楼垂直交通是大人流组织的关键。SimWalk原生对楼梯的建模比较直接设置楼梯区域后可以定义上下行方向对电梯轿厢则没有专门的“电梯模拟器”处理起来需要一点技巧。我的做法是当项目关心的是“电梯厅会不会堵”时不深究轿厢内部的过程而是把电梯抽象成“服务台”——候梯厅是排队区电梯是服务窗口电梯的载客量和运行周期折算成服务时间。一台电梯平均每趟载12人、运行周期90秒就相当于一个服务速率每分钟8人的窗口。每层楼有4台电梯就设4个服务窗口。仿真算出来的候梯厅排队人数和实测吻合度很好。当项目关心的是“电梯配置够不够”时建议另算一笔手工账高峰小时总需求量乘以平均每人占用电梯时间除以电梯总运力得到电梯利用率。利用率超过70%就该提醒院方考虑加装电梯或调整科室楼层分布了。SimWalk算出来的流量数据可以为这笔手工账提供输入。楼梯和扶梯则可以直接模拟。扶梯要设置好上行方向和速度医院里下行扶梯利用率往往不高大部分人习惯乘坐上行扶梯后再走楼梯下来。楼梯建模时注意把楼梯间的平台画进去平台是医院疏散和日常通行中真正的瓶颈很多拥挤发生在楼梯转角的平台处。5.4 随机性与敏感性别只跑一遍最后单独强调一点医院仿真方案比选最忌讳只跑一遍就出结论。人的行为天生有随机性。同一套方案不同随机种子跑出来的排队峰值可能差到5到8人。正确的做法是每个方案跑多个种子取平均同时把“最好情况”和“最差情况”都列出来。汇报时告诉院方该方案平均排队时间9分钟最差情况下可能到12分钟比现状的18分钟仍有明显改善。这种表达比单纯一个数字有说服力得多。敏感性分析也要做。医院仿真的输入不确定性很大明天流感季门诊量上升20%怎么办专家门诊日患者构成变化了怎么办我用简单的方式把输入流量整体上调15%把老年患者比例上调10%看方案的改善效果是否依然成立。如果一个方案在“恶劣输入”下依然优于现状它才是真正值得采纳的方案如果只在理想输入下好看那方案本身就是脆弱的。一点收尾的个人经验做完这些医院项目我最大的体会是医疗机构人群仿真难点从来不在SimWalk软件本身而在于对医院真实运行逻辑的理解。去现场多看一上午比在办公室调一星期参数有用。实地站过门诊大厅你才会发现最大的拥堵往往不是发生在排队窗口而是在人流的交叉点上你才会理解为什么那么多患者会在导诊台前折返。再分享一个小技巧给院方汇报时别只拿密度图和曲线表。剪一段模拟动画用颜色区分患者和家属再配上排队长度实时曲线院方领导十分钟内就能看懂问题出在哪。动画不是用来炫耀软件的是用来让非专业的人理解专业结论的。这个细节往往决定你的仿真报告是被采纳进改造方案还是被放在抽屉里落灰。