欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

【预测模型】基于天牛须算法BAS优化BP神经网络实现数据预测matlab源码

最编程 2024-02-17 07:32:36
...

​1 算法介绍

针对传统预测深孔加工中钻削力精度不高的问题以及BP神经网络本身存在的缺陷,提出了BAS-BP神经网络预测模型.文章基于天牛须算法与BP神经网络相互结合,利用天牛须算法计算优化BP神经网络中的初始权值与阀值,从而建立BAS-BP神经网络的预测模型.并与传统BP神经网络预测模型进行对比.结果表明BAS-BP神经网络克服了训练时间长,收敛速度慢的缺点,预测精度明显提高.

img

img

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.

5 MATLAB代码与数据下载地址

见博客主页