【优化求解】基于果蝇FOA算法求解最优目标matlab源码

 1 简介

​ 果蝇算法基本原理果蝇具有强大的嗅觉和视觉,在觅食过程中,果蝇首先利用嗅觉搜索功能确定食物的大体位置,并向该位置迅速靠近.在到达食物附近时,果蝇个体通过其敏锐的视觉定位同伴和食物所处的位置,并飞至该位置 .通过对果蝇觅食过程的分析,得到果蝇算法的基本原理.

(1)嗅觉搜索阶段:果蝇通过嗅觉搜索到食物散发的气味浓度,确定食物的大体位置,在确定飞行的随机方向和步长后,向该位置靠近;

(2)视觉定位阶段:当接近食物时,果蝇会通过视觉搜索具有最大气味浓度的果蝇个体所处的位置,并飞至最优果蝇个体所处的位置

2 部分代码

%% FOA封装程序
clc;
clear all
close all
%% 初始化参数
maxgen=100; %最大迭代次数
sizepop=50;
dim=2;
L=1;
%% 初始化矩阵

X_best=zeros(maxgen,dim);
Y_best=zeros(maxgen,dim);
Smell_best=zeros(1,maxgen);
%% 初始化果蝇坐标;
X_axis=10*rand(1,dim);
Y_axis=10*rand(1,dim);
%% 生成果蝇群
[Si,X,Y]=gengrate_foa(X_axis,Y_axis,sizepop,dim,L);
%% 寻找最优个体
[BestSmell,Index]=find_Schaffer(Si);
SmellBest=BestSmell;               %SmellBest为全局最优
%% 取出最优个体的两个维度的X,Y坐标
X_axis=X(Index,:);
Y_axis=Y(Index,:);
for g=1:maxgen
   %% 生成果蝇群
  [Si,X,Y]=gengrate_foa(X_axis,Y_axis,sizepop,dim,L);
   %% 寻找最优个体
  [BestSmell,Index]=find_Schaffer(Si);
   if BestSmell<SmellBest
       X_axis=X(Index,:);
       Y_axis=Y(Index,:);    
       %更新极值
       SmellBest=BestSmell;

       
   end
   Smell_best(g)=SmellBest;
   X_best(g,:)=X_axis;
   Y_best(g,:)=Y_axis;
end

%% 输出最终值
SmellBest
%% 绘制图像
figure(1)
plot(Smell_best,'b');
title('最佳个体适应度值变化趋势')
xlabel('迭代次数')
ylabel('适应度值')
img =gcf;  %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]吴小文, & 李擎. (2013). 果蝇算法和5种群智能算法的寻优性能研究. 火力与指挥控制, 38(004), 17-20,25.

5 MATLAB代码与数据下载地址

见博客主页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天天Matlab科研工作室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值