⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 anttravel.m

📁 蚁群算法优化PID参数..只运行ant.m这个文件就行了
💻 M
字号:
function[p,fm]=anttravel(tao,alpha,beta,Y1,Y2,Y3)
%tao=ones(20,20);
%alpha=1;
%beta=2;
[z,l]=size(tao);

%Y1=0.2*rand(z,1)+0.4*ones(z,1);
%Y2=rand(z,1)+1.5*ones(z,1);
%Y3=rand(z,1)+1.5*ones(z,1);

P=[Y1(1),Y2(1),Y3(1)];
%[y(1),f(1)]=antsimu(P(1),P(2),P(3));
fm=0;
for k=1:(z-1)
    %P=[5*Y(k,1),200*Y(k,2),0.5*Y(k,3)];
    [yv,fv]=antsimu(P(1),P(2),P(3));
    p_sum=0;
    for g=1:z
        f(g)=0;
    end
    for g=1:z
        b(g,1)=Y1(g);b(g,2)=Y2(g);b(g,3)=Y3(g);
        f(g)=0;
        for i=1:3
        if (b(g,i)==P(i))|b(g,i)<0
            continue;
        else
            [y,f(g)]=antsimu(b(g,1),b(g,2),b(g,3));
            ada=fv-f(g);
            if (ada<=0)|(f(g)==0) continue;
            %if (fv<f)|(f=0) continue;
            else
                p_sum=p_sum+tao(k,g)^alpha*ada^beta;
            end
        end
    end
    cp=zeros(1,z);
    for t=1:z
        %b=[5*Y(t,1),200*Y(t,2),0.5*Y(t,3)];
        %if b==P
            %continue;
            %else
            %[y,f]=antsimu(b(1),b(2),b(3));
            ada=fv-f(t);
            if (ada<=0)|(f(t)==0) continue;
            else
                cp(t)=tao(k,t)^alpha*ada^beta/p_sum;%求转移概率
            end
        end
    end
    cpp=cp(1);
    for s=1:z
        if cpp<=cp(s)
            cpp=cp(s);
            P(1)=b(s,1);P(2)=b(s,2);P(3)=b(s,3);
        end
    end
    [yv,fv]=antsimu(P(1),P(2),P(3));
    fm=fv;
end
p=P;
%plot(yv);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -