1 算法介绍
针对传统预测深孔加工中钻削力精度不高的问题以及BP神经网络本身存在的缺陷,提出了BAS-BP神经网络预测模型.文章基于天牛须算法与BP神经网络相互结合,利用天牛须算法计算优化BP神经网络中的初始权值与阀值,从而建立BAS-BP神经网络的预测模型.并与传统BP神经网络预测模型进行对比.结果表明BAS-BP神经网络克服了训练时间长,收敛速度慢的缺点,预测精度明显提高.
2 部分代码
%% 用天牛须算法来优化BP的权值和阈值,数据样本为测试数据,非论文实际数据,样本60个,其中每个样本具有401个特征值;NIR为样本的光谱数据,octane为60*1的辛烷值数据 % 1.0版本 %% 清空环境变量 clear all close all clc tic %% 加载数据 load spectra_data.mat % 随机产生训练集和测试集 temp=randperm(size(NIR,1)); %训练集——50个样本 P=NIR(temp(1:50),:)'; T=octane(temp(1:50),:)'; %测试集——10个样本 P_test=NIR(temp(51:end),:)'; T_test=octane(temp(51:end),:)'; N=size(P_test,2); M=size(P,2); %% 归一化 [P, ps_input] = mapminmax(P,0,1);%p_train归一化处理,范围为[0,1],默认情况下为[-1,1] P_test = mapminmax('apply',P_test,ps_input);%对P_test采用相同的映射 [T, ps_output] = mapminmax(T,0,1); %% inputnum=size(P,1); outputnum=size(T,1); hiddennum=9;%初始隐含层神经元个数 %% 创建网络 net=newff(P,T,hiddennum); net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; net.trainParam.lr = 0.01; bestX(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum); %% 网络权值赋值 net.iw{1,1}=reshape(w1,hiddennum,inputnum); net.lw{2,1}=reshape(w2,outputnum,hiddennum); net.b{1}=reshape(B1,hiddennum,1); net.b{2}=reshape(B2,outputnum,1); %% 训练网络 net=train(net,P,T); %% 测试 YY=sim(net,P); figure(2) plot(1:length(YY),YY,'bo-') hold on plot(1:length(YY),T,'r*-') legend('预测值','真实值') %% 可视化 figure(1) %plot(x_store(1,:),x_store(end,:),'r-o') hold on, plot(x_store(1,:),fbest_store,'b-.') xlabel('Iteration') ylabel('BestFit') toc
3 仿真结果
4 参考文献
[1]王杰. 基于天牛须搜索算法的神经网络并行优化研究及预测应用[D].杭州电子科技大学,2020.
[2]牛庆,曹爱民,陈潇一,周冬.基于花朵授粉算法和BP神经网络的短期负荷预测[J].电网与清洁能源,2020,36(10):28-32.
[3]刘晓峰, 苗鸿宾, 温静媛. 基于BAS-BP神经网络的钻削力预测[J]. 组合机床与自动化加工技术, 2019, 000(008):49-52.