1 简介
花朵授粉算法( Flower Pollination Algorithm,FPA)是由英国剑桥大学学者Yang于2012年提出的,其基本思想来源于对自然界花朵自花授粉、异花授粉的模拟,是一种新的元启发式群智能随机优化技术 。原理如下:
2 部分代码
clear
clear all
% fminfpaL=0;
% paa=0;
% vfminfpa=zeros(1,20);
% for z1=1:20,
%
% % %%测试函数区
% n=40;
% p=0.8;
% N_iter=2000;
% d=30;
%
% [aa,fminfpa]=fpa(n,p,d,N_iter);
% fminfpaL=fminfpaL+fminfpa;
% paa=paa+aa;
% vfminfpa(:,z1)=fminfpa;
% end
% aaaapinminfpa=fminfpaL/20;
% lpaa=paa/20;
% var(vfminfpa)
% aaaapinminfpa
% 改进花粉算法
fminGfpaL=0;
pbb=0;
vfminGfpa=zeros(1,20);
for q2=1:20,
%%测试函数区
n1=40;
p1=0.8;
N_iter1=1500;
d1=30;
[N_iter1g,bb,fminGfpa]=Gfpa(n1,p1,d1,N_iter1);
fminGfpaL=fminGfpaL+fminGfpa;
vfminGfpa(:,q2)=fminGfpa;
N_iter1g
pbb=pbb+bb;
end
bbbbpinmingfpa=fminGfpaL/20;
lpbb=pbb/20;
var(vfminGfpa)
bbbbpinmingfpa
% % % tFPA
% fminfpaLt=0;
% paat=0;
% vfminfpat=zeros(1,20);
% for z1t=1:20,
%
% % %%测试函数区
% nt=40;
% pt=0.8;
% N_itert=2000;
% dt=30;
%
% [aat,fminfpat,N_itert]=cs(nt,pt,N_itert,dt);
% fminfpaLt=fminfpaLt+fminfpat;
% paat=paat+aat;
% vfminfpat(:,z1t)=fminfpat;
% end
% ccccpinminfpat=fminfpaLt/20;
% lpaat=paat/20;
% var(vfminfpat)
% ccccpinminfpat
% % % % gtFPA
% gfminfpaLt=0;
% gpaat=0;
% gvfminfpat=zeros(1,20);
% for gz1t=1:20,
%
% % %%测试函数区
% gnt=40;
% gpt=0.8;
% gN_itert=2000;
% gdt=30;
%
% [gaat,gfminfpat,gN_itert]=gtfpa(gnt,gpt,gN_itert,gdt);
% gfminfpaLt=gfminfpaLt+gfminfpat;
% gpaat=gpaat+gaat;
% gvfminfpat(:,gz1t)=gfminfpat;
% end
% gccccpinminfpat=gfminfpaLt/20;
% glpaat=gpaat/20;
% var(gvfminfpat)
% gccccpinminfpat
% plot(bb)
% title(['适应度曲线 ' '终止代数=' num2str(N_iter1)]);
% xlabel('进化代数');ylabel('适应度');
%%pso粒子群
pfminpso=0;
ppso=0;
vfminpso=zeros(1,20);
for a2=1:20,
% clc
% clear
%%测试函数区
%变量设置区
c1=1.49445;
c2=1.49445;
Vmax=1;
Vmin=-1;
popmax=5.12;
popmin=-5.12;
maxgen=1500;
sizepop=40;
[pdd,fminpso]=pso(c1,c2,Vmax,Vmin,popmax,popmin,sizepop,maxgen);
pfminpso=pfminpso+fminpso;
vfminpso(:,a2)=fminpso;
ppso=ppso+pdd;
end
psoinmin=pfminpso/20;
var(vfminpso)
psoinmin
lppso=ppso/20;
% %蝙蝠算法
fminblt=0;
ppbb=0;
vfminb=zeros(1,20);
for bi=1:20
nb=40; % Population size, typically 10 to 25
A=0.25; % Loudness (constant or decreasing)
r=0.5; % Pulse rate (constant or decreasing)
BQmin=0; % Frequency minimum
BQmax=2;
db=30;
NB=1500;
[pblt,fminb]=bat_algorithm(nb,A,r,BQmin,BQmax,db,NB);
fminblt=fminblt+fminb;
vfminb(:,bi)=fminb;
ppbb=ppbb+pblt;
end
bpsoinmin=fminblt/20
var(vfminb)
lppbb=ppbb/20;
% % % Frequency maximum
% % % plot(lpbb,'k','LineWidth',1.5)
% %
% % xlabel('迭代次数');ylabel('平均最优适应度');
% % hold on
% % plot(lpaa,'k--','LineWidth',1.5)
% % hold on
% % plot(lppso,'k*')
% % hold on
% % plot(lppbb,'k:','LineWidth',1.5)
% % legend('MFPA','FPA','PSO','BA')
%
%
%
semilogy(lpbb,'k','LineWidth',1.5)
xlabel('迭代次数');ylabel('平均最优适应度');
hold on
semilogy(lppso,'R:')
hold on
semilogy(lppbb,'k*','LineWidth',1.5)
legend('MFPA','PSO','BA')
%
%
% semilogy(lpaa,'k--','LineWidth',1.5)
% hold on
% semilogy(lpaat,'k*')
% hold on
% semilogy(glpaat,'k:','LineWidth',1.5)
% hold on
% semilogy(lpbb,'k','LineWidth',1.5)
%
% xlabel('迭代次数');ylabel('平均最优适应度');
%
% legend('FPA', 'tFPA',' 改进型tFPA','MFPA')
3 仿真结果
4 参考文献
[1]肖辉辉, 万常选, & 段艳明. (2016). 一种改进的新型元启发式花朵授粉算法. 计算机应用研究, 000(001), 126-131.
5 MATLAB代码与数据下载地址
见博客主页