✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
由于单隐层的前馈神经网络可以实现对任意非线性函数的映射,所以前馈神经网络(FNN)被广泛的用于函数逼近和分类等问题.BP算法在最优值附近的局部范围内可以较快地搜索到最优值,因此被广泛的应用于FNN的训练
⛄ 部分代码
%% JAYA algorithms
function [BestCost,BestValue,XTarget]=CLJAYA(fhd,nPop,nVar,VarMin,VarMax,MaxIt)
%%Input parameters
%%fhd----------------objective function
%%nPop---------------population size
%%nVar---------------the number of variables
%%VarMin-------------the lower boundaries of variables
%%VarMin-------------the upper boundaries of variables
%%MaxIt--------------the maximum number of iterations
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Output parameters
%%BestCost-----------convergence curve
%%BestValue----------the optimal fitness value
%%XTarget------------the optimal solution
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:nPop
X(i,:)=VarMin+(VarMax-VarMin).*rand(1,nVar);
end
for i=1:nPop
f(i) = fhd(X(i,:));
end
%% Main Loop
gen=1;
[BestCost(1),ind]=min(f);
XTarget=X(ind,:);
while(gen+1 <= MaxIt)
[row,col]=size(X);
[t,tindex]=min(f);
Best=X(tindex,:);
[w,windex]=max(f);
worst=X(windex,:);
xnew=zeros(row,col);
for i=1:row
a=randperm(nPop,1);
b=randperm(nPop,1);
while a==b | a==i |b==i
a=randperm(nPop,1);
b=randperm(nPop,1);
end
fi=rand;
if fi<=1/3
xnew(i,:)=(X(i,:))+randn.*(Best-abs(X(i,:)))-randn.*(worst-abs(X(i,:))); %
elseif fi>=2/3
xnew(i,:)=X(i,:)+rand(1,nVar).*(Best-(X(i,:)))+rand(1,nVar).*(X(a,:)-X(b,:));
else
xnew(i,:)=(X(i,:))+randn.*(Best-abs(X(i,:)))-randn.*(mean(X)-abs(X(i,:)));
end
end
for i=1:row
xnew(i,:) = max(min(xnew(i,:),VarMax),VarMin);
fnew(i) = fhd(xnew(i,:));
end
for i=1:nPop
if(fnew(i)<f(i))
X(i,:) = xnew(i,:);
f(i) = fnew(i);
end
end
gen = gen+1;
[BestCost(gen),ind]=min(f);
XTarget=X(ind,:);
end
BestValue=min(f);
%%
end
⛄ 运行结果
⛄ 参考文献
[1]李荣. 基于MATLAB及FNN的高性能混凝土强度预测及配合比设计应用研究[D]. 宁夏大学, 2009.
[2]高敏, 郭业才, 杨超. 基于正交小波变换的前馈神经网络盲均衡算法[J]. Journal of Terahertz Science and Electronic Information Technology, 2022(4).