您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 智能计算--蚁群算法优化实验
教务处制第页1实验报告2018──2019学年第二学期一、实验目的及要求二、实验原理、实验内容三、实验仪器设备及材料四、操作方法与实验步骤五、实验数据记录及处理六、实验结果分析实验六:蚁群算法优化1.主要代码clc,clear%清空环境中的变量loaddata.txt%读入城市的坐标t0=clock;%程序计时开始%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%str=['北京','天津','武汉','深圳','长沙','成都','杭州','西安','拉萨','南昌'];city=data;n=10;%城市距离初始化D=zeros(n,n);fori=1:nforj=1:nD(i,j)=city(i,j);endendm=15;%蚂蚁数量alpha=2;%信息素重要程度因子beta=4;%启发函数重要程度因子v=0.2;%信息素挥发因子Q=0.5;%信息因子常系数H=1./D;%启发函数T=ones(n,n);%信息素矩阵Table=zeros(m,n);%路径记录表iter=1;%迭代次数初值iter_max=20;%最大迭代次数best_route=zeros(iter_max,n);%各代最佳路径best_length=zeros(iter_max,1);%各代最佳路径的长度%%whileiter=iter_max%随机产生每只蚂蚁的起点城市start=zeros(m,1);fori=1:m教务处制第页2temp=randperm(n);start(i)=temp(1);endTable(:,1)=start;city_index=1:n;fori=1:m%逐个城市路径选择forj=2:ntabu=Table(i,1:(j-1));%已访问的城市集合allow=city_index(~ismember(city_index,tabu));%筛选出未访问的城市集合P=zeros(1,length(allow));%计算相连城市的转移概率fork=1:length(allow)P(k)=T(tabu(end),allow(k))^alpha*H(tabu(end),allow(k))^beta;endP=P/sum(P);%轮盘赌法选择下一个访问城市Pc=cumsum(P);%参加说明2(程序底部)target_index=find(Pc=rand);target=allow(target_index(1));Table(i,j)=target;endend%计算各个蚂蚁的路径距离Length=zeros(m,1);fori=1:mRoute=[Table(i,:)Table(i,1)];forj=1:nLength(i)=Length(i)+D(Route(j),Route(j+1));endend%对最优路线和距离更新ifiter==1[min_length,min_index]=min(Length);best_length(iter)=min_length;best_route(iter,:)=Table(min_index,:);else[min_length,min_index]=min(Length);ifmin_lengthbest_length(iter-1)best_length(iter)=min_length;best_route(iter,:)=Table(min_index,:);elsebest_length(iter)=best_length(iter-1);best_route(iter,:)=best_route(iter-1,:);endend%更新信息素教务处制第页3Delta_T=zeros(n,n);%逐个蚂蚁计算fori=1:m%逐个城市计算Route=[Table(i,:)Table(i,1)];forj=1:nDelta_T(Route(j),Route(j+1))=Delta_T(Route(j),Route(j+1))+D(Route(j),Route(j+1))*Q/Length(i);endendT=(1-v)*T+Delta_T;%迭代次数加1,并清空路径记录表iter=iter+1;Table=zeros(m,n);end%----------------------------------------------------------------------------------------------------------------------------%%结果显示shortest_route=best_route(end,:);%选出最短的路径中的点short_length=best_length(end);Time_Cost=etime(clock,t0);disp(['最短距离:'num2str(short_length)]);disp(['最短路径:']);fprintf('%c',8);fori=1:na=int32(shortest_route(i));disp(num2str([str(2*a-1)str(2*a)]));ifinfprintf('%c--',8);endenddisp(['程序执行时间:'num2str(Time_Cost)'秒']);%----------------------------------------------------------------------------------------------------------------------------%绘图figure(1)%画出收敛曲线plot(1:iter_max,best_length,'b')xlabel('迭代次数')ylabel('距离')title('迭代收敛曲线')2、实验步骤和实验结果(1)程序设计步骤:1、初始化各个参数:包括各点的距离,信息素的初始浓度,蚂蚁数量,信息素挥发因子,信息素和启发函数的重要度因子,启发函数,最大迭代次数,路径记录表等等。2、迭代:对每个蚂蚁随机制定初始值,再根据概率选择,选择出每只蚂蚁的路径,确定每只蚂蚁的路径总长度,以及蚁群的最佳路径长度和平均长度,并对信息素进行更新。3、展示:展示出最佳路径,以及最佳路径对迭代的变化图。教务处制第页4(2)实验步骤流程如下图:(3)实验结果:最短距离:12062最短路径:西安--成都--拉萨--深圳--长沙--武汉--南昌--杭州--天津--北京—西安程序执行时间:0.22秒3、收敛曲线教务处制第页5由于城市数据为10个,所以收敛次数不宜过大,这里设置最大次数为20次,得到的收敛曲线如图所示。仪器设备损坏、非正常损耗材料(试剂)及处理情况:无教师对报告的最终评价及处理意见:教师签字:年月日
本文标题:智能计算--蚁群算法优化实验
链接地址:https://www.777doc.com/doc-5719506 .html