• 大小: 152KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-17
  • 语言: 其他
  • 标签: matlab  

资源简介

各种智能算法程序以求函数最值为例-蚁群算法.rar
首先声明,程序部分为原创,部分网络下载,部分为根据他人成果做细微改动。
这是本人智能控制的小作业,主要是用多种智能算法进行函数优化,包括遗传算法,蚁群算法和鱼群算法。另外,有的算法用几个版本的程序,分别为原创和修改,仅供大家参考。另外由于时间有限,程序写的不是很有调理,读起来可能会稍微费劲。另外由于本人学习智能算法时间比较短,同时用多种算法纯属学习,因此不排除程序和报告中有不足和错误,希望大家指正和讨论。
附件中包括程序和截图,同时还有自己最后的报告,由于是小作业,因此时间较短,相对粗糙,勿怪。

资源截图

代码片段和文件信息

%蚁群算法函数优化
%沈杰109101342 南京理工大学自动化学院
%aco_1.m
%本例解决schaffer函数最大值问题
clear
clf
%%初始化及蚂蚁初始位置绘图
Ant=100;%蚁群规模
ECHO=50;%迭代次数
start1=-50;end1=50;start2=-50;end2=50;tcl=0.1;%边界条件和步长
%schaffer函数
f=‘0.5-((sin(sqrt(x.^2+y.^2))).^2-0.5)./(1+0.001*(x.^2+y.^2)).^2;‘;
[xy]=meshgrid(start1:tcl:end1start2:tcl:end2);
vxp=x;
vyp=y;
vzp=eval(f);
%设置蚂蚁初始位置
for i=1:Ant
    X(i1)=(start1+(end1-start1)*rand(1));
    X(i2)=(start2+(end2-start2)*rand(1));
    T0(i)=0.5-((sin(sqrt(X(i1).^2+X(i2).^2))).^2-0.5)./(1+0.001*(X(i1).^2+X(i2).^2)).^2;
end;
%绘图
figure(1);%蚂蚁初始位置
mesh(vxpvypvzp);hold on;
plot3(X(:1)X(:2)T0‘k*‘)
hold on;
grid on;
title(‘蚂蚁初始位置‘);
xlabel(‘x‘);
ylabel(‘y‘);
zlabel(‘f(xy)‘);
%%开始迭代,迭代次数为ECHO
for Echo=1:ECHO
    P0=0.2;%伪随机选择概率
    P=0.8;%[0 1]上常数,用于信息素更新
    lamda=1/Echo;%蚂蚁爬行速度
    [T_Best(Echo)BestIndex]=max(T0);
    %类似轮盘赌随机选择,计算概率
    for j_g=1:Ant
        r=T0(BestIndex)-T0(j_g);
        Prob(Echoj_g)=r/T0(BestIndex);
    end;
     for j_g_tr=1:Ant
         if Prob(Echoj_g_tr)           temp1=X(j_g_tr1)+(2*rand(1)-1)*lamda;
           temp2=X(j_g_tr2)+(2*rand(1)-1)*lamda;
         else
             temp1=X(j_g_tr1)+(end1-start1)*(rand(1)-0.5);
             temp2=X(j_g_tr2)+(end2-start2)*(rand(1)-0.5);
         end
         if temp1            temp1=start1;
         end;
         if temp1>end1
             temp1=end1;
         end;
         if temp2            temp2=start2;
         end;
         if temp2>end2
             temp2=end2;
         end;
         if 0.5-((sin(sqrt(temp1.^2+temp2.^2))).^2-0.5)./(1+0.001*(temp1.^2+temp2.^2)).^2>0.5-((sin(sqrt(X(j_g_tr1).^2+X(j_g_tr2).^2))).^2-0.5)./(1+0.001*(X(j_g_tr1).^2+X(j_g_tr2).^2)).^2;
            X(j_g_tr1)=temp1;X(j_g_tr2)=temp2;
         end;
     end;
     %更新残留信息素
     for t_t=1:Ant
         T0(t_t)=(1-P)*T0(t_t)+0.5-((sin(sqrt(X(t_t1).^2+X(t_t2).^2))).^2-0.5)./(1+0.001*(X(t_t1).^2+X(t_t2).^2)).^2;
     end;
%储存最优
     [c_iteri_iter]=max(T0);
     maxpiont_iter=[X(i_iter1)X(i_iter2)];
     maxvalue_iter=0.5-((sin(sqrt(X(i_iter1).^2+X(i_iter2).^2))).^2-0.5)./(1+0.001*(X(i_iter1).^2+X(i_iter2).^2)).^2;
     max_local(Echo)=maxvalue_iter;
     if Echo>=2
         if max_local(Echo)>max_global(Echo-1)
             max_global(Echo)=max_local(Echo);
         else
             max_global(Echo)=max_global(Echo-1);
         end
     else
         max_global(Echo)=maxvalue_iter;
     end;
end;%ECHO循环结束
%%绘图
figure(2);%蚂蚁最终分布位置图
mesh(vxpvypvzp);
hold on;
x=X(:1);y=X(:2);
plot3(xyeval(f)‘k*‘)
hold on;grid on;title(‘蚂蚁的最终分布位置‘);xlabel(‘x‘);ylabel(‘y‘);zlabel(‘f(xy)‘); 
figure(3);%
 max_global= max_global‘;
 i=1:ECHO;
 plot(imax_global(:1)‘-r*‘)
 title(‘最优函数值变化趋势‘);
 xlabel(‘iteration‘);
 ylabel(‘f(x)‘);
 grid on;
 [c_maxi_max]=max(T0);
 maxpiont=[X(i_max1)X(i_max2)];
 maxvalue= 0.5-((sin(sqrt(X(i_max1).^2+X(i_max2).^2))).^2-0.5)./(1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     943208  2010-06-01 19:24  蚁群算法\1.emf

     文件      51788  2010-06-01 19:24  蚁群算法\3.emf

     文件       3310  2010-06-05 22:02  蚁群算法\aco_1.m

     文件       2361  2010-06-22 10:25  蚁群算法\aco_2\aco_2.m

     文件        146  2010-05-26 08:34  蚁群算法\aco_2\fitx.m

     文件    1774924  2010-06-22 10:34  蚁群算法\aco_2\xx.emf

     文件      37580  2010-06-22 10:07  蚁群算法\aco_2\收敛.emf

     文件    1773340  2010-06-22 09:53  蚁群算法\chushi.emf

     文件    1773732  2010-06-22 09:57  蚁群算法\final.emf

     文件     943208  2010-06-01 19:24  蚁群算法\untitled.emf

     文件      55288  2010-06-22 10:01  蚁群算法\函数值.emf

     目录          0  2010-06-22 10:34  蚁群算法\aco_2

     目录          0  2010-06-22 09:57  蚁群算法

----------- ---------  ---------- -----  ----

              7358885                    13


评论

共有 条评论