一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:
完整代码已上传我的资源:【优化算法】果蝇算法(FOA)【含Matlab源码 1568期】

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、果蝇优化算法简介

果蝇优化算法(FOA)是一种基于果蝇觅食行为推演出寻求全局优化的新方法。果蝇本身在感官知觉上优于其他物种,尤其是嗅觉和视觉上。果蝇的嗅觉器官能很好的搜集漂浮在空气中的各种气味,甚至能够嗅到40公里以外的食物源。然后,飞到食物位置附近后亦可使用敏锐的视觉发现食物和同伴聚集的位置,并且向该方向飞去。
果蝇算法可应用于求解最优解。

果蝇群体迭代搜寻食物的步骤如下:
(1)随机初始化果蝇群体位置。
Init X_axis
Init Y_axis

(2)赋予果蝇个体利用嗅觉搜寻食物的随机距离与方向。
Xi = X_axis + Random Value
Yi = Y_axis + Random Value

(3)由于无法得知食物的位置,因此先估计与原点的距离(Dist),再计算味道浓度判定值(S),此值为距离的倒数。
Disti = sqrt(Xi^2 + Yi^2)
Si = 1 / Disti

(4)味道浓度判定值(S)代入味道浓度判定函数(或称为Fitness function)以求出该果蝇个体位置的味道浓度(Smelli)。
Smelli = Function(Si)

(5)找出该果蝇群体中味道浓度最高的果蝇(求极大值)。
[bestSmell bestIndex] = max(Smell)

(6)保留最佳味道浓度值与x、y的坐标,此时果蝇群体利用视觉往该位置飞去。
Smellbest = bestSmell
X_axis = X(bestIndex)
Y_axis = Y(bestIndex)

(7)进入迭代寻优,重复执行步骤2-5,并判断味道浓度是否优于前一迭代味道浓度,若是则实行步骤6。

三、部分源代码

% Fruit Fly Optimization Algorithm,FOA.% The standard verison programmed by Prof.Pan is a simplifed version which
% is used to test a very easy function.In my opinion,in order to enhance
% the FOA application field,it is necessary to change it into a general
% version,which may be simple for students and scholars to use.%
function [Smellbest,X,Y] = FOA(n,maxt,lb,ub,dim)% Parameters setting
if nargin < 1n = 20; % Population sizemaxt = 5e2; % Max iterationsdim = 30; % Dimension of test functionlb = -100 * ones(1,dim); % Lower bound of test functionub = 100 * ones(1,dim); % Upper bound of test function
end% X = zeros(1 * dim);
% Y = zeros(1 * dim);
% new_X = zeros(1 * dim);
% new_Y = zeros(1 * dim);
% D = zeros(1 * dim);
% Sol = zeros(1 * dim);
% Fitness = zeros(n * 1);% Initialize the original position
for i = 1:nX(i,:) = lb+(ub-lb).*rand(1,dim); % the position of X axisY(i,:) = lb+(ub-lb).*rand(1,dim); % the position of Y axisD(i,:) = (X(i,:).^2 + Y(i,:).^2).^0.5; % Caculate the distanceSol(i,:) = 1./D(i,:); % the solution setFitness(i) = fun(Sol(i,:)); % Caculate the fitness
end[bestSmell,index] = min(Fitness); % Get the min fitness and its index
new_X = X(index,:); % the X axis of min fitness
new_Y = Y(index,:); % the Y axis of min fitness
Smellbest = bestSmell;
best = Sol(index,:);% Start main loop
for t = 1:maxtfor i = 1:n% Refer to the process of initializingX(i,:) = new_X + (ub - lb).*rand(1,dim);Y(i,:) = new_Y + (ub - lb).*rand(1,dim);D(i,:) = (X(i,:).^2 + Y(i,:).^2).^0.5;Sol(i,:) = 1./D(i,:);Fitness(i) = fun(Sol(i,:));end[bestSmell,index] = min(Fitness);% If the new value is smaller than the best value,update the best valueif (bestSmell < Smellbest)X(i,:) = X(index,:);Y(i,:) = Y(index,:);Smellbest = bestSmell;end% Out put result each 100 iterationsif round(t/100) == (t/100)Smellbest;endcg_curve(t) = Smellbest;
end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

