1 简介
人工鱼群算法是一种基于自然界鱼群的生活行为而提出的一种智能优化算法。人工鱼群算法由于其诸多优点自从提出来后就得到了广泛的应用,这是群体智能算法的一个典型应用,是人们在群体智能研究的方面的又一个重要成就。人工鱼群算法可以简单的描述为:在自然界的一片水域中,鱼类一般是通过随机自由游动来寻找食物的,在寻找食物的过程中,鱼类往往聚集成群,这是鱼类长期自然选择形成的生活习性。一般情况下,鱼个数较多的地方往往是食物也较多的地方。人工鱼群算法就是通过模 仿自然鱼的觅食、聚群、追尾、随机游动的行为而形成的一种优化算法。





2 部分代码
function [C_AF,bestp]=AF_main(I,Ptot)global K h N deltaf n m mm%%%%%%%%初始化%%%%%%%%%fishnum=300;%生成3条人工鱼visual=1;%感知范围try_number=100;%最大尝试次数step=0.1;%移动步长delta=0.618;%拥挤度因子MAXGEN=100;%最大迭代次数p=rand(12,fishnum);p1=p./(ones(12,1)*sum(p))*Ptot;for i=1:fishnumwhile(find((transpose(p1(:,i))*K>I))>0)p1(:,i)=p1(:,i)*0.5;p1(find(p1<0))=0;endend %初始化人工鱼及其参数 是的每个参数满足L+1个约束C1=sum(log2(1+transpose(h)*ones(1,fishnum).*p1));% 根据初始化参数 得到的初始化每条对应的容量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%gen=1;BestC=zeros(1,MAXGEN);%每步中最优的容量值BestP=zeros(N,MAXGEN);%每步中最优的自变量bestC=0;while gen<=MAXGENfor i=1:fishnum[p2,C2]=AF_swarm(p1,i,visual,step,try_number,C1(i),delta);%%%%%%觅食行为%%%%%%%%%%%[p3,C3]=AF_follow(p1,i,visual,step,try_number,C1(i),delta);%%%%%%聚群行为%%%%%%%%%%%if C2>C3p1(:,i)=p2;C1(i)=C2;elsep1(:,i)=p3;C1(i)=C3;endend[Cmax,index]=max(C1);if n==1&&m==1&&mm==1figure(1);hold onplot( p1(1,index),p1(2,index),p1(3,index),p1(4,index),p1(5,index),...p1(6,index),p1(7,index),p1(8,index),p1(9,index),p1(10,index),...p1(11,index),p1(12,index),'.','color',[gen/MAXGEN,0,0]);endif Cmax>bestCbestC=Cmax;bestp=p1(:,index);BestC(gen)=Cmax;[BestP(:,gen)]=p1(:,index);elseBestC(gen)=BestC(gen-1);[BestP(:,gen)]=BestP(:,gen-1);endgen=gen+1;endC_AF=bestC;if n==1&&m==1&&mm==1plot( bestp(1),bestp(2),bestp(3),bestp(4),bestp(5),...bestp(6),bestp(7),bestp(8),bestp(9),bestp(10),...bestp(11),bestp(12),'ro','MarkerSize',30);xlabel('p')ylabel('C')title('鱼群算法迭代过程中最优坐标移动')figure(2)plot(1:MAXGEN,BestC*deltaf)end3 仿真结果



4 参考文献
[1]田琳. 基于人工鱼群的K中心组合优化聚类算法研究. (Doctoral dissertation, 沈阳大学).
完整代码或者代做添加QQ1575304183
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。











