基于六边形网格的路径规划算法
摘要
路径规划是机器人导航、智能交通和游戏AI等领域的核心问题。本期推文基于六边形网格结构,系统地对比了四种经典路径规划算法:A*算法、遗传算法、蚁群优化算法和元胞自动机算法。通过设计四组不同规模和复杂度的测试场景(从10×10、20×20、30×30到50×50网格),从路径长度、计算时间、节点探索数量和成功率等维度进行定量分析。实验结果表明,A*算法在综合性能上表现最优,在50×50超大规模网格中仅用0.004秒即可找到57步的最优路径;遗传算法在内存受限环境下具有显著优势;蚁群算法适合动态环境;元胞自动机算法可为全局路径规划提供可靠解决方案。
关键词:路径规划;六边形网格;A*算法;遗传算法;蚁群优化;元胞自动机
一、算法原理
1.1 A*算法
A*算法是一种启发式搜索算法,由Hart等人于1968年提出。该算法通过评估函数选择扩展节点:
评估函数:
f(n) = g(n) + h(n)
其中:
-
• g(n):起点到节点n的实际代价
-
• h(n):节点n到目标的启发式估计
-
• f(n):节点n的总评估值
关键特性:
-
• 当h(n)满足可容许性(不高估实际代价)时,保证找到最优路径
-
• 时间复杂度:O(b^d)
-
• 空间复杂度:O(b^d)
六边形网格适配:
本实验使用六边形网格的曼哈顿距离作为启发函数:
h(n) = (|q₁-q₂| + |r₁-r₂| + |s₁-s₂|) / 2
1.2 遗传算法
遗传算法(Genetic Algorithm)由Holland于1975年提出,是一种模拟自然选择和遗传机制的优化算法。
基本流程:
-
1. 初始化:随机生成N条路径作为初始种群
-
2. 适应度评估:计算每条路径的质量分数
-
3. 选择:保留适应度高的个体
-
4. 交叉:在路径公共点进行交叉操作
-
5. 变异:以一定概率随机改变路径
-
6. 迭代:重复2-5步直至满足终止条件
适应度函数:
fitness(path) = W₁·δ(终点) - W₂·len(path) - W₃·dist(end)
其中δ(终点)为是否到达终点的指示函数,W₁、W₂、W₃为权重参数。
算法参数:
-
• 种群规模:50
-
• 进化代数:100
-
• 变异率:0.15
1.3 蚁群优化算法
蚁群优化算法(Ant Colony Optimization, ACO)由Dorigo于1992年提出,模拟蚂蚁觅食时的信息素机制。
路径选择概率:
P(i,j) = [τ(i,j)]^α · [η(i,j)]^β / Σ[τ(i,k)]^α · [η(i,k)]^β
其中:
-
• τ(i,j):边(i,j)上的信息素浓度
-
• η(i,j):启发信息,通常为距离的倒数
-
• α:信息素重要程度因子
-
• β:启发信息重要程度因子
信息素更新:
τ(i,j) ← (1-ρ)·τ(i,j) + Σ Δτₖ(i,j)
其中ρ为信息素蒸发系数,Δτₖ为第k只蚂蚁在边(i,j)上释放的信息素。
算法参数:
-
• 蚂蚁数量:30
-
• 迭代次数:50
-
• α = 1.0, β = 2.0
-
• 蒸发系数ρ = 0.5
-
• 信息素强度Q = 100
1.4 元胞自动机算法
元胞自动机(Cellular Automata)基于势场扩散原理,由目标点向外传播势能值。
势能计算规则:
V(cell) = min{V(neighbor)} + 1
其中V(cell)为单元格的势能,V(neighbor)为所有可通行邻居的势能。
路径生成:
从起点沿势能梯度下降方向移动,即每次选择邻居中势能最小的单元格。
算法流程:
-
1. 初始化:V(终点) = 0,其余为无穷大
-
2. 迭代更新:根据邻居势能更新每个单元格
-
3. 收敛判断:当势能分布不再变化时停止
-
4. 路径生成:沿势能下降方向构建路径
算法参数:
-
• 最大迭代次数:200
二、实验设计
2.1 实验环境
-
• 编程语言:Python 3.8
-
• 核心库:NumPy 1.21, Matplotlib 3.4
-
• 计算平台:Intel Core处理器,8GB RAM
-
• 随机种子:固定为42,保证可重复性
2.2 测试场景
设计四组不同规模和复杂度的测试场景:
|
场景名称 |
网格规模 |
单元格数 |
障碍物配置 |
难度等级 |
|
场景一 |
10×10 |
~100 |
20%随机分布 |
简单 |
|
场景二 |
20×20 |
~400 |
20%随机分布 |
中等 |
|
场景三 |
30×30 |
~900 |
迷宫模式 |
复杂 |
|
场景四 |
50×50 |
~2000 |
迷宫+25%随机 |
极复杂 |
障碍物生成方式:
-
• 随机模式:从可用单元格中随机选取指定比例设为障碍物
-
• 迷宫模式:使用结构化规则生成迷宫结构,部分随机开口
2.3 评价指标
-
1. 路径长度:从起点到终点的步数
-
2. 计算时间:算法运行耗时(秒)
-
3. 探索节点数:算法搜索过程中访问的节点总数
-
4. 成功率:是否找到有效路径
-
5. 路径质量:实际路径长度与理论最短路径的比值
三、实验结果与分析
3.1 场景一:小规模网格(10×10)

