码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)


     尊重他人劳动成果,请勿转载!

    有问题可留言或私信,看到了都会回复解答!

    其他算法请参考:

    1、粒子群(PSO)优化算法(附完整Matlab代码,可直接复制)https://blog.csdn.net/xinzhi1992/article/details/125730562?spm=1001.2014.3001.5502

    2、灰狼(GWO)优化算法(附完整Matlab代码,可直接复制)https://blog.csdn.net/xinzhi1992/article/details/125826933?spm=1001.2014.3001.5502

    3、正余弦(SCA)优化算法(附完整Matlab代码,可直接复制)https://blog.csdn.net/xinzhi1992/article/details/115359297?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22115359297%22%2C%22source%22%3A%22xinzhi1992%22%7D

    4、萤火虫(FA)优化算法(附完整Matlab代码,可直接复制)https://blog.csdn.net/xinzhi1992/article/details/126761617?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22126761617%22%2C%22source%22%3A%22xinzhi1992%22%7D5、果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)https://blog.csdn.net/xinzhi1992/article/details/127649424

    果蝇优化算法的核心是利用果蝇搜索实物的机制来对问题进行寻优。果蝇根据气味来确定食物的位置,食物腐烂程度越高,气味越大,果蝇对其越敏感。果蝇的觅食行为如下图:

    Fig1. 果蝇觅食行为示意图                                                         

    1.果蝇位置初始化

    每只果蝇位置随机产生公式如下:

    X(i)=X\_aixs+rand

    Y(i)=Y\_aixs+rand

    2.果蝇通过气味寻找食物

    刚开始,果蝇无法判断食物的位置,因此需先估算出个体与最初设立点之间的开始距离Dist,并计算出浓度Si。

    Dist^2=(X(i)^2+Y(i)^2)

    S_i=1/Dist

    每只果蝇位置处的浓度:Smell(i)=fit(S_i)

    找出全局最优:[BestSmell,BestIndex]=min(smell(i))

    3、果蝇位置更新

    Best\_Score=BestSmell

    X\_best=X(BestIndex)

    Y\_best=Y(BestIndex)

    果蝇优化算法的Matlab程序如下:

    1. %pop——种群数量
    2. %dim——问题维度
    3. %ub——变量上界,[1,dim]矩阵
    4. %lb——变量下界,[1,dim]矩阵
    5. %fobj——适应度函数(指针)
    6. %MaxIter——最大迭代次数
    7. %Best_Pos——x的最佳值
    8. %Best_Score——最优适应度值
    9. clc;
    10. clear all;
    11. close all;
    12. pop=50;
    13. dim=2;
    14. ub=[10,10];
    15. lb=[-10,-10];
    16. MaxIter=100;
    17. fobj=@(x)fitness(x);%设置适应度函数
    18. [Best_Pos,Best_Score,IterCurve]=FA(pop,dim,ub,lb,fobj,MaxIter);
    19. %…………………………………………绘图…………………………………………
    20. figure(1);
    21. plot(IterCurve,'r-','linewidth',2);
    22. grid on;
    23. title('果蝇优化算法迭代曲线');
    24. xlabel('迭代次数');
    25. ylabel('适应度值');
    26. %…………………………………… 结果显示……………………………………
    27. disp(['求解得到的x1,x2是:',num2str(Best_Pos(1)),' ',num2str(Best_Pos(2))]);
    28. disp(['最优解对应的函数:',num2str(Best_Score)]);
    29. %种群初始化函数
    30. function [x,y]=initialization(pop,ub,lb,dim)
    31. x=zeros(pop,dim);
    32. y=zeros(pop,dim);
    33. for i=1:pop
    34. for j=1:dim
    35. x(i,j)=(ub(j)-lb(j))*rand()+lb(j);
    36. y(i,j)=(ub(j)-lb(j))*rand()+lb(j);
    37. end
    38. end
    39. end
    40. %越界调整函数
    41. function x=BoundrayCheck(x,ub,lb,dim)
    42. for i=1:size(x,1)
    43. for j=1:dim
    44. if x(i,j)>ub(j)
    45. x(i,j)=ub(j);
    46. end
    47. if x(i,j)<lb(j)
    48. x(i,j)=lb(j);
    49. end
    50. end
    51. end
    52. end
    53. %适应度函数,可根据自身需要调整
    54. function [Fitness]=fitness(x)
    55. Fitness=sum(x.^2);
    56. end
    57. %…………………………………………果蝇优化算法主体………………………………………
    58. function [Best_Pos,Best_Score,IterCurve]=FA(pop,dim,ub,lb,fobj,MaxIter)
    59. [X_axis,Y_axis]=initialization(pop,ub,lb,dim);
    60. Best_Score=inf;
    61. X=zeros(pop,dim);
    62. Y=zeros(pop,dim);
    63. S=zeros(pop,dim);
    64. Dist=zeros(pop,dim);
    65. Smell=zeros(1,pop);
    66. IterCurve=zeros(1,MaxIter);
    67. for t=1:MaxIter
    68. for i=1:pop
    69. X(i,:)=X_axis(i,:)+2*rand(1,dim)-1;
    70. Y(i,:)=Y_axis(i,:)+2*rand(1,dim)-1;
    71. Dist(i,:)=(X(i,:).^2+Y(i,:).^2).^0.5;
    72. S(i,:)=1./Dist(i,:);
    73. S(i,:)=BoundrayCheck(S(i,:),ub,lb,dim);
    74. Smell(i)=fobj(S(i,:));
    75. end%结束i循环
    76. [BestSmell,BestIndex]=min(Smell);%寻找适应度最优值及对应的果蝇序列
    77. for i=1:pop
    78. X_axis(i,:)=X(BestIndex,:);
    79. Y_axis(i,:)=Y(BestIndex,:);
    80. end%结束i循环
    81. if BestSmell < Best_Score
    82. Best_Score =BestSmell;
    83. Best_Pos = S(BestIndex,:);
    84. end%结束if
    85. IterCurve(t) = Best_Score;
    86. end%结束t循环
    87. end

    运行结果:

     相关阅读:

    1、粒子群(PSO)优化算法(附完整Matlab代码,可直接复制)

    2、灰狼(GWO)优化算法(附完整Matlab代码,可直接复制)

    3、正余弦(SCA)优化算法(附完整Matlab代码,可直接复制)

    4、萤火虫(FA)优化算法(附完整Matlab代码,可直接复制)

    5、果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)

  • 相关阅读:
    非零基础自学Java (老师:韩顺平) 第7章 面向对象编程(基础部分) 7.4 方法递归调用
    Docker Compose
    [ Module ] 环境变量管理工具 Modules 安装和使用
    GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)
    批发/零售商家如何合理控制库存?做好优化库存结构
    基于RAM实现乒乓buffer
    [机缘参悟-60]:《兵者,诡道也》-1-开篇:“死“与“生“都是天道“
    Reids集群
    RabbitMQ中的集群架构介绍
    java try 自动关闭流
  • 原文地址:https://blog.csdn.net/xinzhi1992/article/details/127649424
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号