基于蚁群算法的二维路径规划可视化系统
项目简介
本项目是一个基于 MATLAB 实现的二维空间路径规划仿真系统。它利用蚁群算法(Ant Colony Optimization, ACO)模拟自然界蚂蚁的觅食行为,通过信息素的正反馈机制和启发式搜索,在包含障碍物的栅格地图中寻找从起点到终点的最优避障路径。该系统不仅实现了核心算法逻辑,还提供了直观的图形化界面来展示地图环境、规划轨迹及算法收敛过程。
功能特性
- 混合障碍环境建模:构建了 20x20 的栅格地图,融合了手动设置的固定障碍物与随机生成的障碍物,模拟复杂的非结构化地形。
- 8-邻域移动机制:支持蚂蚁向周围 8 个方向(上、下、左、右及四个对角线方向)移动,其中直线移动代价为 1.0,对角线移动代价为 1.414,使路径更符合物理运动规律。
- 完整的 ACO 核心引擎:实现了状态转移概率计算、轮盘赌选择策略、信息素挥发与增强等核心机制,有效平衡了全局探索与局部开发能力。
- 可视化分析:程序运行结束后生成双子图可视化界面,左侧展示栅格地图、障碍物分布及最优路径,右侧展示适应度(路径长度)随迭代次数变化的收敛曲线。
- 详细的算法参数控制:支持自定义蚂蚁数量、信息素重要程度、启发因子、挥发系数等关键参数。
系统要求
- MATLAB R2016a 或更高版本(因代码使用了基本的矩阵操作和绘图函数,兼容性较好)。
- 无需额外的工具箱(Toolbox),纯原生代码实现。
使用方法
- 确保 MATLAB 当前工作路径已设置为项目所在文件夹。
- 直接运行主函数。
- 程序将在命令行窗口实时输出迭代进度和当前最优路径长度。
- 运行结束后,系统将自动弹出图形窗口展示最终的路径规划结果和收敛曲线。
核心算法与实现逻辑
本项目在单个脚本文件中实现了完整的算法流程,主要包含以下逻辑模块:
1. 环境建模与初始化
- 栅格地图:使用 20x20 的二维矩阵表示地图,0 代表自由区域,1 代表障碍物。
- 障碍物生成:代码中预设了若干矩形障碍区域,并引入随机种子(seed 123)生成部分随机障碍,同时强制确保起点 [2, 2] 和终点 [18, 19] 为无障碍区域。
- 启发信息矩阵:预先计算全图每个节点到终点的欧几里得距离的倒数,构建启发信息矩阵(Eta),引导蚂蚁向终点方向移动。
2. 蚁群算法核心引擎
算法通过迭代循环进行寻优,主要步骤如下:
* 每只蚂蚁从起点出发,维护一个禁忌表(Visited)防止走回头路。
*
邻域搜索:函数
get_valid_neighbors 负责检测当前节点周围 8 个方向的节点是否在地图范围内且非障碍物。
*
状态转移:根据信息素浓度(Tau)和启发信息(Eta)计算移动到各邻居节点的概率。公式遵循 $P = tau^alpha times eta^beta$。
*
轮盘赌选择:采用累积概率分布法(Roulette Wheel Selection)随机选择下一跳节点,避免算法过早陷入局部最优。
*
挥发机制:每轮迭代结束后,全局信息素按系数 $rho$ 进行挥发,模拟自然界的遗忘过程。
*
增强机制:采用 Ant Cycle System 模型,对本轮迭代中成功到达终点的蚂蚁路径进行所有的信息素增强。增强量 $Q/L$ 与路径长度成反比,即路径越短,留下的信息素越多。
* 系统实时跟踪并记录历史最短路径及其长度,用于最终的可视化展示。
3. 结果可视化
程序利用 MATLAB 的
subplot 功能绘制两个主要图表:
* 使用自定义配色(黑白)绘制栅格地图,黑色为障碍物。
* 通过坐标转换将矩阵索引转为绘图坐标,正确绘制起点(绿色五角星)、终点(红色六角星)。
* 绘制出的蓝色连线代表最终规划的全局最优路径。
* 绘制迭代次数与最短路径长度的关系图,直观展示算法的收敛速度和稳定性。系统会自动调整 Y 轴范围以过滤掉早期的无穷大值,使曲线更具可读性。
代码结构说明
- main 函数:程序的入口,包含所有参数设置、主循环逻辑和绘图代码。
- get_valid_neighbors 子函数:辅助函数,用于计算给定节点在栅格地图中的合法邻居及其移动代价(直线或对角线),实现了具体的避障判断逻辑。