麻雀搜索算法优化BP神经网络预测以及MATLAB代码实现
麻雀搜索算法SSA优化BP神经网络回归预测以及MATLAB代码实现
文章目录
- 麻雀搜索算法SSA优化BP神经网络回归预测以及MATLAB代码实现
- 1. 麻雀搜索算法SSA原理
- 1.1 算法灵感来源
- 1.2 算法模型描述
- 2. SSA优化BP神经网络预测算法流程
- 3. SSA优化BP回归预测的MATLAB实现步骤
- 4. 运行结果与图像
- 5. MATLAB代码
1. 麻雀搜索算法SSA原理
麻雀搜索算法是一种较新的智能优化算法,在2020年提出,主要是受麻雀的觅食行为和反捕食行为的启发。算法具有较高的收敛性能与局部搜索能力。
1.1 算法灵感来源
麻雀种群在觅食过程中分为发现者与加入者两部分,分别负责提供种群觅食的方向以及追随并获取食物。当麻雀种群意识到危险时,则会发生反捕食行为并更新种群位置。
1.2 算法模型描述
关于麻雀搜索算法,建立了六个假设规则,在参考文献中给出,故不作说明。
符号说明
N:最大迭代次数 n:种群大小 PD:发现者数量 SD 感应危险的麻雀数量
ST:安全值 R2:预警值(由随机数产生)
算法实现步骤
步骤一:初始化麻雀种群位置与适应度,N,n,PD,SD,ST参数初值。
步骤二:开始循环,iteration<N
步骤三:种群排序,得出当前的最优麻雀个体位置,以及最佳适应度值。(注意对于第一代麻雀而言,求出的为初始最优。最优个体能够优先获取食物)
步骤四:觅食行为,a). 按以下公式更新发现者位置。
Xi,jt+1={Xi,jt⋅exp(−ia⋅N)if R2<STXi,jt+Q⋅Lif R2≥STX_{i, j}^{t+1}=\left\{\begin{array}{ll} X_{i, j}^{t} \cdot \exp \left(\frac{-i}{a \cdot N}\right) & \text { if } R_{2}<S T \\ X_{i, j}^{t}+Q \cdot L & \text { if } R_{2} \geq S T \end{array}\right. Xi,jt+1={Xi,jt⋅exp(a⋅N−i)Xi,jt+Q⋅L if R2<ST if R2≥ST
式中,Q为服从正态分布的随机数,L为单位行向量,a为[0 1]之间的随机数。
步骤五:b). 按以下公式更新加入者位置。
Xi,jt+1={Q⋅exp(Xwost ′−Xi,j′i2)if i>n/2XPt+1+∣Xi,j′−XPt+1∣⋅A+⋅Lotherwise X_{i, j}^{t+1}=\left\{\begin{array}{ll} Q \cdot \exp \left(\frac{X_{\text {wost }}^{\prime}-X_{i, j}^{\prime}}{i^{2}}\right) & \text { if } i>n / 2 \\ X_{P}^{t+1}+\left|X_{i, j}^{\prime}-X_{P}^{t+1}\right| \cdot A^{+} \cdot L & \text { otherwise } \end{array}\right. Xi,jt+1={Q⋅exp(i2Xwost ′−Xi,j′)XPt+1+∣∣Xi,j′−XPt+1∣∣⋅A+⋅L if i>n/2 otherwise
式中,Xworst为适应度最低的麻雀位置,A+为只随机包含1与-1两个元素的行向量。
步骤六:反捕食行为,更新麻雀种群的位置。
Xi,jt+1={Xbest t+β⋅∣Xi,j′−Xbestt∣if fi>fbestXi,jt+K⋅(∣Xi,j′−Xworst′∣(fi−fworst)+ε)if fi=fbestX_{i, j}^{t+1}=\left\{\begin{array}{lll} X_{\text {best }}^{t}+\beta \cdot\left|X_{i, j}^{\prime}-X_{\text {best}}^{t}\right| & \text { if } & f_{i}>f_{\text {best}} \\ X_{i, j}^{t}+K \cdot\left(\frac{\left|X_{i, j}^{\prime}-X_{\text {worst}}^{\prime}\right|}{\left(f_{i}-f_{\text {worst}}\right)+\varepsilon}\right) & \text { if } & f_{i}=f_{\text {best}} \end{array}\right. Xi,jt+1=⎩⎨⎧Xbest t+β⋅∣∣Xi,j′−Xbestt∣∣Xi,jt+K⋅((fi−fworst)+ε∣Xi,j′−Xworst′∣) if if fi>fbestfi=fbest
式中,β是服从正态分布的随机数,作用是控制更新位置的步长。K是[-1,1]之间的随机数,fi是个体适应度值。ε是接近0的常数,避免分母为零的情况。
步骤七:更新历史最优适应度(相当于适应度的公告板更新)。
步骤八:执行步骤三到七,当达到最大迭代次数,结束循环。输出最优个体位置与适应度值。
2. SSA优化BP神经网络预测算法流程
选用麻雀搜索算法SSA优化BP神经网络的初始权重与阈值。选取训练集与测试集整体的均方误差为适应度值。适应度函数值越小,表明训练越准确,且兼顾模型的预测精度更好。
SSA优化BP回归预测流程图设计:
3. SSA优化BP回归预测的MATLAB实现步骤
3.1 数据说明
采用身体脂肪含量数据集为例,建立BP回归预测与麻雀搜索算法SSA优化BP的回归预测模型。
3.2 数据格式
样本编号 | features1 | features2 | features3 | … | featuresn | target |
---|---|---|---|---|---|---|
1 | – | – | – | – | – | – |
2 | – | – | – | – | – | – |
… | – | – | – | – | – | – |
n | – | – | – | – | – | – |
3.3 读取数据
%% 数据读取
data=xlsread('数据.xlsx','Sheet1','A1:N252'); %%使用xlsread函数读取EXCEL中对应范围的数据即可%输入输出数据
input=data(:,1:end-1); %data的第一列-倒数第二列为特征指标
output=data(:,end); %data的最后面一列为输出的指标值N=length(output); %全部样本数目
testNum=15; %设定测试样本数目
trainNum=N-testNum; %计算训练样本数目
3.4 确定BP神经网络的拓扑结构
a). 输入层和输出层节点使用size函数直接获取。函数用法:[M,N]=size(A),M为A的行数,N为A的列数。size(A,2)得到的是第二个参数N,即列数。
inputnum=size(input,2); %输入层神经元节点个数
outputnum=size(output,2); %输出层神经元节点个数
b). 隐含层节点的确定过程,使用循环来遍历范围内的隐含层节点与训练误差情况。因为要找最小的误差,所以初始化训练误差时,将MSE设置较大的数字,用于在循环中确定最佳的隐含层节点。
%确定隐含层节点个数
%采用经验公式hiddennum=sqrt(m+n)+a,m为输入层节点个数,n为输出层节点个数,a一般取为1-10之间的整数
MSE=1e+5; %初始化最小误差
for hiddennum=fix(sqrt(inputnum+outputnum))+1:fix(sqrt(inputnum+outputnum))+10
3.5 BP与SSA的参数设置
3.5.1 BP神经网络参数
net=newff(inputn,outputn,hiddennum_best,{'tansig','purelin'},'trainlm');% 建立模型%网络参数配置
net.trainParam.epochs=1000; % 训练次数,设置为1000次
net.trainParam.lr=0.01; % 学习速率,设置为0.01
net.trainParam.goal=0.00001; % 训练目标最小误差,设置为0.0001
net.trainParam.show=25; % 显示频率,设置为每训练25次显示一次
net.trainParam.mc=0.01; % 动量因子
net.trainParam.min_grad=1e-6; % 最小性能梯度
net.trainParam.max_fail=6; % 最高失败次数
3.5.2 麻雀搜索算法SSA初始参数
popsize=30; %初始种群规模
maxgen=50; %最大进化代数
lb=repmat(-3,1,dim); %自变量下限
ub=repmat(3,1,dim); %自变量上限
ST = 0.6;%安全值
PD = 0.7;%发现者占种群的比重,其余的为加入者
SD = 0.2;%感应危险的麻雀所占比重
注:关于优化变量元素个数dim的计算,给出代码的计算公式如下。关于计算过程,请参考我的另一篇博客:3.3 节 遗传算法优化BP权重和阈值的设计
%自变量个数
dim=inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum;
3.5.3 适应度函数公式
数学模型为:
F=min(MSETrainingSet,TestingSet )F=\min \left(MSE_{\text {TrainingSet,TestingSet }}\right) F=min(MSETrainingSet,TestingSet )
式中,TraingingSet,TestingSet,分别为训练集和测试集的样本。使用麻雀搜索算法优化后,适应度函数值越小,即均方误差MSE越小,表明训练越准确,且模型的预测精度更好。
计算适应度的代码命令:
fitness=(mse(output_train,train_simu)+mse(output_test,test_simu))/2; %适应度函数选取为训练集与测试集整体的均方误差平均值
3.6 优化后的权重与阈值赋给BP
%矩阵重构
net.iw{1,1}=reshape(w1,hiddennum_best,inputnum); %输入层到隐含层的权值矩阵
net.lw{2,1}=reshape(w2,outputnum,hiddennum_best); %隐含层的阈值向量
net.b{1}=reshape(B1,hiddennum_best,1); %隐含层到输出层的权值矩阵
net.b{2}=reshape(B2,outputnum,1); %输出层的阈值向量
3.7 SSA优化后的BP神经网络训练与仿真预测
%% 优化后的神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本%% 优化后的神经网络测试
an1=sim(net,inputn_test);
test_simu1=mapminmax('reverse',an1,outputps); %把仿真得到的数据还原为原始的数量级
4. 运行结果与图像
1 BP各层的神经元个数的确定过程
2 麻雀搜索算法SSA进化曲线
3 麻雀搜索算法SSA优化BP神经网络与BP的预测结果对比
4 预测值和真实值的误差计算对比(MAE、MSE、RMSE、MAPE)
5. MATLAB代码
以下介绍了常用的BP神经网络预测和分类代码模型及编写相应的代码,相关模型原理见博客主页。
BP神经网络预测模型 |
---|
BP神经网络预测算法MATLAB代码及其讲解 |
BP时间序列预测算法MATLAB代码 |
遗传算法优化BP神经网络回归预测MATLAB代码及其讲解 |
粒子群算法PSO优化BP神经网络回归预测MATLAB代码 |
布谷鸟搜索算法CS优化BP神经网络回归预测MATLAB代码 |
海鸥优化算法SOA优化BP神经网络回归预测MATLAB代码 |
鲸鱼优化算法WOA优化BP神经网络回归预测MATLAB代码 |
麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 |
人工蜂群算法ABC优化BP神经网络回归预测MATLAB代码 |
蚁群算法ACO优化BP神经网络回归预测MATLAB代码 |
原子搜索算法ASO优化BP神经网络回归预测MATLAB代码 |
基于Logistic混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 |
基于Logistic混沌映射改进的原子搜索算法ASO优化BP神经网络回归预测MATLAB代码 |
基于Sine混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 |
基于Tent混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 |
BP神经网络分类及优化算法模型 |
BP神经网络数据分类算法MATLAB代码 |
BP神经网络数据分类的GUI实现 |
遗传算法GA优化BP分类算法MATLAB代码 |
麻雀搜索算法SSA优化BP神经网络分类MATLAB代码 |
蝙蝠算法BA优化BP神经网络分类MATLAB代码 |
Elman神经网络数据分类算法MATLAB代码 |
代码见博客主页
麻雀搜索算法优化BP神经网络预测以及MATLAB代码实现相关推荐
- BP神经网络预测回归MATLAB代码(代码完整可直接用,注释详细,可供学习)
BP神经网络预测回归MATLAB代码(代码完整可直接用,注释详细,可供学习) 一.前言 二.代码部分 2.1 初始化 2.2 读取数据 2.3 设置训练集和测试集 2.4 数据归一化 2.5 求解最佳 ...
- 【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码
1 内容介绍 一种基于麻雀搜索算法优化极限学习机的风电功率预测方法,具体包括如下步骤:步骤1,确定影响风电功率的主导影响因子:步骤2,构建麻雀搜索算法优化核极限学习机预测模型,通过该模型对风电功率进行 ...
- 【优化预测】粒子群算法优化BP神经网络预测温度matlab源码
一.粒子群算法及RBF简介 1 粒子群算法简介 1.1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模 ...
- 【预测模型】基于BP神经网络预测价格matlab代码
1 简介 BP神经网络模型是目前应用最为广泛神经网络之一.它的本质是通过对历史数据的学习找出数据变化趋势之间的非线性关系,并通过输出量与预期值之间的误差不断调整网络中各个单元的权重,使整个网络的误差最 ...
- 【Matlab风电功率预测】麻雀算法优化BP神经网络风电功率预测【含源码 1319期】
一.代码运行视频(哔哩哔哩) [Matlab风电功率预测]麻雀算法优化BP神经网络风电功率预测[含源码 1319期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [ ...
- SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比
SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...
- bp学习函数matlab代码,小范学数量经济学之四:BP神经网络预测的MATLAB模拟代码
股票价格预测神器:BP神经网络预测的matlab模拟代码: 自动优选神经元个数: 自动迭代15000次,精度0.001: 代码运行效果图: 原始代码自此处开始: % 本代码由重庆科技学院范巧副教授于2 ...
- 【预测模型】基于粒子群算法优化BP神经网络预测风电功率matlab源码
1 模型 针对于BP神经网络预测模型,收敛速度慢,精度较低,容易陷入局部极小值等缺点,提出了一种粒子群优化BP神经网络预测模型的算法.在该算法中,粒子群优化BP神经网络预测模型的初始权值和阈值,然后训 ...
- “遗传算法优化BP神经网络预测城市公交系统车站客流量”客流数据信息怎么写...
遗传算法是一种进化计算算法,它可以用来优化BP神经网络的预测能力.在这个问题中,遗传算法可以用来优化预测城市公交系统车站客流量的BP神经网络.关于客流数据信息,可以收集每个车站的客流量数据,包括进站客 ...
- 单目标应用:基于麻雀搜索算法优化灰色神经网络(grey neural network)的数据预测(提供MATLAB代码)
一.麻雀搜索算法 麻雀搜索算法(sparrow search algorithm,SSA)由Jiankai Xue等人于2020年提出,该算法是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法.S ...
最新文章
- 全国志愿信息服务器,全国志愿者服务信息系统官网登录,2020全国志愿者服务信息系统官网登录注册入口预约 v1.0-手游汇...
- MySQL SHOW TABLE STATUS 获取表的信息
- 下面哪个字段是http请求中必须具备的_HTTP协议及其工作原理介绍
- Web Service 概念
- php excel 转数组函数,使用PHPExcel将数组转换为Excel 2007
- python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参...
- Jquery_如何扩展方法
- 百款APP嵌入 KeyMob移动广告聚合平台发布十周
- Spring注解编程基石(一)
- react学习(16)---getFieldDecorator赋值
- td里面字体大小怎么改_教你王者荣耀改战区
- Google 警告开发者:所有 Android App 需要三天的审核时间!
- 《Linux 性能及调优指南》1.4 硬盘I/O子系统
- 【转载】RSA signatures with TPM2.0 and OpenSSL
- 如何在linux centos下安装git(转)
- 算法设计与分析基础 第四章谜题
- perform指标分析_Perform+3D-入门实战指导.ppt
- VMware虚拟机的Linux系统访问本地磁盘
- 3GPP TS 29244-g30 中英文对照 | 5.2.6	Combined SGW/PGW Architecture
- 利用存儲過程進行簡繁體轉換