• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: Matlab
  • 标签: 人工鱼群  Matlab  

资源简介

人工鱼群算法,Matlab源代码,绝对没问题,可以跑的

资源截图

代码片段和文件信息

function AF
clc;clear all; close all;

format long
Visual = 2.5;
Step = 0.3;
N = 50;
Try_number = 50;
a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = []; h = 1e-1;
Friend_number = 50; k = 0; m = 50;
X1 = rand(N1)*(b1-a1)+a1;
X2 = rand(N1)*(b2-a2)+a2;
X = [X1 X2]; % 人工鱼数量
for i = 1:N
    www = [X(i1)X(i2)];
    d(i) = maxf(www);
end
[wi] = max(d);
maxX = [X(i1)X(i2)]; % 初始公告板记录
maxY = w; % 初始化公告板记录
figurex = []; figurey = []; figurez = [];
figurex(numel(figurex)+1) = maxX(1);
figurey(numel(figurey)+1) = maxX(2);
figurez(numel(figurez)+1) = maxY;
kkk = 0;

while(k    for i = 1:N
        XX = [X(i1)X(i2)]; % 人工鱼当前状态Xi
        nf = 0;
        Xc = 0;
        for j = 1:N % 聚群行为开始
            XXX = [X(j1) X(j2)];
            if (norm(XXX-XX)                nf = nf+1;
                Xc  = Xc+XXX;
            end
        end
        Xc = Xc/nf;
        if(maxf(Xc) > maxf(XX))
            XXnext1 = XX+rand*Step*(Xc-XX)/norm(Xc-XX);
            if(XXnext1(1) > b1)
                XXnext1(1) = b1;
            end
            if(XXnext1(1) < a1)
                XXnext1(1) = a1;
            end
            if(XXnext1(2) > b2)
                XXnext1(2) = b2;
            end
            if(XXnext1(2) < a2)
                XXnext1(2) = a2;
            end
        else
            XXnext1 = gmjprey(XXTry_numberVisualStep);
            if(XXnext1(1) > b1)
                XXnext1(1) = b1;
            end
            if(XXnext1(1) < a1)
                XXnext1(1) = a1;
            end
            if(XXnext1(2) > b2)
                XXnext1(2) = b2;
            end
            if(XXnext1(2) < a2)
                XXnext1(2) = a2;
            end
        end % 聚群行为结束
        
        % maxX = XX; % 追尾行为开始
        % maxY = maxf(XX);
        for j = 1:Friend_number
            XXX = [X(j1)X(j2)];
            if(norm(XXX-XX)

评论

共有 条评论