|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用bp神经网络确定抽水试验含水层参数。但所求结果与实际相差较大$ n+ @( @* d$ A R ], Z9 a7 R
clear all; close all;clc! J$ C. l! c2 q; q& Y$ O9 \4 O
load t.txt %导入数据
5 \! h% }/ [: u2 `6 u; y V; lload newinput.txt
7 Q5 ?8 H$ z) `% 随机生成测试和验证数据
9 I u: z& k: e7 t# a6 KT = 0.12 + 0.04*rand(1,120)
# F8 e. W$ O% ^4 FU = 0.0002 +0.0001*rand(1,120) H* V# L( P7 I* S5 a! H
1 t. o; F- E6 p, ?( y%根据公式计算求得输入数据
0 N+ b2 [- L) E. t5 l/ _+ C2 F6 D4 \2 i5 G6 f7 H% r. v3 V
M=zeros(18,120)2 X. I1 V( q' ^! A7 K
for i=1:120
5 `% u! k$ b4 Q* U% e for c=1:186 \7 c, ?$ H: M( c1 `* E
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;% @: o1 W, H8 J
end9 W z) f. a$ T+ Z2 _
end" @4 y* I H R8 t$ B
3 ^6 H+ D' c5 G* C0 V& ~ X. k, L
data = [T;U]
" v( c& ^7 O4 d; y0 V5 R
% s7 B/ f% r/ Xp = M5 H( i2 I" c1 _* U
t = data
$ j6 o0 ~0 H& k* c/ D1 e% 划分数据,分成测试和验证数据* P* p# K3 M/ v/ u
[trainsample.p,valsample.p,testsample.p] =dividerand(p,0.8,0.15,0.15) ;) {8 v; O) _. U% G5 E0 F5 J
[trainsample.t,valsample.t,testsample.t] =dividerand(t,0.8,0.15,0.15);; V3 Y8 w" `5 g3 C; _
- {! \$ W. x$ L$ F; Y( u- s% 数据归一化处理
" Q5 y- M6 F$ G R/ |[trainsample.P, ps] = mapminmax(trainsample.p,0,1)
' T/ g/ `9 a9 {! Z& `. [testsample.P = mapminmax('apply',testsample.p,ps)) ~! e6 @8 f2 V* H4 y+ x
[trainsample.T, ts] = mapminmax(trainsample.t, 0,1), r# M# ?! }/ y) S
( T9 U3 U! [! [/ b
% 初始化网络
% g$ }4 y: u- K( Gnet = newff(trainsample.P,trainsample.T,[1,27])
# [' q, \9 t5 C' c
! V5 B. z( G- V( z% 设置网络参数5 O& E! q, S7 ^" h* N0 S/ W" h
net.trainParam.epochs = 50000;2 c! P* _0 i' j8 d" c
net.trainParam.show=50;4 m/ T. O! ?* Y& I
net.trainParam.lr = 0.68;
6 H& l) z! n9 `" l/ ]; S1 lnet.trainParam.goal = 1E-15;
2 X; u, J! {/ H k1 O
- q+ m! y% I- j E: U: @$ Onet.traiNFCn='trainbr';
, ^5 x( d1 e% Z6 n2 a[net,tr]=train(net,trainsample.P,trainsample.T);
/ a& ]. n2 l0 q: l* s* V U2 K" N2 @# Q* H& k w& p
% 仿真处理) P4 Q2 `3 A' |
p_sim=sim(net,testsample.P);- t) e, o( |1 G9 S9 T: B9 B6 ~
P_sim = mapminmax('reverse', p_sim, ts);, e5 N G' V$ V' j0 d' l% m
' Q) W, r6 L& ?( q
% 数据预测5 V" C1 T6 A! v( B6 j' w
newinput = mapminmax('apply', newinput, ps);/ u& Y% x' n: q2 o$ U J
newOutput = sim(net, newinput);
9 e- [ T' q7 V& g) x& snewOutput = mapminmax('reverse',newOutput, ts)6 e1 W, C, e; n9 i, ^! ` e; A
/ R- b6 }& v* y9 ^9 \" j; I" N; F
0 }2 z5 ?/ [6 j4 k* \. a. l) s
4 r5 @8 }8 D0 d3 H9 R2 X9 F" V' P
|
|