首页 > 分享 > 花授粉优化算法及代码实现

花授粉优化算法及代码实现

花授粉优化算法及代码实现 1、算法简介2、植物授粉机理3、算法基本思想Levy飞行 4、具体实现1)自花授粉 - 局部搜索过程2)异花授粉 - 全局搜索过程3)流程图4)主要代码及运行结果

1、算法简介

花授粉算法( FPA )是英国剑桥大学学者 X.S. Yang 于 2012 年提出的一种新型的群智能算法;
根据对大自然界中有花植物的授粉行为的观察及研究而提出的一种新型启发式优化算法;
FPA算法具有构简单、参数少、鲁棒性较强,且性能稳定等特点;
是目前计算智能领域研究热点之一,被成功的应用到解决各种优化问题中,如求解各种工程实例的解决方案、用于无限传感网络的优化等。

2、植物授粉机理

大自然界中有花植物的繁殖方式是通过其花朵传粉与授粉的行为进行的,而基于其传粉与授粉方式的差异,将有花植物的授粉过程分为两种方式,即:异花授粉行为(有性授粉)与自花授粉行为(无性授粉)
其中:

异花授粉:该种授粉行为的有花植物其雄蕊和雌蕊不长在同一朵花里,甚至不长在同一株植物上,两者往往相距较远,它们的花粉传播方式主要靠昆虫、鸟类等生物进行;自花授粉:一株植物的花粉对同一个体的雌蕊进行授粉或一株植物的不同花之间进行授粉的现象,其传播借助风力和水媒等完成

3、算法基本思想

算法模仿自然界花授粉的两种机制。对于异花授粉 由于其依靠传粉者远距离传播花粉,将其对应为全局搜索过程;对于自花授粉 由于其授粉物理位置上距离较近,将其对应为局部搜索过程
引入一个切换概率P(p ∈ [0,1]),权衡全局搜索过程与局部搜索过程间的比重关系。

算法遵循以下4个标准化准则:

异花授粉时,传粉者通过 levy 飞行进行花粉的传播,该过程映射为全局搜索过程自花授粉映射为局部搜索过程花恒常性可视为授粉过程中两朵花的繁殖概率与相似度的比例(有些传粉者习惯性的为某些特定种类的花朵传粉而绕过其它种类的花朵,这种现象叫做花的恒常性)授粉方式的改变通过切换概率p(p ∈ [0,1])来控制,即当随机数 rand<p 时,执行自花授粉,否则执行异花授粉 Levy飞行

Levy飞行指的是步长的概率分布为重尾分布的随机行走,也就是说在随机行走的过程中有相对较高的概率出现大跨步。与步长分布没有重尾的随机行走相比,莱维飞行的运动轨迹就像时不时可以飞行一样,故名。

主要特点:
长步长与短步长相间

在这里插入图片描述

4、具体实现

随机生成一个规模为 R 的种群,种群中的第i个花粉用向量Xi= (Xi1,Xi2,⋯,Xiϑ,⋯,XiD)表示,其中Xiϑ(ϑ = 1,⋯,D)是第i个花粉第ϑ维的位置,D是求解问题的维数

1)自花授粉 - 局部搜索过程

在这里插入图片描述

2)异花授粉 - 全局搜索过程

在这里插入图片描述

3)流程图

在这里插入图片描述

4)主要代码及运行结果

主要代码:

for i=1:n Sol(i,:)=Lb+(Ub-Lb).*rand(1,d); %初始化花粉 Fitness(i)=Fun(Sol(i,:)); end % Find the current best among the initial population [fmin,I]=min(Fitness); best=Sol(I,:); S=Sol; for t=1:N_iter for i=1:n if rand>p L=Levy(d); dS=L.*(Sol(i,:)-best); S(i,:)=Sol(i,:)+dS; S(i,:)=simplebounds(S(i,:),Lb,Ub); else epsilon=rand; JK=randperm(n); %随机打乱一个数字序列 S(i,:)=S(i,:)+epsilon*(Sol(JK(1),:)-Sol(JK(2),:)); S(i,:)=simplebounds(S(i,:),Lb,Ub); end Fnew=Fun(S(i,:)); %计算新的适应度值 if (Fnew<=Fitness(i)) Sol(i,:)=S(i,:); Fitness(i)=Fnew; end if Fnew<=fmin best=S(i,:); fmin=Fnew; end end end

123456789101112131415161718192021222324252627282930313233

在这里插入图片描述

相关知识

基于花授粉算法优化实现SVM数据分类
CMOFPA:多目标花授粉算法
整数规划的花授粉算法
适应性花朵授粉算法研究
花朵授粉算法【记录】
改进的花朵授粉算法程序(Matlab)资源
【优化覆盖】基于matlab入侵杂草和花授粉混合算法无线传感器覆盖优化问题【含Matlab源码 1328期】
Python原生代码实现KNN算法(鸢尾花数据集)
卷积神经网络实现鸢尾花数据分类python代码实现
遗传算法Matlab代码实现及其在推荐系统中的应用

网址: 花授粉优化算法及代码实现 https://m.huajiangbk.com/newsview676938.html

所属分类:花卉
上一篇: 玉米(2N=20)是一年生禾本科
下一篇: 金秋菊展开幕!黄鹤楼60余款菊花