QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5126|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!9 y  O* g' k$ z# }

    1 X: O- t2 |( o! ]%原始数据输入
    + k1 U/ U" V% j0 N# E5 K' fclc
    . y6 M2 e3 T7 l6 B4 C' o6 _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,...; S2 R1 |! Z6 n/ I! h
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];2 N! D2 y/ V% n0 F$ f! J6 S+ c
    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,...
    ' c5 q+ l: A! \9 S* n    2.5,2.6,2.7,2.85,2.95,3.10];+ d; |% n5 t  v3 C$ Z$ {+ T
    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,...
    ' Y% v* c$ f: `  F* N    0.56,0.59,0.59,0.67,0.69,0.79];
    + a6 \# ?$ h5 N1 lglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...% z- Y6 x  o! j- U4 M( h. U5 [
        22598,25107,33442,36836,40548,42927,43462];
    5 H  d! m8 C1 J- Hglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...5 J& @: P, t0 q  `6 F
        13320,16762,18673,20724,20803,21804];
    ; z  u" b1 ~- x" [p=[sqrs;sqjdcs;sqglmj];
    5 P  b' C# r% G! Ot=[glkyl;glhyl];
    ! u0 d/ r1 C3 s" b8 ]; A9 m: ~; O4 @+ C8 Z9 P0 s- t
    %数据归一化
    , S0 Z- w4 d: m* `[pn,ps1]=mapminmax(p);- S5 ~; w* \) r( Q
    [tn,ps2]=mapminmax(t);* \! G3 S3 Q" v" G6 f  U7 z9 `
    dx=[-1,1;-1,1;-1,1];
    3 _' ^& D& _3 U! F' Y: b& Z; ^) h. R8 _
    %BP网络训练
    ; g. h. Y5 G( n% Rnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    6 \* t  O  s0 Xnet.trainParam.show=1000;( b; i0 H! C9 Q6 p8 X9 p* y8 A
    net.trainParam.Lr=0.05;% E) `- o4 t! x+ w, C. b2 H
    net.trainParam.epochs=50000;
    5 f! f& @0 b( ?net.trainParam.goal=0.65*10^(-3);" M8 C: Z1 A! Y2 n! n  {
    net=train(net,pn,tn);
    # s- ^) Q& Y) a* v' K" A' S% z: P
    %利用原数据对BP网络仿真
    3 A' c* u: n( K8 z" y- P/ v& ]an=sim(net,pn);
    ; R- k8 q) p; g3 |% La=mapminmax('reverse',an,ps2);
    3 E1 R% B; c; l" N: s' `- `9 p( r* d( F
    %仿真结果与原数据对比测试; f0 p8 \. L5 Q8 ]- }/ C5 M4 I
    x=1990:2009;: z! `! C, O2 C8 a8 {- O
    newk=a(1,:);2 T! ^, E+ K. ]& Z. q
    newh=a(2,:);
    / o, s, ^) w1 w' l  J  E" q# ifigure(2);
    5 w; F6 T6 O1 I/ ]1 o: K! Csubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');9 Q9 w( \; M' g% C1 ^* _
    legend('网络输出客运量','实际客运量');
    . j/ J& D) ?5 }  fxlabel('年份');ylabel('货运量、万人');0 q4 F* L* Q- `% }3 P
    title('运用工具箱客运量学习和测试对比图');3 F* ?! e$ q' S8 F  q" ?) c
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');: j1 G8 g  Y6 a, C" u% G7 ?7 V
    legend('网络输出货运量','实际货运量');
    2 g/ I3 `3 u& T+ l7 @6 J" a; \xlabel('年份');ylabel('货运量、万吨');
    6 h5 O" ]. y+ h# w7 k1 ~2 Qtitle('运用工具箱货运量学习和测试对比图');
    : n5 S/ v! b+ P; p1 n# W! ~& G. o8 E1 J5 W7 E8 X3 |
    %新数据仿真
    7 S8 N8 `1 D0 @3 X/ upnew=[73.39,75.55
    # P5 u3 R' S/ o    3.9635,4.0975: ~) B& ]3 R) T: W" F& H
        0.9880,1.0268];
    $ z- ^; u% e# rpnewn=mapminmax('apply',pnew,ps1);$ v$ Z, v" ^* }8 |0 Y- ^
    anewn=sim(net,pnewn);" ^* T4 N* b1 ]
    anew=mapminmax('reverse',anewn,ps2)
    ' q, R( x' U/ d
    7 @! ]) a7 j1 u3 I* T1 A

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

    `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 / ~2 Y: _* p6 O$ x, K' w
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    ; j4 H  _/ p3 S' Z
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    3 K9 @9 U: i% K, }* a: Tnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');6 H- ^# Z$ b" K  W* s$ ]% Z
    我修改为:
    * ^1 [4 N8 y2 t; Cnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');, b6 Z8 j4 f1 O3 `. y6 S. }- w  |
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:6 I; h% D3 z2 N( M# D' ~
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);6 i  ?& F; A" f" R
    a=postmnmx(an,mint,maxt);( ^$ K; {) R( c% n9 g# U4 q( S% U. P
    pnewn=tramnmx(pnew,minp,maxp);
    8 b- a9 d* c( v% oanew=postmnmx(anewn,mint,maxt)/ V1 p3 W9 T, ~; X1 \: Q
    我修改为:6 c6 b* d/ e" C5 K2 k% |/ t! l! N
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
      a! ^' G4 _& C# x5 ga=mapminmax('reverse',an,ps2);5 \! ]1 Y, [/ @# V' [  H7 `1 z
    pnewn=mapminmax('apply',pnew,ps1);
    ( ]' Z$ Y- Z/ |& E8 zanew=mapminmax('reverse',anewn,ps2)4 B- V' \) j( N7 y- t4 q9 M) i

      [; R+ [+ s( E原程序为:
    4 N( J/ i  I& a0 S! f/ o%原始数据输入+ n; [1 A( {7 v3 q
    clc: J8 u1 X1 t! m) V
    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,...- U2 h; T8 |$ f' j4 \, y5 y2 y! t
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    " a- Y3 t; g: S" R& Osqjdcs=[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,...  U& ~! T* k5 Q" i& V
        2.5,2.6,2.7,2.85,2.95,3.10];
    " [+ C; H. s7 J, o3 W7 J- G; Isqglmj=[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,...
    0 Q3 H$ i/ Q' P0 f8 e8 C% N    0.56,0.59,0.59,0.67,0.69,0.79];
    1 i. V6 G+ T0 T5 `8 a+ P' Zglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    9 D- J. ^% g7 m    22598,25107,33442,36836,40548,42927,43462];0 M! D0 I- B) ?$ k& d5 A/ y8 c2 ^, n
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    . `4 k) `' Q% O# f% I    13320,16762,18673,20724,20803,21804];0 m6 m, U) f) M: O
    p=[sqrs;sqjdcs;sqglmj];
    9 [- ^0 `4 K* h8 D3 U& }6 s) St=[glkyl;glhyl];
    3 {2 g% ?: R4 f4 r7 {6 k5 q" i- v2 x8 _' H" v/ A3 O! h
    %数据归一化
    ) s/ t4 U) {6 Z6 v" I[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);6 y, Y8 W! _+ g; R6 X
    dx=[-1,1;-1,1;-1,1];+ f: `: S" \: A3 |" U

    / P9 L% l. j) k$ Y%BP网络训练
    - z4 Z. [. J0 z& q# N3 }0 V* Nnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    0 L: s2 \% m, ]% l* `1 E3 ~net.trainParam.show=1000;' [$ N3 ^( D) o- B% R, D
    net.trainParam.Lr=0.05;  k/ ^, c$ W" P: ?
    net.trainParam.epochs=50000;
    9 L' {/ j- l+ r9 A9 wnet.trainParam.goal=0.65*10^(-3);, h9 W+ ^2 c  ]2 h( F5 J6 Y5 \6 f3 I: E
    net=train(net,pn,tn);
    / m$ ]# U7 _3 I) m
    5 x. m, x, {% k" c7 F) T%利用原数据对BP网络仿真! J# L& l3 p2 h9 v
    an=sim(net,pn);* I# z6 }/ Y, N% w
    a=postmnmx(an,mint,maxt);; a. I/ s$ d8 s) A
    " c! W2 R* a6 z' V/ D' P; e1 j6 b
    %仿真结果与原数据对比测试" M) G0 W. X* f
    x=1990:2009;
    3 L# p- }5 X- N! fnewk=a(1,;
    ) |, V0 M& g2 Inewh=a(2,;
    2 y: N+ Z- ]0 M) @6 m( I( D# ^figure(2);2 C1 L6 C$ Y( i
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    * B# A' @) \' ]. h  [legend('网络输出客运量','实际客运量');
    # _+ \: v. L! {/ v9 jxlabel('年份');ylabel('货运量、万人');
    1 Z3 M0 X) n9 J* R! gtitle('运用工具箱客运量学习和测试对比图');
    ( ]$ p0 A( O5 G4 K8 ?9 @. f) Usubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    6 ^; h$ {; h, Nlegend('网络输出货运量','实际货运量');
    7 L' ~0 L+ W6 Pxlabel('年份');ylabel('货运量、万吨');
    / E4 R& N+ N! ^; q" c" p) l3 Ptitle('运用工具箱货运量学习和测试对比图');8 \8 a, a3 _. ~' k

    * B1 i/ w) \9 N* v%新数据仿真6 m' o5 M" Q7 {! v4 T3 Q4 M0 \
    pnew=[73.39,75.55
    , t$ M/ p) `( }8 x! G& K7 G* Y# E    3.9635,4.09757 l- {% [/ b7 J, d* n
        0.9880,1.0268];" }0 m' `* R' Z9 z
    pnewn=tramnmx(pnew,minp,maxp);
    ! }: s0 i$ o& c. n/ W' u0 R5 _0 [1 Panewn=sim(net,pnewn);: _7 |! N; @, ^0 V& C4 Y( p
    anew=postmnmx(anewn,mint,maxt)
    ' x  ]( [6 P: _0 q: a: `
    + E8 V- c* {( D2 U3 f
    修改后程序为:
    . y2 t2 N: `9 @- b: o%原始数据输入
    $ I3 x% t. R# ], F8 X& k+ ^clc9 F* u( k* g: V+ T8 F# F
    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 Z* e9 q* ~) m0 b" ^: t    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      g% T% X; J4 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,...+ t( Z" P9 }4 a  \
        2.5,2.6,2.7,2.85,2.95,3.10];
    & i( R& k/ ?# ^$ Ssqglmj=[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 p4 o  ~5 q, T
        0.56,0.59,0.59,0.67,0.69,0.79];
    & R8 U% h) }% C: X, fglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...& m# b8 Z) j0 @
        22598,25107,33442,36836,40548,42927,43462];
    5 {$ b1 H5 H6 v' Z' Lglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    7 Y' W$ ?* F7 J! v% b0 W! Y    13320,16762,18673,20724,20803,21804];
      p! d3 @# b0 a& H- L7 q% P2 b) op=[sqrs;sqjdcs;sqglmj];
    ! u# o  z3 s. L) q  J: ]0 Et=[glkyl;glhyl];9 K; {1 g! O9 t8 a
    # _; T7 t. ?& M  a
    %数据归一化
    ! a, r( ]3 F1 {: `[pn,ps1]=mapminmax(p);3 S1 V9 Q6 C. h# m4 }4 F* J; E
    [tn,ps2]=mapminmax(t);
    , q0 T; p1 W; H, R/ ~7 s2 d9 K* f& H$ J, I) `& K" u% W& N
    %BP网络训练# C/ B. l& w  r. `  W" W
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');! \& D8 K4 i, E, c
    net.trainParam.show=1000;
    ; h( t0 k$ t  G  _net.trainParam.Lr=0.05;
    3 g( F/ R1 A4 ]8 a1 Wnet.trainParam.epochs=50000;
      J! c; ?3 h1 t, m) P! P3 wnet.trainParam.goal=0.65*10^(-3);+ {4 C* X$ V( V) q4 Z
    net=train(net,pn,tn);
      X+ v+ b+ H: {4 n2 q( M+ \4 a5 [
    %利用原数据对BP网络仿真( u& p; }; E; m( `7 C% f- s8 I
    an=sim(net,pn);! t8 n6 @$ b/ H4 N
    a=mapminmax('reverse',an,ps2);
    7 C0 S* |5 w1 A. }; }8 x& W/ ~$ V7 |: X: u5 ], y5 e
    %仿真结果与原数据对比测试
    7 k9 \5 |4 U% Jx=1990:2009;
    & X; W6 g5 q9 ^7 i: jnewk=a(1,;
    + R& ]2 f4 P# J2 t0 ~# anewh=a(2,;
    6 t9 E+ V- C3 F2 Vfigure(2);/ y" X1 v* A0 ?: T! p; s
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    $ T+ g/ p' f0 u! z) b8 nlegend('网络输出客运量','实际客运量');& {! p: ?) S; L% C  U
    xlabel('年份');ylabel('货运量、万人');
    * Y, ]1 e  N0 a7 E8 r$ Ctitle('运用工具箱客运量学习和测试对比图');
    1 p5 d0 o+ b4 w' g9 s- Fsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');2 B' h" V# }$ S
    legend('网络输出货运量','实际货运量');
    " w. p: j9 p- ^$ Cxlabel('年份');ylabel('货运量、万吨');$ I3 q: Z; }; t( \
    title('运用工具箱货运量学习和测试对比图');8 q6 O) s, v+ \) Q9 e/ O6 v
    / e: R$ @* ?* L8 K
    %新数据仿真. J% j. f' ?7 b+ C
    pnew=[73.39,75.55" h- V' D3 z: I: w. P2 e
        3.9635,4.0975
    ) ?( P5 z) v( y    0.9880,1.0268];
    ! I  s6 L  R" Z! _* ppnewn=mapminmax('apply',pnew,ps1);
    1 A. `: C* n, z) F: L; Xanewn=sim(net,pnewn);
    . s3 H  `8 u7 s. \% ]& Hanew=mapminmax('reverse',anewn,ps2)
    7 o1 z, F' d( j4 S- O: T(修改的地方用颜色标记了)1 d% k4 U; K% V
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      1 Z3 Y5 D) J& E7 ~0 ?7 @
    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,...
      8 c! c3 p5 G7 {. f. P# ]
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      6 E& o6 {3 N$ ~2 x- P
    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,...
      * |; X% d) V8 P$ W8 ^
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      + C* `. S/ p& W9 N' g+ w& m* O
    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,...
      ' Q5 ?3 D1 K/ b
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      $ T4 M2 r: ^% w* i5 `* a
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...+ _- j* P4 M7 B2 u) Q& G* ?
    9.      22598,25107,33442,36836,40548,42927,43462];
      \" u5 s8 F% q% g, d
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      ) L1 I5 d$ F  y
    11.      13320,16762,18673,20724,20803,21804];
      8 k1 y  l) u\" ?( l2 n- J- G
    12. p=[sqrs;sqjdcs;sqglmj];
      / c; V, \$ ~. v$ B9 l- M) r- U2 w
    13. t=[glkyl;glhyl];
      6 ^, M: ?8 E' ^% Y8 q3 k
    14. %数据归一化  M+ Z, q$ g0 n& {) ^
    15. [pn,ps1]=mapminmax(p);
      % l+ _/ l6 a! z2 J5 ~, ^
    16. [tn,ps2]=mapminmax(t);
      8 V/ M* w) ]5 I6 T& J1 s# c
    17. %dx=[-1,1;-1,1;-1,1];( p) e# C2 D( T* @+ `, O! g
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      ! \- y  g3 C7 e' ~
    19. 2 V$ O/ C' p+ b7 z! \9 B: z2 b
    20. %BP网络训练  h. `- g8 \# w+ {  f! X( l* E
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      ' b' }0 n, r\" t. z) Z. i
    22. net.trainParam.show=1000;
      ' h$ H& D0 ?0 Z/ W
    23. net.trainParam.Lr=0.05;5 C! H. a6 k1 o$ i( W
    24. net.trainParam.epochs=50000;
      . W  N4 h3 g1 p\" N1 v
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      0 O- o' Q4 n4 Q7 Z0 I% J
    26. net=train(net,pn,tn);2 c* l: J7 F4 Q6 L& ?( K
    27. & e$ T+ U8 R1 V! z2 G3 m
    28. %利用原数据对BP网络仿真) I, n0 j& `5 l% J) }
    29. an=sim(net,pn);  q; r# E7 s. e* E8 {! o$ m
    30. a=mapminmax('reverse',an,ps2);4 n& I& _' T8 _  j3 G, i3 h3 {( r: i
    31. : Q! y+ p7 g, Z1 r
    32. %仿真结果与原数据对比测试
      / U. [\" v1 z: S! w
    33. x=1990:2009;
      1 C+ O3 Z: ^8 x) m+ g
    34. newk=a(1,:);$ n0 H/ v' u3 O. V0 `# v2 K  k
    35. newh=a(2,:);
      . S6 _* `8 x/ _
    36. figure(2);
      2 w$ `' P4 g0 R) ~* i; L
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      4 J- k5 V; ]' j$ q0 \; m, Q
    38. legend('网络输出客运量','实际客运量');3 Y+ v$ S( s$ _: w
    39. xlabel('年份');ylabel('货运量、万人');
      ' P. P& n- O+ q: j2 f; u
    40. title('运用工具箱客运量学习和测试对比图');. h5 U$ P3 G\" _1 a0 O
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      . e9 g4 G  {5 t7 _' @* f5 O( h
    42. legend('网络输出货运量','实际货运量');
      0 ?\" E8 {0 ]; `4 R1 d5 }: }( ]6 n, E
    43. xlabel('年份');ylabel('货运量、万吨');; e) W5 n0 }' ?6 ^9 k0 Y8 j8 ?
    44. title('运用工具箱货运量学习和测试对比图');
      & }: g7 n) y) {/ n
    45. & T8 d; w5 C- p; e1 K5 |
    46. %新数据仿真\" y- h4 Q* I. A8 t5 W! s\" j4 [
    47. pnew=[73.39,75.55- F/ K9 p# f2 R1 A
    48.      3.9635,4.0975
      5 z# }: g' B- E1 M: @, J& T0 ~  L+ @
    49.      0.9880,1.0268];
      0 Y  i9 X, X* f+ P# n. w
    50. pnewn=mapminmax('apply',pnew,ps1);
      * p' j$ D# R0 a' ~( ?0 I9 C& m- W6 a
    51. anewn=sim(net,pnewn);
      $ _* T( T  L\" \6 P8 C8 c- l
    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
      / C, W% C$ v( Q- `& E7 ?
    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,...( c7 J\" a; p, j! }, m
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];7 s9 F/ o* |& {) u
    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,...
      * y' U3 h* E/ L) g- O
    5.     2.5,2.6,2.7,2.85,2.95,3.10];5 K6 N8 d* V* {2 M
    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,...
      & ]! U8 j9 X+ [7 C* a3 C; j) G+ L
    7.     0.56,0.59,0.59,0.67,0.69,0.79];$ {- z) a8 f1 ]
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.... Y3 p' o9 A% B3 F9 y+ G6 J# d
    9.      22598,25107,33442,36836,40548,42927,43462];
      * w5 V9 [1 w7 t; U  j& y, n3 X# l
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      ) m  K# A& Q# X6 @- y1 H
    11.      13320,16762,18673,20724,20803,21804];
      1 G9 B' l# n5 C7 B2 M: C+ o
    12. p=[sqrs;sqjdcs;sqglmj];4 C0 t. K* N- G
    13. t=[glkyl;glhyl];: R& t$ R5 ~4 v\" E* h0 N
    14. %数据归一化, o\" m1 R1 a' E  M& y
    15. [pn,ps1]=mapminmax(p);
      9 ^7 h; V; a1 j  f% s# ^
    16. [tn,ps2]=mapminmax(t);
      3 w: O( A4 o1 N$ v# ]9 N\" G
    17. %dx=[-1,1;-1,1;-1,1];% X$ L- c* z; G+ x\" V4 ?
    18. p0=minmax(pn);t0=minmax(tn);
      9 x% ^4 [/ v1 p9 v

    19. ! N& A7 p- o3 J7 N2 C* n, c6 ]
    20. %BP网络训练
      7 Z8 \5 P\" W3 h( J( G
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      9 O3 u8 ~1 n) O
    22. net.trainParam.show=1000;8 n, }, g' K2 }5 \& F& X# Y
    23. net.trainParam.Lr=0.05;& I% l0 h3 ~8 J$ S\" p) z
    24. net.trainParam.epochs=50000;0 i9 C& _4 D: |7 ?
    25. net.trainParam.goal=0.65*10^(-5);6 o$ X& v/ e6 p/ F) }/ {
    26. net=train(net,pn,tn);& r6 v8 T  }8 u& J, M6 a

    27. 6 x# i0 L' I! G! Z5 _
    28. %利用原数据对BP网络仿真
      + A- E( r% l* f
    29. an=sim(net,pn);
      + n6 Q3 M5 h! _. F. ~
    30. a=mapminmax('reverse',an,ps2);4 g5 y6 P3 N% I\" z' m( j

    31. - s0 V5 t, z! B. `
    32. %仿真结果与原数据对比测试 5 {; J' q\" p( \
    33. x=1990:2009;
      2 v6 t. Z% k4 n4 W/ Y
    34. newk=a(1,:);! z; q3 W2 Q0 t! T- N' ~
    35. newh=a(2,:);
      8 O! t/ S3 Q* P: V/ s1 _8 _0 a# {
    36. figure(2);+ f; z: j' C8 ~# Q# I$ D9 i5 Z* s6 p
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');8 O3 j6 {% W: N6 C
    38. legend('网络输出客运量','实际客运量');
      3 f8 y% Y! i0 [7 K# c
    39. xlabel('年份');ylabel('货运量、万人');
        G* h8 S. Y3 C4 B
    40. title('运用工具箱客运量学习和测试对比图');- A5 I6 I2 m; G\" K7 e
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      + }4 h2 C$ n& |  b7 P
    42. legend('网络输出货运量','实际货运量');
      9 B( a3 j1 p- I
    43. xlabel('年份');ylabel('货运量、万吨');0 Z  Z! H8 }% Z& l/ t$ C
    44. title('运用工具箱货运量学习和测试对比图');
      / m3 d1 q: B, [5 l6 p7 G+ G& D  J  W
    45. 7 S: i\" K\" U: h# f! U
    46. %新数据仿真
      & o8 z- i- n. k  H, r0 j: L: K9 B
    47. pnew=[73.39,75.55
      5 H' }# r( C8 r, f, F) o4 J
    48.      3.9635,4.0975: N8 L5 y2 x+ f0 N  d( f+ c
    49.      0.9880,1.0268];
      3 n* p\" I8 ?$ e, z' z
    50. pnewn=mapminmax('apply',pnew,ps1);
      9 \! ^; O0 A: V# i: L& a
    51. anewn=sim(net,pnewn);
      . @* d\" n2 I7 z6 `& I% n! N3 A0 B& K
    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 7 {0 q* C* z" s- q6 ]8 n
    忽略我上面那个,改动的地方在18,21,25行……求批
    & E: L+ J7 ^- C" g7 q6 k
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

    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网络训练0 g; j/ \4 f8 X\" c\" A& j
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      \" q* J: F; ]$ Q6 N1 s1 K4 m
    3. net.trainParam.show=1000;
      , T& K\" e* V' Y( @( x8 o! ?( D
    4. net.trainParam.Lr=0.05;
      0 f) a6 ?$ ^; w. S# d2 m
    5. net.trainParam.epochs=2000;
      / _. j\" S7 i8 k9 |- N5 M
    6. net.trainParam.goal=0.65*10^(-4);
      ' w- o( t4 Y8 e
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    / V, R, k" @3 W* D1 E一、改成单隐含层的,6个节点1 {" n6 Y6 b+ B2 H' O# A4 t, n
    二、训练函数改成梯度下降BP算法 traingd, v$ N$ S' u  ?" u6 E
    三、迭代次数改成20009 v3 a; g. Y' i$ r
    上面的参数是自己试的,我也不知道为什么。
    # X1 r' Q+ t) [2 [  Q; Q由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。' s" P  s6 v4 H# w5 J. @9 W) @8 T3 U
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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 14:39 , Processed in 0.275677 second(s), 102 queries .

    回顶部