QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4815|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    + }: f) }0 Q7 Q1 a
    * L7 L1 _" L+ |%原始数据输入
    1 m7 b2 M- N' T6 q; p5 P: qclc
    3 X/ V, m" o& s" c- \% {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,..." W0 w! C* u5 a0 O$ H5 F7 `
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    1 t0 F# R  Y; D# Zsqjdcs=[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,...! a+ N5 S: d! T3 I
        2.5,2.6,2.7,2.85,2.95,3.10];% n1 F4 S4 g/ S3 k5 H/ S
    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,...# r, s: ^, n' d% I* |5 x
        0.56,0.59,0.59,0.67,0.69,0.79];4 [4 s/ d; Z1 E( r$ l  [
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...3 K( s8 p$ R7 h; Z/ P
        22598,25107,33442,36836,40548,42927,43462];4 t; B  _5 h# \: F& L( k
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...1 k9 o& M( C; ?1 Z8 J0 p
        13320,16762,18673,20724,20803,21804];
    * Q' L+ M. ^0 W# x$ v$ kp=[sqrs;sqjdcs;sqglmj];
    " c, s0 x8 l; o: G2 }' @t=[glkyl;glhyl];4 y+ P5 v+ R* K  f

    4 s+ s9 z+ A8 U, U5 B3 l) C: a8 p  m%数据归一化5 {2 H7 b5 v6 H2 T4 d; u
    [pn,ps1]=mapminmax(p);! T* N* M9 ]) f- F
    [tn,ps2]=mapminmax(t);7 o2 {+ ^3 _3 T
    dx=[-1,1;-1,1;-1,1];
    ) v, N7 B8 S% }9 ?9 O0 c# Z3 ]1 C0 g+ Q- X7 _: U% R
    %BP网络训练( E( F# {9 X4 p
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    2 D: G  C2 m0 G1 b! d, s4 znet.trainParam.show=1000;' @+ m1 J; I8 d+ K+ }- G  M% q; A
    net.trainParam.Lr=0.05;% C( c" Y. {/ }2 H& n! T9 R/ x8 P
    net.trainParam.epochs=50000;
    1 t9 D/ Z" X+ x" R- h1 N0 c0 ^net.trainParam.goal=0.65*10^(-3);
    8 {& ?+ T2 O. S2 i8 onet=train(net,pn,tn);: W- `* H0 M+ d& }( e/ u
    3 y' Y0 V9 u9 \2 N) E
    %利用原数据对BP网络仿真0 \2 F4 J. c: C, H+ Q: \
    an=sim(net,pn);
    2 j0 f( B8 h& ~. ?0 Wa=mapminmax('reverse',an,ps2);
    5 o: t7 r, l" t, k, T, M; w: Z, I! d8 O& F, T3 c+ Q6 D) R: \0 ^
    %仿真结果与原数据对比测试$ f/ [* }8 L* s+ M: W8 l
    x=1990:2009;
    ! J1 ?6 h  p- Fnewk=a(1,:);
    2 t/ Z8 M. w" S0 A( ?6 Fnewh=a(2,:);1 t- ]7 l4 P6 |$ K, a: M
    figure(2);$ s  R& E7 O9 f1 o, j8 |! I( z
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');5 p4 \% M3 L7 a- @4 R) H
    legend('网络输出客运量','实际客运量');
    + o" m9 {* c4 Q" axlabel('年份');ylabel('货运量、万人');7 P8 t  z1 ~' Q% j4 T. s6 r
    title('运用工具箱客运量学习和测试对比图');# h4 b3 X' a0 {& b& I% b
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ; d& W3 j6 U& g5 M+ j5 L. Llegend('网络输出货运量','实际货运量');
    9 T$ F3 }- Q7 E( m+ K4 dxlabel('年份');ylabel('货运量、万吨');/ H+ F6 \3 F0 \+ K) v
    title('运用工具箱货运量学习和测试对比图');
    6 L- O/ o3 b& j4 a. ?
    2 L. ?8 p- ~7 {) N%新数据仿真
    2 b0 K+ I' g! |( w  d: @) d/ Z2 x5 |: ^pnew=[73.39,75.551 T; i. d: P* y# ~, _; U
        3.9635,4.0975
    9 ^8 d, j/ ^) ]8 Q1 w# Z# f/ p6 O    0.9880,1.0268];
    # ]% Q# i9 `3 b- Q" `8 bpnewn=mapminmax('apply',pnew,ps1);$ x9 x4 O; }, n5 S. f
    anewn=sim(net,pnewn);
    9 w* x/ D& U0 g! i5 ^anew=mapminmax('reverse',anewn,ps2)3 M- [# e- E) H  y/ r
    6 {, m( f; _, V! r

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

    `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
    & N- u% X+ g" X/ ^+ I看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    0 r; X% X+ c+ g3 {
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    3 h  g# J. u- H3 W1 pnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');$ x1 x/ ?5 _: h& X" s' e
    我修改为:! n4 H! f- ]( a6 J9 |9 b5 v6 K
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');/ R, q: p) h* V/ y8 K. j$ T$ ]2 l
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    1 |0 V. {. h$ F4 C[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    4 f% W8 t9 j6 w; O) e5 o# w+ pa=postmnmx(an,mint,maxt);
    6 p+ [4 J0 u; X& `8 Dpnewn=tramnmx(pnew,minp,maxp);
    4 B  J2 U4 E. R! x' t: F' \anew=postmnmx(anewn,mint,maxt)
    ' E/ H( J- [& J6 O: Y) e% f* r  n. O1 u2 m我修改为:
    + ^  P! A! Z+ Y- L[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    % M4 v0 W0 K" Y; ^a=mapminmax('reverse',an,ps2);' v( i! d# r+ W+ q1 O$ N/ h
    pnewn=mapminmax('apply',pnew,ps1);  Y, y- _/ o" o" j+ ]
    anew=mapminmax('reverse',anewn,ps2)6 a, e# k+ W% o+ V0 S

    1 |# m/ v: ^0 c! ^% @, G原程序为:. h8 n% ^) a7 O9 j$ O
    %原始数据输入
    , W8 |2 C  T0 V9 Z: Mclc
    9 ~4 q, O% f) D' isqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...# m  Z2 W- o3 z9 a( D+ R& O
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];0 `/ m, E/ ?  h! p$ r1 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,...
    & e' Z- n  {8 R& g1 S    2.5,2.6,2.7,2.85,2.95,3.10];) d- Y5 t  w( Q/ ]
    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  h0 @4 M+ B0 j. j7 D, e7 k
        0.56,0.59,0.59,0.67,0.69,0.79];2 ?5 ?$ P) c) V2 q1 t- s# r
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    * `6 p2 Y$ ~' O& v! t    22598,25107,33442,36836,40548,42927,43462];
    - p& h7 Q4 }) s$ J/ ?8 W; Gglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...  O4 p4 ^9 I6 s1 H
        13320,16762,18673,20724,20803,21804];
    / Z0 v, v  n8 o6 @- T+ M" g: ip=[sqrs;sqjdcs;sqglmj];+ x7 K1 ?$ c* l; ?
    t=[glkyl;glhyl];
    1 a* i6 m5 P2 w1 @5 P
    0 I: Q) U+ D9 [4 |/ ~0 B) @; d$ z%数据归一化
    # p" S# ]  z9 q/ Q' d) W9 c; |! C[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);' m; L( Z9 y  o2 }6 Q
    dx=[-1,1;-1,1;-1,1];& s7 q# A, {: ?4 K5 m

    * Y+ J( Y9 j. {0 K% D3 M' p8 h%BP网络训练
    2 i2 C( T5 F+ m9 Z$ pnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');. ~8 a/ a+ p% {' v7 }1 a
    net.trainParam.show=1000;% _( E8 |8 o/ b. z/ j2 \( P
    net.trainParam.Lr=0.05;% \: y( m7 _: m9 Y8 x; W: V" m
    net.trainParam.epochs=50000;% O& O% [( @# z- ?, o( _
    net.trainParam.goal=0.65*10^(-3);* `' a3 N3 }8 B2 T, e; n
    net=train(net,pn,tn);
    % R1 E# K1 P3 E3 [) h) O" V- w
    & t7 {$ p# z0 |%利用原数据对BP网络仿真: z: z3 F) G, t0 ^& C( Y& {7 I
    an=sim(net,pn);1 l( t8 R% r  _
    a=postmnmx(an,mint,maxt);
    ! l. O$ @# l2 b, `0 V% Q% Q$ S# D5 t* u
    %仿真结果与原数据对比测试
    5 z0 t6 I$ [. }$ a+ O/ ux=1990:2009;
    - ^) c: G. f: k4 D+ Lnewk=a(1,;
    0 D+ ^6 T6 e8 Z; ]. enewh=a(2,;# O4 I0 r# X, j% C8 ~' C
    figure(2);
    1 k( v7 j' K+ m8 }% |/ _subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    ' g: I& }/ U% P/ F7 Hlegend('网络输出客运量','实际客运量');! A* e* e1 l9 x' D
    xlabel('年份');ylabel('货运量、万人');1 }# m$ H7 x5 ]! ?0 n
    title('运用工具箱客运量学习和测试对比图');$ z' L: Y. M. Z0 l
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    4 `; ]! a5 G3 N3 l* Q* Alegend('网络输出货运量','实际货运量');1 z' U. _/ b* Q  g1 O, X
    xlabel('年份');ylabel('货运量、万吨');! h# N" T3 ~* q4 e* R0 o; H
    title('运用工具箱货运量学习和测试对比图');
    + d0 D8 c! Z. Q- n9 A( E* u$ G. z. `4 L4 F! ]
    %新数据仿真2 }+ n/ H  R/ j: }0 G: j- M9 B
    pnew=[73.39,75.55
    2 q' r, j9 E* z; g    3.9635,4.0975
    + o1 ?8 D) L) {, v    0.9880,1.0268];
    & n, N" T5 P. @1 [3 zpnewn=tramnmx(pnew,minp,maxp);
    , ~' n9 ^- f. u9 ranewn=sim(net,pnewn);
    ) q, ~4 b8 W( F! F& I) `. F: I: |anew=postmnmx(anewn,mint,maxt)

    9 H9 A4 D0 U! j+ P8 j% E$ z+ T% _: Y' j9 o( _, f5 R- M; U, A
    修改后程序为:
    3 F' m$ G7 r( r* C& S/ A5 ~%原始数据输入4 M% {) B: A6 _  ^- @
    clc
    ! e4 r6 m/ C9 x9 Q3 Y7 A  V( 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,...$ u2 ~) M2 l+ N6 R
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];2 i! ^/ v2 F/ r2 y7 P* S# h
    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,...
    ) I  E% H4 q5 D1 k    2.5,2.6,2.7,2.85,2.95,3.10];& }% T7 y- M- G/ D6 t: w' ]! V
    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,...
    3 k' B! n  |5 E- S/ F    0.56,0.59,0.59,0.67,0.69,0.79];
    ( k1 t2 B0 `" P0 L5 [! U( U  Rglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...- [" i: ]/ f  D: E5 o
        22598,25107,33442,36836,40548,42927,43462];2 Z9 ]3 X6 _% Z6 m; E! H6 e! D
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...% `( B. y- V" a
        13320,16762,18673,20724,20803,21804];
      P9 y" t$ d; Y  c$ yp=[sqrs;sqjdcs;sqglmj];
    * ^0 I5 L9 H* Nt=[glkyl;glhyl];
    , S( o1 H/ A$ t+ j9 ]% g' _9 Y8 F7 G$ w; ]" [5 o' v9 \
    %数据归一化: P9 Y5 A% @, l, S8 R7 x: A+ a
    [pn,ps1]=mapminmax(p);
    & B/ d5 e1 z# ?5 u& N[tn,ps2]=mapminmax(t);. o1 ]5 n6 x/ z) @# z
    ) c' b  B1 [: }1 F& N) H& C: S# N
    %BP网络训练- p/ S% Q( M6 q' G
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');, E# T* v3 E. ~* P; l  T
    net.trainParam.show=1000;4 w/ _. s( U6 M# A! O
    net.trainParam.Lr=0.05;% |; W, w5 b! q/ v& C
    net.trainParam.epochs=50000;& [$ N5 W0 z7 N7 w' c
    net.trainParam.goal=0.65*10^(-3);+ Q! x7 K) N& d6 H( i3 ~
    net=train(net,pn,tn);/ K: I) w0 k0 Q2 N! R6 p0 w

    * _- |4 U3 O0 q%利用原数据对BP网络仿真3 A1 S) o) \& n1 f4 u7 K, }
    an=sim(net,pn);% w/ l) E$ P' `* ]/ |: f* y
    a=mapminmax('reverse',an,ps2);7 e  h4 H& Z/ A. C! j$ d# o
    * _* q7 b4 J* `
    %仿真结果与原数据对比测试
    9 `2 S5 l0 k  W! C  I3 x6 h" ~& ?x=1990:2009;  f- [- Y, l" x; E% H6 }
    newk=a(1,;
    7 N3 v% t9 ~( ~' [# fnewh=a(2,;7 t( W' h' n( f2 W& k' f4 N
    figure(2);6 X3 j2 c  Z4 g* h# g9 q
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');- j" z# ?, k8 l% R+ n! Z4 T( E$ N% p
    legend('网络输出客运量','实际客运量');9 s! l4 z# ]# h3 b1 z3 J
    xlabel('年份');ylabel('货运量、万人');/ Q. X5 t1 `5 [4 k5 M
    title('运用工具箱客运量学习和测试对比图');
    ! c9 L. z# O. m$ N1 {3 A0 j* Qsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');/ u) {" H% W7 v6 v3 Z
    legend('网络输出货运量','实际货运量');
    . F6 {- T: s( i) A& {1 @* y$ vxlabel('年份');ylabel('货运量、万吨');
    1 M4 u/ E% Y3 `  ~title('运用工具箱货运量学习和测试对比图');8 m" r! j+ h- C) c( p

    9 [+ ~7 @1 U6 D+ Z  C%新数据仿真. l9 ]0 F  ^3 Q* j8 J) `5 I/ ]- L
    pnew=[73.39,75.556 h! y$ k. _, }3 H4 u& _
        3.9635,4.0975
    ( M2 D6 C. U! H$ c% O; @; [    0.9880,1.0268];
    , A' m: J+ G# X3 ^/ s2 m  K! dpnewn=mapminmax('apply',pnew,ps1);
    ! g5 Z+ e* S9 l! r/ g3 _2 n# ianewn=sim(net,pnewn);( n5 g6 O- ~7 F4 V# w
    anew=mapminmax('reverse',anewn,ps2)  H/ g( l+ z3 P4 H$ O! C
    (修改的地方用颜色标记了)
    ) C9 d! |4 F, I) |( ~3 J2 J1 ?麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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 }' `1 n# I6 |
    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,...
      9 v1 ^, C4 f6 h9 w+ [
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      ) G  ?' s8 s# T+ E$ P: O+ B
    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,...& M. e6 x. ~) d( X- y
    5.     2.5,2.6,2.7,2.85,2.95,3.10];) c+ `2 Q6 H8 L/ x& O* j* V9 e
    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,...
      / f9 \* x/ ~. j! ^\" [/ R& w5 C; S
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      # R. B$ y8 X7 i7 _
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...# Q& G* m9 c) U! c6 e2 O
    9.      22598,25107,33442,36836,40548,42927,43462];. z& q) E2 X5 Y2 S# ^/ E
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      9 r: C2 \* o8 F6 [+ w
    11.      13320,16762,18673,20724,20803,21804];1 ^; W) z  O7 l6 P
    12. p=[sqrs;sqjdcs;sqglmj];
      2 F2 p! ~& u; R/ ?  ~  D! E; E) {: \% ~
    13. t=[glkyl;glhyl];8 y, J3 R4 [1 d
    14. %数据归一化
      5 b7 N) [6 W7 |2 ~
    15. [pn,ps1]=mapminmax(p);9 P9 q8 q0 I2 G
    16. [tn,ps2]=mapminmax(t);; Y; `6 h+ u\" v. j: C; @' U) q
    17. %dx=[-1,1;-1,1;-1,1];
      5 r9 x1 u0 m8 [3 o1 K\" E# u
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      2 Y0 \2 K' Y, @

    19. : V- v* V, v. F
    20. %BP网络训练2 G$ ^& E$ J\" @; Y, ?4 A
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      - r+ M8 X& o( u$ @
    22. net.trainParam.show=1000;
      ! \1 T6 e+ y1 q
    23. net.trainParam.Lr=0.05;
      / w8 D\" u4 L. _\" {* [( i2 q
    24. net.trainParam.epochs=50000;; p+ ?; x& c9 ~8 G2 [
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]% o+ j$ Z, B/ v% j- j
    26. net=train(net,pn,tn);
      ! q2 V, X( E9 P5 {. l+ M& [

    27. ; L* A( z' p$ W9 a: \$ E) T
    28. %利用原数据对BP网络仿真1 e4 Q; Y9 G. Q$ ~1 R2 ?
    29. an=sim(net,pn);1 D/ k5 Y7 I- f; y2 ?- e
    30. a=mapminmax('reverse',an,ps2);4 V\" j\" K8 g) y. k2 d% O' U8 h

    31. 2 f- y* b( S. w+ t
    32. %仿真结果与原数据对比测试 5 @  u( b: J' h( z/ m* ?5 }  A
    33. x=1990:2009;( @) D$ _1 V0 A- C  s/ c4 d
    34. newk=a(1,:);* J: i) \2 n$ ?* _
    35. newh=a(2,:);4 X: U, B6 ~3 R; h4 c% S
    36. figure(2);
      3 _+ W2 U7 N1 E$ d6 o$ \: c9 V
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');2 S' l  ?) m8 v
    38. legend('网络输出客运量','实际客运量');
      2 Q: j$ E2 u0 J! ~7 @\" X
    39. xlabel('年份');ylabel('货运量、万人');
      ; p) k' i7 O1 Q! T$ n  e% M. u
    40. title('运用工具箱客运量学习和测试对比图');
      6 R* Z/ n* R7 o# j; \: u1 G
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');: ?/ v1 t/ k$ O0 V* z0 F# t8 u
    42. legend('网络输出货运量','实际货运量');
      ) @\" l$ c9 Q- g+ m$ P* R
    43. xlabel('年份');ylabel('货运量、万吨');
        a& b0 I% j% K# y9 U6 z
    44. title('运用工具箱货运量学习和测试对比图');; A3 b$ w9 l8 ^$ P8 D

    45. % s! M9 J% U4 {$ w7 c* }; p
    46. %新数据仿真0 j; |) N' P3 J; _- `
    47. pnew=[73.39,75.55$ A\" `, z8 h8 e5 q
    48.      3.9635,4.0975
      : V4 m8 L3 d9 d) q$ B8 ?# x% ?
    49.      0.9880,1.0268];
      % J( z0 `\" d3 i, o, y- d
    50. pnewn=mapminmax('apply',pnew,ps1);
      $ q9 F; F% L$ }. H5 `
    51. anewn=sim(net,pnewn);; J$ p* s3 ~( F  l1 I0 g
    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
      * [. R! R. E1 F\" V
    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,...
      2 h) r8 d- [- i/ l: y$ k
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      3 f. o0 C6 ?- }- L$ c6 X
    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,...& T9 o5 l/ J1 X: |' X; {4 D
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      9 ]; c5 i$ P% P6 l) n; i
    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,...  L& a: n5 ~) k
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      + o& W/ e\" E5 L9 @8 M5 x
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...- M4 R8 ~( b: F) \* U( @' w: F
    9.      22598,25107,33442,36836,40548,42927,43462];
      0 Q- W4 w- j! I: l$ U
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...; J1 p/ j5 H) j3 U/ J8 W2 J! v\" Y
    11.      13320,16762,18673,20724,20803,21804];. X8 H* c$ k: H
    12. p=[sqrs;sqjdcs;sqglmj];
      & [* |4 O5 X- ~9 Y# c6 T1 L
    13. t=[glkyl;glhyl];7 @  P- z$ a6 I2 Z5 K' g
    14. %数据归一化
      $ y+ t, N! b4 x$ m
    15. [pn,ps1]=mapminmax(p);
      ; Y, T4 ^* U/ h, j& y8 P& E
    16. [tn,ps2]=mapminmax(t);2 G& ?  N- u) N0 q
    17. %dx=[-1,1;-1,1;-1,1];- |1 S: d7 ~, _1 v$ ]
    18. p0=minmax(pn);t0=minmax(tn);
      - f! L/ G+ \' P! A+ x+ M, `
    19. * s. e8 D% T/ U9 S6 u( X\" _* w\" z
    20. %BP网络训练
      2 F; {0 I( c. a5 |# M8 S. o
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); # p4 M( B' P6 C: v- v1 Y: y9 G: c
    22. net.trainParam.show=1000;
      5 r  s& E# X% l0 C
    23. net.trainParam.Lr=0.05;
      5 {  Y9 |% q$ N- r: s0 G4 I; }: A
    24. net.trainParam.epochs=50000;
      6 U  @4 y; U\" @% g  Y
    25. net.trainParam.goal=0.65*10^(-5);
      ( }, u- ]) ^. Z) a
    26. net=train(net,pn,tn);
      # S% h$ w' ~2 i7 g0 {( H
    27. 6 h: J4 c8 p* [& o, |
    28. %利用原数据对BP网络仿真, g8 l8 ]( `2 u! J8 M' |
    29. an=sim(net,pn);
      6 u4 o  T8 d9 T7 \
    30. a=mapminmax('reverse',an,ps2);
      6 V6 k3 o+ f$ _

    31. ; r\" e: u; }  l\" Q# h
    32. %仿真结果与原数据对比测试 ( N3 z: k3 |8 B9 j/ a, n1 ]. ~
    33. x=1990:2009;3 {& l& o0 k/ B) \+ f
    34. newk=a(1,:);2 ?( Z0 ^' U/ J$ ^3 ?8 x. q; ]
    35. newh=a(2,:);
      9 i9 h0 c, a\" B7 D8 o
    36. figure(2);
      0 P( G' j8 {/ l! Q8 k1 p7 S
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      & m4 b3 k* |! ]; s\" ^% D
    38. legend('网络输出客运量','实际客运量');
      / z5 Q& P0 r# {( O. v! g
    39. xlabel('年份');ylabel('货运量、万人');
      & ?, A9 Z5 P2 R0 @8 J4 ^
    40. title('运用工具箱客运量学习和测试对比图');
      7 ?6 w( u# a/ a5 y
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      + I  `, Y2 s: c. T( v! X* q4 h# x
    42. legend('网络输出货运量','实际货运量');
      8 j$ U: x4 ]* y9 F6 E& {1 Z
    43. xlabel('年份');ylabel('货运量、万吨');0 O# v\" Q9 f; x
    44. title('运用工具箱货运量学习和测试对比图');
      ' y7 K& T! ^# O& v. G

    45. . D, h\" D/ s0 h6 [. v
    46. %新数据仿真
      ) k' \: Q% e3 U* f/ n
    47. pnew=[73.39,75.558 L! y0 {1 R8 S- z& D5 h$ }
    48.      3.9635,4.0975
      : U8 b0 X0 z6 \
    49.      0.9880,1.0268];
      ( C+ A; P/ m* J\" Q! ~7 l* s
    50. pnewn=mapminmax('apply',pnew,ps1);+ F0 r' S+ f  k$ m+ w
    51. anewn=sim(net,pnewn);
      ( Q+ a7 q- r0 B1 t* K+ z
    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
    # S/ {/ z+ B6 H; l" h5 [4 T忽略我上面那个,改动的地方在18,21,25行……求批

      d& M% K6 l& l: U8 r确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练8 c$ I. ?. O& I2 ^$ [1 B) y* n
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      \" ]6 z( N+ f' d: [. x
    3. net.trainParam.show=1000;
      4 h/ Z0 e) r* E/ _5 i& _
    4. net.trainParam.Lr=0.05;& Y7 j. |9 ?7 h
    5. net.trainParam.epochs=2000;$ e6 O/ {! v4 k' Y6 c
    6. net.trainParam.goal=0.65*10^(-4);
      / [. K4 b% r' B/ E% n; U
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,$ |# l$ ^# w  b6 Z) F
    一、改成单隐含层的,6个节点
    8 L4 @/ g8 x4 \% g7 L8 N+ _( A* q+ F二、训练函数改成梯度下降BP算法 traingd
    : g5 A! B6 U) r三、迭代次数改成2000
      f  o8 z* d4 F$ q7 `4 |/ p, o4 Z上面的参数是自己试的,我也不知道为什么。& c5 p+ |" q' \3 s
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    3 |9 `# G0 a! R" N1 W" w4 D关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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, 2026-6-11 21:56 , Processed in 0.508177 second(s), 107 queries .

    回顶部