使用MATLAB构建BP神经网络模型进行应力预测
使用MATLAB构建BP神经网络模型进行应力预测
本文介绍使用MATLAB构建BP神经网络模型进行应力预测的步骤,包括数据预处理、神经网络创建、训练和验证。代码示例展示了如何利用样本数据训练神经网络,并使用验证数据评估其预测性能。
代码示例
clear
%%
%归一化阶段
%读取应力样本数据
p1=xlsread('C:\Users\Administrator\Desktop\样本数据汇总\铁素体\大范围数据\总处理.xlsx','sheet1');
%p3=p1';
%[p1,p2]=mapminmax(p1,0,1);
for i=1:9
p3(:,i)=(p1(:,i)-60)/2500;
end
p3(:,10)=p1(:,11); %矩阵定义的事,
t1=xlsread('C:\Users\Administrator\Desktop\样本数据汇总\铁素体\大范围数据\总处理.xlsx','sheet2');
t2(:,1)=(t1(:,2)-100)/400;
t2(:,2)=(t1(:,3)-t1(:,4)-20)/280;
t2(:,3)=(t1(:,4)-20)/480;
p4=p3';
t4=t2';
a1=0;
for i8=[100,500,1000,2000,5000]
a1=a1+1;
for i7=1:i8
p(:,i7)=p4(:,i7);
t(:,i7)=t4(:,i7);
end
%end
%%
%创建net
%创建BP网络和定义训练函数及参数
a2=0;
for i5=[6,10,16,26,35]
a2=a2+1;
i10=round(i5*.618);
net=newff(minmax(p),[i10,i5,3],{'logsig','logsig','purelin'},'trainscg');
net.trainParam.lr=0.1; %学习速率
net.trainParam.mc=0.9; %动量因子
net.trainParam.epochs=10000; %最大的训练次数
net.trainParam.goal=1.0e-4; %训练要求精度
net.trainParam.show = 50;
net=init(net); %初始化神经网络
%训练神经网络
[net,tr]=train(net,p,t); %[神经网络的名称(随意命名),展示训练记录按钮]
a14= strcat('F:\神经网络算法\训练好的神经网络撒双层4(汇总)\net', num2str(1),'.mat'); %strcat将字符型变量连接起来
save(a14,'net'); %把训练好的神经网络保存起来(save文件位置+名称,'要保存的神经网络结构名称')
%%
%神经网络的验证环节
%B1=[395;418;463;526;609;699;797;895;957;0.00494;0.34578]'; %奥氏体数据
%B1=[269;280;301;330.5;365;403.8;440.4;470.2;483.8;0.00267;0.167]';%铁素体数据
%低应变奥氏体数据
%B1=zeros();
%B2=zeros();
B1=xlsread('C:\Users\Administrator\Desktop\神经网络结构确定\铁素体50组验证\excel1.xls','sheet1');
for i6=1:50
B2=zeros();
for i2=1:9
B2(1,i2)=B1(i6,i2);
end
B2(1,10)=B1(i6,11);
for i=1:9
B2(1,i)=(B2(1,i)-60)/2500;
end
a12=sim(net,B2'); %[训练出来的神经网络算法名称,要预测的变量]
%a13(1,i1-4)=a12(1,1)*15+45;
%a13(2,i1-4)=a12(2,1)*130+180;
%a13(4,i1-4)=a12(4,1)*320+30;
%a13(3,i1-4)=a12(3,1)*160+40+a13(4,i1-4);
%a13(1+4*(i3-5),i1)=55;
%a13(2+4*(i3-5),i1)=a12(1,1)*400+100;
%a13(4+4*(i3-5),i1)=a12(3,1)*480+20;
%a13(3+4*(i3-5),i1)=a12(2,1)*380+20+a13(4,i1);
a13(1,(a1-1)*250+50*(a2-1)+i6)=55;
a13(2,(a1-1)*250+50*(a2-1)+i6)=a12(1,1)*400+100;
a13(4,(a1-1)*250+50*(a2-1)+i6)=a12(3,1)*480+20;
a13(3,(a1-1)*250+50*(a2-1)+i6)=a12(2,1)*280+20+a13(4,(a1-1)*250+50*(a2-1)+i6);
end
end
end
%end
xlswrite('C:\zuhe1.xls',a13','sheet1','A1');
代码解释
- 第一行代码 'clear' 的作用是清除当前工作区的所有变量。
- 第三行代码是注释,表示下面的代码是进行归一化阶段。
- 第五行代码通过xlsread函数读取Excel文件中的样本数据,并将读取的数据存储在变量p1中。
- 第六行代码将p1中的数据进行归一化处理,将数据映射到0到1之间。
- 第七行代码使用循环将p1中的数据进行归一化处理,将数据缩放到指定的范围内。
- 第八行代码将p1中的应力数据(第11列)存储在变量p3的最后一列中。
- 第九行代码使用xlsread函数读取Excel文件中的样本数据,并将读取的数据存储在变量t1中。
- 第十一行代码将t1中的数据进行归一化处理,将数据映射到0到1之间,并存储在变量t2中。
- 第十三行代码将p3和t2分别转置,存储在变量p4和t4中。
- 第十四行代码将变量a1初始化为0。
- 第十五行代码使用循环,循环次数为变量i8的值(100, 500, 1000, 2000, 5000)。
- 第十六行代码将变量a1加1。
- 第十七行代码使用循环,循环次数为1到i8。
- 第十八行代码将p4和t4的部分数据存储在变量p和t中。
- 第二十一行代码创建一个新的BP神经网络,输入层节点数为minmax(p)(p的最小值和最大值),隐藏层节点数为[i10,i5,3],激活函数分别为'logsig'、'logsig'和'purelin'。
- 第二十二行代码设置神经网络的训练参数,包括学习速率、动量因子、最大训练次数和训练精度要求。
- 第二十三行代码对神经网络进行初始化。
- 第二十六行代码使用train函数对神经网络进行训练,并将训练记录存储在变量tr中。
- 第二十七行代码将训练好的神经网络保存在指定位置和名称的.mat文件中。
- 第三十一行代码创建一个空的矩阵a13。
- 第三十二行代码使用xlsread函数读取Excel文件中的验证数据,并将读取的数据存储在变量B1中。
- 第三十三行代码使用循环,循环次数为1到50。
- 第三十四行代码创建一个空的矩阵B2。
- 第三五行代码将B1中的部分数据存储在变量B2中。
- 第三十六行代码将B2中的应力数据进行归一化处理。
- 第三七行代码使用sim函数对训练好的神经网络进行验证,并将结果存储在变量a12中。
- 第四十行代码将验证结果反归一化,并存储在变量a13中。
- 第四十一行代码将a13的转置写入Excel文件中。
总结
代码示例展示了如何利用MATLAB构建BP神经网络模型进行应力预测。通过数据预处理、神经网络创建、训练和验证等步骤,可以建立一个能够预测应力的模型。需要注意的是,实际应用中需要根据具体需求调整神经网络参数,以获得最佳预测效果。
原文地址: https://www.cveoy.top/t/topic/qvcr 著作权归作者所有。请勿转载和采集!