当前位置: 首页 > news >正文

室内设计工作室网站怎么做/百度网站排名怎么提高

室内设计工作室网站怎么做,百度网站排名怎么提高,网站怎么做轮幕,工业电商做网站怎么样果蝇优化算法--Matlab实现1果蝇优化算法原理介绍果蝇是一种广泛存在于温带和热带地区的昆虫,具有优于其他物种的嗅觉和视觉能力. 在寻找食物时,果蝇个体先利用自身嗅觉器官嗅到食物的气味,并向周围的果蝇发送气味信息,或者从周围的果蝇接收气味信息;之后果蝇利用其视觉器官,通过…

果蝇优化算法--Matlab实现

1果蝇优化算法原理介绍

果蝇是一种广泛存在于温带和热带地区的昆虫,具有优于其他物种的嗅觉和视觉能力. 在寻找食物时,果蝇个体先利用自身嗅觉器官嗅到食物的气味,并向周围的果蝇发送气味信息,或者从周围的果蝇接收气味信息;之后果蝇利用其视觉器官,通过比较得出当前群体中收集到最好气味信息的果蝇位置,群体中的其他果蝇均飞向该位置,并继续展开搜索. 图 1展示了果蝇群体搜索食物的简要过程.

1fee93223f6c2ec49ba3c3803a486d08.png

1.1步骤分析

根据果蝇群体觅食的行为特点,标准 FOA寻优

大致分为以下几个步骤.

Step 1:初始化.

设置种群规模(popsize),最大迭代次数(maxgen),果蝇群体位置范围(LR)和果蝇的单次飞行范围(FR)等相关参数值. 果蝇群体中每个个体的位置信息由其对应的(X; Y )二维坐标给出,其初始位置由下面的公式定义:

gif.latex?%5Cleft%20%5C%20X_a_x_i_s%3Drand%28LR%29%20%5Cright.

gif.latex?Y_a_x_i_s%3Drand%28LR%29

Step 2:嗅觉搜索过程.

Step 2.1:当群体中的每一只果蝇利用其嗅觉搜索时,赋予它一个随机的飞行方向和距离. 果蝇个体 i新的位置由下式给出:

gif.latex?X_i%3DX_a_x_i_s+rand%28FR%29

gif.latex?Y_i%3DY_a_x_i_s+rand%28FR%29

Step 2.2:因为食物味道的来源位置是未知的,因此先利用下式计算果蝇个体距离原点的距离DISTi:

20687840b2d75290710c1edde8754d9b.gif

然后通过下式计算其味道浓度判定值Si:

c738b9ebb51d764743302aba1e874c19.gif

Step 2.3:通过下式计算当前群体中每个果蝇个体的味道浓度值Smelli:

456f3ae351c7261d1b90163b1c21e12a.gif

fitness表示味道浓度判断函数,在利用FOA进行优化问题求解时,它是目标函数或适应度函数.

Step 2.4:选择当前群体中具有最佳味道浓度值的果蝇,记录其味道浓度值和相应位置

2321dca8cb279dc0c99382040e8cadeb.gif

Step 3:视觉搜索过程.

保持最佳味道浓度值和对应果蝇位置信息,群体中的其他果蝇均利用视觉飞向此位置,即

3c5cc506386159663d5cb9b560ad4007.gif

gif.latex?X_a_x_i_s%3DX%28bestIndex%29

gif.latex?Y_a_x_i_s%3DY%28bestIndex%29

Step 4:重复Step 2和Step 3,直到算法迭代次数达到maxgen.

由 FOA的计算步骤可知,标准 FOA采用基于种群的全局随机搜索策略,通过跟踪当前最优解的信息来指导种群的下一步搜索,使得种群能够以当前最优解为中心开展局部随机搜索,并朝着更优的方向搜索前进.

2果蝇优化算法程序设计

根据果蝇算法步骤,设计MATlab程序如下

[code]%% FOA封装程序

clc;

clear;

for gen=1:30

%% 初始化参数

maxgen=100; %最大迭代次数

