马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我用的是神经网络方法训练应力集中系数的表达式,用了很多方法,如trainlm 和traingdm等方法,也修改了隐含层的节点的数目(从5个到20个),也尝试了几组不同的传递函数组合(如logsig/purelin, logsig/tansig),还是不能得出满意的图象,比如trainlm的训练误差是很小,但是划出来的三维图却不对,总是有突变,而traingdm图象倒是比较平滑,却达不到训练误差,求高手帮忙,已经困在在这好久了,还是没弄明白,本人不胜感激。以下是函数代码
function net=lashen()
clear
echo on
clc
%BP建模
%原始数据归一化
m_data=[0.045 2.0 2.6;
0.051 2.0 2.5;
0.06 2.0 2.34;
0.07 2.0 2.2;
0.08 2.0 2.11;
0.10 2.0 1.98;
0.12 2.0 1.89;
0.14 2.0 1.81;
0.16 2.0 1.74;
0.18 2.0 1.67;
0.20 2.0 1.63;
0.22 2.0 1.59;
0.24 2.0 1.56;
0.26 2.0 1.53;
0.28 2.0 1.50;
0.30 2.0 1.47;
0.043 1.5 2.5;
0.049 1.5 2.4;
0.06 1.5 2.22;
0.07 1.5 2.1;
0.08 1.5 2.02;
0.10 1.5 1.89;
0.12 1.5 1.78;
0.14 1.5 1.72;
0.16 1.5 1.66;
0.18 1.5 1.61;
0.20 1.5 1.57;
0.22 1.5 1.53;
0.24 1.5 1.50;
0.26 1.5 1.47;
0.28 1.5 1.46;
0.3 1.5 1.44;
0.04 1.3 2.35;
0.05 1.3 2.2;
0.06 1.3 2.07;
0.08 1.3 1.9;
0.1 1.3 1.77;
0.12 1.3 1.68;
0.14 1.3 1.62;
0.16 1.3 1.57;
0.18 1.3 1.53;
0.20 1.3 1.50;
0.22 1.3 1.47;
0.24 1.3 1.45;
0.26 1.3 1.43;
0.28 1.3 1.41;
0.3 1.3 1.38;
0.033 1.1 2.1;
0.04 1.1 2.02;
0.049 1.1 1.9;
0.06 1.1 1.78;
0.069 1.1 1.7;
0.08 1.1 1.63;
0.1 1.1 1.56;
0.12 1.1 1.49;
0.14 1.1 1.45;
0.16 1.1 1.42;
0.18 1.1 1.38;
0.2 1.1 1.36;
0.22 1.1 1.34;
0.24 1.1 1.325;
0.26 1.1 1.315;
0.28 1.1 1.3;
0.3 1.1 1.28;
0.028 1.02 1.7;
0.04 1.02 1.57;
0.06 1.02 1.45;
0.08 1.02 1.37;
0.10 1.02 1.32;
0.12 1.02 1.28;
0.14 1.02 1.26;
0.16 1.02 1.25;
0.18 1.02 1.23;
0.2 1.02 1.22;
0.22 1.02 1.215;
0.24 1.02 1.21;
0.26 1.02 1.2;
0.3 1.02 1.2;
0.03 1.01 1.5;
0.04 1.01 1.43;
0.06 1.01 1.34;
0.08 1.01 1.27;
0.1 1.01 1.23;
0.12 1.01 1.21;
0.14 1.01 1.18;
0.16 1.01 1.17;
0.18 1.01 1.16;
0.20 1.01 1.155;
1.22 1.01 1.15;
0.24 1.01 1.14;
0.26 1.01 1.135;
0.28 1.01 1.13;
0.30 1.01 1.13];
%定义网络输入p和期望输出t
pause
clc
p1=m_data(:,1:2);
t1=m_data(:,3);
p=p1';t=t1';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
%设置网络隐单元的神经元数(5~30验证后5个最好)
n=10;
%建立相应的BP网络
pause
clc
net=newff(minmax(pn),[n,1],{'logsig','tansig'},'trainlm');
inputWeights=net.IW{1,1};
inputbias=net.b{1};
layerWeights=net.LW{2,1};
layerbias=net.b{2};
pause
clc
% 训练网络
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=10000;
net.trainParam.goal=1e-5;
pause
clc
%调用TRAINGDM算法训练BP网络
net=train(net,pn,tn);
[x2,y2]=meshgrid(0.04:0.01:0.3,1.1:0.04:2.6);
p3=[x2,y2];
x3=x2(:)';y3=y2(:)';
p4=[x3;y3];
p4n=tramnmx(p4,minp,maxp);
figure;a4n=sim(net,p4n);
a4=postmnmx(a4n,mint,maxt);
a41=reshape(a4,size(x2));
surf(x2,y2,a41); |