上一篇为大家讲诉了蚁群2算法解決最简单的TSP问题当然这只是一个开端,很多时候不同的人有不同的要求之前有一个我的朋友找到我,希望我能将遗传算法和蚁群2算法結合起来这样会不会得到一个收敛更快,距离更短的程序呢当然针对这个问题,如果真懂蚁群2算法和遗传算法的同学就知道这个答案是否定的。因为无论是遗传算法还是蚁群2算法都有很大的随机性,即使是同一段程序不同时间段来跑跑出来的结果也不一样。将两種算法组合起来使用的确会在很大程度上提高收敛速度但并不能保证结合算法的优化结果比单一遗传算法或则单一蚁群2算法的结果更佳。下面我将我写的这段遗传算法和蚁群2算法组合的代码和结论给各位同学展示一下:
单一的蚁群2算法代码(跟第一篇有些许改动):
%%第一步:变量初始化
%%第二步:将m只蚂蚁放到n个送货点上
%%第三步:m只蚂蚁按概率函数选择下一座送货点完成各自的周游
%下面计算待选送货点的概率分布
%按概率原则选取下一个送货点
%%第四步:记录本次迭代最佳路线
%%第五步:更新信息素
%此次循环在路径(i,j)上的信息素增量
%此次循環在整个路径上的信息素增量
%%第六步:禁忌表清零
disp('改进前的最短路径距离为')
disp('改进前的最短路径距离对应的最短路径为')
%%第一步:变量初始化
%%苐二步:将m只蚂蚁放到n个送货点上
%%第三步:m只蚂蚁按概率函数选择下一座送货点完成各自的周游
%下面计算待选送货点的概率分布
%按概率原则选取下一个送货点
%%第四步:记录本次迭代最佳路线
%%第五步:更新信息素
%此次循环在路径(i,j)上的信息素增量
%此次循环在整个路径上嘚信息素增量
%%第六步:禁忌表清零
title('改进前后的搜索过程对比图');
legend('改进前的最优解','改进前的当前解','改进后的最优解','改进后的当前解');
disp('改进后的最短路径距离为')
disp('改进后的最短路径距离对应的最短路径为')
单一蚁群2算法结论如图1:
组合蚁群2算法结论如图2:
如果有问题欢迎大家讨论!!!!
加载中,请稍候......