|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用bp神经网络确定抽水试验含水层参数。但所求结果与实际相差较大& P/ X# R' {! X/ M" g3 Y/ `! e
clear all; close all;clc
! P- K, [9 [( @4 s+ Tload t.txt %导入数据
) v7 G- Z( G! u+ f* H& n, A$ n+ gload newinput.txt
3 P5 ^9 e2 b* M. O% 随机生成测试和验证数据' ]3 l- s6 m/ L: N) F# ~
T = 0.12 + 0.04*rand(1,120)
: s- X* D2 s6 @7 U! X7 aU = 0.0002 +0.0001*rand(1,120)- Q! l7 j+ K* a
/ }1 A, [& \0 c5 [%根据公式计算求得输入数据. H5 H2 t: a2 X* H! e# {( ], ?9 ~
" m7 p, J8 o& W0 E# ~2 YM=zeros(18,120)' b5 c7 s% @- g4 r n
for i=1:120: O- L7 V( r/ L1 O
for c=1:18! a* s1 V) O5 ^0 J6 Y# ], U
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;
) P1 q! z& [; ~. k end8 }4 ]1 r3 C2 g4 D1 ^5 H7 t% m
end
$ d; [- ?$ ^0 }/ L7 B3 y3 O9 a- f- w0 L0 _% i1 Y
data = [T;U]' l; a; P( o) ?- [5 q8 d3 E
/ P. d1 o( `! R: G7 ^% Z
p = M
- P$ E/ k0 q9 F$ ct = data* G0 {+ m' ^- Z2 A
% 划分数据,分成测试和验证数据) L$ Q, D( a( w) [/ B
[trainsample.p,valsample.p,testsample.p] =dividerand(p,0.8,0.15,0.15) ;! U' Z5 p. Z0 I1 X& v- T5 b
[trainsample.t,valsample.t,testsample.t] =dividerand(t,0.8,0.15,0.15);
7 w# z, q/ h! R1 A5 a$ }5 D/ v+ W
) y% y8 p' d. g, E% 数据归一化处理- k, s1 g( X: F7 N+ i
[trainsample.P, ps] = mapminmax(trainsample.p,0,1)
8 x4 ]- s2 ~2 _! t& d5 Ttestsample.P = mapminmax('apply',testsample.p,ps)/ o* Z8 v) i* a. o
[trainsample.T, ts] = mapminmax(trainsample.t, 0,1)
! P; p( i3 t7 [ X7 p/ f/ v" |, t$ \+ o3 r7 N
% 初始化网络$ x- W4 b' T e( g5 k
net = newff(trainsample.P,trainsample.T,[1,27])$ Z1 z- ^% u* r, i+ g- R
( P8 u" h! w7 ?3 i
% 设置网络参数6 @; E, a. ^8 k- S8 ?* d8 z
net.trainParam.epochs = 50000;! Y0 T' u6 R8 B% o' k% `! m9 v# o
net.trainParam.show=50;6 n, X3 l6 @' a4 g2 @
net.trainParam.lr = 0.68;9 q8 [- L) v$ U$ @* ?6 \
net.trainParam.goal = 1E-15;* |/ u4 Q+ E% G% P: M! G# i
: F. c) e8 Z- b7 onet.traiNFCn='trainbr';
4 P0 K3 x9 G# X( C$ {7 p) c8 k! Z0 H+ J[net,tr]=train(net,trainsample.P,trainsample.T);' t# U; r5 Z) ]
7 [- }( B5 E2 Q( \9 l5 q1 f: T
% 仿真处理5 x$ d9 d, c _% ^
p_sim=sim(net,testsample.P);" f; O% D, @' L4 h3 H. A0 m: Y
P_sim = mapminmax('reverse', p_sim, ts);
; M" D( o. f x* }* i0 H6 H q' L1 g5 \. e- h
% 数据预测
0 ?, [! c2 P& ?' I! j I8 Y, Cnewinput = mapminmax('apply', newinput, ps);, u0 k6 w3 v7 L/ I9 l3 X- {
newOutput = sim(net, newinput);
. r( M/ U" ?$ l- U" s. RnewOutput = mapminmax('reverse',newOutput, ts)6 ^$ u: S/ ^! I! e5 b% Y( T, E% G @
1 I- N6 m& U! v, K% d
$ J. b/ l$ |& Q7 y) h2 ~3 g% O
! C0 T2 A/ e( r4 w |
|