QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5118|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    3 `: i3 d! n2 r
    & N" [& S; I* u- F( W%原始数据输入
    % W  T8 j) ]" e5 ^- nclc+ c- |; Z7 l. {0 R. {
    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,...
    4 h6 z0 J3 X; k- V) T5 B7 n    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    % u6 V3 e, `" z7 `% E" F$ {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,...- u5 B& v4 l' G& X
        2.5,2.6,2.7,2.85,2.95,3.10];
    4 t, R5 Y% G; I6 `* w# @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,...
    5 F' y& Z7 a& I1 V! ?; }! Q. h    0.56,0.59,0.59,0.67,0.69,0.79];% C2 i. f# E5 s  _
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...- p; P: l6 C) a$ w( p# g
        22598,25107,33442,36836,40548,42927,43462];6 r' W: n0 j5 L7 B8 j% @8 {4 }
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ; W! C/ A! k# C& D9 M6 T8 [    13320,16762,18673,20724,20803,21804];/ h, u& H" o& B- T  ^' U
    p=[sqrs;sqjdcs;sqglmj];' }3 V# F- w: ?- j: W9 |! O9 u! u
    t=[glkyl;glhyl];: H9 a6 _/ `% p% j7 l& @- s0 ?9 l! u

    ; \# e% o( _3 W% S%数据归一化- C3 @. \% X$ S$ [3 Q3 M0 q. ^1 d
    [pn,ps1]=mapminmax(p);; z; t* w9 ]) c. Y1 u' g
    [tn,ps2]=mapminmax(t);
    ( p  o3 k. F7 h; o4 {' }7 s: ydx=[-1,1;-1,1;-1,1];
    + J8 k' j+ {: S3 Q7 G' U( U7 Y5 s6 b! `+ {9 C6 ~+ |
    %BP网络训练
    % ?2 L3 [' S# _% u# Nnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');& h# n/ T' |& H, Y6 m9 I
    net.trainParam.show=1000;
    4 c; Y( P1 v# q7 r& x( pnet.trainParam.Lr=0.05;
    ' |# r# }8 |+ Y0 d! bnet.trainParam.epochs=50000;+ D3 ]. M8 K" a: X! H6 J6 l
    net.trainParam.goal=0.65*10^(-3);
    ; g# W9 G, v1 O. I: H$ H5 I* v& jnet=train(net,pn,tn);
    ) C- U) P2 _& L- T, S/ y4 z$ a' A, d2 g
    %利用原数据对BP网络仿真
    & u- t) B* D' l; ?1 Yan=sim(net,pn);) a* C. T! w8 s1 ^
    a=mapminmax('reverse',an,ps2);, o4 C# y6 T( r' i0 t

    # q1 M2 l8 i+ ?6 W  W# G8 N; b%仿真结果与原数据对比测试
    ; S; C: n: t6 u4 N0 w  Fx=1990:2009;, d. X9 s" G7 V- X
    newk=a(1,:);) @) T9 I3 m* e9 R
    newh=a(2,:);5 T& [3 _* C6 A6 q4 \
    figure(2);- @7 @# |6 r3 n- R
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');. v+ P5 U9 }/ k( Y
    legend('网络输出客运量','实际客运量');' P* f  Z4 X% Q5 ?7 a
    xlabel('年份');ylabel('货运量、万人');' b/ e1 U: j- |( V1 T
    title('运用工具箱客运量学习和测试对比图');6 N* T/ D  t- k
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      {# F- b, ]1 f+ C9 e, Q# {0 Elegend('网络输出货运量','实际货运量');) H' M8 J. X. l/ ?1 i4 Y9 L8 a
    xlabel('年份');ylabel('货运量、万吨');5 {6 f8 j3 T2 ]! f; X
    title('运用工具箱货运量学习和测试对比图');  r$ x& m; e  L! c" T0 ]' c9 \# [

    7 O+ i/ x0 l2 |- X' j- J2 p%新数据仿真5 {" F9 f3 V( x  H
    pnew=[73.39,75.55
      C4 W0 f# R9 c0 w    3.9635,4.0975
    6 \( E! E: r% t& G7 d    0.9880,1.0268];& @: E/ z" R/ }  v
    pnewn=mapminmax('apply',pnew,ps1);! d; H7 w; ]: A2 q: |2 N: d
    anewn=sim(net,pnewn);
    ! }  Z; q" R1 v5 ~1 \* V! wanew=mapminmax('reverse',anewn,ps2)
    4 r) v" o2 l! E& P2 ~" m8 p( u3 z& l& ]! @6 v. P1 e, I/ G

    `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 + D# ?% R) g3 c  O, [- u) I
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    # S' C# ^8 ^) Q' u  g/ C. ~
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:* O7 S2 V) g+ M! l
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');1 g0 |: i0 ?* v- i
    我修改为:
    ' ]  n1 d+ E8 J0 i7 z7 o- unet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    $ x" n  I7 K0 }5 k0 q1 T) }  A7 r" Q然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:: E5 t1 ^7 Z) L
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);' p3 d9 n% ]1 X' S" |  S  Q( u
    a=postmnmx(an,mint,maxt);9 Z3 k  G9 E' h6 G$ `* v; n$ C
    pnewn=tramnmx(pnew,minp,maxp);% p( ?3 w0 F% h* C! r
    anew=postmnmx(anewn,mint,maxt)
    % \* @# u# K8 c' x# F我修改为:( x5 z, ~1 m3 l4 Z" N, ^
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    , w% U+ E" g- P/ J. o0 Z, za=mapminmax('reverse',an,ps2);! X4 W& d. d4 a
    pnewn=mapminmax('apply',pnew,ps1);
    8 I9 X- b( v$ Kanew=mapminmax('reverse',anewn,ps2)
    & |. i# V& O1 q5 K" Q1 }
    3 U0 ^. v3 s4 X* ~0 B3 H0 o( T$ ]原程序为:! h5 x8 J& ]7 z( [* A+ {; H+ e
    %原始数据输入
    ( \$ Y9 G* d9 ^) b( y: ^: Pclc$ B+ F7 F, f* u0 y! n" ~' t
    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,...- O- r6 R- X. T0 C; w
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];- @8 s8 M( q+ e% W" b
    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,...
    ( c4 L* m' D; d& d$ f) H" v8 {    2.5,2.6,2.7,2.85,2.95,3.10];
    ; J# Z3 X* s+ fsqglmj=[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,...+ a  p: T. p. Y2 ^; ~1 N4 v
        0.56,0.59,0.59,0.67,0.69,0.79];
    0 j! x' Q0 }9 Z5 b% Fglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...! Y, E4 M6 l; g- T4 }+ u
        22598,25107,33442,36836,40548,42927,43462];. }% E0 m5 V# W; P! u/ n
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...4 R& S) k( F+ G% d; Y
        13320,16762,18673,20724,20803,21804];
    ( c4 r5 o# X# G; M4 w6 a) K- c# Cp=[sqrs;sqjdcs;sqglmj];
    . _) D  j. ?( S' V( R3 ^% ]t=[glkyl;glhyl];# t$ K1 d  U; H7 Q4 S, U) e1 d

    5 N% ?. E' n9 r/ F" q%数据归一化$ M, W) h1 C- D
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    " m$ M/ J4 w$ _0 g( Rdx=[-1,1;-1,1;-1,1];
    ) E% W$ L3 K$ R. T' }; c  a, k1 E
    , E7 t+ V1 p* Q( c
    %BP网络训练
    : k* o3 f3 s! ~4 @0 A9 C' `( d) v( ?net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');7 A' Z; b3 J- y. p! B
    net.trainParam.show=1000;
    . H; t' N$ e4 V+ M: Rnet.trainParam.Lr=0.05;  B, W! p7 u9 T2 {1 S( W' R
    net.trainParam.epochs=50000;$ }9 e& n+ x/ M0 ~+ F  E0 t: Y
    net.trainParam.goal=0.65*10^(-3);5 J" V& Z5 T& v1 B. o* `4 _8 a
    net=train(net,pn,tn);
    : w5 }  I7 o  c( ^& Y, ^+ E: z7 L1 F) O* }' M- [
    %利用原数据对BP网络仿真
    " ?+ a  D7 `( L: r9 _: nan=sim(net,pn);
      {& P" b+ n& l& g8 t. t8 ca=postmnmx(an,mint,maxt);
    / n1 T* H) ~3 M+ ~  Y# @3 t3 [1 d* ^3 _9 u, x1 `5 \+ A
    %仿真结果与原数据对比测试
    - T( S# q1 k, n& O6 E) Ox=1990:2009;
    1 m! C! }+ w4 Y( u1 t0 l5 znewk=a(1,;
    1 a4 y* L8 K) e5 N& u* ^- I8 wnewh=a(2,;
    0 h5 p1 z9 h+ Jfigure(2);- K: t8 j2 I1 `0 v4 F9 ?* ~
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');* y$ E! w, z) e  }+ R3 u
    legend('网络输出客运量','实际客运量');
    , U; ^7 f* `, R; C* J2 L2 Xxlabel('年份');ylabel('货运量、万人');
    ; ~) {: q0 t. N+ `% ^title('运用工具箱客运量学习和测试对比图');6 a% N) `( U, _3 R2 N$ W7 _
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');0 o, P6 l% R9 _" F6 V
    legend('网络输出货运量','实际货运量');9 R& b% c+ h2 p% E' N( O% n: R; g
    xlabel('年份');ylabel('货运量、万吨');+ d5 u0 T# o! J7 ^3 ?- }6 a
    title('运用工具箱货运量学习和测试对比图');
    + g; b6 D8 u7 i7 {7 |7 Z! A% b7 \+ j! S; s7 d6 m  R$ @/ }2 A! g! ~
    %新数据仿真$ \3 E9 G: v7 J- E- x
    pnew=[73.39,75.55$ ^  L7 K4 N( w8 F$ t" q
        3.9635,4.0975
    $ A/ R( y, O$ j* {    0.9880,1.0268];
    ) c* ^  X/ k8 Z  z. zpnewn=tramnmx(pnew,minp,maxp);
    , a$ u) j, V% S& eanewn=sim(net,pnewn);
    4 V( K8 p- n! s# i4 E- Yanew=postmnmx(anewn,mint,maxt)

    " B' i; {1 G' v% m+ g& V. k7 p, @  H! H4 @( U
    修改后程序为:
    # E5 P; o8 @5 Y, U1 R%原始数据输入' z1 v" r3 \- V, Q" u
    clc9 L" P+ T# V7 S6 j! L  E
    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,...
    * A8 X' D4 H$ D/ c  e& W    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    6 U5 l8 Z4 J+ ^* k  b, 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,...
    3 s' @) W7 v  d  Z4 ?6 l    2.5,2.6,2.7,2.85,2.95,3.10];
    ' `! K2 K1 V; F1 G$ l* |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# R- [) H3 _* L6 F+ \% W    0.56,0.59,0.59,0.67,0.69,0.79];
      S4 I3 \) O) Kglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    * `# ]* K5 W% u; c6 S) P2 t3 Q7 A    22598,25107,33442,36836,40548,42927,43462];% i4 z8 J& @& H* m1 P$ K
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    # L. \1 A' [0 [; z4 w# H2 v    13320,16762,18673,20724,20803,21804];
    " S. ~2 {1 K* T2 d. sp=[sqrs;sqjdcs;sqglmj];( Y% V, d- A8 q# _$ _0 g4 W
    t=[glkyl;glhyl];2 Q- u: i1 S1 X% u8 V

    $ B% p) `! I* R5 j%数据归一化# Z. K( l9 [4 G7 F6 J8 ?! N, k
    [pn,ps1]=mapminmax(p);
    1 w+ m9 ^+ W1 m- V9 @[tn,ps2]=mapminmax(t);
    * }% m. F& w- p; w8 ^, X
    * `, }% i" }. b- W) D%BP网络训练$ O6 {1 I" X" B+ z# {1 i2 k
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');0 g. s. X. V9 F& P
    net.trainParam.show=1000;# M( y* o- g0 L& Y$ s# w
    net.trainParam.Lr=0.05;
    * w2 e8 Q6 E  W8 Pnet.trainParam.epochs=50000;: e1 ^: m: |5 B
    net.trainParam.goal=0.65*10^(-3);
    5 r2 b+ U. j8 ~2 i+ p7 _net=train(net,pn,tn);6 Z! ]# y1 z' K" Q1 `+ g% U, p' p$ s

    2 @$ w# x3 U/ c%利用原数据对BP网络仿真
    - e9 c4 I; O7 x' Q" s. O, s7 man=sim(net,pn);, ?* Y$ P1 Q, r6 E& Q! q7 C9 @
    a=mapminmax('reverse',an,ps2);- {9 }3 t4 o4 S3 x! U" t# `2 x

    # d0 g( P- a- k" Q%仿真结果与原数据对比测试
    * N& ^1 q) L" {3 P7 `, B  [0 sx=1990:2009;( u+ ~9 m# L3 F) D6 C6 x
    newk=a(1,;
    + _; L' x: y3 ~! ]4 f/ @' s4 G4 Dnewh=a(2,;* O% [3 r# U: a2 K4 S2 I
    figure(2);2 u1 a' N* p7 X3 ~
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');% d( D- U, M! y. K3 l" S! P
    legend('网络输出客运量','实际客运量');5 Z, |; t# Z0 s, }& c: z
    xlabel('年份');ylabel('货运量、万人');
    ! z0 \3 h- F4 Q4 [& ptitle('运用工具箱客运量学习和测试对比图');/ ]; b' ^- K! @3 u& F
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    $ ?2 P/ R: S+ l2 glegend('网络输出货运量','实际货运量');
    , g* M: o) x& l, Gxlabel('年份');ylabel('货运量、万吨');
    3 [7 H3 Y5 j+ p) n3 Rtitle('运用工具箱货运量学习和测试对比图');
    - l2 T0 S. p. o7 a3 W' S* b8 L
    6 E9 _' M  f) K* s%新数据仿真
    2 }  m( G0 }, p0 e6 M6 h, q' C' Ppnew=[73.39,75.55' P3 |. T! O' q
        3.9635,4.0975
    5 ?9 N- N& g# v  ?    0.9880,1.0268];
    " E" l/ N3 E$ ppnewn=mapminmax('apply',pnew,ps1);
    % e  ^: P+ b7 A: n. \4 Xanewn=sim(net,pnewn);' I$ E; |8 Z7 ?9 o# H  l9 P
    anew=mapminmax('reverse',anewn,ps2)0 b! m% K2 k& y) k" j
    (修改的地方用颜色标记了)
    ) @; p: b! C1 x  }  U: Q9 H8 r麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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' [! h* t4 h7 `& I( f; [4 ^: M( N
    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,...3 ]4 c/ `: d2 e
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      \" p1 Q3 l$ C+ u- [$ `8 w0 D- F! L
    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,...
      1 m; }: b  A$ v; Q
    5.     2.5,2.6,2.7,2.85,2.95,3.10];# I- o7 A. U5 A1 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,...
      ! E( |; _% O) i7 W
    7.     0.56,0.59,0.59,0.67,0.69,0.79];1 j* O2 H0 ^. l( k
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...( ~\" @% D8 R. H3 d
    9.      22598,25107,33442,36836,40548,42927,43462];
      9 E: }/ A0 n. ]+ B& v7 {
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      ( w\" |0 [' x! ?
    11.      13320,16762,18673,20724,20803,21804];
      ' b% }% [+ y4 A6 s* @
    12. p=[sqrs;sqjdcs;sqglmj];
      2 k! v; C+ B3 I) j\" H8 w
    13. t=[glkyl;glhyl];/ ~; j  H  E$ e\" b4 M9 `( `
    14. %数据归一化6 C9 D9 S, d\" j4 V
    15. [pn,ps1]=mapminmax(p);0 }* ^* v9 S' P0 B
    16. [tn,ps2]=mapminmax(t);6 S1 j% p6 F$ ?  w# h
    17. %dx=[-1,1;-1,1;-1,1];
      9 n5 I9 A, b1 W
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]; A, P$ E8 u# M8 V# K

    19. ) l5 h8 p9 E, x7 p0 \) B, }  F+ w
    20. %BP网络训练4 H1 A8 k2 ^5 l, {, \, I
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      8 a\" {7 H1 @. T8 h3 K4 |4 c6 v
    22. net.trainParam.show=1000;
      + S/ g8 U1 l5 H0 ?( f; P% J4 q7 |
    23. net.trainParam.Lr=0.05;3 c) v/ G. R6 G# c3 X1 W
    24. net.trainParam.epochs=50000;\" \/ J' I6 |6 Q\" l- W
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      ! S/ e  P  `\" d: @- `
    26. net=train(net,pn,tn);2 e& P) Z, m0 r- Q! p

    27. ! ^# w# s& N7 n6 U1 B
    28. %利用原数据对BP网络仿真
      , T\" w/ [: L( x; C  W
    29. an=sim(net,pn);
      ) ?: ^4 l/ j3 a$ e+ w7 A; C( B
    30. a=mapminmax('reverse',an,ps2);$ d  J7 E. p: v, f2 U

    31. ( @/ w9 I* F\" K) z4 @1 V
    32. %仿真结果与原数据对比测试 2 G( S4 s$ Y4 l
    33. x=1990:2009;
      : @6 i7 k# f: J5 k  l( T
    34. newk=a(1,:);\" G( L% G\" M; B9 K7 P
    35. newh=a(2,:);3 E- |3 j! Q1 p7 S# u2 O1 E, y
    36. figure(2);( e  H& p) x$ c! y( c7 N. m
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');1 \  q- \+ P0 |2 U  ?2 ^
    38. legend('网络输出客运量','实际客运量');
      % f+ p0 d* T' L! p1 o$ f4 R
    39. xlabel('年份');ylabel('货运量、万人');
        c  n8 {\" ]9 \% ]+ Z
    40. title('运用工具箱客运量学习和测试对比图');. m/ }1 @% R# Y2 e' v
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');+ x1 @4 m7 W  X, g  [
    42. legend('网络输出货运量','实际货运量');
      3 q9 G7 }/ F3 T- _+ m
    43. xlabel('年份');ylabel('货运量、万吨');) Z$ ^/ V\" M9 [. I$ O- Z( J
    44. title('运用工具箱货运量学习和测试对比图');
      5 M! d' e) \7 `: f$ Z+ q

    45. 0 A. N5 j# h4 S* d# u( X
    46. %新数据仿真
      + `3 g* x# k2 v( y2 @0 f6 [
    47. pnew=[73.39,75.55- z' k. O7 e! `3 s- ]- `/ U) |
    48.      3.9635,4.0975
      ) Q6 U# A- U9 x; O3 G. s! K
    49.      0.9880,1.0268];( _( h% e: w0 {; Q\" P+ n$ C
    50. pnewn=mapminmax('apply',pnew,ps1);% v\" g. ^\" s. _0 x, `- g: l
    51. anewn=sim(net,pnewn);
      3 I. ^) v' K+ P2 D/ _8 f/ R
    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. clc8 H0 n. i\" N! q; ^7 n$ z
    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,.../ V( V$ a$ w/ |# t( N
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];5 h: r\" \& T1 q# U\" ~& {. I, y
    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 F6 d# Y) x, N4 }/ n8 R
    5.     2.5,2.6,2.7,2.85,2.95,3.10];3 J8 f; x, G6 U1 I. W+ B! a  @
    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 a9 R: I4 }1 D: J/ P( Y4 p
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      9 i: x5 c) I( H; U7 g6 C
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      8 z. L/ w& V1 L& j+ o
    9.      22598,25107,33442,36836,40548,42927,43462];  z$ m/ D\" u  ?/ E
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      . X& n$ o; Y2 q4 `5 I5 E
    11.      13320,16762,18673,20724,20803,21804];* A; J; _$ y% n- [
    12. p=[sqrs;sqjdcs;sqglmj];
      9 T+ d5 y& Y9 j- @9 ]\" k
    13. t=[glkyl;glhyl];1 T9 e0 p5 q9 `. s1 N4 q
    14. %数据归一化
      % J/ w# g( H4 z$ w0 x9 h% l/ s
    15. [pn,ps1]=mapminmax(p);
      2 i- H8 M: L- g  {! u' {+ l
    16. [tn,ps2]=mapminmax(t);- ]\" ?: A. H# l
    17. %dx=[-1,1;-1,1;-1,1];2 O4 U7 s$ r# G1 H
    18. p0=minmax(pn);t0=minmax(tn);* g) @9 L+ h% U! J2 U) m$ q

    19. \" J9 B! G! O# w, J) p
    20. %BP网络训练& `0 p* Q) ^8 C' T
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      ! Q+ D2 [. Q# t$ g  W9 g1 A
    22. net.trainParam.show=1000;
      ' G* o- j- t' h4 }2 B! w/ Q
    23. net.trainParam.Lr=0.05;( H+ Y1 A/ G+ r- V& e
    24. net.trainParam.epochs=50000;) K* Y0 J4 [( p2 d$ N
    25. net.trainParam.goal=0.65*10^(-5);. H9 k/ X- C/ Z5 s6 V\" D- P: O
    26. net=train(net,pn,tn);
      + C8 O& W8 z# [* ]+ w- c
    27. ) a; f7 S0 r% _2 \1 z
    28. %利用原数据对BP网络仿真
      2 P5 l+ @\" F/ K
    29. an=sim(net,pn);' x* y. ^/ b7 x$ P( x1 Z. m
    30. a=mapminmax('reverse',an,ps2);
      6 Z- w8 L0 V' J* [3 i\" W9 t

    31. + p( v, i/ R& M; F. a
    32. %仿真结果与原数据对比测试
      * M' }5 E  I4 m0 s
    33. x=1990:2009;' Q) ?( D3 n+ V% _% t9 R( L# A
    34. newk=a(1,:);! T3 Q0 y7 W3 N  ~# C5 T\" [, L6 i
    35. newh=a(2,:);0 l! u: \. ]$ S
    36. figure(2);
      : t' ]% D  y8 {7 _8 `
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');) J+ s4 k, \/ L) O$ H+ r' \- u
    38. legend('网络输出客运量','实际客运量');
      0 l9 L9 J, }( ^. A4 C
    39. xlabel('年份');ylabel('货运量、万人');
      8 l+ W7 W; b% T, n
    40. title('运用工具箱客运量学习和测试对比图');
      ; i/ |6 U% d# u4 ]3 U: Y
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      , p- Y7 Q' s- [0 O* a
    42. legend('网络输出货运量','实际货运量');
      1 v+ N! H& l) P5 E9 ~
    43. xlabel('年份');ylabel('货运量、万吨');# e$ Q% j8 [- ^: C9 B4 r1 B5 }
    44. title('运用工具箱货运量学习和测试对比图');
      6 V% q0 U\" \. q- f+ ^2 D8 J

    45. - J/ f+ P2 r9 X2 h. y
    46. %新数据仿真
      % O4 e5 ]0 @: x- R8 |7 |  ~! z
    47. pnew=[73.39,75.55: r8 @( A. O; [' s3 x8 q* S
    48.      3.9635,4.0975
      , {1 x2 W% E2 x$ v
    49.      0.9880,1.0268];8 p\" D  Q3 |3 t: b: z
    50. pnewn=mapminmax('apply',pnew,ps1);) ]' }& q5 K' @  [( i  h( u: S
    51. anewn=sim(net,pnewn);- |; ~- c, I' x\" ~* @+ J0 ~
    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
    - f5 I; K4 B7 }2 ?4 A/ j0 ~忽略我上面那个,改动的地方在18,21,25行……求批
    ; z5 g& E$ [+ M
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    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 z; ?* G, f, \0 s: r# M
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      - q% d: g/ J: d% P
    3. net.trainParam.show=1000;
      1 y) p' e. L6 ]4 w\" `/ U6 w' r8 }
    4. net.trainParam.Lr=0.05;4 K% D8 t1 f% M  |; [, R5 E
    5. net.trainParam.epochs=2000;  s4 _, t: b7 j\" _1 [# m9 d% z
    6. net.trainParam.goal=0.65*10^(-4);
      * t! g  K' T: k% [- Q! s) z* ~1 ?
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,# q* K% \8 I% V2 X4 u& a
    一、改成单隐含层的,6个节点
    # E2 n- }5 c! {* z/ r* Z二、训练函数改成梯度下降BP算法 traingd: R! ~( h* Q5 v  ^. ]
    三、迭代次数改成2000
    . V# W( d# U" F7 O: L- ^" c0 P上面的参数是自己试的,我也不知道为什么。
    5 N# k0 N+ U3 z由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。4 v" }/ D! a- k5 |. m- I. P$ N
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-10-31 16:37 , Processed in 0.585741 second(s), 102 queries .

    回顶部