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

📄 test_lianxu.m

📁 基于MATLAB的蚁群算法连续函数优化
💻 M
字号:
%test_lianxu_function
%第一层和最后一层只有0
%中间层都是0-9  len
%T蚂蚁的路径矩阵,起始点是第一层的0,终点是第d+2层的0
%tao全部d+2层的信息素矩阵,代表每一层上每一节点的经过概率
len=10;
tao0=0.01;
d=7;
tao=ones(d+2,len,len);
tao=tao*tao0;%所有蚂蚁共用
rou=0.8;
N0=20;
T=zeros(N0,d+2);%N0只蚂蚁,d+2层,赋予初始值为0,也就是说所有蚂蚁第一层次的都从第一个城市出发
Q0=0.8;
d=7;
iteration=100;
N0=20;
alpha=0.8;

max_result=0;
max_route=[];
max_x=0;
for i=1:iteration%迭代次数,迭代1000次,也就是所有蚂蚁走过1000遍
    %a=1;%第一层从数组下标1开始
    for j=2:d+1%层数,从初始点第一层0出发,到最后一层的0结束
        %b=1;
        for k=1:N0%蚂蚁编码
            b=select_k_city(tao,Q0,k,j,T,d);
            %b=select_k_city(tao,Q0,j,a,d);%求出第k只蚂蚁,第j层节点位置
            T(k,j)=b(1)-1;%T数组保存的是第k蚂蚁第j层的具体数值,应该为城市编号减1
            
            %执行局部更新城市之间的信息素
            %k    第k层
            %tao  两层之间的信息素
            %rou  比例
            %tao0 剩余信息素0.01
            %T    每一只蚂蚁下一步到达的城市.第一维是第几只蚂蚁、第二位是目前是第几步
            %n    第几只蚂蚁
            tao=update_tao(tao,rou,tao0,T,j,k);
        end
        %a=b;
    end
    
    %当所有蚂蚁全局都跑了一遍后,进行全局性更新
    %7) 根据公式(4) ~ (6) 评选出最优蚂蚁并执行全局更新规则;
    %共有n只蚂蚁
    %tao层与层之间的信息素
    %d是小数点后精确到d位

    %X所有蚂蚁的具体数值数组
    %idx最小的蚂蚁编码,也就是数组下标
    %alpha是一常量
    %[tao,X,idx]=update_all_tao(tao,n,alpha,d)
    [tao,X,idx]=update_all_tao(tao,N0,alpha,d,T);
    
    
    max_cur=myfunction(X(idx(1)));
    
    if max_cur>max_result
       max_result=max_cur;
       max_route=T(idx,:);
       max_x=X(idx);        
    end
    
    
end
max_result
max_route
max_x

⌨️ 快捷键说明

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