基于MATLAB的蚁群聚类算法设计与仿真实现
项目介绍
本项目实现了一种基于生物启发式搜索的蚁群聚类算法(ACC)。该算法模拟了自然界中蚂蚁对物体的拾起、移动和放下的聚类行为,将抽象的数据聚类问题转化为二维网格空间中的物体搬运问题。通过蚂蚁在网格中的随机移动,以及基于局部相邻样本相似度的概率抉择机制,系统能够自动将具有相似特征的样本聚集在网格的特定区域,从而实现无监督学习。该仿真系统不仅提供了算法的逻辑实现,还集成了动态可视化模块,可直观展示样本从杂乱分布到形成簇状结构的演化过程。
功能特性
- 自动化聚类流程:实现从模拟数据集生成、数据预处理到自动化类别提取的完整工作流。
- 动态仿真实时展示:程序运行期间每隔固定步长实时更新网格状态,用户可观察聚类中心的动态形成。
- 概率行为控制:采用非线性的拾起与放下概率函数,根据物体的局部密度与相似度指标决定蚂蚁的行为。
- 鲁棒性评估系统:集成Davies-Bouldin指数(DBI)评价指标,定量分析聚类质量,并绘制网格平均凝聚度收敛曲线。
- 后处理拓扑识别:聚类完成后,利用网格连通性搜索(BFS)自动识别并标记最终生成的簇数量。
使用方法
- 启动MATLAB软件。
- 将程序文件所在的目录设置为当前工作文件夹。
- 在命令行窗口输入主程序函数名并按回车键,或直接点击运行按钮执行。
- 观察弹出的动态图形窗口:左侧显示蚂蚁搬运物体在网格中的分布变化,右侧显示收敛曲线。
- 仿真结束后,系统将自动弹出最终聚类分布图,并在命令行窗口输出生成的簇数量及DBI指数。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:Statistics and Machine Learning Toolbox(用于高斯分布数据生成及gscatter可视化)。
- 硬件建议:由于包含实时动画显示,建议具备基本的图形显示性能。
核心实现逻辑
系统通过以下步骤完成聚类任务:
- 环境构建与初始化:创建一个30x30的二维网格,将150个归一化后的样本随机散布在网格内。同时初始化20只不带负荷的蚂蚁,随机分配初始坐标。
- 感知与行为控制:
-
拾起行为:当蚂蚁位于有物体的网格时,计算该物体与其邻域内(半径为2)其他物体的平均相似度。当局部相似度较低时,拾起概率增加。
-
放下行为:当携带物体的蚂蚁到达空网格时,计算该物体与周围环境的相似度。当局部相似度较高时,放下概率增加。
- 随机游走机制:蚂蚁每步在八个方向上随机选择一步移动,受网格边界约束限制。
- 聚类标记提取:迭代10,000次后,算法不再使用物理距离聚类,而是通过搜索网格上连通的非空区域,将相互靠近的物体视为同一个簇。
关键算法与函数分析
- 局部相似度评估(calculate_similarity):这是算法的核心,通过欧氏距离衡量样本特征间的差异。它根据感知半径计算邻域内物体的相似度贡献总和,并利用比例因子alpha调节敏感度。
- 拾起概率(Pp)与放下概率(Pd):
- 拾起概率通过 Pp = (k1 / (k1 + f))^2 计算,k1为预设阈值。
- 放下概率根据 f 与 k2 的关系动态变化,当相似度 f 低于阈值 k2 时,Pd = 2*f;否则 Pd = 1。
- 连通域搜索聚类:在仿真主循环结束后,通过广度优先搜索(BFS)算法遍历网格。该逻辑将网格位置上相邻的样本索引分配给同一个类别标签,从而完成从网格坐标到训练数据标签的转换。
- DBI质量指标分析(calculate_dbi):计算簇内样本到中心的平均距离与不同簇中心间距离的比值,以此作为衡量聚类有效性的客观标准。
- 全网格凝聚度监控(evaluate_cohesion):在迭代过程中计算所有样本的平均局部相似度,并生成收敛曲线,反映聚类过程的稳定性。