做交通仿真的同行应该都清楚Aimsun 在处理复杂路网方面有自己的独到优势。它既能做微观也能做宏观建模粒度和真实度很高但这些能力的前提是路网建模这一层得先立得住。很多仿真项目最后发现问题不在算法不在数据而是路网本身就画得不对——比如转向连接器漏了一条、车道宽度带了默认值没改、信号相位和实际路口对不上跑出来的结果自然一塌糊涂。今天这篇是 Aimsun 系列的第 4 篇专门聊路网建模。我会从 Aimsun 的核心概念讲起把从底图导入到路段创建、交叉口处理、最终校准的完整流程过一遍还会放一些自己在项目里踩过的坑和排查思路。无论你是刚开始接触 Aimsun 的新手还是已经做过几个项目想系统梳理一遍的老手这篇文章都能给你一些能直接落地的东西。1. 路网建模到底在做什么——Aimsun 里的核心概念路网建模看着像是在画图其实本质是在做三件事把现实世界的几何结构抽象成仿真引擎能识别的对象给这些对象赋予行为参数让它们在仿真运行中产生符合交通流规律的车辆运动。Aimsun 里这层抽象做得比较规范所以理清它的对象模型是第一步。1.1 节点、路段、连接器的三角关系Aimsun 的路网模型和很多传统微观仿真软件不太一样。它明确区分了三个层次节点、路段和连接器。节点是路网的拓扑交汇点。一个普通十字路口、一个环形交叉口、甚至一个道路断面变化的位置都可以用节点表示。节点不只是一个点它承载了路口的信号控制、让行规则和转向连接关系。Aimsun 的节点有个特点它不是一个简单的“point”而是一个带几何区域的要素这个区域覆盖了相交路段的末端区域。路段是承载车辆行驶的“容器”。它包含车道数、车道宽度、坡度、限速、路侧条件、公交专用道等属性。Aimsun 中的路段是有方向性的同一条道路的两个方向要分别创建两条方向相反的路段这与实际道路的行车方向对应。每条路段可以包含多个车道车道的连接和转向通过车道级的连接来定义。连接器则负责把一条路段的车道连接到另一条路段的车道形成车辆的转向轨迹。这里有一个关键点连接器不是简单画一条线就完了它需要明确起始车道和到达车道。比如一个四路交叉口北进口左转车辆需要从最左侧车道转到西出口的最左侧车道这个关系必须在连接器里精确指定。如果连接器配置不正确车辆就会在路口出现奇异行为比如跨越多车道强行转向、无中生有地变道甚至干脆卡住不动。这三者的关系可以这样理解节点是“骨架的关节”路段是“骨头”连接器是“筋腱”。关节决定了哪些骨头连在一起筋腱决定了力量交通流怎么从一块骨头传到另一块骨头。缺了任何一层运动就无从谈起。1.2 建模粒度怎么定宏观、中观还是微观Aimsun 的一个强大之处在于它支持三种建模粒度宏观、中观、微观。路网建模的第一步不是打开软件就开始画路而是先想清楚这个项目需要哪种粒度宏观模型把交通流看作连续流体关注流量、密度、速度之间的关系路网只需要拓扑正确不需要精细的车道级细节。它适合区域性的交通需求分析比如整个城市的路网流量分配。中观模型介于宏观和微观之间它仍然模拟单独的车辆但车辆的跟驰行为被简化为基于通行能力的概率模型。微观模型则是最精细的车辆按跟驰模型和换道模型逐秒运动路网必须包含完整的车道拓扑、信号配时、让行规则。我见过不少项目在开始阶段没有想清楚粒度需求建模时拉了过多的细节给宏观模型或者在微观模型里把路网画得特别粗糙结果要么运行效率极低要么仿真结果完全失真。经验之谈是如果项目最终要评估的信号配时、车道功能划分、公交优先策略这类问题直接用微观模型如果只是做年度交通需求预测或者路网规划方案对比用宏观模型就够了。还要注意一点Aimsun 支持混合模型。也就是说同一路网中中心城区用微观模型外围区域用宏观模型两者之间通过中观过渡带衔接。混合模型的建模要求更高因为你需要在同一个路网中定义不同粒度的子网络并保证边界处的流量传递一致。这个做法适合大型项目但在建模工作量上会成倍增加。2. 实操第一步从底图到可跑路网明确了建模粒度后就可以开始实际建模了。我习惯把路网建模分为四步底图准备、路网骨架搭建、几何参数细化、拓扑关系校验。下面一个一个说。2.1 底图准备与坐标对齐底图的质量直接决定后续建模的效率。在 Aimsun 里你可以导入多种格式的底图OpenStreetMap 数据、Cadstral 地图、AutoCAD DXF/DWG、GIS 的 Shapefile甚至可以直接用 Google Earth 截图加地理配准。我个人最推荐的方式是导入 OSM 路网数据作为起步。Aimsun 有这个功能可以直接从 OSM 拉取一个区域的路网。这能省掉大量画底图的时间但有个前提OSM 的路网数据质量参差不齐有些偏远地区的道路几何与实际偏差很大而且 OSM 的拓扑不一定符合 Aimsun 的节点-路段-连接器模型。所以OSM 数据只能作为基础框架接下来的几何修正和拓扑整理依然要做。如果你拿到的是 CAD 图纸或 GIS 数据就要特别注意坐标对齐。Aimsun 的坐标系基于真实地理坐标如果你导入了带投影坐标的 Shapefile通常可以自动对齐。但如果是 CAD 图纸很多图纸用的是相对坐标你需要先做一次坐标转换。我踩过的一个坑是图纸里有多个图层道路中心线、道路边线、建筑轮廓、绿化带全在同一个 CAD 文件里。如果不做图层筛选直接导入路网会变得异常混乱节点和路段自动生成的位置会带偏。我的做法是在 CAD 里先把道路相关图层单独导出成一个精简版 DXF再导入 Aimsun。这会让你后面的工作省力很多。底图对齐完成后还需要检查比例尺是否一致。Aimsun 内置的距离测量工具可以帮你快速验证。如果你发现底图上一个道路段长度应该是 100 米但量出来是 10000 米那就是坐标单位不一致需要在导入时调整几何比例。2.2 创建路段和节点的两种思路底图准备好之后开始搭建路网骨架。Aimsun 有两种创建方式手动创建和半自动生成。手动创建就是直接用工具栏的“创建路段”工具在底图上沿着道路中心线逐段绘制。每画一条路段Aimsun 会在路段两端自动生成节点。这种方式适合路网规模不大、或者局部需要精细控制的区域比如一个具体交叉口的进出口道。半自动生成则是通过导入 GIS 或 CAD 数据让 Aimsun 来自动识别道路中心线并生成路段和节点。这种方式适合大范围路网但自动生成的拓扑通常有不少问题比如本应连接的路段断开了、同一交叉口生成了多个节点、或道路方向错误。所以不管用哪种方式人工检查和修正这一步都跑不掉。我自己画路网时的习惯是先画主路和次干道把路网的大骨架搭好再逐步添加支路和出入口。这样做的好处是主干道的截面属性车道数、限速可以在画的时候顺手设置好后面的支路只需在已有框架里补充不至于画到最后发现方向搞混了。画路段的时候有一个非常重要的小细节路段的方向。Aimsun 中路段的绘制方向就是车辆行驶方向。如果你沿道路中心线从上往下画车辆就只能从上往下开从下往上画的车辆必须在另一条单独的路段上。很多新手画完路网后跑仿真发现某些路段的车辆全是反向行驶就是因为没注意方向。我的建议是在创建路段时就打开方向箭头显示并在每条路段命名时注明方向如“XX路-东向西”这样后面检查和排错会轻松很多。2.3 车道、限速与几何参数设置路网骨架建好后就到了参数细化的阶段。这里有几个关键参数需要重点配置车道数是交通仿真里最基础也最容易出错的参数。一条路段默认只有 1 条车道但现实中很多道路是双向 4 车道、6 车道甚至更多。Aimsun 里创建路段后需要在属性中把车道数改为实际值并且要区分“车道类型”——普通车道、公交专用道、HOV 车道等。不同车道类型的通行规则不同会影响车辆的路权分配。车道宽度同样重要但很多人会忽略。Aimsun 默认车道宽 3.5 米国内很多城市道路的车道其实在 3.25 到 3.75 米之间。车道宽度会影响车辆横向间距进而影响通行能力。虽然这个影响在仿真中的表现不是特别剧烈但如果你做的项目要精确评估通行能力宽度还是尽量设成实测值。限速设置直接影响车辆在路段上的期望速度。Aimsun 支持按车道设置限速也支持按时间切换限速比如分白天夜间。如果你的模型要评估可变限速策略这一步尤为关键。还有一个容易被忽视的参数是路段的坡度。Aimsun 的跟驰模型和速度-流量关系会受到坡度影响特别是大型车占比高的路网。如果你做的是山区或高架桥项目坡度一定要输入真实数据。我自己就遇到过项目里因为没设坡度仿真结果中路段通行能力比实测高出了将近 10% 的情况。另外Aimsun 的路段支持设置入口坡道和出口坡道的加宽段、渐变段。这类几何细节对高速路交织段、匝道衔接段的仿真影响非常大。你可以在路段的“几何”选项卡里定义断面的变化位置让车道数在指定桩号处增加或减少。一定要记得在变化点设置长度补偿不然仿真中车辆换道会出现非常不自然的“瞬移”现象。3. 交叉口处理信号控制与转向连接很多人建路网时路段画得挺齐整一到交叉口就松散——转向连接不对信号配时对不上让行规则缺失。交叉口是交通仿真中最容易出现逻辑问题的地方所以我对这一块特别较真。3.1 连接器与转向路径的正确画法Aimsun 的交叉口转向是通过连接器实现的。连接器的本质是一个从进口车道到出口车道的有向连接。创建连接器的标准操作是选中节点然后点击“创建连接”工具依次选择起始车道的边缘和到达车道的边缘。Aimsun 会自动生成一条平滑的转向路径。但对于复杂交叉口自动生成的路径有时不够理想——转弯半径过小、轨迹切入对向车道、或经过了不该经过的区域。这种情况下你可以手动编辑连接器的几何路径通过调整控制点来修正转向轨迹。这里要特别强调一个概念转向的连通性。Aimsun 允许你为每个禁止转向的组合做屏蔽处理。比如一个十字路口南北方向禁止左转那么北进口的左转连接器就不要创建出来或者创建了之后把它标记为“禁止”。这个细节直接关系到路网行为的真实度。很多新手把禁止转向做成默认允许结果仿真中车辆大量做实际不允许的转向流量分配完全跑偏。还有一点需要注意连接器和路段的车道连接不同。路段内车辆是允许变道的但连接器一旦建立车辆从起始车道进入连接器后就不允许在连接器内部变道了。所以在设置连接器时要确保起始车道对应的是实际出口方向的车道组合。比如北进口有三个车道左转车道在最内侧、直行在中间、右转在最外侧那么左转连接器的起始车道就必须指定为最内侧车道而不是整条路段。3.2 信号灯参数配到 Aimsun 里信号灯是交叉口建模的重头戏。Aimsun 的信号控制有两层信号控制计划Signal Control Plan和信号灯组Signal Group。信号灯组是一个集合概念代表一组同步变化的信号灯比如一个方向的一组直行灯可以归为一个信号灯组。你需要在信号灯组的属性中定义它在每个相位中的状态红、黄、绿或者四级方案里的红黄出现在绿灯切换末期的黄灯阶段。实际项目里我最常用的信号配时输入方式有两种一是直接在 Aimsun 的 Signal Control Plan 编辑器里按时间序列表格逐行输入二是从外部信号配时文件导入。第一种方式直观适合单点交叉口第二种适合多个交叉口联动或做干线协调。信号时间的设置要特别注意Aimsun 中绿灯时间和实际信号机的绿灯时间定义基本一致但要注意全红时间和黄灯时间的定义单位。Aimsun 的时间粒度可以精确到 0.1 秒。如果你导入的配时数据是整秒也要在信号相位里明确每个相位的起始时刻。交叉口的控制器类型也要选对。Aimsun 支持固定信号、感应信号、自适应信号等。日常项目里最常用的是固定信号但如果做智能交通研究自适应信号的建模会更复杂需要定义检测器、控制逻辑和通信延迟。新手先别急着上自适应把固定信号的逻辑吃透了再说。信号协调有个常见误区不同交叉口的信号配时在 Aimsun 中默认是独立的。你想做干线绿波协调就必须定义每个交叉口的信号控制周期起点之间的相位偏移量。在 Aimsun 里这个偏移量是在 Signal Control Plan 中设置的“phase offset”。如果这里没设置即便两个路口的绿灯配时完全一样绿波效果也会因为随机信号起点不同而荡然无存。3.3 让路权分配更贴近现实的技巧没有信号灯的路口靠的是让行规则。Aimsun 中通过设置节点的优先规则来模拟无信号交叉口。这里有两个功能需要分清主路优先和让行标志。主路优先的交叉口支路车辆必须停车或减速让行主路车辆。Aimsun 中你需要在节点属性里设置让行方向并指定哪条路段是“give way”。这个逻辑在后期的流量校验中影响非常大特别是无信号交叉口的通行能力测算几乎是全靠优先级规则在推动。Aimsun 还支持设置停车标志Stop Sign。这个和 Give Way 的交互逻辑不一样——停车标志要求车辆完全停车后再启动Give Way 则允许车辆在确认安全的情况下减速通过。在路网建模时千万不要混用这两种标志否则车辆行为会和实际情况差别很大。关于路权分配还有一个高级但非常实用的工具冲突区域Conflict Areas。Aimsun 允许你在连接器交叉的区域内明确哪个流向优先而不是简单地依赖路段的优先级。这在处理右转车辆与直行行人的冲突、或者左转车辆与对向直行的冲突时非常有用。4. 路网校准参数背后的科学路网建好、信号配上能跑仿真了但这只是开始。接下来是让仿真结果贴近现实的校准环节。这是交通仿真项目里最耗时但也最有技术含量的一步。4.1 通行能力、饱和流率与仿真时间步长先说通行能力。在 Aimsun 中路段的理论通行能力并不是一个直接输入的数值它是由车辆跟驰模型参数、期望速度、车道数等因素综合计算出来的。这和其他一些软件不太一样。所以校准通行能力实际上是在校准模型参数。跟驰模型中最关键的两个参数是反应时间Reaction Time和最小时距Minimum Headway。反应时间决定了车辆对前车速度变化的响应速度最小时距决定了车辆能容忍的最小车头时距两者共同决定了路段的饱和流率。Aimsun 微观模型的默认反应时间是 0.8 秒。这个值在大多数场景下是合理的但如果你仿真的是重交通流且重复出现排队消散慢的情况可以尝试把反应时间提高到 1.0 秒左右。每改一次参数都要重跑仿真并对比观测数据。不要指望一次就能调好校准本身就是一个反复迭代的过程。饱和流率的估算公式我常用的经验值是一条 3.5 米宽的标准车道饱和流率在每小时 1800 到 2000 辆之间。如果车道宽度只有 3.0 米那么这个值可能会下降到 1650 左右。在 Aimsun 里调整时可以先设定一个预期饱和流率反推最小时距再微调反应时间。仿真时间步长同样值得关注。Aimsun 微观仿真的时间步长是可配置的默认通常是 0.1 秒。步长越小仿真精度越高但计算消耗大幅增加。对于大路网0.1 秒和 0.2 秒的差异在结果上通常微乎其微但计算时间能差出将近一倍。我一般建议大路网用 0.2 秒单点交叉口微观分析用 0.1 秒。4.2 校准实测数据的几个关键方法校准离不开实测数据。你需要的基础数据通常包括分方向的车流量、行程时间、排队长度、饱和流率观测值。这些数据可以来自线圈检测器、视频检测、浮动车数据或者人工调查。最基础的校准方法是逐路段对比流量。在 Aimsun 中跑完仿真后你可以通过“检测器”对象统计路段的流量和占有率然后与实测值做散点图或回归分析。理想状态下仿真流量和实测流量的相关系数应该在 0.9 以上误差控制在 15% 以内。另一种常用方法是行程时间比对。你可以在路网中定义 OD 路径记录车辆实际行程时间然后与实测的行程时间进行对比。这个方法能够检验路网建模和信号配时是否准确因为行程时间对路网几何和信号延误非常敏感。排队长度校准是交叉口项目的主要验证手段。你可以在仿真输出的检测器数据中提取每个周期的最大排队长度用 95 百分位排队长度与实测数据对比。如果实测最大排队 12 辆而仿真结果跑到 25 辆那多半是信号配时或让行逻辑设置有误得逐项排查。这里要特别提醒一点校准不是只调模型参数。有相当一部分误差其实源自输入数据本身。比如 OD 矩阵不准确、转向比例与实际不符、或者几何参数设置有偏差。我做项目时的习惯是先排查输入数据再松动模型参数。如果一上来就调跟驰参数很可能把错误的数据“校准”到错误的结果上形成假拟合。4.3 校准结果的判定标准什么时候可以认为校准完成没有一个放之四海而皆准的绝对标准但工程上常用的一套判定方法可以参考流量误差百分比GEH和回归决定系数 R²。GEH 是交通模型校准中最常用的指标计算公式是GEH sqrt((2 × (仿真流量 - 实测流量)²) / (仿真流量 实测流量))一般来说GEH 值小于 5 的检测器数量应占到全部检测器的 85% 以上才算通过流量校准。R² 则要求大于 0.85才能说明仿真流量和实测流量具有较好的线性一致性。另外还有一个是对比速度分布。你可以把仿真输出的路段平均速度和实测浮动车速度对比误差控制在正负 10% 以内。如果速度差异超过这个范围就需要检查限速设置、信号配时和跟驰参数。校准完成后一定要做稳健性验证。方法很简单把仿真时间段适当延长或者换一组输入流量数据重新运行看结果是否仍然吻合。如果一个模型只在特定流量下准确换了流量就崩说明模型过拟合了输入数据这在工程上的参考价值有限。5. 常见问题与排查技巧实录最后分享一些我在项目中实际遇到过的问题和排查方法。这些问题看起来不大但花在上面的时间往往比建路网本身还要多。5.1 车辆“消失”与跳变现象某些车辆在仿真运行中突然从一段路消失过一会又在另一段路出现。原因通常是路段-连接器拓扑断裂。检查方法很简单Aimsun 的“网络检查”工具Network Check可以自动找出不连通的拓扑。还有一种情况是车辆在接近交叉口时因找不到有效转向路径而被从路网中移除。解决办法逐段检查连接器与路段的车道连接。如果某个进口方向有三个车道但只有两个车道的转向连接器第三个车道上的车辆到了路口就会“无路可走”从而被系统逻辑判定为离开路网。另外检查路段的允许车道变更设置——如果变道被禁止且前方连接的转向关系不匹配也会出现类似问题。5.2 路口死锁与排队溢出现象仿真运行一段时间后某个交叉口的车辆全部卡住不动像是“僵死”了。这种情况在无信号灯交叉口和高流量交叉口最常见。多数是连通性优先级设置错误导致的。比如两个方向的流向都认为对方应该让行形成互相等死锁。另一种可能是距离较近的两个交叉口之间发生排队回溢。被堵死的感觉就像生活中的交通锁死四个方向的车谁都不让谁全堵在路口中央。排查时先看冲突区域Conflict Areas的优先级确认是否和实际交通规则一致。再看两个相邻交叉口之间的距离是否足够长路段的存储容量是否设定正确。Aimsun 中路段的容量与长度和车道数有关如果设置不当排队尾部会向前一个交叉口延伸造成连锁阻塞。5.3 与实测数据对不上的排查思路如果完成了模型校准仿真输出和实测数据还有明显偏差先别急着改参数。我的排查顺序一般是这样先检查 OD 总量。如果进网车辆总数和实测流量差的很多问题多半出在需求数据上。再检查流向比例。假如实测南进口左转占比 15%而你模型里的转向比例是 40%那下游道路的流量分布全会错。流量偏差还可能与信号配时有关检查相位顺序、绿灯时长、全红时间是否一致。如果这些都没问题再往几何细节上抠车道宽度、车道数、交叉口展宽长度、公交站位置是否都在合理位置。我之前碰过一个项目仿真结果里右转车道流量特别低查了半天才发现是右转连接器的转向轨迹太靠内车辆只能以极低速度通过相当于把一条实用性车道给“废”了。最后如果你检查完几何和需求数据依然找不到原因那才考虑调整模型参数。但在调之前把每个参数改了什么都记录下来方便对比和回溯。交通仿真模型的“玄学”问题最后靠的其实还是数据和逻辑不是靠猜。我把 Aimsun 的路网建模做了这么多期一个很深的体会是模型做得越细需要校的内容越多但最终的结果可靠度也越高。路网建模这事没有捷径就是一步一步把几何画对、把数据设对、把规则定对剩下的事仿真引擎才能帮得上忙。希望这篇能帮你少走点弯路。
