您现在的位置:首页 >> ★免费资源 >> 源码下载 >> 内容

MATLAB代做-python代做-FPGA代做- 人工鱼群算法仿真

时间:2019-5-10 17:29:50 点击:

  核心提示:MATLAB代做-python代做-FPGA代做- 人工鱼群算法仿真...
function r=AFSA()
N=100;    % N为鱼规模,即鱼的条数 
visual=1; % visual为可视范围
step=0.01; % step 为步长
maxnum=150; % maxnum 为最大迭代次数

x=10*rand(1,100); % x为初始群体----定义域上的20个随机自变量值

% 创建公告板记录 g, root
[ymax,index]=max(f(x)); % g为初始群体中的最好适应度值,index为其相应的下标值
xmax=x(index); % root 为g对应的自变量值

%画函数图形
fplot('f',[0 10])  % 与 ezplot('f',0,10) 结果相同
hold on

% 开始迭代
num=0;     % num 为当前迭代次数
while (num<maxnum)
  num  
  for i=1:N
           nf=0;  % nf为当前鱼周围可视范围内的伙伴鱼的条数(不含当前鱼)
           xc=0;  % xc 为当前鱼可视范围内伙伴鱼的中心位置
            for j=1:N
                if abs(x(i)-x(j))>0 & abs(x(i)-x(j))<visual
                   xc=xc+x(j);
                   nf=nf+1;
                end
            end
            xc=xc/nf;  %找到伙伴鱼的中心位置            
            if f(xc)>f(x(i))
               xsnext(i)=x(i)+rand*step*(xc-x(i));
            else
               xsnext(i)=Prey(x(i));
            end%聚群行为结束
       
            xmax=x(i);
             fmax=f(x(i));
            for j=1:N
                if abs(x(i)-x(j))>0 & abs(x(i)-x(j))<visual & f(x(j))>fmax
                    xmax=x(j);
                   fmax=f(x(j));
                end
            end
            if xmax~=x(i)
                xfnext(i)=x(i)+rand*step*(xmax-x(i));
                if xfnext(i)>10
                     xfnext(i)=10;
                elseif xfnext(i)<0
                     xfnext(i)=0;
                 end
            else
                xfnext(i)=Prey(x(i));
            end
            %追尾行为结束                                        
            
            % fsnext(i)=f(xsnext(i));
            % ffnest(i)=f(xfnext(i));
            xnext=zeros(1,20);
            if f(xsnext(i))>f(xfnext(i))
                 xnext(i)=xsnext(i);
            else
                 xnext(i)=xfnext(i);
            end
            
            x(i)=xnext(i);  % 更新下一次迭代的初始值
  end  % 一次迭代结束
  
  %画迭代过程
  plot(xnext,f(xnext),'.')
  hold on
  %pause
 
  % 找出当前迭代中最好的,如果其比公告板上的记录还好,就用其代替公告板上的记录
  for i=1:N
       if f(xnext(i))>ymax
            ymax=f(xnext(i));
            xmax=xnext(i);
       end
   end
    num=num+1; %进入下一次迭代
end   

% 显示公告板记录
xmax
ymax 
num

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

作者:人工鱼群算法 来源:人工鱼群算法
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|python代做|matlab淘宝代做|matlab代写(www.hslogic.com) © 2019 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment