果蝇优化算法FOAGRNN_Training
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
果蝇优化算法
优化GRNN程序分享
台湾学者潘文超老师今年提出一种新的果蝇优化算法, 日前已经被SCI期刊接受, 经晚辈向潘老师询问, 潘老师同意将其程序&书籍分享给各位该群智能技术是2011年刚提出, 有利于各位投稿国际知名期刊. 请各位先进多加阅读与研究, 并转寄给同志朋友, 为祖国的学术水平尽一份心力!
%***砞竚把计
%睲笲︽吏挂
clc
clear
load c:\TXY.txt;
[row,col]=size(TXY);
set=row/5;
row=row-set;
row1=row/2;
traindata1=TXY(1:row1,1:col-1);
traindata2=TXY(row1+1:row,1:col-1);
t1=TXY(1:row1,col);
t2=TXY(row1+1:row,col);
t1=t1';
t2=t2';
tr1=traindata1';
tr2=traindata2';
la=1;
%﹍狦们竤砰竚
X_axis=rand();
Y_axis=rand();
maxgen=100; %Ω计
sizepop=10; %贺竤砏家
%*********狦们碝纔秨﹍
fprintf('Fruit fly searching ....\n')
fprintf('______________________________\n')
%ノ跺谋碝т
for i=1:sizepop
%﹍狦们砰︽禯瞒
X(i)=X_axis+20*rand()-10;
Y(i)=Y_axis+20*rand()-10;
%―籔翴ぇ禯瞒
D(i)=(X(i)^2+Y(i)^2)^0.5;
%笵緻禯瞒ぇ计,―笵緻﹚
S(i)=1/D(i);
%ノ笵緻﹚ㄧ计―笵緻(摸Fitness続莱ㄧ计)
g=0;
p=S(i);
if 0.001>p
p=1;
end
if la == 1
net=newgrnn(tr1,t1,p);
yc=sim(net,tr2);
y=yc-t2;%***呼隔块籔ヘ夹搭
for ii=1:row1
g=g+y(ii)^2;
end
Smell(i)=g^0.5/row1;
la=2;
else
net=newgrnn(tr2,t2,p);
yc=sim(net,tr1);
y=yc-t1;%***呼隔块籔ヘ夹搭
for ii=1:row1
g=g+y(ii)^2;
end
Smell(i)=g^0.5/row1;
la=1;
end
end
%***沮﹍笵緻碝т﹍伐
[bestSmell bestindex]=min(Smell);
%%ノ跌谋碝т官︸籈栋笵緻程蔼ぇ矪
%暗猭琌玂痙程ㄎ﹍竚の﹍笵緻
X_axis=X(bestindex);
Y_axis=Y(bestindex);
bestS=S(bestindex);
Smellbest=bestSmell;
%狦们碝纔
fprintf('Enter iterative fruit fly searching ....\n')
fprintf('______________________________\n')
for gen=1:maxgen
gen
bestS
for i=1:sizepop
%パ程ㄎ竚矪糤狦们砰︽禯瞒
g=0;
X(i)=X_axis+20*rand()-10;
Y(i)=Y_axis+20*rand()-10;
%―籔翴ぇ禯瞒
D(i)=(X(i)^2+Y(i)^2)^0.5;
%笵緻禯瞒ぇ计,―笵緻﹚
S(i)=1/D(i);
%ノ笵緻﹚ㄧ计―笵緻(摸Fitness続莱ㄧ计)
p=S(i);
if 0.001>p
p=1;
end
if la == 1
net=newgrnn(tr1,t1,p);
yc=sim(net,tr2);
y=yc-t2;%***呼隔块籔ヘ夹搭
for ii=1:row1
g=g+y(ii)^2;
end
Smell(i)=g^0.5/row1;
la=2;
else
net=newgrnn(tr2,t2,p);
yc=sim(net,tr1);
y=yc-t1;%***呼隔块籔ヘ夹搭
for ii=1:row1
g=g+y(ii)^2;
end
Smell(i)=g^0.5/row1;
la=1;
end
end
%***沮笵緻碝т伐
[bestSmell bestindex]=min(Smell
);
%***玂痙程ㄎ竚籔笵緻
if bestSmell
Y_axis=Y(bestindex);
bestS=S(bestindex);
Smellbest=bestSmell;
end
%–程纔魁yy计舱い
yy(gen)=Smellbest;
Xbest(gen)=X_axis;
Ybest(gen)=Y_axis;
end
%***酶籹程ㄎて镣墩瓜
figure(1)
plot(yy)
title('Optimization process','fontsize',12)
xlabel('Iteration Number','fontsize',12);ylabel('RMSE','fontsize',12);
bestS
Xbest
Ybest
figure(2)
plot(Xbest,Ybest,'b.');
title('Fruit fly flying route','fontsize',14)
xlabel('X-axis','fontsize',12);ylabel('Y-axis','fontsize',12);