【优化求解】基于鱼群算法求解最优目标matlab源码

1 简介

2001年李晓磊[1]通过模仿鱼类觅食行为将动物自治体概念引入到群体优化方法中,提出了人工鱼 群 算 法(ArtificialFishSwarm Algorithm)思想。

2 部分代码

clc
clear all
close all
tic
figure(1);hold on
%% 参数设置
fishnum=100; %生成100只人工鱼
MAXGEN=50; %最多迭代次数
try_number=100;%最多试探次数
visual=1; %感知距离
delta=0.618; %拥挤度因子
step=0.1; %步长
%% 初始化鱼群
lb_ub=[-10,10,2;];
X=AF_init(fishnum,lb_ub);
LBUB=[];
for i=1:size(lb_ub,1)
   LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];
end
gen=1;
BestY=-1*ones(1,MAXGEN); %每步中最优的函数值
BestX=-1*ones(2,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),X(2,index),'.','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),bestx(2),'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
img =gcf;  %获取当前画图的句柄
print(img, '-dpng', '-r600', './运行结果.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]李晓磊, 邵之江, and 钱积新. "一种基于动物自治体的寻优模式:鱼群算法." 系统工程理论与实践 22.11(2002):32-38.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值