QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5123|回复: 11
打印 上一主题 下一主题

[问题求助] BP神经网络程序问题求助

[复制链接]
字体大小: 正常 放大
T-Eric        

5

主题

14

听众

259

积分

升级  79.5%

  • TA的每日心情
    奋斗
    2016-1-29 12:24
  • 签到天数: 81 天

    [LV.6]常住居民II

    自我介绍
    数学建模准备中...

    社区QQ达人

    跳转到指定楼层
    1#
    发表于 2014-7-18 21:13 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    这是我从书上打下来的代码,因为书的运行软件版本比较低,我的是Malab2013a的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!* O& v8 |2 j9 L" C0 r

    / c0 m5 U+ }2 g, N%原始数据输入' R6 J' V. Z: a/ U9 a, h, z
    clc
    3 L7 [) i. E" ?6 xsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...) G. O2 q$ G- J! G# T* q% t7 l
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];' z8 M0 Y/ V& r: ^/ i
    sqjdcs=[0.6,0.75,0.85,0.90,1.05,1.35,1.45,1.60,1.70,1.85,2.15,2.20,2.25,2.35,..., E5 F# V' }% V! n. Q3 n
        2.5,2.6,2.7,2.85,2.95,3.10];
    0 g+ _; l# O% zsqglmj=[0.09,0.11,0.11,0.14,0.20,0.23,0.23,0.32,0.32,0.34,0.36,0.36,0.38,0.49,...
    ; S5 t$ x7 B. \! x7 z7 z7 q1 l    0.56,0.59,0.59,0.67,0.69,0.79];! P6 M% b7 N2 [
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...# ^' P! }# A1 j9 K1 f
        22598,25107,33442,36836,40548,42927,43462];
    ; f' ]9 c& m5 D& S8 W, M4 B& O# O2 Tglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...  ^# I2 J0 h1 e$ R
        13320,16762,18673,20724,20803,21804];
    ! ~* q/ V: @) V  L& y5 V4 Jp=[sqrs;sqjdcs;sqglmj];4 X  O2 U+ V% B+ Q; x
    t=[glkyl;glhyl];  ^5 V& z# P& U9 a
    / H4 O% M: T6 ?% ~
    %数据归一化
    $ J% v# |. p1 v3 u" g0 `[pn,ps1]=mapminmax(p);3 k% S1 m2 C3 B7 P9 ?# k2 \
    [tn,ps2]=mapminmax(t);
    / O  S9 Z+ U* G. m3 fdx=[-1,1;-1,1;-1,1];+ X7 L+ u8 n6 {; s# q. ]. c# {
    2 ^; H" D" n1 B# U  w
    %BP网络训练# _, P1 J1 Z) U. W, x
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');* S8 M3 m9 Q" A1 ~: ^
    net.trainParam.show=1000;
    , J' x- {6 g7 w" ^8 Z/ b6 onet.trainParam.Lr=0.05;
    - v/ \; X; ?1 ^net.trainParam.epochs=50000;" V5 |7 t1 R7 c1 s8 y7 ~
    net.trainParam.goal=0.65*10^(-3);
    & s7 d( q& l' [, }# A3 Bnet=train(net,pn,tn);
    1 [0 D, {; c. ]" p, ~  n
    6 \* q6 q3 J2 I) l2 w( x/ R6 R%利用原数据对BP网络仿真3 e2 i6 K' f7 E* F
    an=sim(net,pn);. t  N3 z) o5 e
    a=mapminmax('reverse',an,ps2);& E: E; Q6 q% k

    # i3 t  a9 F# |( \. q1 n%仿真结果与原数据对比测试1 p1 t# U" N; [$ H. C3 A
    x=1990:2009;4 ~# l4 h& t0 x/ V2 q
    newk=a(1,:);
    4 ^6 C# A0 o( g5 ynewh=a(2,:);% W. Y* q* p" Q, w" F- i( b; b
    figure(2);
    7 F% M& P! i9 V! ]! xsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');: ?/ O  t' T7 i- Q' s
    legend('网络输出客运量','实际客运量');7 X, u2 w0 n7 w1 z" {3 E
    xlabel('年份');ylabel('货运量、万人');
    3 ^4 e- B0 S6 K6 h, K# D9 i+ M6 e- rtitle('运用工具箱客运量学习和测试对比图');7 Q; K" E" I- A0 B
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');9 F  m; p# ]* X/ \: b
    legend('网络输出货运量','实际货运量');6 V* ?9 `) @7 O
    xlabel('年份');ylabel('货运量、万吨');
    , `& D/ z: ]- y5 g( ~" Mtitle('运用工具箱货运量学习和测试对比图');! b5 c0 d. c( U3 A7 g
    ) _' r0 m5 V+ i' T0 F1 x7 S
    %新数据仿真
    4 u% g4 ?- x: X7 [$ K6 R0 cpnew=[73.39,75.559 x1 W% b4 d; [0 d4 m/ u' ^: Y
        3.9635,4.09751 _5 N4 ^3 G7 ^
        0.9880,1.0268];0 _" U, I$ l! v3 o7 \7 c
    pnewn=mapminmax('apply',pnew,ps1);0 j% d$ n  H+ q2 e' _6 e* ?
    anewn=sim(net,pnewn);1 E/ k* S- w* s' Q
    anew=mapminmax('reverse',anewn,ps2)1 v$ D+ x  }0 c

    * l6 i4 T- z* i  A1 C! P; R

    `VCWMZD9E$D~NHRR~AT9B4D.jpg (120.2 KB, 下载次数: 570)

    `VCWMZD9E$D~NHRR~AT9B4D.jpg

    zan
    转播转播1 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    gancm 实名认证       

    8

    主题

    13

    听众

    1831

    积分

  • TA的每日心情
    衰
    2015-5-31 00:30
  • 签到天数: 432 天

    [LV.9]以坛为家II

    国际赛参赛者

    社区QQ达人

    群组: 2013电工杯A题讨论群组

    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的地方说一下看看

    点评

    T-Eric  因为版本更新,Matlab中的Newff命令用法有所改变,原命令为: net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx'); 我修改为: net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');  详情 回复 发表于 2014-7-21 11:58
    回复

    使用道具 举报

    529084167        

    0

    主题

    9

    听众

    390

    积分

    升级  30%

  • TA的每日心情
    奋斗
    2014-9-8 00:44
  • 签到天数: 136 天

    [LV.7]常住居民III

    自我介绍
    我是一名学物联网的学生!

    群组: 2013年美赛优秀论文解

    群组: 物联网工程师培训

    群组: 第一期sas基础实训课堂

    群组: 第三届数模基础实训

    回复

    使用道具 举报

    T-Eric        

    5

    主题

    14

    听众

    259

    积分

    升级  79.5%

  • TA的每日心情
    奋斗
    2016-1-29 12:24
  • 签到天数: 81 天

    [LV.6]常住居民II

    自我介绍
    数学建模准备中...

    社区QQ达人

    gancm 发表于 2014-7-19 12:30
    * m  k6 b5 J% S看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    . N, W( a% q  \+ v) p# ?
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:# F/ A  p  ^1 z6 e4 c! G$ ?2 |
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');' d' ?/ Z2 z$ }! w5 n; C% y- ^
    我修改为:
    8 u5 \% m+ e6 u' t4 vnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    9 w) z# n6 l3 I" {3 t然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    $ r  L4 Q/ v6 z" b  J3 r7 ]+ t[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);1 O0 o- }8 W5 _1 R
    a=postmnmx(an,mint,maxt);
    8 ~! \8 U. q1 k6 o2 O3 i1 Z7 Y" Rpnewn=tramnmx(pnew,minp,maxp);6 X  ?- W  R, ?7 {9 T7 `/ p( r
    anew=postmnmx(anewn,mint,maxt)
    & M4 {+ M- s2 j1 u, U/ R我修改为:9 n4 I/ \; o' Q( y3 z) f
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);7 [" E' h" I( O' j# q+ E# B( e& _
    a=mapminmax('reverse',an,ps2);
    + p! `% W! }5 g" F) kpnewn=mapminmax('apply',pnew,ps1);, V) i# a9 r4 u7 a. a# H9 O# S4 y! P6 H
    anew=mapminmax('reverse',anewn,ps2)+ X8 \) W; I' R- z. G/ b' P6 y: Y- U. K

    3 C* k; r" W/ {/ n: Y" y原程序为:7 u) t, ~7 `" W, u5 t
    %原始数据输入! B* \- L. V- v$ c
    clc
    # x' \4 S$ y( Usqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...+ O- u; @$ U  [( N& R, S$ F; i
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];. V" c+ z  t' ^" F. \4 ?9 P
    sqjdcs=[0.6,0.75,0.85,0.90,1.05,1.35,1.45,1.60,1.70,1.85,2.15,2.20,2.25,2.35,.../ ]' r$ P. n: k, `1 B1 C
        2.5,2.6,2.7,2.85,2.95,3.10];5 l3 I3 G7 D5 n
    sqglmj=[0.09,0.11,0.11,0.14,0.20,0.23,0.23,0.32,0.32,0.34,0.36,0.36,0.38,0.49,...
    8 i$ U% K; A9 n& J9 R. r+ b    0.56,0.59,0.59,0.67,0.69,0.79];1 ]2 n0 q0 m% s7 u) }: I8 [& L
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    - f4 K0 {" x0 X2 S. W    22598,25107,33442,36836,40548,42927,43462];
    9 x1 g9 P7 J# Sglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...3 M/ w8 I0 ?* I3 y3 |
        13320,16762,18673,20724,20803,21804];" O8 O! B; d, \9 W# n# s
    p=[sqrs;sqjdcs;sqglmj];
    , c3 n; a% h$ e3 wt=[glkyl;glhyl];: J$ L: J0 b( Z# n3 _
    + e8 X0 q) c, `2 ^* K
    %数据归一化
    ( g7 V  d& r; C9 \: U[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);* D0 z) N5 d; F7 ?. n1 b
    dx=[-1,1;-1,1;-1,1];- g+ p0 _- d4 v1 G! B6 F

    ' P6 Q8 i/ `% U1 `) b0 Y1 p) P%BP网络训练
    1 W- j, N  C9 N) i. k6 Enet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');8 g6 v$ c) ]$ A8 t7 i( ]
    net.trainParam.show=1000;1 v' z% H6 E: F) E
    net.trainParam.Lr=0.05;
    " A0 a1 v* b* t* J4 C9 `net.trainParam.epochs=50000;
    8 b: f) b# B& X& L- \) W1 G2 Hnet.trainParam.goal=0.65*10^(-3);
    2 f- J+ V) }6 U4 ~& n9 cnet=train(net,pn,tn);
    0 g6 c( F  C: {; ^3 N+ k& ?
    7 o  A( E  g( m7 K& h$ K%利用原数据对BP网络仿真% y* n2 b( B  [3 c
    an=sim(net,pn);- ^, l0 D: y' R* _
    a=postmnmx(an,mint,maxt);2 h+ t1 Z# ?. R3 h

    ( N5 z# a1 Q5 r1 I%仿真结果与原数据对比测试% R9 l0 e' [" S$ `. ~, @
    x=1990:2009;
    ; F, ^3 l9 m2 g$ N! Qnewk=a(1,;" f  M  S$ l: `: I; h/ E/ X
    newh=a(2,;2 I/ s! P6 e3 [6 W7 s. k
    figure(2);- n7 V" i  @9 P+ m/ R
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    - b: M6 o* F/ D, m$ ~legend('网络输出客运量','实际客运量');
    % R! M8 K  }* y" Wxlabel('年份');ylabel('货运量、万人');5 X2 o( A5 e: H9 i# c% }
    title('运用工具箱客运量学习和测试对比图');
    * a* {9 K& Y% {subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    # r$ v+ N# k' y+ [& r9 U0 ^legend('网络输出货运量','实际货运量');, q5 i3 i1 f" F: i) U* `
    xlabel('年份');ylabel('货运量、万吨');" p3 l. Q. k% H  p/ L% R3 T' q
    title('运用工具箱货运量学习和测试对比图');
    ( ~! T; u  i+ x5 Z  p7 Y$ I$ K8 b" K- b: ]2 p
    %新数据仿真% }3 c  w- M2 g6 ?7 Q! n& y
    pnew=[73.39,75.55
    4 n2 p' r, F, U! n    3.9635,4.09754 X* m; ]0 Q  ?/ E, X4 v. Q
        0.9880,1.0268];
    & b2 L3 U0 `  e7 K) O3 u2 q& Tpnewn=tramnmx(pnew,minp,maxp);
    1 K3 b7 M9 a  K6 s' Ianewn=sim(net,pnewn);% y) u% Y7 G1 B1 u
    anew=postmnmx(anewn,mint,maxt)
    . O1 v4 Q  ?' r# M6 l# ]
    6 f0 E2 Y+ e7 P, Q7 d# \
    修改后程序为:. d0 Z# B; O4 P
    %原始数据输入
    ' Z& @' _5 ~- r/ H, \  Pclc
    5 t* p. h) Y  _! d4 S0 H6 Y, ssqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    + X2 s: v2 [7 N3 n- W0 d    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    2 A& ~" F7 B+ Z" H) wsqjdcs=[0.6,0.75,0.85,0.90,1.05,1.35,1.45,1.60,1.70,1.85,2.15,2.20,2.25,2.35,...- J: v. J3 ~* |9 K! ^6 r$ q/ V
        2.5,2.6,2.7,2.85,2.95,3.10];
    5 q+ G; A( M9 l. Y' usqglmj=[0.09,0.11,0.11,0.14,0.20,0.23,0.23,0.32,0.32,0.34,0.36,0.36,0.38,0.49,...
    4 S) }! ~% u" M/ y- f3 n0 \+ @! |    0.56,0.59,0.59,0.67,0.69,0.79];  q/ V6 y; N* _4 ^' L
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    " e0 Q6 ~3 G7 t( T) d    22598,25107,33442,36836,40548,42927,43462];
    7 V9 ^2 e* G+ s) v9 W$ yglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    $ \- B4 q- f  z, V3 f% D5 E. G    13320,16762,18673,20724,20803,21804];, `9 J3 S, D' K& C0 E' D
    p=[sqrs;sqjdcs;sqglmj];' z% M  R5 o! K1 o; s& I* b4 n
    t=[glkyl;glhyl];) x2 {2 s( `4 p. ~' W  P4 L

    6 \+ u4 j! ]& P$ L8 q%数据归一化. j8 i4 n4 x  Y  u/ x2 m5 V) [
    [pn,ps1]=mapminmax(p);4 x* @, j2 a, Q6 B- @. a. U
    [tn,ps2]=mapminmax(t);
    , C7 O* \$ j( o0 A) D% s+ ]9 y4 v5 J
    $ u) A( c% \  c! W. c$ V7 f5 ]%BP网络训练
    : `7 V0 p  Z' A' T9 S% w3 U8 Anet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');. v& z8 v1 C% n* B8 O- ^
    net.trainParam.show=1000;  n7 ^0 a8 O7 q: ?) O- q! C" e
    net.trainParam.Lr=0.05;
    . R0 Q# y  @& Vnet.trainParam.epochs=50000;
    ' o9 ?3 L* v* y: @8 a( Wnet.trainParam.goal=0.65*10^(-3);! j3 d) \$ x0 t5 X: `
    net=train(net,pn,tn);* R' K5 h0 z$ G6 y

    8 }9 M; n7 d9 ?7 m$ s1 U. |# h( P" h%利用原数据对BP网络仿真  R. c  W& q# G! c
    an=sim(net,pn);: S3 E7 C  {, P! j
    a=mapminmax('reverse',an,ps2);
    3 J# Q; r; r: i  b2 f* g
    8 k4 m3 T4 H$ z, Y! ^%仿真结果与原数据对比测试0 C7 @  P& E: x
    x=1990:2009;- y$ l- A% o9 |8 L4 ~5 C, }
    newk=a(1,;9 P( \" Q* d# i7 M
    newh=a(2,;% y" O8 F# `$ U, V6 f+ B5 U
    figure(2);
    & P3 @- ^$ u  Q  x: Bsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    . m4 R$ a) }. t6 u9 j( e  ulegend('网络输出客运量','实际客运量');
    # B) k. h2 U- S3 Xxlabel('年份');ylabel('货运量、万人');
    $ J; h: |1 j* O/ }/ d$ R' Dtitle('运用工具箱客运量学习和测试对比图');7 \, q' Q  e! d% l
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');+ W( |4 @' U' w5 }. O, e
    legend('网络输出货运量','实际货运量');. F, V# e% J0 Y
    xlabel('年份');ylabel('货运量、万吨');- H' {  Y- J$ c  E, r. x
    title('运用工具箱货运量学习和测试对比图');# w. }! R" r( U. c( L7 b4 v

    * s& [, q1 L7 d1 Q0 ~%新数据仿真9 P+ [: d( t3 G$ q+ I2 O4 _
    pnew=[73.39,75.55
    , d$ d" J. B5 g; j    3.9635,4.0975
    ) M5 B- A4 }+ F3 I! D8 b5 E    0.9880,1.0268];) J( g  ^7 ]+ M1 E1 Q: d
    pnewn=mapminmax('apply',pnew,ps1);
    - c" \  C- z2 z5 Y. Danewn=sim(net,pnewn);
    . u% ^! f. B$ z: v: Vanew=mapminmax('reverse',anewn,ps2)9 z1 `* N5 s8 B
    (修改的地方用颜色标记了)3 t4 q$ M, g' \4 u% O7 c
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

  • TA的每日心情
    慵懒
    2016-9-24 15:19
  • 签到天数: 412 天

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

    群组: 2013认证赛B题讨论群组

    群组: EXCEL

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

  • TA的每日心情
    慵懒
    2016-9-24 15:19
  • 签到天数: 412 天

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

    群组: 2013认证赛B题讨论群组

    群组: EXCEL

    1. clc
      % ~7 N\" D1 U9 j
    2. sqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
      * A' u3 ?2 Q5 A7 q& O8 p* B
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      1 m2 W3 |4 e2 Y# S* f' b! V
    4. sqjdcs=[0.6,0.75,0.85,0.90,1.05,1.35,1.45,1.60,1.70,1.85,2.15,2.20,2.25,2.35,...
      $ v/ ^! W  F/ f% t' F
    5.     2.5,2.6,2.7,2.85,2.95,3.10];6 O% T9 n' \8 Q6 k, g, Y( G
    6. sqglmj=[0.09,0.11,0.11,0.14,0.20,0.23,0.23,0.32,0.32,0.34,0.36,0.36,0.38,0.49,...$ p6 h\" a8 f/ b8 v7 U
    7.     0.56,0.59,0.59,0.67,0.69,0.79];. H* ?  ]( ?1 r$ e
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...  L. I& [  U/ a3 j! Q# r
    9.      22598,25107,33442,36836,40548,42927,43462];
      4 T1 _) u/ g% a
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...  x; v1 Y\" g& D& z) q' A# R
    11.      13320,16762,18673,20724,20803,21804];/ ]2 A/ [; k7 H0 p8 }! [: q; A
    12. p=[sqrs;sqjdcs;sqglmj];
      & D1 J6 [3 A0 ~
    13. t=[glkyl;glhyl];
      7 B$ D\" y) X( }2 |( c  v$ {
    14. %数据归一化8 G  Y1 ]4 t* \3 z9 V6 Q' z/ v; E
    15. [pn,ps1]=mapminmax(p);
      6 Y2 D( m- Z; f7 z! E: V2 G& q
    16. [tn,ps2]=mapminmax(t);
      $ Z+ h4 [! D6 K9 m$ q! l3 g\" W: V
    17. %dx=[-1,1;-1,1;-1,1];7 p- F* {3 |' w6 n  E4 c
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]6 `# c* n+ k/ u# Y  `! A& m4 n

    19. % m( v* h- Q6 m3 m# p/ H* P# j
    20. %BP网络训练* z' z8 E; a4 @3 h7 r7 B9 h
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]4 D& e: n( r( n% J8 Q! D
    22. net.trainParam.show=1000;
      4 g8 h5 Y9 F9 b5 T) f
    23. net.trainParam.Lr=0.05;( k% W' L5 v3 z) ~3 i
    24. net.trainParam.epochs=50000;
      ' Y  J: G$ ~- \
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]2 x% H8 w0 z0 J$ w- W7 [
    26. net=train(net,pn,tn);
      7 |4 Y1 x\" K7 S& P/ a3 f0 K5 ]

    27. \" d) y; `& ^\" Y! W8 L
    28. %利用原数据对BP网络仿真
      . a6 F3 j8 }7 ~1 q6 U9 |% q6 u. X) W
    29. an=sim(net,pn);
      . p8 X9 m9 `6 n7 f1 }% p6 V
    30. a=mapminmax('reverse',an,ps2);# @; x5 R% l$ N( V1 q6 [  ]
    31. 9 u1 F' Y/ z7 g6 i7 ]  a. x/ q# r
    32. %仿真结果与原数据对比测试 \" r+ L7 `4 N8 d- L) J4 z
    33. x=1990:2009;5 G0 p9 e  V8 \* s9 x
    34. newk=a(1,:);\" s- D- R\" Z: \% V3 X# s
    35. newh=a(2,:);
      . p  k- _/ f) h/ \% r4 M( W
    36. figure(2);7 Z+ U+ g- a: a& P* |3 `: k
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');- O% e+ S\" j\" c7 d\" x% F! ]
    38. legend('网络输出客运量','实际客运量');
      + W% d6 ?+ h  c) b
    39. xlabel('年份');ylabel('货运量、万人');
      4 f. Q& u; l% w/ K# e# e
    40. title('运用工具箱客运量学习和测试对比图');
      2 O6 ?' B' F2 z. {
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');* j\" f- b' V( Q/ ~% x* a( Y6 t# I
    42. legend('网络输出货运量','实际货运量');
      7 w# y7 _0 e5 X- n( {
    43. xlabel('年份');ylabel('货运量、万吨');- @4 o5 e) h1 ?- f' \
    44. title('运用工具箱货运量学习和测试对比图');% Q; ]6 T. V4 K7 E! c
    45. ! l+ I4 [$ C* Y\" y, u) E
    46. %新数据仿真
      + J, E/ T$ f, a
    47. pnew=[73.39,75.55# d* J* O\" @. S+ j; r
    48.      3.9635,4.0975
      7 z, y2 Z  W2 n. ?( z
    49.      0.9880,1.0268];
      3 m; Z$ d+ b( K& v3 ?' {  {
    50. pnewn=mapminmax('apply',pnew,ps1);
      / {2 |7 D5 f2 A\" b' F& z
    51. anewn=sim(net,pnewn);) w\" y' L3 O! _' W  F' p. c
    52. anew=mapminmax('reverse',anewn,ps2)
    复制代码
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

  • TA的每日心情
    慵懒
    2016-9-24 15:19
  • 签到天数: 412 天

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

    群组: 2013认证赛B题讨论群组

    群组: EXCEL

    忽略我上面那个,改动的地方在18,21,25行……求批
    1. clc$ ^2 w- _/ w5 {6 a
    2. sqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
      5 f% g% N4 w/ U3 ?1 }) {3 n
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];/ m0 T. V\" n8 H/ a2 ^1 n% V' _8 H
    4. sqjdcs=[0.6,0.75,0.85,0.90,1.05,1.35,1.45,1.60,1.70,1.85,2.15,2.20,2.25,2.35,...8 c- t% v; y+ b- c. n% D# C; o7 L
    5.     2.5,2.6,2.7,2.85,2.95,3.10];( J7 U/ c$ p. W
    6. sqglmj=[0.09,0.11,0.11,0.14,0.20,0.23,0.23,0.32,0.32,0.34,0.36,0.36,0.38,0.49,...
      6 Z$ f5 x9 A3 l& X, Q2 o
    7.     0.56,0.59,0.59,0.67,0.69,0.79];7 a/ x3 X7 s$ z8 _& E' G% A0 c) V3 V
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      1 }2 Y! a7 H9 `' N2 {: E/ K. R. E
    9.      22598,25107,33442,36836,40548,42927,43462];
      , X7 Y- Z; c$ x# V9 e8 n
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...& {! c7 K, {$ u8 x\" n  }
    11.      13320,16762,18673,20724,20803,21804];
      * B0 g3 {) T4 K) R: Y2 |
    12. p=[sqrs;sqjdcs;sqglmj];
      & G+ l6 ]' v8 h! ?1 e7 S
    13. t=[glkyl;glhyl];& ~8 b, K3 i\" u. d, o2 ~  Y
    14. %数据归一化; `. f8 [2 m' p
    15. [pn,ps1]=mapminmax(p);
      ; Z, Q. t4 }/ w+ M# Q
    16. [tn,ps2]=mapminmax(t);. ^3 t: ~' P\" j6 S\" V8 \! A
    17. %dx=[-1,1;-1,1;-1,1];
      0 K' l' w; f5 U( [' }2 \1 n
    18. p0=minmax(pn);t0=minmax(tn);
      0 T! S8 R1 q\" |- V\" M3 f* D! a! a6 g
    19. 3 P) g. p8 i% L
    20. %BP网络训练
      , F! C5 x/ [3 L5 `' e' h
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      + B6 i) K5 y5 P+ I
    22. net.trainParam.show=1000;9 a0 O3 W4 L* m2 v; K3 W0 L
    23. net.trainParam.Lr=0.05;6 r7 W6 A/ `) k6 N7 [0 ]- u( z
    24. net.trainParam.epochs=50000;
      1 K% z$ V- U0 j' B: E
    25. net.trainParam.goal=0.65*10^(-5);7 w1 V\" y% s$ J) j8 d2 L: O
    26. net=train(net,pn,tn);; |: R8 V2 A. O# r$ V
    27. 6 J) a! Q# X8 S+ @& j
    28. %利用原数据对BP网络仿真
      + y2 b- ?9 ]# [, m6 m
    29. an=sim(net,pn);# B\" v+ D. y4 O% N) J4 i+ g\" S
    30. a=mapminmax('reverse',an,ps2);
      5 T& Z7 a5 f; d4 y! u, T# V( X

    31. 6 a7 C0 ~& B* I( b) _7 M
    32. %仿真结果与原数据对比测试
      ( @: O& W8 i, O$ T\" m
    33. x=1990:2009;1 z* u: @$ }$ s+ \& `8 g9 v. K
    34. newk=a(1,:);
      5 ~- S4 }. p# R! J
    35. newh=a(2,:);
      # C2 t. [6 \1 \: P, W2 t2 x\" \, s7 `
    36. figure(2);
      # e7 K- q% ?- O+ L- g* e
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');2 Z! [9 E' p6 H& ^% T
    38. legend('网络输出客运量','实际客运量');3 r' K; }4 P* K- n6 l4 O1 Z4 m
    39. xlabel('年份');ylabel('货运量、万人');
      6 h/ m% l& ]! r; K# }
    40. title('运用工具箱客运量学习和测试对比图');
      3 b* f/ h* H* F3 B* Q  k
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');5 [6 a& V  J9 p- g- U
    42. legend('网络输出货运量','实际货运量');
      6 s4 _* b4 W' Q2 ~% b
    43. xlabel('年份');ylabel('货运量、万吨');
      3 M1 i0 Q# z$ C% N$ _4 z0 H
    44. title('运用工具箱货运量学习和测试对比图');
      \" r# P. @9 h8 d! v- j- H3 }
    45. ! B; G\" C1 j$ d4 \! m
    46. %新数据仿真
      8 J0 K) E8 {% v0 J1 Z, q9 x
    47. pnew=[73.39,75.55
      9 M8 F/ D, Q) q5 b, G
    48.      3.9635,4.09754 T, O\" m# y* C3 b/ a4 Q4 ~
    49.      0.9880,1.0268];
      4 a\" N2 ?* x- C1 B
    50. pnewn=mapminmax('apply',pnew,ps1);
      & U  a8 b* ~; H  ~\" y2 i+ I$ o
    51. anewn=sim(net,pnewn);3 @# @' H+ M$ w\" ^( _$ q( t\" [
    52. anew=mapminmax('reverse',anewn,ps2)
    复制代码

    点评

    T-Eric  确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。  详情 回复 发表于 2014-7-22 21:14
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    T-Eric        

    5

    主题

    14

    听众

    259

    积分

    升级  79.5%

  • TA的每日心情
    奋斗
    2016-1-29 12:24
  • 签到天数: 81 天

    [LV.6]常住居民II

    自我介绍
    数学建模准备中...

    社区QQ达人

    且生 发表于 2014-7-21 18:22
    8 j# Q. }) p* O7 h! ^8 p* z* V$ C6 P忽略我上面那个,改动的地方在18,21,25行……求批
    # f' c! i2 r9 o* m9 H4 w: n$ d
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

    p1.jpg (166.22 KB, 下载次数: 605)

    p1.jpg

    p2.jpg (158.1 KB, 下载次数: 564)

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

  • TA的每日心情
    慵懒
    2016-9-24 15:19
  • 签到天数: 412 天

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

    群组: 2013认证赛B题讨论群组

    群组: EXCEL

    1. %BP网络训练4 e- ^9 u* O\" ^
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); & l& w6 P( R9 i- @
    3. net.trainParam.show=1000;
        y& @* V' h# @) t& B# `
    4. net.trainParam.Lr=0.05;
      $ N, `/ A- Y! v
    5. net.trainParam.epochs=2000;
      - E. w\" K3 v* ?\" J' s  r
    6. net.trainParam.goal=0.65*10^(-4);8 L( J2 G0 `: [, {( C$ k
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,4 k, `6 S3 {- P& L' M& O, J7 L- i
    一、改成单隐含层的,6个节点
    7 a3 F; {1 @3 ~0 P3 I6 D' ^二、训练函数改成梯度下降BP算法 traingd* r* N5 T1 k' ]! ~
    三、迭代次数改成2000
    - f+ _4 p# \$ p0 _8 }) L' B上面的参数是自己试的,我也不知道为什么。
      t" I$ ?/ n- T- m3 p& H由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    7 m* t1 g% L7 ]0 ~6 x3 X3 p( t关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

  • TA的每日心情
    慵懒
    2016-9-24 15:19
  • 签到天数: 412 天

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

    群组: 2013认证赛B题讨论群组

    群组: EXCEL

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-11-1 09:01 , Processed in 0.314743 second(s), 106 queries .

    回顶部