单目标应用:基于麻雀搜索算法优化灰色神经网络(grey neural network)的数据预测(提供MATLAB代码)

140 篇文章 77 订阅
127 篇文章 15 订阅

一、麻雀搜索算法

麻雀搜索算法(sparrow search algorithm,SSA)由Jiankai Xue等人于2020年提出,该算法是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点。麻雀群觅食过程也是发现者-跟随者模型的一种,同时还叠加了侦查预警机制。麻雀中找到食物较好的个体作为发现者,其他个体作为跟随者,同时种群中选取一定比例的个体进行侦查预警,如果发现危险则放弃食物,安全第一。
在这里插入图片描述

二、灰色神经网络

灰色神经网络(grey neural network,GNN)是在灰色系统理论中融入了神经网络的思想,具体思想如下:

参考文献:[1]徐涛,孙媛媛,卢敏.基于灰色神经网络的航线客流量预测[J].计算机应用与软件,2020,37(01):31-36.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、数值实验

在灰色神经网络中,待优化参数包含a,b1,b2,…,bn-1。麻雀搜索算法中每个个体由灰色神经网络中的待定参数构成,适应度函数为真实值与预测值的均方误差(MSE)。

部分训练数据:前10列为输入,最后一列为输出

1.66677305993571	-1.94268993978165	0.489449832737471	-1.51224321671635	1.14535231311110	-0.883256405545140	1.00634032165387	1.55762734750974	1.96790562620673	-1.24217679754850	0.458281833604995
-1.56568720611531	-1.71327282562511	0.801929130822506	0.496389916974755	0.668445525391571	0.826702692326603	-1.48283837432703	0.719507962869618	0.115386965760348	-0.463656965345554	0.996889754058664
-0.194846246222833	0.966172267890872	-1.76631756342904	-1.33133196695539	-0.225851120193687	-0.616905615940662	0.243961483940174	1.16793910165914	-0.285092530832716	0.627025379384089	0.893081104727232
-1.73076907380105	-1.15413520840624	-1.59398989199303	-0.733224399100334	-0.377056823816238	0.376756697235356	1.20674170368505	0.216289501340440	1.95657645323322	0.0523647659372721	0.808645754971443
-1.75904978608269	-0.180680731159226	1.68487432622126	-0.137025816490393	1.87880395000244	-0.178267980620547	0.647178608776808	0.289921092974758	0.702685213947254	-0.0600051287703374	0.688542054537435
0.580596011657764	-1.27942241548387	1.76894005512722	1.33309466787806	1.85463875508363	-1.92786018107102	0.469508030635121	1.26283911384558	1.03964757842660	-1.36954263584738	-0.979718878120857
-0.121732731645297	-1.32525638465858	0.401173627008139	-1.34206476314948	-0.715124529820503	-1.36935993061050	1.60289581833775	1.79138916769928	1.40242263299552	-1.36112583405961	-0.0312387868576671
0.601384746215789	1.96423582569557	0.794044976924123	-1.48515580426318	1.42991437862182	0.462024538106109	0.733754056062351	-0.755143196753921	-0.580789738031025	1.96917462941494	0.302800781724529
-0.406254654205704	0.246667901908159	1.32642019962311	-0.179256155109124	-0.782003245832257	-0.552767126421021	-1.31880875556800	-0.633107037862690	0.657559538774678	0.666387131822449	-0.214427877417769
0.305908624797548	-1.21015438580076	-0.722212870739422	0.624043949348139	0.621803254567230	-0.699534708154122	0.655329056722533	-1.18210906319641	1.02850974995301	-1.45479707043088	0.182516086829478
-1.68336509328530	-0.697422560437838	-1.38136873626895	-0.510417709686711	-1.80957827945015	-0.485310120156396	0.438063930945711	1.08489853239399	0.677635945700612	-1.00309026862856	0.391167478161387
0.954789136073853	1.27711657985055	-1.55240328888337	0.0614937002943408	-1.79678357933547	-0.615724298992505	-1.66347691611382	-0.0810670733911727	0.309427403223358	0.0531080764255498	-0.261153692550195
1.29852704854012	0.862559852885852	-0.448411590110243	0.933381819739321	0.917012176629304	-0.424737491609093	1.90267024739830	1.99560198117783	-0.413703283459984	0.768628974492609	-0.182413551093968
-1.99026840469837	1.66273029934930	-1.87553975966573	-1.02569536155465	-1.26060303738212	0.366050973696060	-1.51659999299615	0.966293176717787	-0.805849798599091	0.183712157472140	0.178386076843652
-0.0819597584213900	-0.463429934668162	-0.572021999285017	0.128831625658504	-1.88789347483496	1.59935031057624	0.617864221325217	0.459555530233958	-1.75586982881390	1.04270484633380	-0.392168056621745
0.437529783257309	-1.29255684440892	-1.24193501812910	-1.41476401223407	-1.29903654974950	-1.39412007560462	1.47533327370397	-1.33418806792125	-0.529313169727564	-1.76189228192461	0.0678601496144694
0.796290910802568	-1.16238547235072	-0.119538332546390	0.940045417979305	-1.64034683963738	-0.676643624986502	0.442371452801224	-0.279820985781024	1.49649106716057	-0.374784863601952	-0.986554756240633
0.465308340202914	1.70155151964922	-1.01130256845789	-1.25980710734642	-1.12048597999356	-0.874963279714825	-0.679307311993994	-1.62550587218355	0.310910591465122	0.848652519010229	0.305124810813379
1.80008913305386	1.08176468279729	0.151524343499310	1.23281630116091	-1.38136481388801	-0.604418149063603	-1.12581001461775	0.229172144395380	-0.834264359612619	-1.59365248222472	-0.00916288186826945
1.22055904669529	-0.407272692685185	0.636727445358434	0.164244480634120	1.43002131075324	-0.689874717330266	0.422199485156880	0.966365923049702	1.51225316650522	1.22783518560361	0.564328788330139