【优化算法】果蝇算法(FOA)【含Matlab源码 1568期】相关推荐

  1. 【SVM分类】基于matlab哈里斯鹰算法优化支持向量机SVM分类【含Matlab源码 2243期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[SVM分类]基于matlab哈里斯鹰算法优化支持向量机SVM分类[含Matlab源码 2243期] 获取代码方式2: 付费专栏Matla ...

  2. 【MVO TSP】基于matlab灰狼算法求解旅行商问题【含Matlab源码 1327期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab灰狼算法求解旅行商问题[含Matlab源码 1327期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  3. 【图像重建】基于matlab布雷格曼迭代算法集合ART算法CT图像重建【含Matlab源码 1905期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像重建]基于matlab布雷格曼迭代算法集合ART算法CT图像重建[含Matlab源码 1905期] 获取代码方式2: 通过订阅紫极神光 ...

  4. 【AFSA TSP】基于matlab人工鱼群算法求解旅行商问题【含Matlab源码 422期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab人工鱼群算法求解旅行商问题[含Matlab源码 422期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  5. 【BA TSP】基于matlab蜜蜂算法求解旅行商问题【含matlab源码 1248期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab蜜蜂算法求解旅行商问题[含matlab源码 1248期] 获取代码方式2: 付费专栏Matlab路径规划(初级版 ...

  6. 【IA TSP】基于matlab免疫算法求解旅行商问题【含Matlab源码 195期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[旅行商问题]基于matlab免疫算法求解旅行商问题[含Matlab源码 195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  7. 【ELM分类】基于matlab遗传算法优化ELM神经网络数据分类【含Matlab源码 2138期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[ELM分类]基于matlab遗传算法优化ELM神经网络数据分类[含Matlab源码 2138期] 点击上面蓝色字体,直接付费下载,即可. ...

  8. 【LSSVM分类】基于matlab遗传算法优化LSSVM烟叶识别【含Matlab源码 1944期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[ELM分类]基于matlab鲸鱼算法优化核极限学习机数据分类[含Matlab源码 2012期] 获取代码方式2: 付费专栏Matlab智 ...

  9. 【潮流计算】基于matlab粒子群算法优化电力系统潮流计算【含Matlab源码 2157期】

    ⛄一.粒子群算法简介 1 标准粒子群优化(PSO)算法 PSO算法根据对环境的适应度将群体中的个体移动到好的区域,将每个个体看作是D维搜索空间中的一个粒子,根据粒子本身的飞行经验和群体中其他同伴的飞行 ...

  10. 【图像修复】基于matlab GUI FMM+Criminisi算法彩色图像修复【含Matlab源码 1507期】

    一.FMM+Criminisi算法简介 1 FMM算法 FMM算法是由Telea在2004年提出的,主要思想是先处理待修复区域边缘的像素,然后逐步向内推进,直到所有空洞点修复完毕.设Λ为待修复区域, ...

最新文章

  1. 刚刚,2021泰晤士高等教育亚洲大学排名出炉
  2. numpy比较运算符和其对应的通用函数
  3. 最全mysql的复制和读写分离
  4. NeurIPS 2019 开源论文 | 万能的GNN解释器
  5. python vars name报错_Python vars()全局名称错误
  6. spring配置数据源的4种方式--简介
  7. 【微软推荐】结合知识的推荐系统.pdf(附下载链接)
  8. 工业数据采集平台SaaS
  9. 大学excel题库含答案_大学生计算机基础excel试题及答案
  10. IT项目管理流程总结·二十三
  11. 通用权限管理系统项目简单介绍
  12. 《操作系统真象还原》从零开始自制操作系统 自写源码实现 (fs相关文件)
  13. Java Grammar:数据类型
  14. swift 点击图片预览,有放大缩小动画
  15. 中兴olt-c300常用命令
  16. 深入分析中小型千兆网吧解决方案(转)
  17. 携全球精英之力的DiDi,打造数据安全的“铜墙铁壁”
  18. sublimetext3解决中文乱码问题
  19. 21. A1088 Rational Arithmetic
  20. 【主机密码获取工具】LaZagne:功能、下载、命令、使用方法

热门文章

  1. Spring MVC-学习笔记(5)spring MVC的文件上传、下载、拦截器
  2. 添加solr库工具类
  3. [.NET开发] NPOI导出
  4. ubuntu安装 ssh server
  5. IOS开发自定义tableviewcell的注意点
  6. python实现推荐系统(一)
  7. Swift 2.0 自定义cell和不同风格的cell
  8. 互联网带来的颠覆,改变了传统的营销套路
  9. ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
  10. 文献管理三剑客之Mendeley最新版使用小记