• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: 蚁群算法  

资源简介

蚁群算法求函数最大值的程序 function [F]=F(x1,x2) %目标函数 F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7); End?

资源截图

代码片段和文件信息

function [F]=F(x1x2) %目标函数
F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7);
End?
function [maxxmaxymaxvalue]=antcolony%?蚁群算法求函数最大值的程序
ant=200;%蚂蚁数量
times=50;%蚂蚁移动次数
rou=0.8;%信息素挥发系数
p0=0.2;%转移概率常数
lower_1=-1;%设置搜索范围
upper_1=1;%
lower_2=-1;%
upper_2=1;%
for i=1:ant??
    X(i1)=(lower_1+(upper_1-lower_1)*rand);%随机设置蚂蚁的初值位置
    X(i2)=(lower_2+(upper_2-lower_2)*rand);
    tau(i)=F(X(i1)X(i2));%第i只蚂蚁的信息量?end?%随机初始每只蚂蚁的位置
    step=0.05;%网格划分单位
    f=‘-(x.^2+2*y.^2-0.3*cos(3*pi*x)-0.4*cos(4*pi*y)+0.7)‘;
    [xy]=meshgrid(lower_1:step:upper_1lower_2:step:upper_2);
    z=eval(f);%eval函数,将字符串内的内容执行再赋给对象
    figure(1);
    mesh(xyz);%网格图?
    hold on;
    plot3(X(:1)X(:2)tau‘k*‘)%蚂蚁初始位置
    hold on;
    text(0.10.8-0.1‘蚂蚁的初始分部位置‘)
    xlabel(‘x‘);
    ylabel(‘y‘);
    zlabel(‘f(xy)‘);
    for t=1:times %第t次移动
        lamda=1/t;?%步长系数,随移动次数增大而减少?
????[tau_best(t)bestindex]=max(tau);%第t次移动的最优值及其位置

         for i=1:ant %第i只蚂蚁 
            p(ti)=(tau(bestindex)-tau(i))/tau(bestindex);%最优值与第i只蚂蚁的值的差比
              %计算状态转移概率
        end??
        for?i=1:ant
            if p(ti)                temp1=X(i1)+(2*rand-1)*lamda;%移动

评论

共有 条评论