人工鱼群算法有哪些?

人工鱼群算法有哪些?,第1张

具体算法如下:

1、起源人工鱼群算法是李晓磊等人于2002年在动物群体智能行为研究的基础上提出的一种新型方盛优化算法,该算法根据水域中鱼生存数目最多的地方就是本水域中富含营养物质最多的地方这一特点来模拟鱼群的觅食行为而实现寻优。

2、算法主要利用鱼的三大基本行为:觅食、聚群和追尾行为,采用自上而下的寻优模式从构造个体的底层行为开始,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的。

3该方法采用自下而上的寻优思路,首先设计单个个体的感知、行为机制,然后将一个或一群实体放置在环境中,让他们在环境的交互作用中解决问题。

4、生态学基础在一片水域中,鱼存在的数目最多的地方就是本水域富含营养物质最多的地方,依据这一特点来模仿鱼群的觅食、聚群、追尾等行为,从而实现全局最优,这就是鱼群算法的基本思想。鱼类活动中,觅食行为、群聚行为、追尾行为和随机行为与寻优命题的解决有较为密切的关系,如何利用简单有效的方式来构造和实现这些行为将是算法实现的主要为题。

5、人工鱼的结构模型人工鱼是真实鱼抽象化、虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动。其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为取决于自身的状态和环境的状态,并且它还通过自身的活动来影响环境,进而影响其他人工鱼的活动。

clc

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8029431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存