|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用bp神经网络确定抽水试验含水层参数。但所求结果与实际相差较大: z9 j2 `* H$ t! @ t
clear all; close all;clc
8 T# ^. I; r9 U3 wload t.txt %导入数据# m. w5 \0 B+ \8 f3 w8 f8 b) p6 [
load newinput.txt2 F, n" c8 Z7 k( ?* E
% 随机生成测试和验证数据- W8 `$ t+ l: ^1 b
T = 0.12 + 0.04*rand(1,120)
( R% N. _$ [, H/ P" H, `U = 0.0002 +0.0001*rand(1,120)
& Q0 f% ^4 t! u) K! @. I$ v8 O' [) a& `+ G/ \$ p7 M
%根据公式计算求得输入数据
4 X! i* k7 b/ B( C7 J
" w1 @2 W2 c' Q1 t2 n4 I) aM=zeros(18,120)7 z) q/ r! y( w* O1 @
for i=1:1202 {( @/ e; K# u' T- K4 F
for c=1:18
& b4 L: r/ \' q7 P1 T- N0 ~- `) D 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;) I3 X. z4 D% o% v4 J
end
! k: I4 b4 T( |end
4 y/ k$ Y1 t0 p% X9 o6 m7 U6 [( y8 q2 Z; m; x" Z
data = [T;U]
2 w3 A! g& A# h- L* y. u! |0 j. W! o5 Y9 V$ l2 n9 g8 u$ ?
p = M J! K7 |, c* d" p* H& a& K
t = data
% D4 ?6 L' @$ }4 D" J- ~% 划分数据,分成测试和验证数据* }8 V* s6 `8 d3 U9 [
[trainsample.p,valsample.p,testsample.p] =dividerand(p,0.8,0.15,0.15) ;
6 R5 [- S* q$ F[trainsample.t,valsample.t,testsample.t] =dividerand(t,0.8,0.15,0.15);- G, i5 X' `% k) b8 \9 {0 e
9 f1 R/ A. b8 T6 H1 O) K! U
% 数据归一化处理2 b6 \& j& m1 a2 }/ v
[trainsample.P, ps] = mapminmax(trainsample.p,0,1): j3 n( j# N# _8 m# o
testsample.P = mapminmax('apply',testsample.p,ps)
4 Q/ x8 c) ]3 z+ }/ n+ \[trainsample.T, ts] = mapminmax(trainsample.t, 0,1)6 D: i$ A( o) b. B" n" R
, X& D X( G# y) C+ f% 初始化网络
$ o" H% F# m) K! J! `3 c; fnet = newff(trainsample.P,trainsample.T,[1,27]), G9 K8 ~9 a. f z6 X
& j* l6 L1 ^8 s0 ?$ e" U- B6 D% 设置网络参数9 h# q3 I5 i& C. H# y
net.trainParam.epochs = 50000;/ D9 z- C2 p# N1 c5 c J
net.trainParam.show=50;
, U0 w9 I0 H; [# I% i$ I9 {net.trainParam.lr = 0.68;
5 }& g# C# H5 j0 `* a5 anet.trainParam.goal = 1E-15;
- i$ \. H% |! c" z: }6 V+ L! e5 r3 a! q
net.traiNFCn='trainbr';( \4 N8 k& z. Z+ B
[net,tr]=train(net,trainsample.P,trainsample.T);# ?* r1 R- I8 T$ ?! m3 k
" H3 x9 o, m2 Y; E! s/ f* k
% 仿真处理; X' Y6 q d. x% d6 |& A
p_sim=sim(net,testsample.P);9 ]- y; ^; f3 }: E( u) ^. E/ u; o
P_sim = mapminmax('reverse', p_sim, ts);4 V/ [7 c% k; ^! h
/ m& E' p0 |1 a/ j/ B- O' n! w
% 数据预测
6 ?' u, t# F1 Y: t6 K0 ~ D; [' T9 onewinput = mapminmax('apply', newinput, ps);
) G1 n+ o- R# J8 Z$ RnewOutput = sim(net, newinput);
& D& i% {9 P% O9 i$ I6 ^+ U. \newOutput = mapminmax('reverse',newOutput, ts)
+ D o" M1 T$ T- w5 ^+ x" S; @% }( K3 g* m+ Z
% q9 `- c' L3 E8 T# y2 [
# b0 b/ q6 E& E1 u3 ]) J- L- B( o- Y
|
|