QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4317|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!2 E7 h$ U$ }! Y
    9 I/ ?. H  Y; r- o: a1 q
    %原始数据输入
    # o9 V- ~- x# o. J! k/ F: Pclc6 ~2 i: e$ L/ E2 R4 P! R& j  M  \% ?
    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,...
    3 [3 q, i- h9 [  ^: o9 T$ h    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];# J( k+ L3 F6 a6 C0 t/ Z# L
    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,...4 N8 E) n2 `+ \2 Y% \8 u# Y) x
        2.5,2.6,2.7,2.85,2.95,3.10];# n; E( A! a: }
    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,...
    , F  s. r0 ?5 _) `1 c. l* W    0.56,0.59,0.59,0.67,0.69,0.79];. W. q0 A4 F; A& M
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...: m6 E! k) U7 y& j
        22598,25107,33442,36836,40548,42927,43462];1 H+ [/ E! G" v' U. K
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...0 J5 S9 }  Q7 ~& M1 W* J8 O4 o9 P# O
        13320,16762,18673,20724,20803,21804];4 q* j$ G6 H6 r$ @/ j
    p=[sqrs;sqjdcs;sqglmj];
    2 u- Q) ~- C, R+ V5 |t=[glkyl;glhyl];
    + P, b) v  g% y& K
    $ T/ Y7 S. n2 M0 M7 [; E%数据归一化
    ! |5 i/ x" Q( Z' J' R8 a[pn,ps1]=mapminmax(p);
    , R/ l7 w- @8 N0 [3 e[tn,ps2]=mapminmax(t);
    # B9 K- Q) ]. J5 Z2 [dx=[-1,1;-1,1;-1,1];
    # e: I: B2 }2 e7 {8 @, I! ?9 ^( {. Y
    %BP网络训练! d7 G. y3 l' S  B7 J! y1 ~
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    1 P/ r* D3 a; Cnet.trainParam.show=1000;
    ; |8 R7 D- ~/ h* h* z  [- C0 Y3 Xnet.trainParam.Lr=0.05;
    & Q) A. t, X7 d) B: fnet.trainParam.epochs=50000;: r. K2 @5 M7 P3 N+ n* K. e9 s
    net.trainParam.goal=0.65*10^(-3);1 E; z$ L) k( A9 z) o0 `& G
    net=train(net,pn,tn);6 F2 J; A0 E5 k7 ?) p
    ( r0 H) l: g0 Q8 t/ K/ _1 \* d2 J+ g
    %利用原数据对BP网络仿真
    5 r9 X9 G+ y! I* yan=sim(net,pn);( m; Q+ s7 |; v3 }7 K* a9 r
    a=mapminmax('reverse',an,ps2);/ u- ?+ B' ]" Q7 J9 R( j8 J$ s" m2 s) f
    * R( Z! `- _" [) c
    %仿真结果与原数据对比测试
    & M& Y  c* D  a0 }3 ex=1990:2009;
    # s9 V# \9 A. @7 wnewk=a(1,:);1 n3 e3 \+ j5 J, i9 b9 Y
    newh=a(2,:);
    , C, Q+ ]) A6 M0 a6 p4 }figure(2);
    0 Z" K$ y6 P3 Z3 Bsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');, ?% |/ Q2 l/ @$ j1 w( R8 ]1 H4 `+ u
    legend('网络输出客运量','实际客运量');
    ) }9 y6 c8 M+ d: \xlabel('年份');ylabel('货运量、万人');
    9 I7 N, C* j+ r# f4 ]7 A* btitle('运用工具箱客运量学习和测试对比图');
    # F) v, t( Z% Isubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');% }2 }1 R9 s2 A- S; }) J
    legend('网络输出货运量','实际货运量');, S2 j1 Q  w& c+ @
    xlabel('年份');ylabel('货运量、万吨');
    1 @% D& X# N) h8 @title('运用工具箱货运量学习和测试对比图');
    + z: B4 V* v( y3 Q. g- P1 x8 @, G: W! m
    %新数据仿真  X6 k2 P( @& k+ _8 _/ D1 C
    pnew=[73.39,75.55
    $ R+ b* Y; D8 f# M    3.9635,4.0975/ j) ^. W4 V) e1 y
        0.9880,1.0268];
    3 [! c( G$ X9 P$ Z: `8 Z9 cpnewn=mapminmax('apply',pnew,ps1);
    3 V# {8 f8 k* ~  `: Q9 Wanewn=sim(net,pnewn);! w! k3 s, s3 t9 S
    anew=mapminmax('reverse',anewn,ps2)% p! G' b' K% ^$ d; n5 R3 d4 @" e
    0 K* j' |- ?8 y3 P

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

    `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 0 c) G8 B: [- |- v  S6 |, N
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    6 l, k9 j( b* j因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:7 y! M3 E! M  k, o# P, Q( D- z
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    / H( w, C/ u; o+ o/ K2 U# p我修改为:
    9 B  M$ Z! }, ~' m( `1 ]net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');+ Q& Z4 n* C. m: S1 m
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:2 X* h: q! S" T8 ^2 j" ?4 h- j
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);5 y) N- F- d% u2 p
    a=postmnmx(an,mint,maxt);  ^* N7 o1 z+ |7 L2 t
    pnewn=tramnmx(pnew,minp,maxp);. M% r/ I% f3 D* ]+ z" y" O, _8 p0 w. |
    anew=postmnmx(anewn,mint,maxt)
    9 K. {! ^/ i$ L2 V6 S8 u我修改为:
    $ i; m  n* K6 ^) j[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);# u, `; [# r2 W: Z$ @! w4 Y  n( N3 z
    a=mapminmax('reverse',an,ps2);0 Y8 X* K2 p) H* c/ J; G( S
    pnewn=mapminmax('apply',pnew,ps1);
    7 d0 Q$ u8 v, T8 X& b! nanew=mapminmax('reverse',anewn,ps2)
    : d9 M; ]! a% d- O$ K! W+ `
    5 _4 j2 L1 p9 r' Y) ]0 ]原程序为:* n7 `+ O8 y  ], f
    %原始数据输入  l0 G: I# p( P* n
    clc) R. W! s8 z5 l5 }' K6 Y& _0 M2 l
    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,...
    3 t& e" f1 O! i& {, o6 ~; P; w    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    * W% e" }8 I2 E0 W. csqjdcs=[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,...
    7 Y4 f' B; v( D    2.5,2.6,2.7,2.85,2.95,3.10];6 ~" ]/ l  A3 q  i
    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 a0 _$ I9 d2 L. D/ q% d* F+ ?    0.56,0.59,0.59,0.67,0.69,0.79];/ z) z4 ?' ]$ ]" L0 y1 _9 G" M) O" y
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    - T7 t9 C  A+ \    22598,25107,33442,36836,40548,42927,43462];2 W( W8 D; ^8 F. s
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...! [/ n  W1 d; ~: X8 k: H( E
        13320,16762,18673,20724,20803,21804];1 a6 V* G2 C2 P) e2 ]
    p=[sqrs;sqjdcs;sqglmj];, c3 b, }. V9 H5 H3 @* _! i* V6 H; Z
    t=[glkyl;glhyl];
    7 q2 a4 W+ V% [8 W4 m0 }: C' s& e. q# h
    %数据归一化6 J5 p* c3 ~* t3 ^
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);2 E. q) C; {& U5 _4 r$ f$ Z* F
    dx=[-1,1;-1,1;-1,1];2 O4 c* ]4 Y: N: \" B$ r
    % {! h% |, M2 t; k  @* X
    %BP网络训练$ J5 j3 M1 z0 [3 z  R* ^3 {+ e
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');6 C9 T+ `1 D" l* S4 x( n
    net.trainParam.show=1000;: M7 P* @; A1 w; Y' c; b5 j
    net.trainParam.Lr=0.05;
    5 g* S4 H% u0 Q/ f9 unet.trainParam.epochs=50000;; d7 B1 g( O; L5 P/ o5 Y7 F7 v4 A& h4 }
    net.trainParam.goal=0.65*10^(-3);
    / e+ M2 [+ s3 x: q; |- D. |net=train(net,pn,tn);
    2 G# l) Y0 c( h% k9 T: B: B) `8 E. S3 O% q" [! Q/ j+ j7 }1 @$ x" L9 v
    %利用原数据对BP网络仿真& G9 L8 r& n# m* b
    an=sim(net,pn);; r+ R1 y4 I/ e! y& u  r& c
    a=postmnmx(an,mint,maxt);& y3 R  q: F  j( U+ T* Q0 b5 c

    . l; `7 Z: r) c9 f: J/ F) t, e%仿真结果与原数据对比测试2 ~& @8 w* ~7 |  n" N- q3 O
    x=1990:2009;- {7 {' r, |' f2 r: A
    newk=a(1,;
    # _8 u' ?/ `0 `* G/ Z/ rnewh=a(2,;, Q& A& R" H) a& {, s
    figure(2);8 ?) G+ `; _* c( s: a% c7 |# [8 c
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');) ^$ a' _( l6 m: [$ ~5 S+ A
    legend('网络输出客运量','实际客运量');9 @7 o% B1 O! M  w; ~0 o7 S
    xlabel('年份');ylabel('货运量、万人');: ~) P5 y' g1 U8 |2 T' V
    title('运用工具箱客运量学习和测试对比图');7 i9 k- }% G" b- G9 s0 `) q0 @! {# n
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');  v/ `1 U- A+ q, n
    legend('网络输出货运量','实际货运量');; G/ W# C% t5 |' x% [5 H
    xlabel('年份');ylabel('货运量、万吨');
    9 y/ S! Y$ ?$ r, R' B& Q9 T$ ^title('运用工具箱货运量学习和测试对比图');
    ! j. r# G% j" H9 k5 L0 o
    1 M3 ~  Z  O5 A: H%新数据仿真
    ) z+ B8 {# S; P: Dpnew=[73.39,75.555 L- b8 W! c0 Z6 W" N# V4 j4 ~0 K
        3.9635,4.0975
    ; d/ r5 J3 m* V" f* `, K2 R    0.9880,1.0268];
    ( [9 p  W: V% _7 E( Bpnewn=tramnmx(pnew,minp,maxp);2 D1 g9 Y0 G! k* L! j
    anewn=sim(net,pnewn);6 N: w- x$ B+ U5 q! u
    anew=postmnmx(anewn,mint,maxt)

    ! n( ?5 M# i4 G1 g8 Q# d
    1 j- u$ r4 |( q" p5 U修改后程序为:
    4 W4 y/ \  F% i%原始数据输入/ m7 ]3 T5 {5 U2 P$ c, h, _' k
    clc
    6 [/ E# K. n0 `1 Lsqrs=[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 b4 v9 D6 e6 t2 m# G    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];3 h: p$ J# d7 H1 q" }
    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,...
    9 F) A) ?4 \# P    2.5,2.6,2.7,2.85,2.95,3.10];
    ' ?: o' C( |/ U" \5 g- }3 w, P! Wsqglmj=[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,...; L0 ~4 t' l4 i
        0.56,0.59,0.59,0.67,0.69,0.79];+ \* K) ]7 |, P$ G+ a
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    . R0 {  x. C' e0 I) P) {8 Q- F# V    22598,25107,33442,36836,40548,42927,43462];
    " i* j6 R# `0 @$ i+ n9 zglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    . S* Q0 U1 P/ L  W, u2 F2 U    13320,16762,18673,20724,20803,21804];
    . P0 q2 N/ A& K# l, g8 h( Dp=[sqrs;sqjdcs;sqglmj];
    ! K3 W8 @$ z* A3 e& ^+ W& [t=[glkyl;glhyl];
      v4 {5 b( l& u" `' ~+ ?5 c, K! ~5 u/ I3 X# D  M8 B
    %数据归一化# @' L  r. A/ G$ i. x
    [pn,ps1]=mapminmax(p);
    7 X, L' V) W+ G# i. L" Y[tn,ps2]=mapminmax(t);4 T8 _- x5 b# S1 N) C% L0 j2 m5 c0 v
    " {/ E8 S  ~; o4 @/ h7 c
    %BP网络训练
    0 b% C+ n% k8 ~) W& l9 ^$ Qnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    * k; J* M% d" r8 i* ^$ s1 V1 _+ wnet.trainParam.show=1000;
    * `1 }) J1 R9 t# Nnet.trainParam.Lr=0.05;( y- t& K) A6 ]7 Z. s" o3 S
    net.trainParam.epochs=50000;9 l$ x* e+ j* m/ F: W7 m0 a" \
    net.trainParam.goal=0.65*10^(-3);% F7 l1 x) T6 g( a! q) R
    net=train(net,pn,tn);8 \/ p# U% J" y" \0 v+ j
    6 h; b, c& ?1 L7 e
    %利用原数据对BP网络仿真
    7 S# {8 q3 U- a5 h5 Ian=sim(net,pn);* s/ @- A* d! C
    a=mapminmax('reverse',an,ps2);# R* s5 s. U1 B$ ]( p  |( u
    . D9 T0 @, a1 U8 P- t
    %仿真结果与原数据对比测试
    # X1 b8 @1 |9 rx=1990:2009;
    + n! U+ y4 |! q" R* D: Enewk=a(1,;
    ) p( `) s1 ]% |( Y1 t4 Onewh=a(2,;8 W5 E, S9 K* @: r# `
    figure(2);
      f) C/ w2 T, h, Nsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    ( H8 K1 V% w' g: slegend('网络输出客运量','实际客运量');
    ; F/ N$ R% ~9 R+ l2 j1 V( wxlabel('年份');ylabel('货运量、万人');+ A' D  L# n8 S& x- m- |& a# N
    title('运用工具箱客运量学习和测试对比图');
    / S- w" \7 W: l% r; c$ s9 ]subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');3 y* ?9 d6 H6 K* ], Q! V9 e& Z
    legend('网络输出货运量','实际货运量');
    4 r" P( b$ P2 h, ~* Rxlabel('年份');ylabel('货运量、万吨');
    ; E; n2 m9 A6 l# E! }6 Utitle('运用工具箱货运量学习和测试对比图');- t2 ~: K6 k* r1 O- S
    0 O9 B8 n& X6 Z( K: O
    %新数据仿真
    ) Z9 p4 @+ W* J) J/ f0 k. N+ rpnew=[73.39,75.55
    # X5 L( O2 s/ Z/ |    3.9635,4.09750 }  }, @# T: U$ u
        0.9880,1.0268];
    4 V" h4 w) B/ H/ z/ u, Zpnewn=mapminmax('apply',pnew,ps1);
    4 u9 R# o8 z' S" h$ V( g' Oanewn=sim(net,pnewn);
    $ j: c! b0 o( I' O9 ^) r/ [4 Xanew=mapminmax('reverse',anewn,ps2)/ \" K; s5 z3 b' g+ b
    (修改的地方用颜色标记了)
    % J. V2 x8 b$ z0 T' d* j麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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\" {/ \  w( e, J$ E& O\" X+ f; I
    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,.... `  ?# k1 u) x3 T. N
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];' r7 Z4 Y1 p# J) c5 M
    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,...
      ) e% {( U: x9 ^( S! d' z
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      ( B5 V' @( Z- Y) V8 c8 S
    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,...
      ; i! c) a& `9 a+ h
    7.     0.56,0.59,0.59,0.67,0.69,0.79];8 ~9 e8 p( @1 @1 s2 I5 }& U( U
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      : V) ~- J* p, i  i
    9.      22598,25107,33442,36836,40548,42927,43462];
      + V# g' }7 S9 Q5 y; n. }) n6 G
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...2 Y4 g9 P! f2 s9 F1 ?' J- e
    11.      13320,16762,18673,20724,20803,21804];+ q+ }+ ]% q2 ~, n
    12. p=[sqrs;sqjdcs;sqglmj];, {; B; o  o\" F5 u/ }( B2 ^8 R
    13. t=[glkyl;glhyl];1 A! j0 p4 k8 m( ]; O
    14. %数据归一化
      0 Y' ]+ ~6 x7 U7 @. ?5 S) X- w
    15. [pn,ps1]=mapminmax(p);
      ( y5 ^8 g( P  B' [# s\" |4 ]
    16. [tn,ps2]=mapminmax(t);: t% D- }- g: R0 `) m
    17. %dx=[-1,1;-1,1;-1,1];; ~4 s( I2 b4 z0 z
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]# [3 r8 U$ F1 U. f

    19. + d  X3 n7 D6 _; K, x( ^
    20. %BP网络训练
      + ]; z+ v7 f! i  f7 U- {
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      ) L* }8 s/ _* K9 S2 X4 c
    22. net.trainParam.show=1000;
      8 ]% e+ h: h3 Y/ d0 n+ l  r% w* N1 A
    23. net.trainParam.Lr=0.05;9 x$ A0 \  S4 s
    24. net.trainParam.epochs=50000;
      + f5 z8 k5 Y$ R3 {/ h
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]1 l+ H2 A( I9 j2 G& I$ d
    26. net=train(net,pn,tn);
      5 P; S, z\" x  e+ ~+ X% B

    27. 6 k5 B0 _( w0 @: X$ \( G; C) d9 x
    28. %利用原数据对BP网络仿真
      4 {5 k+ w, Y; ~8 R2 s$ q. ^! i
    29. an=sim(net,pn);  n' Y5 p: j5 x
    30. a=mapminmax('reverse',an,ps2);
      ! ]0 s- g+ B2 o0 N
    31. 0 s: R# u1 W. f0 G% m
    32. %仿真结果与原数据对比测试 * X9 f4 C; E+ p2 I! r
    33. x=1990:2009;* `7 ~! x; ]; R( s! b  M& z
    34. newk=a(1,:);
        |; c( h( I4 R0 J+ p$ m  S
    35. newh=a(2,:);
      9 C7 a$ p6 y5 u* A
    36. figure(2);
      ; K+ }6 j# N# I0 K. g
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      3 p5 N5 B0 u1 N$ ]' E\" g
    38. legend('网络输出客运量','实际客运量');9 l; z4 B2 A, h3 c: e
    39. xlabel('年份');ylabel('货运量、万人');
      5 k8 v; p& A* }2 z
    40. title('运用工具箱客运量学习和测试对比图');
      & Q7 D2 W2 z2 U5 y+ Q
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ! [9 {# Z$ o- Q
    42. legend('网络输出货运量','实际货运量');! v8 R7 T* n! ^' U
    43. xlabel('年份');ylabel('货运量、万吨');5 e; D7 I- d  ]1 k+ m6 j8 q' j( V
    44. title('运用工具箱货运量学习和测试对比图');! n( O+ L5 O0 C7 V, o
    45. 1 Y9 P# m3 V$ S2 A5 t4 S
    46. %新数据仿真/ z4 F1 t1 l/ m( N% T+ [1 G
    47. pnew=[73.39,75.55) `, D  h8 U. d\" `: _
    48.      3.9635,4.0975! a7 {. [+ p$ R; z9 C
    49.      0.9880,1.0268];
      9 z+ p2 B7 A\" j# w: {
    50. pnewn=mapminmax('apply',pnew,ps1);& `% A/ F: ^- W5 \. |  p# }& B3 m
    51. anewn=sim(net,pnewn);
      8 [1 L9 w% b# ?: R! x% K
    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  T- n/ T9 j: \+ R) i0 |
    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,...  p) r, Y% H! y) c) F- i4 @
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];$ q/ i+ p& P3 N\" E
    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,...9 ~! S- l\" ]: U+ @% y; W
    5.     2.5,2.6,2.7,2.85,2.95,3.10];8 E* E4 x* k8 f8 _
    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,...# y7 k4 f6 X# H& ]
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      # b$ m( I# o: D( C5 C+ U  g
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...3 G! r% z. i\" I! l0 M
    9.      22598,25107,33442,36836,40548,42927,43462];4 C4 ]3 X5 A, ]2 R( ]% u
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,..., o/ P2 m8 b( v
    11.      13320,16762,18673,20724,20803,21804];2 v! J2 x' M# B. z0 U' q: o
    12. p=[sqrs;sqjdcs;sqglmj];1 o2 _9 n8 r: i& E
    13. t=[glkyl;glhyl];
      5 s- W, [6 o& A5 q7 ~
    14. %数据归一化8 l$ b2 I& L( g( |8 M
    15. [pn,ps1]=mapminmax(p);
      9 L- Y' z2 Z4 a; s
    16. [tn,ps2]=mapminmax(t);7 O3 X; S* I8 ~6 A& L! k  _8 Y
    17. %dx=[-1,1;-1,1;-1,1];# X, G9 Z+ ~9 U\" }
    18. p0=minmax(pn);t0=minmax(tn);
      0 r\" b; `' f5 A

    19. 3 M! N0 g. t9 {* I
    20. %BP网络训练# A\" `; N\" J6 j3 G5 a+ x
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); 3 s4 q  d1 K0 y5 w
    22. net.trainParam.show=1000;: r7 i) y1 b5 R+ @! _, X
    23. net.trainParam.Lr=0.05;
      ( g: l( X4 P& \* U- P, V- r+ L
    24. net.trainParam.epochs=50000;4 E, [) z* l8 {% R$ _6 D2 ^
    25. net.trainParam.goal=0.65*10^(-5);
      . k8 n) q$ t3 f0 R$ d
    26. net=train(net,pn,tn);* [% |! \\" ~8 {, _) I0 E1 f\" f5 A

    27. ; S( g# T. t3 q% E7 ^7 V
    28. %利用原数据对BP网络仿真
      ) b1 E7 P, K# b4 o; L
    29. an=sim(net,pn);
      ' B1 f1 F9 D2 d% Z
    30. a=mapminmax('reverse',an,ps2);
      ) I( U/ m# G2 n6 K. x% v3 h. W, t

    31. ' s+ ~, ^0 s5 s+ M' |' \
    32. %仿真结果与原数据对比测试 + V0 V% o) J% M\" W5 }, t6 X6 f2 t
    33. x=1990:2009;$ o9 F1 W: O4 k! Y0 y( i
    34. newk=a(1,:);: N5 P# Y2 `! l- s; ]
    35. newh=a(2,:);
      / ?) ]+ ?7 }# f% j. J
    36. figure(2);
      9 M1 o, q( E/ ?% C! T4 `( T
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      ! U$ i1 v! r; ?0 [1 Z) e
    38. legend('网络输出客运量','实际客运量');* j/ ^: X& E; g5 K2 w; E
    39. xlabel('年份');ylabel('货运量、万人');* {/ m1 I4 b- P0 B/ E' O; z8 y
    40. title('运用工具箱客运量学习和测试对比图');4 a: f' z+ o1 @8 t) j, b2 C) H7 T* A
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ! D7 s\" e2 x7 J- ^  c
    42. legend('网络输出货运量','实际货运量');
      * w) V9 C; C, H( o8 s
    43. xlabel('年份');ylabel('货运量、万吨');8 l7 j- _8 d! \( `- j! K9 r7 |6 Y
    44. title('运用工具箱货运量学习和测试对比图');% x! n9 m, K3 a) P

    45.   {3 n8 w7 f+ y0 w  A9 h6 t4 U% z: v
    46. %新数据仿真
      $ X\" k9 Z3 p9 V! E
    47. pnew=[73.39,75.55
      ' Q  E, ^, ^! U# X5 A
    48.      3.9635,4.0975\" X9 Z4 J; o. b\" Y
    49.      0.9880,1.0268];
      7 O$ G% K5 R/ Q, ~6 C  N( `% K
    50. pnewn=mapminmax('apply',pnew,ps1);) v- {& M& `% @  y) D4 V- L
    51. anewn=sim(net,pnewn);
      & I' G* f+ \0 f( _5 M\" N7 }
    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 " E$ h5 O; A3 [
    忽略我上面那个,改动的地方在18,21,25行……求批
    / O" g" ?; m1 |3 ]- s" V. w+ I/ m
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      + Q2 k* W- g, `\" R- A! ?3 _% s
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      7 c# i# M+ I5 h9 I) ~  g
    3. net.trainParam.show=1000;3 G  u# q. n' G) z6 v
    4. net.trainParam.Lr=0.05;
      9 F% e, g  W/ `0 v# |( F- V
    5. net.trainParam.epochs=2000;
      & r9 [$ n% q# ~# p
    6. net.trainParam.goal=0.65*10^(-4);& d* E/ O+ I$ M- G
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,, F2 E# V0 k# V" U- [
    一、改成单隐含层的,6个节点
    " X: F5 g3 F# h  f9 C7 ]) t二、训练函数改成梯度下降BP算法 traingd
    6 f$ q  r/ J; N( ]0 p三、迭代次数改成2000
    ( X" y8 Y# T5 y; }; T0 U1 p上面的参数是自己试的,我也不知道为什么。
    ( C# _+ a1 y" A8 o" @由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    4 l1 v# o. M# R1 B0 K7 x关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-7 03:22 , Processed in 0.658401 second(s), 102 queries .

    回顶部