if i_ger>=2
if max_local(i_ger)>max_global(i_ger-1) max_global(i_ger)=max_local(i_ger); else
max_global(i_ger)=max_global(i_ger-1); end else
max_global(i_ger)=max_local(i_ger); end end
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % figure(2);
mesh(vxp,vyp,-vzp); hold on; x=X(:,1); y=X(:,2);
plot3(x,y,-eval(f),'b*'); hold on; grid on;
title('蚂蚁的最终分布位置');
xlabel('x'); ylabel('y'); zlabel('f(x,y)'); figure(3);
plot(1:Ger,-max_global,'b-') hold on;
title('最优函数值变化趋势'); xlabel('iteration'); ylabel('f(x)'); grid on;
[c_max,i_max]=max(T0); maxpoint=[X(i_max,1),X(i_max,2)]
maxvalue=-(2-exp(-(X(i_max,1).^2+X(i_max,2).^2)))
runtime=toc
结果:maxvalue =1.0000
题目2:利用蚁群算法求下面加权有向图中从A到G的最短路:
解:
第一步:初始化N只蚂蚁,也就是N条道路 第二步:初始化运行参数,开始迭代
第三步:在迭代步数范围之内,计算转移概率,如果小于全局转移概
率就进行小范围的搜索,否则就进行大范围的搜索 第四步:更新信息素,记录状态,准备进行下一次迭代 第五步:转第三步 第六步:输出结果 代码:
function shortroad_ant_main % Ant main program clear all;close all;clc;%清屏 tic;%计时开始
Ant=50;Ger=100;%运行参数初始化
power=[0 5 3 100 100 100 100 100 100 100 100 100 100 100 100 100; 100 0 100 1 3 6 100 100 100 100 100 100 100 100 100 100; 100 100 0 100 8 7 6 100 100 100 100 100 100 100 100 100; 100 100 100 0 100 100 100 6 8 100 100 100 100 100 100 100; 100 100 100 100 0 100 100 3 5 100 100 100 100 100 100 100; 100 100 100 100 100 0 100 100 3 3 100 100 100 100 100 100; 100 100 100 100 100 100 0 100 8 4 100 100 100 100 100 100; 100 100 100 100 100 100 100 0 100 100 2 2 100 100 100 100; 100 100 100 100 100 100 100 100 0 100 100 1 2 100 100 100; 100 100 100 100 100 100 100 100 100 0 100 3 3 100 100 100; 100 100 100 100 100 100 100 100 100 100 0 100 100 3 5 100; 100 100 100 100 100 100 100 100 100 100 100 0 100 5 2 100;