QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4767|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    7 W+ u- Z, K8 A" v- d: W, t5 {+ B( s8 n+ s; Z2 z( n
    %原始数据输入
    ( a* O1 t0 K8 l( V* [% ~. L9 ^8 M; }clc6 A8 p8 e5 {9 X
    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,..., Q( D9 u; B9 M4 B# L, _
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];. f/ I  G! p2 x  x0 r
    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,...
    / n6 f) v3 z0 Q5 B+ g! Z/ @9 r    2.5,2.6,2.7,2.85,2.95,3.10];0 ?7 d1 j3 \/ v  c7 z% h  Z; c
    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,...
    9 e( T9 {3 C* C# O3 n( }    0.56,0.59,0.59,0.67,0.69,0.79];+ g/ E# _- b7 P( H6 P% k; U" a
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...6 P7 j! c  I+ k
        22598,25107,33442,36836,40548,42927,43462];- [/ a7 J1 u* C; G2 @% _, [
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    0 P4 S( B! Y1 |    13320,16762,18673,20724,20803,21804];* t1 Y7 H8 M, Z4 a  \# m
    p=[sqrs;sqjdcs;sqglmj];7 Z, w+ j. ?8 R9 m- l  p( t
    t=[glkyl;glhyl];
    + U2 e1 E  J1 ~+ f. n
    6 Q2 X5 J9 u; X9 \0 N9 s1 o$ g, D%数据归一化
    * |5 u, p# D4 A+ q[pn,ps1]=mapminmax(p);+ G) z- o& |, T
    [tn,ps2]=mapminmax(t);
    7 N  E! o7 f- P& K% X2 Udx=[-1,1;-1,1;-1,1];
    0 I- m. p( {/ K  ]5 f. J) T: G" [2 S  I3 ~$ |; z
    %BP网络训练4 i; u4 e5 H+ a) ^' ~
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ' A; ]( Z: O6 S# y: j& X& qnet.trainParam.show=1000;
    2 C4 x3 w, c3 W7 A/ T9 o+ Q2 ^( Enet.trainParam.Lr=0.05;
    4 G) m  X. T1 [' `! M! {+ Ynet.trainParam.epochs=50000;' q$ b; E3 U, X: B# f4 `
    net.trainParam.goal=0.65*10^(-3);, o4 b, p. U( f! Q- E: c% a
    net=train(net,pn,tn);8 J3 v$ N6 s+ }. ]" S  H
    2 x4 A  ?) o- k* a
    %利用原数据对BP网络仿真
    , l- G; u4 E- z/ [an=sim(net,pn);
    & c% ]  U) I8 b/ _/ \7 Ra=mapminmax('reverse',an,ps2);* |# w$ r0 S0 ]6 A. c2 M; c2 J' h+ q) a
    / `2 x3 m0 Y, I% i6 v  x
    %仿真结果与原数据对比测试# `. x( u3 }& P  K
    x=1990:2009;
    ' l3 ~2 ~' ?' _' F. O! I2 g5 Q1 snewk=a(1,:);
    - O6 R5 Y; c* p: o0 anewh=a(2,:);
    : Z5 D8 T& C& s. b( ^figure(2);7 f' x3 y/ P3 K0 _$ c% M
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');: x0 ~" z( C' R8 w' i' {0 `# d
    legend('网络输出客运量','实际客运量');$ X  H* U$ v' i! ^* M) i
    xlabel('年份');ylabel('货运量、万人');' h! H0 K) K. j4 u3 c0 V
    title('运用工具箱客运量学习和测试对比图');5 @* v7 `  k& q& g
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    . s% w- [0 K; q  o& k2 Wlegend('网络输出货运量','实际货运量');
    $ _( o. u" @) ?+ L+ r% Axlabel('年份');ylabel('货运量、万吨');2 K+ S9 w& M: _2 ~5 b1 n- e5 r: Z
    title('运用工具箱货运量学习和测试对比图');
    & f$ k3 W4 q( A/ `5 P: S* F5 `- o, `# [7 c  ?* M3 f
    %新数据仿真
    1 Y4 A: w5 }5 ^9 T) Y2 j! wpnew=[73.39,75.55
    ) ]& T4 V! X$ o    3.9635,4.0975  ^1 N3 ]1 e* a5 p1 y* j8 Y
        0.9880,1.0268];+ Z; x' n* Z" n) m
    pnewn=mapminmax('apply',pnew,ps1);7 w" o% ?( [% `; [3 D2 m! M7 F1 D
    anewn=sim(net,pnewn);
    # ^  x% t8 S1 h3 J# v' ^anew=mapminmax('reverse',anewn,ps2)9 z# p- q9 O& e0 ?7 K( ^

    + p0 `# h) e0 D  R2 y( U* w

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

    `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
    : s. @& Y; ^8 v看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    ' H$ ^- J. S& Z/ x- A+ B$ x  V因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:! R% _3 {) P; \6 d9 t5 f# Y% ~
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');, T+ R8 `& _+ K" e$ Q+ d# ]
    我修改为:
    % n6 c6 B; P, Inet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    , {4 {5 P5 E2 ], V' r然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:& @' Q% @. w4 U7 O8 m" }
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    " M. q- ]4 V# d  Ca=postmnmx(an,mint,maxt);
    " y" d; C; u4 _& |* W1 Dpnewn=tramnmx(pnew,minp,maxp);
    + A! b' ~* C: m) e0 X0 s5 vanew=postmnmx(anewn,mint,maxt)
    - @7 }; k6 R% N& s我修改为:
    6 R" L) w7 y/ l4 N4 g[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    8 H2 r) \- ?9 [( G% u. oa=mapminmax('reverse',an,ps2);* O1 Q: @4 S% n' `5 |1 Q5 a# L
    pnewn=mapminmax('apply',pnew,ps1);
    % m9 c$ Z9 [* ~* w6 kanew=mapminmax('reverse',anewn,ps2)3 `, _- l: L0 A) B
    ; r2 {( s5 G/ G* z& }1 }' W4 y
    原程序为:
    0 L# h1 Q. x9 D%原始数据输入% _8 }! S" P' A
    clc# [. f; i$ N0 u0 k- F& O7 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,...0 X6 u. z# H# c1 s7 C/ s2 b
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    2 [- ]# S8 }5 E7 rsqjdcs=[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,..., Q# t( M# q. S! N( {  P
        2.5,2.6,2.7,2.85,2.95,3.10];, H/ d  d1 t! ]" l9 U( Q: U& m
    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,...
    8 i+ E/ P0 w- P; A4 c/ F% Z% z    0.56,0.59,0.59,0.67,0.69,0.79];/ \  {  g. l) O! |' g9 K& R
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...2 s! `3 y" T' R0 r. @
        22598,25107,33442,36836,40548,42927,43462];
    1 e" m/ k9 |5 a3 k9 t) Wglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    0 T4 ^2 D+ N5 N  u6 S    13320,16762,18673,20724,20803,21804];) w' S1 x  S3 B- s' d0 ^% _9 s
    p=[sqrs;sqjdcs;sqglmj];4 k$ c1 V/ ~9 u/ U5 L
    t=[glkyl;glhyl];
    ) t6 W/ f( I3 O4 m0 `# @! a/ Z7 F1 K  @! P/ Q- S
    %数据归一化  q' m6 C& |6 ~" d# c7 N7 n6 W
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    6 y: b* I) E" j) bdx=[-1,1;-1,1;-1,1];
    ; t* A2 V' A2 i$ P  R6 i, G' C1 @
    ' r# h- p* t) W6 a) e' M
    %BP网络训练; v$ O8 ~7 o0 X/ S
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    7 O9 A0 t$ Y. s, o* x7 vnet.trainParam.show=1000;
    $ }# i, T- @1 Vnet.trainParam.Lr=0.05;( I; o  f: U4 R" k. P1 ]
    net.trainParam.epochs=50000;
    $ g8 j3 E" V% h" X% O' {net.trainParam.goal=0.65*10^(-3);
    5 W% f0 c" V: ^: M7 Jnet=train(net,pn,tn);) U8 {$ R7 _4 m$ S0 i- @0 t  j

    3 P6 s  R# q. x5 O%利用原数据对BP网络仿真
    5 s% _) t+ o, D7 k4 l5 wan=sim(net,pn);; m6 C7 ?. f( q5 C0 O8 J9 o/ S
    a=postmnmx(an,mint,maxt);' |; j1 W8 H2 Z' k3 J% x/ u

    4 ?2 E6 q( S+ B! S+ E7 `. N! n%仿真结果与原数据对比测试
    8 y) V) O% W" I" K  yx=1990:2009;
      N% C8 C* \7 f  ?- Tnewk=a(1,;" |8 L) p9 [: S, Q% G
    newh=a(2,;
    3 y1 |% M, u6 Mfigure(2);+ J4 ]3 b. d: o; B, D4 y8 i+ W
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');; O) \/ C* K: F# U
    legend('网络输出客运量','实际客运量');
    ' D5 u. g, r3 j* {xlabel('年份');ylabel('货运量、万人');0 j. u5 Z( n8 ]% I: A; k1 ~8 i# R' G
    title('运用工具箱客运量学习和测试对比图');" _" _) i: Y) @% D9 m0 T
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');: H% A0 E6 r# U. _
    legend('网络输出货运量','实际货运量');4 E( }' ]+ q( I  e% P
    xlabel('年份');ylabel('货运量、万吨');
      F; t4 s: o9 f; Etitle('运用工具箱货运量学习和测试对比图');) i- j0 E) j$ A
    , M6 N9 l& k9 o& e: c6 u
    %新数据仿真& Z) f0 B! l5 a! w  ]. E  d- X# f! {
    pnew=[73.39,75.55& h" X: ~0 \" {: g' I9 [
        3.9635,4.0975
    * @1 m9 i* Y; ^1 m    0.9880,1.0268];6 X3 f( N3 x( N5 Z& P1 w
    pnewn=tramnmx(pnew,minp,maxp);
    / N* f$ y9 U, T7 o, hanewn=sim(net,pnewn);
    0 l* e* ?) ]: [; s9 _anew=postmnmx(anewn,mint,maxt)

    ! R& ]/ A0 s' H$ N2 o% F/ w: s2 p5 a* L* h; _% ?" v
    修改后程序为:
    ! R& w) b6 Z5 l) ~, f- K; t%原始数据输入
    ' v' \# q7 ~. G+ y8 tclc
    7 ^( I3 c3 h/ {1 ]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,...
    $ e+ ?; s& A5 K2 }1 Y    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    : R; p$ v, \& V4 I2 msqjdcs=[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,...( k# d% |9 n5 b. ]) @6 T& @
        2.5,2.6,2.7,2.85,2.95,3.10];( e3 s8 V+ j! L* }. H
    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,...
    , P6 k3 [7 v: w% H* \    0.56,0.59,0.59,0.67,0.69,0.79];2 S$ S6 _) z" a7 p. U+ C
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    & R: I" m% f- M    22598,25107,33442,36836,40548,42927,43462];) d$ A6 \) V( ~; C$ t- X
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...4 ^+ |2 T: M) I- u
        13320,16762,18673,20724,20803,21804];
    ; k. I0 H0 C- F+ {- i( Pp=[sqrs;sqjdcs;sqglmj];
    + ]/ B) {5 {, Nt=[glkyl;glhyl];
    ( }* ^/ U+ A: _$ s0 p
    2 M8 U' {0 I  m! z5 _9 ^2 a* L) W%数据归一化7 ?! G: S8 [7 O
    [pn,ps1]=mapminmax(p);
    ; d1 X' N7 y' c- K. I( P' f[tn,ps2]=mapminmax(t);
    0 M5 w! u5 o! ^# \/ [% x: N+ }& f; R
    %BP网络训练. n" w( \2 F4 D' V3 K. d2 w
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');0 m% A. w" j$ z( k. h" y: \
    net.trainParam.show=1000;
    8 }9 O1 R; [+ l( @net.trainParam.Lr=0.05;
    . c( H9 }& k! p5 {net.trainParam.epochs=50000;
    ( ~  `, }1 ]( x: S/ i" _) |net.trainParam.goal=0.65*10^(-3);
    3 G: S' c4 O& S% u7 Tnet=train(net,pn,tn);$ _5 I) K9 ~" x' g

    3 p  s9 R8 b5 P$ I1 m9 `  o%利用原数据对BP网络仿真1 ?6 S7 X4 l: b( }1 f2 I- j
    an=sim(net,pn);
      E$ I* x& X1 `4 i  y1 Z! w& ma=mapminmax('reverse',an,ps2);
    2 w. D3 D# ?5 q, t9 z6 f/ F
    4 h3 g, i- T$ i%仿真结果与原数据对比测试
    ' L- Y0 R% ?- X6 D, }3 B4 ?9 S# Ox=1990:2009;
    ) e- ]. }) n' A4 u2 Hnewk=a(1,;( c0 t0 `1 b$ L3 m+ y
    newh=a(2,;
    % Y* W; U0 l2 B, m" ?" Yfigure(2);
    ) s! Y7 Y# ?2 l$ \2 {+ p2 _  k& Q( b; msubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');0 r- T& T! F  G0 G
    legend('网络输出客运量','实际客运量');
    ) Z- C* [% h& m' u$ _' I8 g* hxlabel('年份');ylabel('货运量、万人');
    2 @8 o4 `% Z$ ktitle('运用工具箱客运量学习和测试对比图');
    $ t% x+ I/ G6 M* N, G( Csubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    7 F8 O. P0 D4 o. z, f2 Glegend('网络输出货运量','实际货运量');
    . v  s! J. f: ?% f( h" gxlabel('年份');ylabel('货运量、万吨');, T4 K9 M- |0 E. n. V. r- q
    title('运用工具箱货运量学习和测试对比图');
    , ?8 X% p; d3 E
    + m5 S+ n- T: {0 ]( p' T%新数据仿真: y# Q) P- q( g* }) z* u3 y
    pnew=[73.39,75.55
    1 C2 ^" L/ P( N    3.9635,4.0975
    8 G- o* c. B$ M6 X    0.9880,1.0268];' O$ B5 y9 S: I
    pnewn=mapminmax('apply',pnew,ps1);( _4 r; T1 p' r( J7 ?
    anewn=sim(net,pnewn);* z5 }% J7 d, R% ]9 L
    anew=mapminmax('reverse',anewn,ps2)
    4 v( y" f# m% Z1 \( A# h; y(修改的地方用颜色标记了)$ W: e# N8 |9 d9 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- a- j+ w' r, Z+ @$ i# u1 V5 y' 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,...\" i, c\" S* O2 \
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      2 n3 f. e* f: g
    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,...
        a) U% K6 E' N
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      : R. G1 l0 v: ~3 R7 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,...1 T2 L5 {3 S$ f
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      . @  U8 }3 p- ?' f( ]
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...9 n! G# w/ t\" _
    9.      22598,25107,33442,36836,40548,42927,43462];
      6 I& D. g1 I! I7 q0 f9 f
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      * Q6 h! f1 |* c* \+ O% b  C; _
    11.      13320,16762,18673,20724,20803,21804];
      7 B- ^1 j- s\" q3 K, T\" w0 S& k
    12. p=[sqrs;sqjdcs;sqglmj];- o9 x5 n( |# G4 i4 W  k/ x6 J! W2 m& T
    13. t=[glkyl;glhyl];
      # \9 h7 T  Y3 ^& h/ R
    14. %数据归一化
      ' e\" G6 Z: U$ k; D0 O1 J
    15. [pn,ps1]=mapminmax(p);
      # b) [. {+ w% W8 a9 ~' P6 i
    16. [tn,ps2]=mapminmax(t);
      ) _3 q) a/ F) H) n0 h8 F
    17. %dx=[-1,1;-1,1;-1,1];
      2 K3 S! |% v( z& E
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]- Y& ^% [0 S% J+ Z3 J  S
    19. : K; u# G, j3 d! A( e
    20. %BP网络训练
      ' _* I, X* V& D9 y, n\" d
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      + o! R  E4 \- X5 S- v
    22. net.trainParam.show=1000;8 w0 [5 y0 h! n+ U  c$ Y$ |/ Z
    23. net.trainParam.Lr=0.05;
      & |! W( ~$ r3 p7 l! O4 f8 f) G* `% Q
    24. net.trainParam.epochs=50000;
      # i2 i+ h$ L$ V' }; L# X* {
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      4 j2 Y. b5 c: X3 e  Q8 [6 o$ \
    26. net=train(net,pn,tn);
      5 @9 n6 l: [' [# O( h/ w\" O

    27. 7 F. C, \- |. s
    28. %利用原数据对BP网络仿真: ^& T  r\" j6 I\" l) m1 u
    29. an=sim(net,pn);
      $ v5 _& G; Y6 V4 n5 j. w8 R
    30. a=mapminmax('reverse',an,ps2);+ K) ^; l& S( Q

    31. / e- V: _# s8 _% f/ G1 q
    32. %仿真结果与原数据对比测试
      / X0 a; I: E0 U* i0 i- e% i: |
    33. x=1990:2009;
      - ], n5 s+ H\" `; X  B' Q) v2 _
    34. newk=a(1,:);
      \" b. A! h; n  r( e
    35. newh=a(2,:);
      / e/ F4 B- p) c6 T
    36. figure(2);
      * L' I9 M/ x' |$ A# O9 j: R+ v% G
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      2 e+ P\" s; s) F- `
    38. legend('网络输出客运量','实际客运量');) K+ R# m0 {  W5 ]* H+ c
    39. xlabel('年份');ylabel('货运量、万人');& D( k& R3 y2 ~2 P\" c  ~
    40. title('运用工具箱客运量学习和测试对比图');
      7 I( ^2 w! L$ X& T
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');, ]7 ^$ \% N5 e
    42. legend('网络输出货运量','实际货运量');
      & @: E+ v) I0 F3 f; D# J
    43. xlabel('年份');ylabel('货运量、万吨');
      5 L5 t# B3 v) q- f2 a* V! H- v
    44. title('运用工具箱货运量学习和测试对比图');: |! {; K\" b% E4 T
    45. 8 F$ s8 ^, U# O7 W; v: @
    46. %新数据仿真
      , B; y) T1 S% q1 E
    47. pnew=[73.39,75.55% ~, d- D\" \; h' W6 P+ A7 L
    48.      3.9635,4.0975
      # I- y6 N) u. P; g6 ^( m+ ?
    49.      0.9880,1.0268];3 p/ i7 G* H, q2 f. d! B9 Y( m
    50. pnewn=mapminmax('apply',pnew,ps1);
      + d. N0 @8 C$ [2 F& G* Z/ Q6 t
    51. anewn=sim(net,pnewn);7 G6 O& ^4 ]1 u' r* g+ `& K9 z1 P8 [4 ?
    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% y# q5 n4 I1 Y+ l
    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,...1 O: Z! O' J/ A
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];- r/ w1 B\" ~  u  S$ z7 p5 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,...
      2 ~* w6 Q7 v3 e4 t4 ~7 R& v
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
        w; v) W, W6 I7 d
    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,...# p+ Y) E) {0 c4 ^5 I4 |
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      & E: _- d) \! S* V! C9 ]) @2 R
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.../ t2 ]  M4 x$ y( o5 z* \
    9.      22598,25107,33442,36836,40548,42927,43462];# u. S0 J2 v5 e
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      8 D- f4 b  o\" V, E
    11.      13320,16762,18673,20724,20803,21804];
      % }( |. n5 G$ }. u
    12. p=[sqrs;sqjdcs;sqglmj];
      ' j  N% T\" q* k- ~* S2 j, h
    13. t=[glkyl;glhyl];+ m( _& K8 N' x6 B1 S. t: v: N
    14. %数据归一化8 G1 _6 q/ j! n\" W0 s. f: a
    15. [pn,ps1]=mapminmax(p);4 D1 T# B( }2 ~# {# E
    16. [tn,ps2]=mapminmax(t);1 `: T\" t/ M) k* B
    17. %dx=[-1,1;-1,1;-1,1];1 A; s5 a\" C+ V- S
    18. p0=minmax(pn);t0=minmax(tn);+ ], f2 v& q6 T5 F2 i- g7 X4 x

    19. $ D  ?6 P8 Q' `2 \% T. z3 p; p
    20. %BP网络训练( S/ v1 O# n( d2 {* }* g6 C
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      % B* k! |1 ^# A6 F& L
    22. net.trainParam.show=1000;0 _4 H- z, d( l. Q' T* b; J
    23. net.trainParam.Lr=0.05;
      3 o, V: a% p; F% `2 I. a
    24. net.trainParam.epochs=50000;
      ! c* V  H  T% n. a, c* s
    25. net.trainParam.goal=0.65*10^(-5);+ x6 S8 N+ G. z5 n
    26. net=train(net,pn,tn);9 }7 o4 ?  d; d  j( i9 X  F7 N1 M, m' X

    27. / g$ t1 O1 R& A! U+ s3 h4 H
    28. %利用原数据对BP网络仿真, c* [& V% o& k7 Z/ _7 q
    29. an=sim(net,pn);, h; _8 N8 u0 J3 u5 C
    30. a=mapminmax('reverse',an,ps2);
      9 s! L* u2 {; ^' g; v( }
    31. 4 }8 F\" y\" S! U  x
    32. %仿真结果与原数据对比测试 % n( r- C. D8 I: |
    33. x=1990:2009;
      , f7 I0 |6 M; z( a
    34. newk=a(1,:);
      . d. g8 ~5 J* c4 R6 \
    35. newh=a(2,:);! ?' J3 F6 M+ j0 y( a
    36. figure(2);
      : P4 j4 T/ o  K5 Z( `
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      \" x; p7 p% F  U( L' }0 Y$ f! G, D
    38. legend('网络输出客运量','实际客运量');
      5 C+ k7 ]  M/ u
    39. xlabel('年份');ylabel('货运量、万人');
      5 F( G& `5 x9 ?. _0 W
    40. title('运用工具箱客运量学习和测试对比图');
      \" L4 W! ~& c' }8 i
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');# k5 X. Q' Z* [' J; K
    42. legend('网络输出货运量','实际货运量');
      4 _\" a- K( F$ N* Q
    43. xlabel('年份');ylabel('货运量、万吨');
      # a* Y2 s# o9 d
    44. title('运用工具箱货运量学习和测试对比图');/ R/ a( D: W% ~* X# j( I

    45. 5 [/ Q7 Z: X1 Z8 L) }) {) b' t+ J
    46. %新数据仿真
      4 p* F. T- T# A1 c1 q2 c% J
    47. pnew=[73.39,75.55
      / `1 ^1 l; B) G
    48.      3.9635,4.0975+ A$ F1 o& s( j! w% A
    49.      0.9880,1.0268];2 J) \5 E' v. p5 x
    50. pnewn=mapminmax('apply',pnew,ps1);% O* i& O1 T$ x/ N) q. v
    51. anewn=sim(net,pnewn);! T% N! K! x, P3 T5 d* 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
    5 `6 u& F+ O2 {. f0 ]' M* E忽略我上面那个,改动的地方在18,21,25行……求批
    % D+ M! R, \$ f6 W2 ~
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      ! Y! _; H( m6 ?+ L& N
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); ) H7 {+ ]6 x3 p3 ^8 ]
    3. net.trainParam.show=1000;7 i, j. ]( {5 p3 H3 F
    4. net.trainParam.Lr=0.05;
      ! l\" `5 U7 N  i
    5. net.trainParam.epochs=2000;
      ) @6 y9 q! y  |9 y& {
    6. net.trainParam.goal=0.65*10^(-4);
      # ^! ^$ ]8 ]\" D# ^0 f7 K: p
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,0 o2 K; A6 `9 w2 M5 S! x
    一、改成单隐含层的,6个节点
    & V  n- z& u6 N9 x5 c% ?( Z二、训练函数改成梯度下降BP算法 traingd
    9 I5 ~7 E: Q( S- |; j三、迭代次数改成2000
    ) n0 u% Y( V/ q6 _9 a  `4 }上面的参数是自己试的,我也不知道为什么。
    + P7 x9 I+ [# h/ f- a9 \$ }6 L由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    % H$ l' m& C9 Y7 G; S2 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, 2026-4-16 15:05 , Processed in 0.548758 second(s), 103 queries .

    回顶部