|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用bp神经网络确定抽水试验含水层参数。但所求结果与实际相差较大$ v2 V& S9 i* e0 ^! L$ F
clear all; close all;clc
( N3 e* @0 Y$ V" Dload t.txt %导入数据' x7 z1 t: W! F2 q
load newinput.txt `3 ]7 r0 P7 y9 d* \
% 随机生成测试和验证数据" u; b- @- `9 l+ W8 q4 M; {
T = 0.12 + 0.04*rand(1,120)5 b9 V! A6 o4 m8 N
U = 0.0002 +0.0001*rand(1,120), ?$ R+ e/ g0 Z4 [/ E; v
7 X7 |7 |+ ?9 r8 k, d
%根据公式计算求得输入数据
) M% [/ w1 o1 N6 P. j
! R6 B$ ~ A1 NM=zeros(18,120)
; w, a8 d4 K7 a3 K* L Efor i=1:120
1 M. z9 @! I) m9 r$ a+ e; Y3 [/ _ for c=1:18
3 h# ]4 w9 }/ N) u' ` L 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 B: a! }9 ]+ w# R" { end, w! ^/ J& `- Y1 I0 y$ k+ M
end4 |, t# P6 R" |, \
; c, i; d4 w- u+ t* Rdata = [T;U]* f/ n: x- o9 Y; E
$ o8 T# v( I J$ E, T6 S
p = M9 o9 o e" T" d- _5 p
t = data7 R& h8 q9 P, H; u7 [
% 划分数据,分成测试和验证数据
5 b* w3 p6 i1 u. ]" k% |: f[trainsample.p,valsample.p,testsample.p] =dividerand(p,0.8,0.15,0.15) ;
' _8 e2 L% T, b[trainsample.t,valsample.t,testsample.t] =dividerand(t,0.8,0.15,0.15);3 H6 e. G6 J: U: k2 b( K# q d
2 w9 v* d) Z# S w+ x% 数据归一化处理
6 Z6 i# D T% T0 z& D9 [' d( p[trainsample.P, ps] = mapminmax(trainsample.p,0,1)
; o' o2 h8 S% B2 v, Y4 n! ntestsample.P = mapminmax('apply',testsample.p,ps)
5 o! u8 r c& V3 h. ]. @- G[trainsample.T, ts] = mapminmax(trainsample.t, 0,1), K( \) K8 b( I! ^" r! O6 U- O6 O
$ u# w/ |7 `, f3 \7 Y! E2 r
% 初始化网络2 p1 [- [- Y; N, \% z
net = newff(trainsample.P,trainsample.T,[1,27])
1 s! E! }# a' W, H% ]! `( p" g( O) C
% 设置网络参数2 N0 l q. `! D1 I# T9 D; E) T
net.trainParam.epochs = 50000;# d0 x3 ^; E: N2 ? X. M
net.trainParam.show=50;
4 \, u. v: ^. s, knet.trainParam.lr = 0.68;
" Y0 Y; d+ @' G2 ?# snet.trainParam.goal = 1E-15;
+ o9 D/ O! s# n* z& S% D5 c& X. E' {) ^8 R) ^! B4 ^ `. e
net.traiNFCn='trainbr';
* n# G5 r8 D- i7 W* {. H# B" A[net,tr]=train(net,trainsample.P,trainsample.T);5 h- T3 ~% K) A
4 m7 v! `# m* p) \+ U* I% 仿真处理 N4 \9 Q- z) ^5 ~7 W
p_sim=sim(net,testsample.P);4 ^& G4 {- Q( L" Q- F
P_sim = mapminmax('reverse', p_sim, ts);% e! a2 [( o2 P6 [& D5 z
3 \' R' t ?0 M3 V. ]% 数据预测6 ?4 C2 d$ \9 a) S
newinput = mapminmax('apply', newinput, ps);1 ? ^8 s' {9 g% g) i: n. f
newOutput = sim(net, newinput); x: `4 H4 d: N
newOutput = mapminmax('reverse',newOutput, ts)0 V% a Y1 M; Q9 d% g* k; S
$ ?" f3 `5 l0 Y, h
* p8 t6 X/ Q3 \* q, x% R
6 Y( [, t' P! g5 Z7 B
|
|