QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4801|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    6 S& U8 [4 N' r4 ^' @$ w/ _; ], O5 ~; k$ I" K% K
    %原始数据输入
    % z7 j/ Y! R5 G/ i7 y; aclc
    2 i+ A) ^0 `! hsqrs=[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 F, N8 Q, `- m+ `$ t7 e; Q7 S5 y
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    % _; m  {3 ?, L) Tsqjdcs=[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,...$ H- f5 o) E& m! `
        2.5,2.6,2.7,2.85,2.95,3.10];
    & L- H9 U- E$ h$ f8 A6 ~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,...# p2 z: ?& n7 m
        0.56,0.59,0.59,0.67,0.69,0.79];
    : ~1 Q  \1 k8 k) C; v1 y+ y# Qglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...8 Y3 z2 a& ~' k; e; v5 h3 V6 l
        22598,25107,33442,36836,40548,42927,43462];0 T& M! S& N; @
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...% B5 y7 g) b& F' {9 U/ g" c
        13320,16762,18673,20724,20803,21804];
    4 l: t# f, l8 G" @3 P7 }+ M" Fp=[sqrs;sqjdcs;sqglmj];5 L# ?; p: n* m  a4 L
    t=[glkyl;glhyl];& l( r0 M& p0 B* k, [! {( ^; q- A$ L
    . A7 p! ~. ~% `; f- \
    %数据归一化
    " L: C& [- ?# z/ l& y/ T[pn,ps1]=mapminmax(p);& C$ g! T5 P) @4 U7 @' I
    [tn,ps2]=mapminmax(t);
    7 r& k5 I. m1 M  Ndx=[-1,1;-1,1;-1,1];
    8 U' _4 t6 b- J7 r) ^9 G9 T- C& B, x  c2 k5 B9 q* i! D7 W& l
    %BP网络训练+ K! U3 J" A" N, o2 o+ s; I$ L6 G0 V
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');" X5 m' @+ L/ y
    net.trainParam.show=1000;
    ) M/ b, x  x9 _8 V5 S) ?5 tnet.trainParam.Lr=0.05;
    ! ^! [9 X/ Y1 ~6 P7 Qnet.trainParam.epochs=50000;/ W* D: k# F( B9 `
    net.trainParam.goal=0.65*10^(-3);0 W1 d3 ?; f! b" m( i
    net=train(net,pn,tn);; A0 q( p  h8 T3 S9 B" P5 Y  q9 ^
    0 K6 @- ^! g( G
    %利用原数据对BP网络仿真
    * P: J( d7 j  _9 oan=sim(net,pn);4 u7 k2 z: T2 Y9 F. H3 N3 Q2 k
    a=mapminmax('reverse',an,ps2);+ J+ n4 U: q0 r, p

    , E6 f6 S% W- e2 K/ @, {* h%仿真结果与原数据对比测试0 Q- Y5 W# h/ N  c+ e( D" q% f- M
    x=1990:2009;8 H; {' @( A/ z; o& u: e" H! I- x0 B
    newk=a(1,:);1 k' z! E  L1 ?0 V3 }
    newh=a(2,:);6 u: N+ R# U. w$ _
    figure(2);
    " B, y5 p/ G) d4 Ssubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    . u) \# w9 q3 Klegend('网络输出客运量','实际客运量');' ^+ Z9 l/ Q) N6 m9 K) g
    xlabel('年份');ylabel('货运量、万人');5 O8 Z) i$ _, N; g$ M- K
    title('运用工具箱客运量学习和测试对比图');
    0 B* L3 n' g8 N( ]8 _7 _4 Y4 Isubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    4 F  @; Q3 I: \legend('网络输出货运量','实际货运量');0 q! i, ?. K' N. m- U% c
    xlabel('年份');ylabel('货运量、万吨');1 b9 C: F9 A4 k$ u4 [: `/ B
    title('运用工具箱货运量学习和测试对比图');& m: ]! U$ ?" q: ?6 c

    ' d. T' S: _4 a8 }%新数据仿真
    - t8 e7 `% e# B  Jpnew=[73.39,75.55
    . p, t- m8 \. Q! F& U: \, Q% H    3.9635,4.09756 q5 E: k0 r% _. z9 ?3 W3 b* V1 ~6 V0 Q
        0.9880,1.0268];
    # v$ Z9 U7 f/ Upnewn=mapminmax('apply',pnew,ps1);6 M# ]3 Z0 p0 v5 h) M! r; I
    anewn=sim(net,pnewn);
    0 N3 W6 g5 W! V) _; canew=mapminmax('reverse',anewn,ps2)
    ) R6 s5 |8 `6 z+ Q, e
    7 Q, q& ^0 J7 i- P8 E

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

    `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 ' }# A" ~5 |: n* u' M, {. {: Z8 [
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    : o3 c8 i. Z* J- X% C+ j因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    5 ?0 |5 E" u& Y7 O8 U0 v7 enet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    7 S  |" `* n8 N9 I9 K, D我修改为:2 p' F4 N4 I! [1 g& a. l2 S6 w* }
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    8 ~& K/ w9 H  M$ T6 J- P6 ?然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:9 ~% B' {$ _( C: f: D  |
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);9 x7 k6 a- I2 ^% i+ d. G
    a=postmnmx(an,mint,maxt);5 X* L4 ~8 M: D& D+ L7 _$ B1 E5 N
    pnewn=tramnmx(pnew,minp,maxp);
    ! o' r, r) x4 Canew=postmnmx(anewn,mint,maxt)
    0 C& x6 @' w  b7 f5 L% \- W- I' s% Z8 W我修改为:5 P% e) m- U# X$ Y9 I$ T* H
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    5 ?! t7 ?* w5 G) X  v+ ua=mapminmax('reverse',an,ps2);2 `! O3 U# t/ j3 n; ]$ ?) v5 i& t
    pnewn=mapminmax('apply',pnew,ps1);
    8 k$ @- K) J5 }2 j. y- Hanew=mapminmax('reverse',anewn,ps2)
    ( Y. t% T6 @% w" S, K4 ^
    ' t' s( t4 d/ q  D8 i- M原程序为:+ K- @7 ~" E3 x+ I
    %原始数据输入
    ' j2 l3 _# |" `5 Gclc
    ( ?* X& c3 z1 K$ osqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...1 a" I4 p4 H7 ?3 N8 z
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    . b0 Y: j* E- f& s! R3 L" t0 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,...
    , i$ o* c* w* \/ v  m    2.5,2.6,2.7,2.85,2.95,3.10];
    ' c7 U; ]% M6 \& T- ?; Tsqglmj=[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,...
    # F8 F2 S1 ~0 {" s8 F5 W/ |0 J    0.56,0.59,0.59,0.67,0.69,0.79];
    8 g5 U  O) v' c, Oglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...! |& B' P  g7 D( _+ L
        22598,25107,33442,36836,40548,42927,43462];3 D6 M6 F6 A7 L/ b2 D: V% j/ }
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,.... G3 G6 Y9 P* y+ m' M
        13320,16762,18673,20724,20803,21804];
    7 p  a' u0 o9 `5 L2 d+ x- ~/ Xp=[sqrs;sqjdcs;sqglmj];9 N0 W( F4 b* H9 j1 H
    t=[glkyl;glhyl];
    8 G+ I/ n# Z6 C$ s. e. r9 R: Q: v( e2 }
    %数据归一化
    " I7 k( Z+ {/ j: C[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);3 z- ~, s0 s3 L! P. z6 n
    dx=[-1,1;-1,1;-1,1];
    6 j# V9 f- b  o- D0 \
    : D" @8 e4 U$ y; V' }- n" _
    %BP网络训练
    & ?4 P! ]: |  @/ Y& g4 k2 Vnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');0 {5 P+ U8 E& S2 H) B0 D
    net.trainParam.show=1000;
    4 {; r$ s( M( c& Q+ p# ^net.trainParam.Lr=0.05;" Z+ {- e( d8 M1 _2 b7 m) N: D. Y
    net.trainParam.epochs=50000;- z0 i* A& D& f0 \; I1 ~2 |
    net.trainParam.goal=0.65*10^(-3);
    7 U- A, a  u& xnet=train(net,pn,tn);8 K+ t4 ^) r9 [2 k7 U6 L

    $ l. G7 S* J. P5 B/ D%利用原数据对BP网络仿真8 l) T4 O, h" Q) Q. b0 M) Y, G' V  Q
    an=sim(net,pn);
    - @) x: {5 X- k& a7 ta=postmnmx(an,mint,maxt);
    " A1 C9 o" ]5 e+ ^6 K' Y
    5 p; T6 B9 @* B%仿真结果与原数据对比测试3 y, N. j& p9 c( P0 `
    x=1990:2009;
    6 V) L$ z3 R: |' p( `  ]3 i- Vnewk=a(1,;0 g6 J9 x4 b1 [8 M7 s5 C3 |
    newh=a(2,;2 V: c  L( `0 i, o. W" j3 o
    figure(2);$ S) V# B. h, d; J5 i8 e4 R  ^
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    3 x2 J5 L4 a! z7 J/ clegend('网络输出客运量','实际客运量');
    6 U% K  j/ R; ], W- J- T) Pxlabel('年份');ylabel('货运量、万人');
    / |4 I3 F7 ~& Z: |& q6 Atitle('运用工具箱客运量学习和测试对比图');
    & F' W( ^9 J3 S- b8 n! K9 usubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');5 v* y5 C9 g; v  Z
    legend('网络输出货运量','实际货运量');  q* Z6 c+ L! P5 _" E$ p
    xlabel('年份');ylabel('货运量、万吨');
    ; Z1 L& b5 L, Q5 _title('运用工具箱货运量学习和测试对比图');
    9 G/ b9 v7 P. e6 [, D7 t1 i( s
    ' Y1 ?1 i0 S! J3 u$ H%新数据仿真
    ; P9 q: [: C5 @* J' Upnew=[73.39,75.55
    ' X; C3 t- o! o! U" w/ V8 m: e    3.9635,4.0975
    # K0 B( g6 ^- }# X) p    0.9880,1.0268];
    9 J/ k7 |# x/ `6 v) N2 G  zpnewn=tramnmx(pnew,minp,maxp);
    , U7 u9 w  b0 F% u& i1 U; Hanewn=sim(net,pnewn);' l, p' W5 ^/ f2 N9 p2 q/ D
    anew=postmnmx(anewn,mint,maxt)
    ' s, ]6 `3 w6 S0 s8 o0 E9 l
    & A* F  |' @  C; Z
    修改后程序为:
      W- ~  e" m/ ~; ~%原始数据输入
    - |9 n8 ^# ]9 d9 d  V! q* Rclc5 A/ [6 |6 i+ J- ]8 I" h
    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,..." i  z; c+ {9 m2 E+ i5 B& J: W- d: O5 Z
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ; ?9 Q9 Y: }4 K9 s  e' z0 _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,...
    & a6 b8 O( i* B8 h. S- m    2.5,2.6,2.7,2.85,2.95,3.10];. E# {: c* U. l- `6 X) \1 U
    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,...
    ) U. u" M: `, M+ t    0.56,0.59,0.59,0.67,0.69,0.79];9 b1 W3 Q0 X  `& ~$ J: U+ R
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    % {9 O/ M9 N: a: x. s    22598,25107,33442,36836,40548,42927,43462];  [& |. t. A' _. }$ R
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ' M+ M; ~1 J8 V, W% y) N    13320,16762,18673,20724,20803,21804];* j4 c7 Z) B. \4 M
    p=[sqrs;sqjdcs;sqglmj];, l$ h' N2 F  H* Y# h+ x  @
    t=[glkyl;glhyl];
    , N4 F  m8 W3 V" z. `* e
    0 ]" z) K7 @# j- g3 i& @/ s6 h9 U%数据归一化' ]3 ?: P! o0 I# h
    [pn,ps1]=mapminmax(p);( p9 Y# r; [' z- P
    [tn,ps2]=mapminmax(t);  k1 b9 @6 c  R; U+ A/ n. }

    ! [: K% J4 U3 v) R7 a. q! {%BP网络训练
    8 ]( c3 T6 I5 l- ~4 L" j# C2 ?net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    $ p1 c6 U# l2 @  j5 |net.trainParam.show=1000;
    ! K! |! c# w% ?0 i9 Z! n: @net.trainParam.Lr=0.05;
    ; u/ p. f2 f  n; ?9 l4 b( enet.trainParam.epochs=50000;; a% R0 j- X( Y0 W. Y7 g
    net.trainParam.goal=0.65*10^(-3);* T' M0 n  ], V. a, F
    net=train(net,pn,tn);5 S3 ~1 y$ s, }/ i& l5 t: S' K

    & z( a" ^6 ~2 f# `$ F%利用原数据对BP网络仿真
    ( R6 Z5 [$ ?4 Z9 ?. R3 {an=sim(net,pn);7 E2 w: u" r+ i; Y+ |. S
    a=mapminmax('reverse',an,ps2);6 [) `2 L% x7 ^, X/ ]3 ?$ J, \
    * k2 c1 }2 D6 p. q  s! b7 ]" [
    %仿真结果与原数据对比测试
    7 G# q% Q9 J, e$ @6 [* dx=1990:2009;
    - F" a% ]. f$ mnewk=a(1,;
    & W9 N: p- L, W/ C2 o' rnewh=a(2,;% R: ?  v2 k8 Q1 e& r  v7 H
    figure(2);
    * a2 E( l+ f; `$ l3 dsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');* i* S4 R5 Q( d
    legend('网络输出客运量','实际客运量');
    6 p0 F5 Z8 w* z, T9 v% Fxlabel('年份');ylabel('货运量、万人');0 V1 E7 O$ O4 U6 O) A- [
    title('运用工具箱客运量学习和测试对比图');
    ! I3 S. h: l* v) \$ C3 Z, `# Usubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');7 T: d# m0 y; L; e% {" h2 K5 Q
    legend('网络输出货运量','实际货运量');. e3 c6 U8 U% D+ f) _
    xlabel('年份');ylabel('货运量、万吨');
    8 X; D( b) X) @; W0 m. [. jtitle('运用工具箱货运量学习和测试对比图');9 j" N* c! P# D& H9 n6 M, N
    , j2 w- r& K4 F+ ?6 ^. ]0 u
    %新数据仿真& {- f/ v# {5 e! T$ @8 {' V
    pnew=[73.39,75.55: W" s& o& u& w) V% ~9 r; |
        3.9635,4.0975
      x9 t/ \2 i3 H3 ^* W2 O    0.9880,1.0268];
    ) H, [+ |/ i" D0 T7 g$ I3 epnewn=mapminmax('apply',pnew,ps1);
    ; i. K9 p" a, m$ W2 R( k) @anewn=sim(net,pnewn);
    , v( ^; C  z7 z8 P9 {anew=mapminmax('reverse',anewn,ps2)8 `5 \+ S7 s6 C. ?( p" A' g
    (修改的地方用颜色标记了)4 }) o# w0 ?$ @3 {5 A/ Y- g# N1 `
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      * }% N+ [8 `* H9 n4 ^
    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,...- h3 r! K2 u6 u( k* _( u
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      \" z2 n' S' z/ p8 G) Z, ?; @
    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,...3 D/ Z  t+ N+ J
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      , a' P& u8 C3 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,...
        O6 o5 N  D4 K- v# Z2 U% V9 P
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      0 Z  C9 Y8 H/ t/ Z& W
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...9 p; J& A# D, d; s4 u. x' B
    9.      22598,25107,33442,36836,40548,42927,43462];
      1 T\" j, b5 h1 r9 ?! F7 E% m
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...* D( G' q9 B0 W5 [3 X8 M6 h
    11.      13320,16762,18673,20724,20803,21804];+ U# F7 ]8 t6 O$ i/ M$ Q1 R/ S- [& o
    12. p=[sqrs;sqjdcs;sqglmj];* i: d  |\" ~( Y0 H1 Z! b
    13. t=[glkyl;glhyl];
      \" C( D- y2 H; p; s' _/ F
    14. %数据归一化; x6 A4 J+ D) }3 w
    15. [pn,ps1]=mapminmax(p);/ a( Y$ `4 h; U\" O5 `, v& D
    16. [tn,ps2]=mapminmax(t);
      % w# c2 B* U5 }! l3 @
    17. %dx=[-1,1;-1,1;-1,1];7 A6 A! l+ ]' |3 [: ?  X. R. m
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]( ^* w0 e8 U. w9 R9 R! A

    19. : t7 H6 R# C# v. b; u- a' g  k
    20. %BP网络训练4 z1 ~7 T+ E7 c& N3 K
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      - f& |: _8 X+ ~8 }- _3 ]% s\" d
    22. net.trainParam.show=1000;; W( z3 ]! s) n# c
    23. net.trainParam.Lr=0.05;. A9 B* G( D/ J. r) [$ O+ `
    24. net.trainParam.epochs=50000;$ `* z+ R) s0 e, n
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]0 x! _6 _/ h: Y2 N; ?8 h$ O
    26. net=train(net,pn,tn);
      . _( l6 w5 G- ?2 N4 k. v

    27. 3 `% k, V) R, y! f8 Q: R
    28. %利用原数据对BP网络仿真0 a+ a, M) |2 f6 y0 X\" t
    29. an=sim(net,pn);& ]8 G1 `/ m: t4 t, H% y
    30. a=mapminmax('reverse',an,ps2);' Y3 A& W9 m# Z) O4 z3 Q

    31. ( f6 B$ R9 I% y: m) v! S; X
    32. %仿真结果与原数据对比测试 3 \% ?# L1 F% @: r/ Y; @
    33. x=1990:2009;7 r. H3 t+ N! Y0 K! b& S
    34. newk=a(1,:);
      # x: ]& r5 W9 ?3 E0 @' U& \
    35. newh=a(2,:);4 f7 w' Q5 }$ z/ f! e- ?9 f
    36. figure(2);) \! {! c3 Z0 A( C8 }
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');& h) k) O  L\" n' I& x
    38. legend('网络输出客运量','实际客运量');
      / }2 Q6 v& b5 ?0 Q2 p( M
    39. xlabel('年份');ylabel('货运量、万人');
      ) V! q- q) n0 I0 D4 W% t
    40. title('运用工具箱客运量学习和测试对比图');
      ! r' j! K# g\" @# V. }
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
        z% l  o3 \+ u6 l' ]4 t% O
    42. legend('网络输出货运量','实际货运量');! W1 ?+ J/ m! G( D* p# Y
    43. xlabel('年份');ylabel('货运量、万吨');
      ' ]1 \  ~, W+ p1 l1 \  J6 T! y. v
    44. title('运用工具箱货运量学习和测试对比图');
      + m) s8 R& F, U& E
    45. \" p  `, h+ w  \0 Q. ^
    46. %新数据仿真
      ' b  A* Z! T0 z
    47. pnew=[73.39,75.55* o/ w  M' X& i\" ]
    48.      3.9635,4.0975/ g3 b1 Z( x! B2 t- C- D8 z
    49.      0.9880,1.0268];
      + `8 C/ I: s5 m& u; G* ]6 ^
    50. pnewn=mapminmax('apply',pnew,ps1);% g2 K9 g& H3 i- g9 M% ^
    51. anewn=sim(net,pnewn);
      3 o$ m+ B  X: J. d: P. i
    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. clc0 m$ B( W1 l) X4 `: ]\" S
    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,...
      $ w' Y5 ^0 ~& A7 K( ^7 K2 r
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      2 A\" o$ r3 W, W
    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 ?3 Q! C2 v* r. y) V; O( p; }
    5.     2.5,2.6,2.7,2.85,2.95,3.10];5 U\" B/ |2 l, }  m6 v
    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,...
      1 p- O( b& O$ t& t0 \' }
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      2 b  ~1 N$ c1 N0 K, Z; Y$ c
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...( E/ D' R% P+ ~0 z/ B3 ?
    9.      22598,25107,33442,36836,40548,42927,43462];\" |! ]% }  f( O7 ?8 d) a
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...) M) X) ^* c$ H& F# O+ O: J( ~7 f
    11.      13320,16762,18673,20724,20803,21804];
      0 @+ t6 C/ ?; s7 U( M
    12. p=[sqrs;sqjdcs;sqglmj];
      1 @# I3 |. b2 R  K) P' u
    13. t=[glkyl;glhyl];; f/ @2 X& ^0 R
    14. %数据归一化
      4 J9 M. e. H+ H. z0 w
    15. [pn,ps1]=mapminmax(p);
        e3 g! l2 s$ e+ f* G  _
    16. [tn,ps2]=mapminmax(t);/ b) F/ G1 r/ Q; w$ G9 F) F2 d& N
    17. %dx=[-1,1;-1,1;-1,1];
      : x2 k( Q- C- D  A) n8 m9 w
    18. p0=minmax(pn);t0=minmax(tn);
      ) A' M. ?/ J' y4 L7 D  S9 Q- q
    19. , t3 m3 g7 O\" a0 k0 a, U
    20. %BP网络训练
      # k+ q+ Z+ i/ _4 ~$ R( L$ y. q% g
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); / x6 ~: c4 U. A\" j
    22. net.trainParam.show=1000;2 w( ^7 C) M. K, o, U8 X, h
    23. net.trainParam.Lr=0.05;, ?0 D6 K, F# h, u  \' s
    24. net.trainParam.epochs=50000;/ R* s2 o. F* q& c( z9 S
    25. net.trainParam.goal=0.65*10^(-5);
      2 ^( L; Z. g8 V; |5 \  X
    26. net=train(net,pn,tn);  m% y  V3 k3 C8 Q  C7 \; x$ F- k
    27. . \( m- \, ^- g: u. A
    28. %利用原数据对BP网络仿真
      & r' o+ i\" _2 x  V
    29. an=sim(net,pn);
      ) o. ^4 O  e6 S5 ]
    30. a=mapminmax('reverse',an,ps2);
      * m9 }\" }. u9 k. U* ^) ~
    31. ! o, a. U# y5 |% J
    32. %仿真结果与原数据对比测试 ; D8 h* F# T/ K3 M) }4 G
    33. x=1990:2009;
      \" ]. T+ ^0 c( A' S  ^+ Y
    34. newk=a(1,:);
      : e7 n0 }7 o  |; [  Y( g
    35. newh=a(2,:);
      8 Z6 @) p\" M9 D' T, c; h
    36. figure(2);
      , R4 g8 C& R/ t$ R! p
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      0 X/ d/ H+ p/ V! O6 o9 X! M& n
    38. legend('网络输出客运量','实际客运量');1 d; O' y' V; \0 j: [2 y
    39. xlabel('年份');ylabel('货运量、万人');5 i/ f6 i. I3 X2 [4 A/ q
    40. title('运用工具箱客运量学习和测试对比图');
      , W$ |0 L/ g8 }% w
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');4 M- O9 ~  W! [; L
    42. legend('网络输出货运量','实际货运量');/ l  i% ?! h: r) s% u
    43. xlabel('年份');ylabel('货运量、万吨');% G' v& k$ O$ j8 e
    44. title('运用工具箱货运量学习和测试对比图');2 S4 b* g9 L+ j* ?' m) `' p# `
    45. 6 o7 K, C& E. @0 S& H$ M, Z# o
    46. %新数据仿真9 N3 u& K! s% ^0 V, a& Y
    47. pnew=[73.39,75.55
        a+ Z' J% V3 a7 X' R5 H. F
    48.      3.9635,4.0975, o2 A1 A2 L) X$ V. Q2 M3 k
    49.      0.9880,1.0268];
      % g' ?. N) x# F4 o0 n% x
    50. pnewn=mapminmax('apply',pnew,ps1);  u4 v; V* v8 Y2 _
    51. anewn=sim(net,pnewn);3 Z8 I0 J/ n9 m  c% o0 Y
    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 s/ L/ a7 ?- z忽略我上面那个,改动的地方在18,21,25行……求批
    , |, m/ I: x8 a) m5 ^* T$ d$ _
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      . u  K: T4 I. O0 [* N; A6 `, M
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      # ?0 Y! }! I( H: L5 O9 ?' ~9 I% c7 k
    3. net.trainParam.show=1000;% ]  a. _4 l: l7 R& ?
    4. net.trainParam.Lr=0.05;
      . }, T# `8 v5 o* G! M1 z6 `6 @
    5. net.trainParam.epochs=2000;7 _( M2 {+ B% F* Q9 u, V
    6. net.trainParam.goal=0.65*10^(-4);' f6 ^( H! w7 a
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,- `& h, q6 b  w/ G
    一、改成单隐含层的,6个节点, |! e* `' @0 T
    二、训练函数改成梯度下降BP算法 traingd1 ?. o8 ?* u6 t4 i% U
    三、迭代次数改成2000
    1 e4 p7 G4 e8 }! @上面的参数是自己试的,我也不知道为什么。
      T  ~  x/ [: x; {1 \) F9 |5 Y/ {由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。5 r6 }1 S& N, h; k% U: w
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-4 00:22 , Processed in 0.558639 second(s), 102 queries .

    回顶部