部分代码如下:

close all
clear
clc
global inputnum  outputnum TrainNum 
inputnum=10;%神经网络输入层神经元个数(输入样本维度) 
outputnum=1;%神经网络输出层神经元个数(输出样本维度)
TrainNum=100;%训练集数目 
%% 麻雀搜索算法SSA优化灰色神经网络(GNN),目标函数是均方误差MSE
SearchAgents_no=50; %  种群大小(可以修改)
Function_name='F1'; 
Max_iteration=200; %  最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
[fMin,bestX,SSA_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  %bestX是GNN的最优参数
save bestX bestX %保留SSA优化GNN得到的最佳参数
%%
save SSA_curve SSA_curve %保留曲线
%% 画出SSA优化GNN的均方误差随迭代次数的图
figure
semilogy(SSA_curve,'Color','g')
title('Objective space')
xlabel('Iteration');
ylabel('MSE');
%axis tight
grid on
box on
legend('SSA')
%%
display(['The best solution obtained by SSA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by SSA is : ', num2str(fMin)]);%fMin越小说明SSA优化GNN效果越好

实验结果:

均方误差收敛曲线图:
在这里插入图片描述

测试样本的真实值与预测值绝对误差图:

在这里插入图片描述

四、参考代码

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 遗传算法优化BP神经网络预测MATLAB中的代码编写流程如下: 1. 准备训练数据和测试数据,并将它们转化为MATLAB可以处理的形式。 2. 使用MATLAB神经网络工具箱建立BP神经网络模型。 3. 使用MATLAB的遗传算法工具箱设计遗传算法优化器,并将其与BP神经网络模型相结合。 4. 使用训练数据训练BP神经网络模型,并使用遗传算法优化器不断调整参数,以使BP神经网络在训练过程中不断优化。 5. 使用测试数据对训练后的BP神经网络进行测试,并评估其预测效果。 以下是一个使用遗传算法优化BP神经网络预测MATLAB程序示例: ``` % 加载训练数据 load train_data.mat % 建立BP神经网络模型 net = feedforwardnet(10); % 设置遗传算法优化器 ga = ga(net); % 训练BP神经网络 [net,tr] = train(net, inputs, targets, 'ga', ga); % 加载测试数据 load test_data.mat % 使用测试数据测试BP神经网络 outputs = net(inputs); % 评估预测效果 performance = perform(net, targets, outputs); ``` 希望以上示例对您有帮助。 ### 回答2: 遗传算法优化BP神经网络预测MATLAB中的代码编写: 在MATLAB中,遗传算法(Genetic Algorithm, GA)可以用来优化BP神经网络(Backpropagation Neural Network, BPNN)的预测效果。下面是使用MATLAB编写遗传算法优化BP神经网络预测代码。 首先,需要定义适应度函数来评估BP神经网络预测效果。适应度函数可以根据实际问题的需求进行定义,例如均方根误差(RMSE)或R方值等。 接下来,我们需要编写遗传算法的参数设置,包括种群大小、交叉概率、变异概率等。这些参数的选择需要根据实际问题和算法效果进行调试和优化。 然后,需要定义BP神经网络的结构和参数。包括输入层、隐藏层和输出层的节点数,以及权重和阈值的初始化方法等。可以使用MATLAB中的神经网络工具箱来方便地搭建BP神经网络。 接下来,使用遗传算法对BP神经网络进行优化。遗传算法的核心步骤包括初始化种群、计算适应度、选择、交叉、变异和更新种群等。 选取适应度高的个体进行交叉和变异操作,并根据交叉概率和变异概率确定是否进行交叉和变异操作。 交叉操作可以通过交换个体的染色体编码来生成新的个体。变异操作可以通过随机选择部分个体的染色体编码并随机改变其中的位来生成新的个体。 最后,根据遗传算法的迭代次数和停止条件确定是否终止遗传算法,并输出优化后的BP神经网络参数和预测效果。 以上是遗传算法优化BP神经网络预测MATLAB中的代码编写过程。实际应用中,还需要根据具体问题进行适当的调试和优化,以提高预测效果。 ### 回答3: 遗传算法(Genetic Algorithm,简称GA)优化BP神经网络预测MATLAB中的代码编写可以分为以下几个步骤。 1. 数据准备:根据预测问题,准备训练集和测试集的数据。确保数据集的质量和合适性,进行数据清洗、预处理等工作。 2. 建立BP神经网络模型:利用MATLAB中的Neural Network Toolbox,通过设定网络的层数、节点数等参数,建立BP神经网络的模型。 3. 设置适应度函数:将BP神经网络的误差作为适应度函数,即预测值与真实值之间的差距。适应度函数的值越小,表示网络预测性能越好。 4. 设置遗传算法参数:包括种群大小、迭代次数、交叉概率、变异概率等。根据实际问题,调整参数以获取更好的优化效果。 5. 初始化种群:根据问题的特点,初始化一定数量的个体,用来表示BP神经网络的权重和阈值。 6. 选择操作:通过适应度函数的值,根据选择概率选择一部分个体作为下一代的父代。 7. 交叉操作:从父代中选取两个个体,通过交叉操作生成两个子代。交叉操作可以采用点交叉、多点交叉等。 8. 变异操作:对子代中的一部分个体进行变异操作,以增加种群的多样性和搜索的广度。 9. 新一代生成:将父代和子代合并,形成新一代的种群。 10. 计算适应度值:根据适应度函数,计算新一代个体的适应度值。 11. 重复步骤6-10:循环进行选择、交叉、变异和计算适应度值等操作,直到达到设定的迭代次数。 12. 结果分析:根据设定的停止准则,取适应度值最小的个体作为最优解,进行结果分析和评估。可以通过绘制预测结果曲线、计算预测误差等方式进行分析。 以上是用300字回答遗传算法优化BP神经网络预测MATLAB中的代码编写的步骤,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值