欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 基于Matlab使用蚁群算法寻找最优路径

基于Matlab使用蚁群算法寻找最优路径

2024/10/23 15:32:32 来源:https://blog.csdn.net/mohen_777/article/details/142898835  浏览:    关键词:基于Matlab使用蚁群算法寻找最优路径

基于Matlab使用蚁群算法寻找最优路径

与Dijkstra算法使用相同的地图。
每只蚂蚁都从起点出发,直到抵达终点。这与Example5_1.m 中解决旅行商问题不一样,旅行商问题中每一代的蚂蚁都是随机从一个节点出发。

文件说明

Example5_1.m 简单对参考资料2中的代码进行重现;

ACA.m 对参考资料1中的代码进行重现,并适当优化代码且修改错误,错误如下:
请添加图片描述
请添加图片描述

计算P(2,k)有问题,neighbor已经删除了不可访问节点,所以neighbor中节点的索引号和nodes_data{node_step, 4}索引号不是一一对应关系,应该先找到对应的索引号。
修正:

实验

信息素启发式因子α 代表信息量对是否选择当前路径的影响程度, 即反映蚂蚁在运动过程中所积累的信息量在指导蚁群搜索中的相对重要程度。 α 的大小反映了蚁群在路径搜索中随机性因素作用的强度, 其值越大, 蚂蚁在选择以前走过的路径的可能性就越大, 搜索的随机性就会减弱; 而当启发式因子α的值过小时, 则易使蚁群的搜索过早陷于局部最优。 根据经验, 信息素启发式因子α取值范围一般为[l, 4]时, 蚁群算法的综合求解性能较好。

期望启发因子β 表示在搜索时路径上的信息素在指导蚂蚁选择路径时的向导性, 它的大小反映了蚁群在搜索最优路径的过程中的先验性和确定性因素的作用强度。 期望启发因子β的值越大, 蚂蚁在某个局部点上选择局部最短路径的可能性就越大, 虽然这个时候算法的收敛速度得以加快, 但蚁群搜索最优路径的随机性减弱, 而此时搜索易于陷入局部最优解。 根据经验, 期望启发因子β取值范围一般为[3, 5], 此时蚁群算法的综合求解性能较好。
参考:《智能优化算法及其MATLAB实例(第2版)》by包子阳 P101 例5.1

对结果的显示进行一定修改,以查看每一次迭代的最佳结果:
请添加图片描述

请添加图片描述

Dijkstra算法示例中求出的最优路径为:4-5-6-1
修改 β \beta β值重复四次实验

  1. β = 0 \beta=0 β=0
    实践中 β \beta β不应等于0,但为了说明距离这样的先验信息起的作用,取 β = 0 \beta=0 β=0,实验结果:
    请添加图片描述

  2. β = 3 \beta=3 β=3
    请添加图片描述

  3. β = 5 \beta=5 β=5

    请添加图片描述

对比三个实验中纵坐标最小值可以看出, β \beta β越大,算法越易陷入局部最优。

  1. 实验一最优值全为22,是全局最优,最优路径 4-5-6-1。
  2. 实验二2个22,2个25;
  3. 实验三全为25,均为局部最优,局部最优路径 4-5-6-2-1。

讨论:

  • 位于节点6时,接下来应该选择节点1还是节点2受到信息素和启发因子的影响,当 β \beta β较大时,更看重启发信息,即更加偏向与选择距离短的节点(节点6->节点1距离为16,节点6->节点2距离为7),因此才会出现实验三的结果。当 β = 0 \beta=0 β=0时,启发信息不起作用,选择全取决于信息素,这种情况更贴近自然中的蚁群寻路。
  • 群智能算法都有陷入局部最优的问题

如需代码,请私信联系

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com