EDA365电子论坛网
标题:
bp神经网络
[打印本页]
作者:
shuddkk
时间:
2021-3-4 13:23
标题:
bp神经网络
用bp神经网络确定抽水试验含水层参数。但所求结果与实际相差较大
6 X" n2 S1 U6 U
clear all; close all;clc
4 Z) u# X+ e# e4 Z5 ~4 K# m
load t.txt %导入数据
/ A$ s8 v; n' e* D( @# _! F" v
load newinput.txt
. v' k/ A2 N0 h7 D) k
% 随机生成测试和验证数据
; ^# T& D; P z" a' a* X
T = 0.12 + 0.04*rand(1,120)
8 p4 ]( K8 c% O
U = 0.0002 +0.0001*rand(1,120)
* v8 T' @9 r: E \+ L) @6 M J
- ?" y, K+ _4 z3 O% f
%根据公式计算求得输入数据
) M* }9 O- ^! L s5 w% ]
/ [+ q5 p' o7 k8 u8 d
M=zeros(18,120)
0 j. Z- }4 |1 l" n0 I' V
for i=1:120
9 w* @: M8 v& ]' s# G
for c=1:18
" `8 u5 j, q" a( l- ]/ ^4 z
m=43*43*U(1,i)/4/T(1,i)/t(c,1);n=-0.577216-log(m)+m;s=1*n/4/T(1,i )/pi;M(c,i)=s;
2 G( ^; o; }% L3 V9 ~
end
4 z/ t& z9 a1 ~; N. S
end
5 y) p6 O; i6 E% e0 k
2 P6 u9 I6 E4 d u$ G7 K4 U) ~
data = [T;U]
. R5 l! l+ {- v$ H# j) S: r9 f
4 K x+ K# o/ G7 T; {. M& z. ~- T
p = M
3 K3 ?9 m2 \, k# ^$ q
t = data
7 ?7 M5 m, L' ~5 O8 `& `5 R
% 划分数据,分成测试和验证数据
# p: G. _7 f3 v% R$ ]! ?- h
[trainsample.p,valsample.p,testsample.p] =dividerand(p,0.8,0.15,0.15) ;
! Y1 q _, @' }8 P9 G. I- r
[trainsample.t,valsample.t,testsample.t] =dividerand(t,0.8,0.15,0.15);
: a. Y0 y0 S7 B
* z( \5 S% m) R- ^' b
% 数据归一化处理
, j U5 v& N+ U# Z# F/ A/ P
[trainsample.P, ps] = mapminmax(trainsample.p,0,1)
6 Z7 ?. j5 ]0 V( {; f3 H7 b: C1 [
testsample.P = mapminmax('apply',testsample.p,ps)
; d" b6 ~4 i. j) ^3 j5 n8 M
[trainsample.T, ts] = mapminmax(trainsample.t, 0,1)
9 g8 b; Z c% C1 H# m7 O: A
% [- e* ]$ V* a9 H* p3 U/ x
% 初始化网络
6 w. b! [% f# a: P! Z& u& y0 x% k2 P
net = newff(trainsample.P,trainsample.T,[1,27])
/ i: A5 s; c9 i c- o2 F
e' g' Y$ W7 N( S
% 设置网络参数
" C0 p% b4 }" Y& r
net.trainParam.epochs = 50000;
" {4 w! M" ]9 R; `# ]% b
net.trainParam.show=50;
$ ]' Y% x3 @$ i' U6 X
net.trainParam.lr = 0.68;
{, F, p. {9 T
net.trainParam.goal = 1E-15;
* d, r! E4 K: z+ |7 `5 W
" Z1 l( u- V1 d8 I6 N
net.trainFcn='trainbr';
3 J$ r% W- W$ A" M
[net,tr]=train(net,trainsample.P,trainsample.T);
3 z9 @6 g" ~: | w0 d9 ?" Y; ]
6 u% m1 q; `* S& D/ j$ ?8 O
% 仿真处理
" o0 B% E. B4 \4 ?, L
p_sim=sim(net,testsample.P);
/ ^' P. ^8 A' m( w H
P_sim = mapminmax('reverse', p_sim, ts);
: n2 t# Z# s& p* h8 W
1 Y6 p+ W0 N0 @# j8 A
% 数据预测
8 z1 k; @3 D9 h3 p& z/ o/ o2 i5 v
newinput = mapminmax('apply', newinput, ps);
' \$ v& V' N( H8 D! @
newOutput = sim(net, newinput);
0 S) B0 f. X" B- s8 e) j- W
newOutput = mapminmax('reverse',newOutput, ts)
+ N* N' S6 R! K
: z% g3 T8 O/ A
' x3 f. M2 O. ^ V2 \, O% M
1.png
(84.96 KB, 下载次数: 8)
下载附件
保存到相册
2021-3-4 13:23 上传
; ?4 |& W# a( k1 G3 Q
作者:
勇往直前11
时间:
2021-3-4 13:33
帮你顶一下
作者:
小白的白
时间:
2021-3-4 15:53
我的理解是:
4 n1 h/ |. S( b) g0 S) x/ ?* x' |
①有一组已知数据来自t.txt,它们是某模型的输入变量;该模型另有参数U和参数T;模型的输出为形如newinput.txt中的数据。
3 w( w( C7 T& M# U
②目标是根据实际输出newinput.txt中的数据,拟合得到参数U和参数T的数值。
. \8 r$ l' b) D+ f4 s W
③实现过程则是,先随机生成一系列的参数U和T,并根据该模型计算得到对应的输出;接着构造一个神经网络,使用前述模型计算输出作为训练的输入,使用参数U和T的数据作为训练的输出,开始进行反馈训练;最后使用经过训练的神经网络,完成目标②。
作者:
小小鲁班
时间:
2021-3-4 16:00
来学习
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2