操作环境:
MATLAB 2024a
1、算法描述
蚂蚱优化算法的灵感源自于自然界中蚂蚱群体在寻食过程中的集体行为。当一群蚂蚱在田野中寻找食物时,个体之间既会受到周围同伴的吸引,又要保持一定的安全距离,避免相互碰撞;同时群体又会被外部气流、地形坡度等环境因素所影响。这种复杂的社交与环境交互过程启发了研究者们将其抽象为一种优化策略,用于解决在连续空间中寻找全局最优解的问题。
在这种优化策略中,每一个蚂蚱个体都被看作一个潜在解,它在多维搜索空间中以一定的运动规律移动。个体位置的调整既受其它群体成员的引导,也受到当前所找到的最优位置的吸引。与此同时,为了保证算法能够从全局范围内发现优质解,整个群体在迭代初期保持较大幅度的探索能力;当迭代次数增多时,个体之间的互动强度逐渐减小,以便将搜索精力集中在局部最优区域,实现精细化的搜索。
在具体实现中,算法首先根据问题的维度和给定的上下界生成一批随机的初始位置,这些位置构成了“蚂蚱群”。随后,它会对每一个个体的位置进行评估,通过调用用户定义的目标函数来计算该位置的适应度,并记录下最优的位置和对应的适应度值。评估完毕之后,群体中最优秀的个体将成为其他个体移动的导航目标,即所谓的“目标位置”。
在后续的迭代过程中,算法会根据当前迭代次数动态调整一个用于平衡全局搜索与局部搜索的控制参数。初始阶段该参数值较大,促使个体作出更大幅度的随机移动,从而探索更广阔的区域;而当迭代深入到中后期,该参数值逐渐减小时,个体的移动范围被压缩到靠近先前所得最优解的周围,以期在最优解附近进行更加细致的探索。
对于每一个个体而言,其新位置的生成主要依赖于与其它个体之间的“社交力”叠加,与最优个体的“引导力”合成。所谓社交力,是对每对个体之间距离远近的感知,较近时表现出排斥以防止拥挤,较远时表现出吸引以促进信息共享。所有这些微小的社交影响加总之后,再结合最优个体所在位置的引导,就能够得到该个体下一时刻的移动方向和步幅。通过循环迭代,这些相互作用将群体结构不断调整,使其逐步收敛到问题的最优解所在区域。
在算法实现的代码中,首先对输入参数进行检查和处理。如果所给的搜索维度为奇数,为了方便两两配对计算社交力,会临时增加一维并在最终结果中剔除;如果上下界为标量,则扩展成与维度一致的向量,以支持多维空间的边界控制。紧接着,借助一个专门生成随机矩阵的初始化函数,在上下界范围内产生出所有蚂蚱的初始位置。
当初始位置生成完毕后,代码会调用用户提供的目标函数对每个位置执行评估,并将所有个体的适应度、位置历史与轨迹信息保存到矩阵中,用于后续分析和可视化。完成适应度计算后,对所有个体按照适应度值进行排序,选出其中最优秀的那个作为第一个“目标位置”,其对应的适应度值则作为当前的最优适应度。
接下来进入主循环阶段,循环变量代表当前的迭代次数。每一次循环开始时,都会根据迭代次数自动调整那个平衡探索与开发的收敛参数。然后对群体中每一个个体进行位置更新:先提取出该个体与其它每个个体在各维度上的距离信息,再根据距离估算社交力的大小和方向,将所有社交力累加后与目标位置所提供的引导力融合,便得到了新的位置候选。所有新位置候选生成后,再统一写回原来的位置矩阵。
在更新完成后,代码会对所有新位置进行边界检查,如果某个坐标超出了预设的上下界,则将其纠正为临界值,以保证解始终保持在合法范围内。纠正之后,对每个个体再次调用目标函数评估适应度,并与先前记录的最优适应度进行对比;如果发现更优的个体,就刷新最优位置和最优适应度。同时,将每一次迭代后的最优适应度值记录下来,用于最终的收敛曲线绘制和效果判断。
当迭代次数达到预定的最大值后,算法终止。如果在运行之初因维度奇数而多添加了一维,则在最终返回结果时会剔除那一维,以保证输出的最优解与实际问题维度一致。函数最终会返回四项内容:最优适应度、最优位置、整个迭代过程的收敛曲线以及群体轨迹信息,方便用户做进一步分析或可视化。
将这一优化框架应用到栅格路径规划领域,需要先将实际障碍环境离散化为规则的网格,每一个网格单元对应地图中的一个小方块,并用坐标对其进行标识。在该背景下,路径可被视为由起点到终点之间经过多个网格的序列。为了让连续空间中的蚂蚱算法适应这种离散格结构,通常需要将每个蚂蚱个体的位置向量映射到对应的网格坐标上,通过最近邻或插值方式将连续值转换为合法的格点序列。
在映射完成后,需要设计一个能够综合反映路径质量的评估函数。该函数一般会将路径长度作为基本考量,同时对路径中穿越障碍格的情况施加高额罚分,让算法尽可能避免碰撞;还可以适当对拐弯次数或路径平滑度进行惩戒或奖励,以满足机器人行驶过程中的运动约束。综合各项指标得到一个标量值后,便可作为目标函数供蚂蚱算法调用。
在实际运行时,算法会首先随机生成一批路径编码,每一条编码都代表一条从起点出发的网格序列。借助上述社交和目标引导机制,蚂蚱群体在解空间中不断交换信息,优质路径编码会对周围的编码产生吸引作用,而劣质且冲突严重的编码会被排斥出群体。这种动态调整使得整个群体逐渐从试探性的大范围搜索,转变为集中搜索那些冲突少、长度短的路径区域。
在迭代过程中,若部分路径因不合理而映射到障碍位置,可以在边界检查环节将其强制修正为与障碍相邻的可通行格子,或重新随机生成该部分路径以恢复合法性。随着迭代不断深入,路径编码会在合法性和优化目标之间权衡,最终收敛到一条满足各项约束且总代价最小的可行路径。
这种基于蚂蚱优化的栅格路径规划方法在静态已知环境下拥有较强的全局搜索能力,能够在复杂障碍分布中找到高质量的路径。相较于传统网格搜索算法,它能够自动平衡搜索范围与局部精细化的程度,避免陷入某一局部可行路径而忽略更优解的风险。此外,通过引入适应度历史记录与轨迹可视化,用户可以直观地观察算法在每次迭代中的进化过程,从而为参数调整和算法改进提供参考。
尽管如此,这一方法在高维或大规模栅格地图上仍然面临计算量较大的挑战。针对这一情况,可以结合分区搜索、并行计算或多阶段混合算法等策略,将栅格地图划分为若干子区域,先在粗糙层面快速寻找可行通道,再在关键区域应用蚂蚱优化算法做精细优化。如此便可以兼顾全局规划效率与局部规划精度,有效提升算法在实际机器人导航和自主驾驶中的应用性能。
综上所述,蚂蚱优化算法通过模拟自然界群体觅食时的互动机制,实现了对连续空间或离散格结构下的全局最优解的高效搜索。结合栅格路径规划的离散环境表达和合适的适应度设计,能够为移动机器人、自主巡航和物流搬运等场景提供灵活且高效的路径规划解决方案。未来,可在该框架基础上继续引入在线动态重规划、深度学习引导初始化或多种启发式策略融合,以进一步提升在动态环境与大规模地图中的实时性和鲁棒性。
2、仿真结果演示
3、关键代码展示
略
4、MATLAB 源码获取
V
点击下方名片关注公众号获取