sizepop=50;

dim=30;

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_Sum_Square(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_Sum_Square(Si);

if BestSmell

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

S(gen)=SmellBest;

end

%% 输出最终值

SmellBest

%% 绘制图像

figure(1)

plot(Smell_best,'b'); %绘制每一代最优浓度值

figure(2)

hold on

plot(X_best(:,1),Y_best(:,1),'r.');%绘制果蝇群X_axis,Y_axis的变化

plot(X_best(:,2),Y_best(:,2),'b.');

plot(X_best(:,3),Y_best(:,3),'k.');

figure(3)

plot(X(:,1),Y(:,1),'b.');%绘制最后一代的果蝇群;

mean(S)

min(S)

std(S)

将FOA果蝇群生成,和计算果蝇味道浓度值

a3edf09e0ed5bdbf3fffd9a86715a28b.gif

封装成函数,输入的是种群坐标,种群个数,维度和步长值,输出的是每个果蝇的坐标和果蝇的味道浓度判定值

00ebc4ce621981d8fe25ce9e1b68e140.gif

[code]function [Si,X,Y]=gengrate_foa(X_axis,Y_axis,sizepop,dim,L)

Di=zeros(sizepop,dim);

Si=zeros(sizepop,dim);

X_axis=repmat(X_axis,sizepop,1); %将种群坐标扩充;

Y_axis=repmat(Y_axis,sizepop,1);

X=X_axis+2*L*rand(sizepop,dim)-L;%求出每个果蝇的坐标矩阵;

Y=Y_axis+2*L*rand(sizepop,dim)-L;

Di1=X.^2; %求出X^2和Y^2;

Di2=Y.^2;

Di=Di1+Di2; %X^2+Y^2;

Di=Di.^0.5; %开根号;

Si=1./Di; %Si=1/Di;

end

求果蝇味道浓度值

a3edf09e0ed5bdbf3fffd9a86715a28b.gif

,对每个测试函数都不同,此处用了SumSquare函数,这个函数的表达式是

89e13f78d9d180ce03d56d39fc764888.gif

其三维函数图像如下图

62ade34755415b1e53a74ecd00b0bd35.png

其函数编写如下,函数输入只需要果蝇个体的味道判定值

00ebc4ce621981d8fe25ce9e1b68e140.gif

,带入函数中解出最优的味道浓度值和其索引,就能对应着找到最优的果蝇个体了。

[code]%% 果蝇浓度判定函数;

%Function:Sum Square

%表达式:f(x)=Sum(i*(Xi)^2);

function [BestSmell,Index]=find_Sum_Square(Si)

[si_m,si_n]=size(Si);

sum_2=zeros(1,si_n);

for d=1:si_n

sum_2(d)=d;

end

Si_2=Si.^2; %所有元素平方;

Smell=Si_2.*sum_2;

Smell=sum(Smell,2);

[BestSmell,Index]=min(Smell);

end

对函数进行测试

试验设置独立运行30次,并记录每次的寻优结果,最后求一下30次寻优结果的均值,最小值和均方差。

对测试结果绘制图片,figure(1)绘制的是每次迭代的种群最优值,可以看到最优值一直在降低,最终趋向于收敛于0(函数最优值),这就说明果蝇群每一次迭代都在向最优值前进,一点点寻优。

297bddd2ad8cd0c7afdbfe1e30008a3a.png

figure(2)绘制的是果蝇群坐标随着迭代次数增长的变化,一点点在向外面扩散,这里设置的函数为30维,画图的话只画了其中3维,分别用红色,蓝色和黑色表示,每一维扩散的方向都不同。

c137682e9bdf9bf052273590a490ac50.png

figure(3)绘制的是最后一代果蝇群的坐标分布,这里只画了一维的坐标分布,可以看出是围绕着中心点向四周随机飞行的,因为这里设置步长为1,所以上下幅度为最大为2。

310f41bebad77311ac3d8a8f9f7d74ba.png

要是想测试其他寻优函数,可以根据我的测试函数模板进行编写,将Si作为变量X带入,求出最小的Y值就是最优果蝇了,下面在放上两个我已经编好的寻优函数,Ackley和Rastrigin。

[code]%% 果蝇浓度判定函数;

%Function:Rastrigin

%表达式:f(x)=Sum[(Xi)^2-10cos(2pi*xi)+10];

function [BestSmell,Index]=find_Rastrigin(Si)

[si_m,si_n]=size(Si);

sum_2=zeros(si_m,1);

%第一部分:平方和

Si_2=Si.^2; %所有元素平方;

sum_1=sum(Si_2,2); %求各维度平方和;

%第二部分:cos(2pi*Xi)

for p=1:si_m

for d=1:si_n

sum_2(p)=sum_2(p)+10*cos(2*pi*Si(p,d));

end

end

Smell=sum_1-sum_2+10*si_n;

[BestSmell,Index]=min(Smell);

end

[code]%Function:Ackley

%表达式:

function [BestSmell,Index]=find_Ackley(Si)

[si_m,si_n]=size(Si);

sum_2=zeros(si_m,1);

%第一部分:平方和

Si_2=Si.^2; %所有元素平方;

sum_1=sum(Si_2,2); %求各维度平方和;

sum_1=-0.2.*((sum_1/30).^0.5);

sum_1=-20.*(exp(sum_1));

%第二部分:cos(2pi*Xi)

for p=1:si_m %cos(Xi)/sqrt(i)部分

for d=1:si_n

sum_2(p)=sum_2(p)+cos(2*pi*Si(p,d));

end

sum_2(p)=sum_2(p)/30;

sum_2(p)=-1*exp(sum_2(p));

end

Smell=sum_1+sum_2+20+exp(1);

[BestSmell,Index]=min(Smell);

end

代码已经经过测试了,可以直接拷贝到m文件中,保存在相同路径运行,注意函数的名称要和文件名称相同。主函数里面的参数sizepop,dim以及L,maxgen都是可以随意设置的,可以设置观测不同结果。

资源:

1、最后附上我的代码,里面封装了几个常用的测试函数和原代码。

2、打包了综述(果蝇优化算法研究综述)所有论文,包括很多外文,可以说很全的果蝇算法文献了,对算法优化研究很有作用。

http://www.jmfq.cn/news/5251411.html

相关文章:

  • 软件网站技术开发公司/怎么自己做网站推广
  • 网站建设联/百度关键词优化专家
  • 外贸公司网站模板/百度代运营推广
  • 网站备案进度/企业网站首页
  • 南京百度网站制作/网站维护一年一般多少钱?
  • 简述建设iis网站的基本过程6/网站优化比较好的公司
  • 下载网站软件免费安装/上海公布最新情况
  • 第一个做网站的是谁/seo优化网站推广
  • 做品牌推广应该怎么做/临沂seo优化
  • 门户网站建设方案ppt/百度网页入口官网
  • 新疆建设工程云网站操作具体流程/seo引擎优化
  • 做视频网站收费标准/现在什么app引流效果好
  • 网站资源库建设报价/抖音矩阵排名软件seo
  • 贵阳哪里做网站/百度爱企查电话人工服务总部
  • 施工合同电子版/宁波百度快照优化排名
  • 广水做网站/重庆网站优化公司
  • 中国视觉设计网站/东莞网站建设市场
  • 网站怎么做app吗/营销咨询师
  • 网站建设定价/百度app推广方法
  • 武汉网址模板建站/广州网络推广平台
  • 好看的网站推荐一下/上海抖音推广
  • 做网站的参考文献有哪些/疫情优化调整
  • 西安站/在线识图
  • 网站开发与制作/西安关键词优化平台
  • 宝塔wordpress 数据库/seo综合查询站长工具关键词
  • 网站设计的主要风格/微信引流的十个方法
  • 上海手机网站建设/免费seo培训
  • 用xampp搭建wordpress/抖音seo优化排名
  • 做网站一台电脑可以吗/网站链接推广工具
  • linux做网站优势/百度快照提交入口