clear all
close all
tic
figure(1)hold on
ezplot('x*sin(10*pi*x)+2',[-1,2])
%% 参数设置
fishnum=50%生成50只人工鱼
MAXGEN=50%最多迭代次数
try_number=100%最多试探次数
visual=1%感知距离
delta=0.618%拥挤度因子
step=0.1%步长
%% 初始化鱼群
lb_ub=[-1,2,1]
X=AF_init(fishnum,lb_ub)
LBUB=[]
for i=1:size(lb_ub,1)
LBUB=[LBUBrepmat(lb_ub(i,1:2),lb_ub(i,3),1)]
end
gen=1
BestY=-1*ones(1,MAXGEN)%每步中最优的函数值
BestX=-1*ones(1,MAXGEN)%每步中最优的自变量
besty=-100%最优函数值
Y=AF_foodconsistence(X)
while gen<=MAXGEN
fprintf(1,'%d\n',gen)
for i=1:fishnum
%% 聚群行为
[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y)
%% 追尾行为
[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y)
if Yi1>Yi2
X(:,i)=Xi1
Y(1,i)=Yi1
else
X(:,i)=Xi2
Y(1,i)=Yi2
end
end
[Ymax,index]=max(Y)
figure(1)
plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0])
if Ymax>besty
besty=Ymax
bestx=X(:,index)
BestY(gen)=Ymax
[BestX(:,gen)]=X(:,index)
else
BestY(gen)=BestY(gen-1)
[BestX(:,gen)]=BestX(:,gen-1)
end
gen=gen+1
end
plot(bestx(1),besty,'ro','MarkerSize',100)
xlabel('x')
ylabel('y')
title('鱼群算法迭代过程中最优坐标移动')
%% 优化过程图
figure
plot(1:MAXGEN,BestY)
xlabel('迭代次数')
ylabel('优化值')
title('鱼群算法迭代过程')
disp(['最优解X:',num2str(bestx,'%1.5f')])
disp(['最优解Y:',num2str(besty,'%1.5f')])
toc
1、首先如果刚刚带回家的海鱼不吃食的话,主人不用担心。这是由于环境变化和鱼只忙于抢夺领域而造成的,待其熟悉周围环境后,会逐渐调解过来。投饵应多样化,以满足各种鱼类的需求,为保持鱼体鲜亮的色彩,还可间隔投喂新鲜的活饵。海水鱼的投饵原则与淡水鱼基本一致,少量多餐,每次投饵量以5—10分钟内吃完为宜,每天投喂2次。
2、观察摄食状况:若发现有鱼不吃食或食欲减退,要找出原因,及时外理。也可以防止鱼因为抢食而互相攻击。
3、观察摄食方式:了解其生活习性,采取不同的投饵方式。对于水中摄食的雀鲷等鱼种可采用多样化的投饵,选用营养丰富的丰年虫、新鲜小鱼虾、人工配制的各种干燥饵、冷冻饵,还可以投喂一些新鲜蔬菜对于特殊摄食的鱼类来说,它们只吃珊瑚虫、青苔,很难找到适宜它们的食饵,只有从幼鱼开始培养才会逐渐适应其他替代饵料对于岩石啃食的鱼种,可将肉类、藻类制成粘稠状,涂抹于石块上,待风干后,供鱼啄食。
具体算法如下:
1、起源人工鱼群算法是李晓磊等人于2002年在动物群体智能行为研究的基础上提出的一种新型方盛优化算法,该算法根据水域中鱼生存数目最多的地方就是本水域中富含营养物质最多的地方这一特点来模拟鱼群的觅食行为而实现寻优。
2、算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的。
3该方法采用自下而上的寻优思路,首先设计单个个体的感知、行为机制,然后将一个或一群实体放置在环境中,让他们在环境的交互作用中解决问题。
4、生态学基础在一片水域中,鱼存在的数目最多的地方就是本水域富含营养物质最多的地方,依据这一特点来模仿鱼群的觅食、聚群、追尾等行为,从而实现全局最优,这就是鱼群算法的基本思想。鱼类活动中,觅食行为、群聚行为、追尾行为和随机行为与寻优命题的解决有较为密切的关系,如何利用简单有效的方式来构造和实现这些行为将是算法实现的主要为题。
5、人工鱼的结构模型人工鱼是真实鱼抽象化、虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动。其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为取决于自身的状态和环境的状态,并且它还通过自身的活动来影响环境,进而影响其他人工鱼的活动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)