实验结果:
|
算法 |
路径长度 |
探索节点 |
计算时间(s) |
成功率 |
|
A* |
12 |
19 |
0.0002 |
100% |
|
遗传算法 |
12 |
0 |
0.0025 |
100% |
|
蚁群算法 |
12 |
25,750 |
0.1634 |
100% |
|
元胞自动机 |
12 |
73 |
0.0028 |
100% |
分析:
-
• 所有算法均成功找到最优路径(12步)
-
• A*算法计算时间最短(0.0002秒)
-
• 遗传算法探索节点数为0,表明其不进行传统的节点探索
-
• 蚁群算法探索节点最多,计算时间相对较长
3.2 场景二:中等规模网格(20×20)

实验结果:
|
算法 |
路径长度 |
探索节点 |
计算时间(s) |
成功率 |
|
A* |
27 |
86 |
0.0006 |
100% |
|
遗传算法 |
29 |
0 |
0.0017 |
100% |
|
蚁群算法 |
33 |
40,884 |
0.2620 |
100% |
|
元胞自动机 |
27 |
265 |
0.0250 |
100% |
分析:
-
• A*和元胞自动机找到最优路径(27步)
-
• 遗传算法路径长度为29步,偏离最优解7.4%
-
• 蚁群算法路径长度为33步,偏离最优解22.2%
-
• 规模增大后,算法性能差异开始显现
3.3 场景三:大规模复杂网格(30×30)

实验结果:
|
算法 |
路径长度 |
探索节点 |
计算时间(s) |
成功率 |
|
A* |
35 |
139 |
0.0010 |
100% |
|
遗传算法 |
38 |
0 |
0.0088 |
100% |
|
蚁群算法 |
44 |
56,853 |
0.3775 |
100% |
|
元胞自动机 |
35 |
578 |
0.0757 |
100% |
分析:
-
• 迷宫模式增加了环境复杂度
-
• A*和元胞自动机继续保持最优性能
-
• 遗传算法偏离度增至8.6%
-
• 蚁群算法偏离度达25.7%
3.4 场景四:超大规模网格(50×50)

实验结果:
|
算法 |
路径长度 |
探索节点 |
计算时间(s) |
成功率 |
|
A* |
57 |
317 |
0.0040 |
100% |
|
遗传算法 |
64 |
0 |
0.0135 |
100% |
|
蚁群算法 |
83 |
59,066 |
0.3888 |
100% |
|
元胞自动机 |
57 |
1,561 |
0.3358 |
100% |
分析:
-
• A*算法在超大规模网格中依然表现优异
-
• 遗传算法偏离度为12.3%,但计算时间仅为A*的3.4倍
-
• 蚁群算法偏离度达45.6%,路径质量明显下降
-
• 元胞自动机找到最优路径,但计算时间显著增加
3.5 可扩展性分析
从10×10到50×50,网格单元格数量增长约20倍,各算法时间增长倍数:
|
算法 |
时间增长倍数 |
可扩展性评价 |
|
A* |
20× |
优秀 |
|
遗传算法 |
5.4× |
优秀 |
|
蚁群算法 |
2.4× |
良好 |
|
元胞自动机 |
120× |
一般 |
结论:A*和遗传算法的可扩展性最好,适合处理大规模问题。
四、综合评价
4.1 性能指标对比

基于四组实验的平均值:
|
算法 |
平均路径长度 |
平均探索节点 |
平均时间(s) |
成功率 |
|
A* |
32.75 |
140.25 |
0.0014 |
100% |
|
遗传算法 |
35.75 |
0.00 |
0.0066 |
100% |
|
蚁群算法 |
43.00 |
45,638.25 |
0.2979 |
100% |
|
元胞自动机 |
32.75 |
619.25 |
0.1098 |
100% |
4.2 算法特性总结


A*算法:
-
• 优点:计算速度快、路径最优、探索效率高
-
• 缺点:需要良好的启发函数、内存占用较大
-
• 适用场景:实时导航、静态环境、要求最优解
遗传算法:
-
• 优点:内存占用极低、可扩展性好、无需探索节点
-
• 缺点:路径非最优、需要参数调优
-
• 适用场景:资源受限环境、近似解可接受
蚁群算法:
-
• 优点:适应性强、并行性好、鲁棒性高
-
• 缺点:收敛速度慢、路径质量一般
-
• 适用场景:动态环境、分布式计算、多目标优化
元胞自动机:
-
• 优点:保证最优路径、一次计算多次使用
-
• 缺点:计算开销大、不适合动态环境
-
• 适用场景:离线规划、静态环境、全局路径图
4.3 路径质量分析
定义路径质量系数 Q = L_actual / L_optimal,其中L_actual为实际路径长度,L_optimal为最优路径长度。
场景四路径质量系数:
-
• A*:Q = 1.00(最优)
-
• 元胞自动机:Q = 1.00(最优)
-
• 遗传算法:Q = 1.12(较好)
-
• 蚁群算法:Q = 1.46(一般)
五、结论
-
1. A*算法在综合性能上最优,在50×50超大规模网格中实现了最优路径(57步)和最快速度(0.004秒)的双重优势。
-
2. 遗传算法在资源受限场景下具有独特价值,其"零探索"特性使内存占用极低,可扩展性优秀。
-
3. 蚁群算法适合动态和分布式场景,虽然路径质量和计算效率不如A*,但其自适应性和并行性在特定场景下具有优势。
-
4. 元胞自动机提供了可靠的离线规划方案,一次计算可重复使用,适合静态环境的全局路径规划。
-
5. 六边形网格的优势得到验证,所有算法均实现100%成功率,且路径质量优于传统方格网格。
六、代码获取
或者点击下方阅读原文获取。
获取更多代码:

2106

被折叠的 条评论
为什么被折叠?



