3. 控制塔场景建模:机场跑道、滑行道、停机坪的图论抽象
在将 Dijkstra 算法应用于控制塔路径优化之前,必须将物理机场映射为计算机可理解的图结构。本节将定义节点与边的抽象规则,并赋予权重以真实的物理意义——距离、时间与燃油消耗。
3.1 机场物理区域 → 图论元素映射
机场的三大核心区域——跑道、滑行道、停机坪——在图中分别对应不同的节点类型与边类型。下表总结了映射关系:
| 物理区域 | 图论抽象 | 节点/边示例 | 关键属性 |
|---|---|---|---|
| 跑道入口/出口 | 节点(Node) | RWY-07L-ENTRY, RWY-07L-EXIT | 经纬度、海拔、等待队列容量 |
| 滑行道交叉口 | 节点(Node) | TWY-A1, TWY-B2, TWY-C3 | 交叉口类型(T型/十字)、限速 |
| 停机位 | 节点(Node) | GATE-12, GATE-15, STAND-3A | 机型限制、廊桥/远机位标识 |
| 跑道段 | 边(Edge) | RWY-07L-ENTRY → RWY-07L-EXIT | 长度、方向(起飞/降落)、占用状态 |
| 滑行道段 | 边(Edge) | TWY-A1 → TWY-A2 | 长度、宽度、最大翼展限制 |
| 停机坪连接道 | 边(Edge) | TWY-B2 → GATE-12 | 长度、推出方向限制 |
关键原则:每个物理交叉口、入口、出口、停机位都抽象为唯一节点;每段可通行的直线路径(跑道段、滑行道段、连接道)抽象为有向边。双向通行的滑行道需要建立两条方向相反的边。
3.2 节点与边的形式化定义
我们使用带权有向图 G = (V, E, W) 来描述机场地面网络,其中:
- V:节点集合,包含所有跑道节点、滑行道交叉口节点、停机位节点。
- E:有向边集合,每条边 e = (u, v) 表示从节点 u 到节点 v 的可通行路径。
- W:权重函数,为每条边赋予一个非负实数权重。
每个节点 v ∈ V 携带以下属性:
{
"id": "TWY-A1",
"type": "intersection", // "runway_entry", "runway_exit", "intersection", "gate"
"lat": 40.6398,
"lon": -73.7789,
"capacity": 2, // 同时容纳飞机数量
"restrictions": ["max_wingspan: 65m"]
}
每条边 e = (u, v) 携带以下属性:
{
"from": "TWY-A1",
"to": "TWY-A2",
"length_m": 320, // 物理距离(米)
"max_speed_kmh": 30, // 最大允许速度(km/h)
"direction": "bidirectional",
"surface": "asphalt",
"weight_type": "time" // 当前使用的权重类型
}
3.3 权重的物理意义:距离、时间、燃油
Dijkstra 算法的核心在于权重函数的设计。在控制塔场景中,同一段路径可以赋予三种不同的物理权重,分别对应不同的优化目标:
| 权重类型 | 符号 | 计算公式 | 优化目标 | 典型应用场景 |
|---|---|---|---|---|
| 距离权重 | wd | wd = 路径长度 (m) | 最短滑行距离 | 燃油充足、无时间压力 |
| 时间权重 | wt | wt = 长度 / 允许速度 + 等待时间 | 最短滑行时间 | 航班延误恢复、紧急任务 |
| 燃油权重 | wf | wf = 长度 × 单位油耗系数 + 怠速油耗 | 最低燃油消耗 | 燃油紧张、环保优先 |
实战提示:在实际控制塔系统中,权重通常是动态的。例如,时间权重中的“等待时间”会随跑道占用状态、滑行道拥堵程度实时变化。Dijkstra 算法需要支持权重重计算,每次路径搜索前重新加载最新的边权重。
3.4 机场图结构示例(SVG)
下图展示了一个简化机场的图论抽象模型,包含 1 条跑道、3 条滑行道和 4 个停机位:
3.5 权重计算示例
以滑行道段 TWY-A1 → TWY-A2(长度 320m,允许速度 30km/h)为例,三种权重的具体计算如下:
# 距离权重
w_d = 320.0 # 单位:米
# 时间权重(假设无等待)
speed_ms = 30 * 1000 / 3600 # 8.33 m/s
w_t = 320.0 / speed_ms # ≈ 38.4 秒
# 燃油权重(假设单位油耗系数 0.05 kg/km,怠速油耗 0.01 kg/s)
fuel_coeff = 0.05 / 1000 # 0.00005 kg/m
w_f = 320.0 * fuel_coeff # ≈ 0.016 kg(仅滑行段)
# 若包含怠速等待,则 w_f += 等待时间 * 0.01
工程注意:权重单位必须统一。如果 Dijkstra 算法中混合使用米、秒、千克,会导致路径比较失效。建议在算法内部将所有权重归一化为统一成本单位(如“等效时间秒”),通过转换系数将距离和燃油折算为时间成本。
3.6 多权重切换的图结构设计(SVG)
下图展示了同一段物理路径在不同优化目标下的权重切换机制:
3.7 建模检查清单
完成机场图论建模后,请对照以下清单进行验证:
- 节点完整性:是否覆盖所有跑道入口/出口、滑行道交叉口、停机位?
- 边方向性:双向通行的滑行道是否建立了双向边?单向滑行道是否只建立了单向边?
- 权重一致性:所有边的权重是否使用同一物理量纲(距离/时间/燃油)?
- 动态权重接口:是否预留了实时更新边权重的接口(如等待时间、拥堵系数)?
- 约束条件:节点容量、机型限制、翼展限制是否已编码为节点/边属性?
建模黄金法则:“图越精细,路径越优,但搜索越慢。” 控制塔场景中,节点数量通常控制在 200~500 个,边数量 500~2000 条,既能保证 Dijkstra 算法在 1 秒内完成搜索,又能提供足够的路径多样性。