QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4755|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    - Y: V/ }% L0 y, H: d% }: r/ {  w( [/ U# U; s7 O% P: V
    %原始数据输入% R, U% C0 g* u% F( X
    clc  G7 [6 M+ C. m+ k
    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,...
    6 p' L+ G9 \/ L) m7 L/ b6 t$ N1 f    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    1 c' ?7 ?! W6 I$ dsqjdcs=[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,...& O* _( n7 d  z5 Z/ ^
        2.5,2.6,2.7,2.85,2.95,3.10];( K. q, Y. C8 U7 t+ i2 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,...' S  ~) c, W( J
        0.56,0.59,0.59,0.67,0.69,0.79];
    8 U( n0 s$ k; X" eglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    5 y0 I2 @, t: O" l' }6 L    22598,25107,33442,36836,40548,42927,43462];
    1 W* O$ c: w! G7 e" o: Rglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    . d  u0 E* X- Q5 l7 ~, q    13320,16762,18673,20724,20803,21804];3 t3 G" Z" L( L4 m' `% G
    p=[sqrs;sqjdcs;sqglmj];7 R3 Z  v) @# d% S
    t=[glkyl;glhyl];: d, P' K( H* S1 U9 ]' K

    , p+ {* p; {+ H1 |" r. P0 C3 }0 c- s  ?%数据归一化  S  c; y6 A0 \( b" Z5 F7 j* }
    [pn,ps1]=mapminmax(p);: E" i& c8 N# |4 S( p3 C, X# h8 q
    [tn,ps2]=mapminmax(t);5 Z0 d- g' Q/ y4 Z
    dx=[-1,1;-1,1;-1,1];
    & V) S6 ~1 f9 z; c/ J! m
    $ r4 C; }/ i+ s%BP网络训练0 t9 x( c( u6 O$ ^. v
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');# l: J3 S. Z+ J/ B( Y
    net.trainParam.show=1000;
    ; E& j, r$ m0 V; V5 v, ?- `1 vnet.trainParam.Lr=0.05;; k1 K' q/ V* e% F0 B" i
    net.trainParam.epochs=50000;7 w# ~" s2 f2 m. _- I% M
    net.trainParam.goal=0.65*10^(-3);0 W4 z3 C7 N: u3 q, J; H
    net=train(net,pn,tn);
    9 ~2 V" b) g% L8 Y2 N2 c8 k1 E
    * D: n, t1 h7 w  K7 ?6 ~- I3 g%利用原数据对BP网络仿真' {2 r& ?2 F9 E
    an=sim(net,pn);) o' I7 ^% {2 g1 C: ^
    a=mapminmax('reverse',an,ps2);5 v; v9 s0 |8 ]0 U3 D. Q2 b

    6 _, V+ o5 @7 U4 A7 x1 ^* U%仿真结果与原数据对比测试
    6 L  G2 L( ^9 K& d* Xx=1990:2009;3 ^6 `/ f2 ^& d9 B1 }
    newk=a(1,:);
    8 `) k8 i0 h* e8 Nnewh=a(2,:);
    7 z! ^. ~, [$ ]& h0 q  j2 Ofigure(2);% F8 I0 I! q! `2 d- C6 [
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    6 v+ |( m( u# V7 a: |8 G0 |legend('网络输出客运量','实际客运量');: C/ H% _- A& E# h0 E
    xlabel('年份');ylabel('货运量、万人');
    3 W" Z3 ]9 j* E/ T; Btitle('运用工具箱客运量学习和测试对比图');
    " T; U5 c3 c. I) Q( B/ W# h. X9 Bsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');# C" }+ _! _# \# y$ i- B
    legend('网络输出货运量','实际货运量');
    & C( V, e. I9 |1 p: l5 ?/ J; txlabel('年份');ylabel('货运量、万吨');
    3 w- ~2 B5 l: \! ]. Ztitle('运用工具箱货运量学习和测试对比图');2 c6 X8 q0 I7 `  o! B

      m  c, e8 S) a3 \' q( p/ I%新数据仿真
    / T' D8 t) C/ U6 d2 \pnew=[73.39,75.55
    + L6 |" P2 |, s    3.9635,4.0975
    . v% n7 o% [; V( t- L    0.9880,1.0268];* w5 ]0 x, d3 u! M4 |6 q7 q
    pnewn=mapminmax('apply',pnew,ps1);, G: T0 j3 Q; c! O
    anewn=sim(net,pnewn);9 W# e. G+ [" @' H' X- H; x
    anew=mapminmax('reverse',anewn,ps2)
    $ n7 z4 U* K. Y  h  c, y; |& e- Q) u! }+ r

    `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
    . p+ N/ |1 H/ E* ?* C看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    ' g5 r2 k! u+ t# N+ o3 Z- |因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    6 o8 i( @# ]- T# Xnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');" u- n- z, S3 Q0 a$ H& ]3 ]" j
    我修改为:" L0 I' v  [% r: G; g
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');: q5 a3 P0 r( B7 i* F$ O
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    3 `  `+ a0 \/ X8 j/ w/ m2 p- e! o[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);( h5 J, g2 p  C' {7 t8 N6 _- e
    a=postmnmx(an,mint,maxt);7 d, A9 H; }: M9 J4 h: A
    pnewn=tramnmx(pnew,minp,maxp);5 H% X+ j: {3 G( f1 d4 s+ r
    anew=postmnmx(anewn,mint,maxt)
    & S; J: W9 y; I! \3 q我修改为:3 V* Z" N, R* _4 h: X: r% a2 c
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    9 s' p% [; g5 `2 u) N. ]a=mapminmax('reverse',an,ps2);1 o4 J7 Y* p  b# R! Z: Y" v
    pnewn=mapminmax('apply',pnew,ps1);
    : t0 }' G# d) C( w. Ranew=mapminmax('reverse',anewn,ps2)
    3 h/ o4 E7 r3 n+ m9 I2 _' t! ?- {% E7 B3 f
    原程序为:
    0 U8 |& e) |& O- @8 j/ t! `$ D0 Y%原始数据输入4 d* c. M) E* \% F
    clc
    ( Z& G8 D* J5 m- a9 j1 [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,...
    - y9 W0 |  A2 {    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    7 X, m" s# o8 x$ S8 D8 d8 Qsqjdcs=[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,...
    4 A+ N- n' c% H% Y" Y! q    2.5,2.6,2.7,2.85,2.95,3.10];, N. g, V: I8 [5 \1 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,...& o3 \% x  p8 F# r2 ~) _6 E# c
        0.56,0.59,0.59,0.67,0.69,0.79];
    6 G, A: w' W4 ?* o# K( }glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    * p; a5 b% W/ V3 J    22598,25107,33442,36836,40548,42927,43462];
    0 o* P& S: t3 ]+ W: @/ Kglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ' z/ @3 s. r3 k1 Q+ U% z  n( I9 d/ d0 \    13320,16762,18673,20724,20803,21804];3 s. o" e9 g9 h/ `
    p=[sqrs;sqjdcs;sqglmj];
      X* O& D0 R5 n* t* e, {% |; L  pt=[glkyl;glhyl];
      p$ |3 Q2 _, Y+ `( |1 L" \3 M' V. [- @) r& ^7 j" v6 G
    %数据归一化% ~& E0 l, e. Z& {) m& B' A( j! P
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);* z7 F/ v8 `) {7 V/ I7 s9 g9 N3 J
    dx=[-1,1;-1,1;-1,1];
    % v+ i7 p& ^$ i$ X5 m7 Y

    4 o4 y5 M# l4 v: f$ W6 A% u% h%BP网络训练
    4 m1 ?( y5 d% E; m( Hnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ' o+ C" g* X# Y- w4 S: H% h7 c' Knet.trainParam.show=1000;( u: \. s" R  ~3 {$ _
    net.trainParam.Lr=0.05;  L+ E8 p9 w. e+ a, o( F5 l
    net.trainParam.epochs=50000;
    + m. z* y# Z8 `$ ]net.trainParam.goal=0.65*10^(-3);0 E+ Y) G, Q$ N, B
    net=train(net,pn,tn);
    - |) h! B4 K0 `3 G1 b; U
    4 S4 u! V# ?+ b/ P/ H%利用原数据对BP网络仿真
      }: ~+ o8 B$ n1 e* y  D0 Jan=sim(net,pn);
    $ X" T# F# I: H/ Ia=postmnmx(an,mint,maxt);
    $ S: m& X0 S( X, ]
      V; a4 n& B( g. L: O%仿真结果与原数据对比测试
    1 U' ?) c7 e$ J# K7 ~" q* cx=1990:2009;6 F8 C& o& m5 d5 |4 t0 y) A6 V
    newk=a(1,;
    , l' ]+ T, x5 v& b' @newh=a(2,;
    ( l0 I  ~+ ]5 h, N) ^! ufigure(2);0 r9 m/ J6 H* K
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    0 Y  D" }3 \* }. o) Ulegend('网络输出客运量','实际客运量');3 Z: k$ P$ O8 f1 ~  _, Q! H
    xlabel('年份');ylabel('货运量、万人');
    . T3 z* |! E1 f8 D# V- A# @title('运用工具箱客运量学习和测试对比图');
    : G& j/ `. V. v( X6 C3 V, ~6 Lsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    1 ^1 V1 {: B6 p2 w+ ?legend('网络输出货运量','实际货运量');7 l" B% V1 u& y7 c$ R& ^* g
    xlabel('年份');ylabel('货运量、万吨');" I! q$ h, F( U
    title('运用工具箱货运量学习和测试对比图');
    5 j( U+ R- L  Q2 `5 y! ]# q; C' e: D7 E
    %新数据仿真5 x  v1 r, C4 j3 A; H
    pnew=[73.39,75.557 N  o* V. E( |1 d2 l
        3.9635,4.09759 Y, W3 j1 r5 G. L
        0.9880,1.0268];. t; n9 C1 p- B  c
    pnewn=tramnmx(pnew,minp,maxp);* \. t% w) ?/ n% o
    anewn=sim(net,pnewn);" ]% f& A0 s3 S, }
    anew=postmnmx(anewn,mint,maxt)

    3 c( @% y. H4 w" F; b. e+ j" V7 `+ O/ _: Z6 k; B5 t
    修改后程序为:0 p9 K2 q9 u) T% t* c) p/ x8 j
    %原始数据输入
    * @, }% }6 f+ P4 z( S* B% J' i9 Bclc) i, ^/ S4 \/ M$ M( _. a' A5 }4 K
    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 I4 J$ v& B/ @" G" `    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    . I% F9 O5 x( ], qsqjdcs=[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 r; k% @  f: P% z/ `! o    2.5,2.6,2.7,2.85,2.95,3.10];4 _3 u1 h& z, h7 k; L* 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,.../ F* L' _4 B3 `; Z9 \
        0.56,0.59,0.59,0.67,0.69,0.79];" `* G# U! `: A& p, b5 M
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...7 B  `2 M. O, [) R
        22598,25107,33442,36836,40548,42927,43462];
    5 l% N+ ^2 Q; t. c) M. p: {' [glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    * s4 |2 a/ q4 D( i    13320,16762,18673,20724,20803,21804];; ^) B  H) [# V$ F  i! p
    p=[sqrs;sqjdcs;sqglmj];, Q5 b$ Z. O2 Q9 Z
    t=[glkyl;glhyl];
    + \6 ]  S/ w2 k' @; k* }$ n
    ( e2 J, g" o% c( G9 s, i%数据归一化
    / z% O  f7 O+ C2 c[pn,ps1]=mapminmax(p);. p6 Y* N: ~+ P+ y. N  [8 {. t
    [tn,ps2]=mapminmax(t);& W8 C! D0 a: z2 _

    : A8 U$ o! D) K9 v8 n* j6 N%BP网络训练3 F( K* ~7 X( d, w; w4 y" |% r
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');" |9 W2 Z4 `- c
    net.trainParam.show=1000;
    ( N7 T5 ]& Z6 W  C$ Qnet.trainParam.Lr=0.05;
    ( v# ?* \  u* `4 b5 Cnet.trainParam.epochs=50000;( j, U& W! B; v4 _3 M; f- v) x7 _0 |
    net.trainParam.goal=0.65*10^(-3);
    ; w* B8 K6 o4 d+ w1 Snet=train(net,pn,tn);( v2 s% _: e0 _) L' `& I4 e
    * o+ F& M) `# ~# r
    %利用原数据对BP网络仿真
    - e/ v8 _1 n, van=sim(net,pn);
    7 P) z( r' k& I; o4 B" C) c8 ca=mapminmax('reverse',an,ps2);6 `$ A; R1 `. M) u  o
    $ W4 L7 e$ D# m  _' q" `6 M$ P
    %仿真结果与原数据对比测试: ?% S0 K9 c# l6 r+ j# X
    x=1990:2009;& F- h1 t3 K4 G8 m  P% i
    newk=a(1,;
    9 i1 P  \' X2 ^2 L/ i7 N& Unewh=a(2,;
    , P& u; I' n( Mfigure(2);
    9 o# z$ [5 i" w2 b$ F5 P) gsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');) b- N- B- v9 M7 V" w. n8 O
    legend('网络输出客运量','实际客运量');
    # F/ d4 ?! R6 E+ m( M& |  u& f1 vxlabel('年份');ylabel('货运量、万人');
    & g' V! T, [! L& d8 y3 Mtitle('运用工具箱客运量学习和测试对比图');4 u. e' D2 T& _" o6 K! b9 w
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');9 B$ D+ O1 F3 b8 \0 V
    legend('网络输出货运量','实际货运量');3 }! q8 _1 n  _% P
    xlabel('年份');ylabel('货运量、万吨');
    2 h8 n. Q  j$ `* y+ y, Ttitle('运用工具箱货运量学习和测试对比图');4 t$ P. S# H* {/ J9 q9 ^+ W: }; a

    : l' G0 J; m; O8 c' w%新数据仿真% X9 s0 Q2 l# [: m" o. ~. V
    pnew=[73.39,75.55
    " o# U. u  O4 O    3.9635,4.0975: |: [6 j+ }5 y5 f2 x
        0.9880,1.0268];6 e* `  q2 t/ ~0 i9 k6 h" w
    pnewn=mapminmax('apply',pnew,ps1);# E! _. T* H( H# O
    anewn=sim(net,pnewn);, ^3 J6 e/ V% ?  j) b
    anew=mapminmax('reverse',anewn,ps2)
    6 d+ Q1 }( q) {: h(修改的地方用颜色标记了)
    . z) k( z- B' a麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      8 H( ~9 `9 u% `. A3 |
    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,...+ H; |) T# i6 Z# b% J1 p3 ]
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      ; Y0 b+ j/ {  A- S9 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,...& C7 \5 ]- `! z5 \\" |. G
    5.     2.5,2.6,2.7,2.85,2.95,3.10];/ y  L! O+ n4 P+ e7 a# c
    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 ~, h* E/ g8 o0 {/ v( \  z
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      \" i, _6 ]/ |% |* P
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      4 D0 B& @; t' F. o
    9.      22598,25107,33442,36836,40548,42927,43462];
      7 i$ D: R2 P\" n\" J; ~/ ?
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...4 E& I0 v3 s. L, y# l, L/ I
    11.      13320,16762,18673,20724,20803,21804];0 C# z8 i; `1 P- a
    12. p=[sqrs;sqjdcs;sqglmj];
      2 y: @& ]# o+ O\" U
    13. t=[glkyl;glhyl];
      % t/ c! K6 C; @
    14. %数据归一化
      ( J% e) `( O& _$ s1 N
    15. [pn,ps1]=mapminmax(p);
      % }  j- h/ k$ K9 p' l5 d% {
    16. [tn,ps2]=mapminmax(t);5 F& q5 G) }0 y  {; O
    17. %dx=[-1,1;-1,1;-1,1];
      7 o* Z\" W8 Q* a- H9 ?( f
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]# }4 u* D\" C. v* p
    19. 3 Y& {$ R1 X0 B
    20. %BP网络训练3 f, X% `+ U# z* B
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]1 U7 h. C/ C& l0 ]- u
    22. net.trainParam.show=1000;
      * K7 ]  e! v$ E
    23. net.trainParam.Lr=0.05;
      3 `1 ^: y/ G\" f% G# J, O$ B
    24. net.trainParam.epochs=50000;
      6 H- Q$ B% e1 ?$ S7 E# I\" k1 N
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      / W- X& c2 P$ a9 ?
    26. net=train(net,pn,tn);
      ) E\" U. h( h5 A% O\" v% P+ B9 |

    27. 6 b3 }\" k& V6 G$ N9 k/ a. h
    28. %利用原数据对BP网络仿真! A- m6 Y: a- c+ F; v
    29. an=sim(net,pn);5 L5 x/ f' H0 e% X8 p( r
    30. a=mapminmax('reverse',an,ps2);* ~$ y& ?) _: A% ^$ n  \6 E

    31. : S6 W. S( g  N. P
    32. %仿真结果与原数据对比测试 % m) P$ f7 Q\" D
    33. x=1990:2009;5 W: I, t4 [' ?% h
    34. newk=a(1,:);
      ; V3 C2 h\" D  k9 x5 A6 j
    35. newh=a(2,:);
      \" a* q8 @9 c! l( E: ?) [! D
    36. figure(2);
      2 c6 p, k( U3 l3 q% P( `0 ^* I
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      - r0 f8 v' _+ A; O% R0 t1 `
    38. legend('网络输出客运量','实际客运量');3 u  M) p3 x6 {9 u/ d
    39. xlabel('年份');ylabel('货运量、万人');
      ' I' P) M7 @0 I4 J, h5 N
    40. title('运用工具箱客运量学习和测试对比图');
      8 a' g2 b1 }# |$ z* g
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      $ @5 ~3 f! ^8 M7 b6 `
    42. legend('网络输出货运量','实际货运量');
      & h- s# u! |+ t
    43. xlabel('年份');ylabel('货运量、万吨');
      ! d( R0 ?$ m1 }/ Z- {6 t$ o. j
    44. title('运用工具箱货运量学习和测试对比图');
      + U( p' Z8 H# V! I% e\" {0 [

    45. ' ~' Y  I; O1 m\" N8 w4 |
    46. %新数据仿真\" w' c2 u5 F  Z6 N
    47. pnew=[73.39,75.55
      8 _5 n* z* Y4 i, }
    48.      3.9635,4.0975
      3 f: e: N2 r\" _* K' `# L
    49.      0.9880,1.0268];0 t$ j1 f; ~9 v2 i; D$ Y- v# `6 y
    50. pnewn=mapminmax('apply',pnew,ps1);
      ( c% I5 {1 j1 l/ _1 f1 d/ m
    51. anewn=sim(net,pnewn);
      & l9 r% W- y3 \. a3 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/ V: S. {! {7 B. P9 g1 Y. A
    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,...& O) P1 K( W' O: Y) G3 G- @
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];/ Z7 c/ t* m0 G- Y3 a
    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 F* ?+ m1 |. U2 c2 z7 \
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      ! p6 ]% P( O. N) @9 h
    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,...$ s6 ^  ?! z0 d( P
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      $ C6 ]/ C' A2 M+ K, ?  a# {
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      : V. `+ i' E+ b3 e0 }7 ^/ b( a3 r
    9.      22598,25107,33442,36836,40548,42927,43462];
      3 z' \' }8 O- E2 N
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      4 z) ~& _6 J% ^& J( }1 L; D, L
    11.      13320,16762,18673,20724,20803,21804];; p; j: a- X8 d8 g
    12. p=[sqrs;sqjdcs;sqglmj];
      ! A1 R/ ^4 A. _0 s' i, s3 N
    13. t=[glkyl;glhyl];) w1 Y9 p( ~& q2 ~# S( e: H$ @  i) x
    14. %数据归一化
      $ }% ?- ^7 L. e: e
    15. [pn,ps1]=mapminmax(p);
      7 p* D( r( T- x  @6 P) P' H5 a, X
    16. [tn,ps2]=mapminmax(t);
        ^2 Q3 E/ h! u' d, e4 J\" p
    17. %dx=[-1,1;-1,1;-1,1];6 m/ i+ N$ w0 i' h
    18. p0=minmax(pn);t0=minmax(tn);) O- J3 P& G9 H7 ?7 Y, Q

    19. ! ?' }* c, I: S
    20. %BP网络训练1 B& B0 J$ R% a* m5 e: v; R
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); ( C. }5 B' Y\" F
    22. net.trainParam.show=1000;$ o/ c4 q$ w1 Y3 d. I
    23. net.trainParam.Lr=0.05;
      ( J0 M; f7 ^* E- J; v# v8 {7 g
    24. net.trainParam.epochs=50000;, C5 L  u* R1 t: @6 _, N5 A
    25. net.trainParam.goal=0.65*10^(-5);
        }8 r- t6 H4 s& D* V6 C
    26. net=train(net,pn,tn);' \9 o; _: V- G/ `8 Z

    27. % T: V% j9 ]  r3 H$ B/ l9 B
    28. %利用原数据对BP网络仿真
      8 o+ V$ s- Q: ?' }& `5 }3 u) i7 r6 b
    29. an=sim(net,pn);
      . g; y% L- W3 Z$ p/ Q8 X9 v; G2 s
    30. a=mapminmax('reverse',an,ps2);2 K# ?& ]; j$ q* p
    31.   {! M3 W0 J8 V- \4 t& b+ a
    32. %仿真结果与原数据对比测试 # e0 K0 l5 a, \6 g$ q
    33. x=1990:2009;6 h$ p+ E\" x4 p2 E4 J* K; _, k+ @6 K8 W
    34. newk=a(1,:);3 c1 s# i$ W5 B/ r2 }1 }
    35. newh=a(2,:);
      \" T0 Z\" s# ~) I
    36. figure(2);; Y\" l! Q/ {0 p; N4 w; b, l1 n
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      ' X8 V, n! n) x% \; C
    38. legend('网络输出客运量','实际客运量');
      + N4 X  x* v/ S' F$ I8 ~
    39. xlabel('年份');ylabel('货运量、万人');
      & l  u6 D6 x! A/ G! g) P+ d. A
    40. title('运用工具箱客运量学习和测试对比图');# m\" N4 X- f; l) q: _/ Z$ ^
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ) C8 \4 s& p. K) P1 c
    42. legend('网络输出货运量','实际货运量');
      8 X) g8 x7 G+ q
    43. xlabel('年份');ylabel('货运量、万吨');4 Q4 l0 `9 k6 x1 ?9 s
    44. title('运用工具箱货运量学习和测试对比图');
      5 S5 T; k( F  i6 H7 `

    45. 9 d7 ]3 L( ~+ t% h
    46. %新数据仿真
      ' k2 K5 g6 _# X* i' A
    47. pnew=[73.39,75.55
      # J4 l) g7 D! P
    48.      3.9635,4.0975
      0 d- v8 K8 G2 Z8 n/ b  l: I\" P
    49.      0.9880,1.0268];! n' [( d3 o; p' v8 B
    50. pnewn=mapminmax('apply',pnew,ps1);
      , P\" A/ u; B9 D+ ]. J# U, s
    51. anewn=sim(net,pnewn);( c2 J( d3 N' s
    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
    - a- @+ k7 N6 ?8 Z. l3 o忽略我上面那个,改动的地方在18,21,25行……求批

    * d  e6 T' Y' l: @2 C% ~, R确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    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网络训练
      - l) I1 ^7 F, o/ q( Y6 y
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); - O  ?' q5 I\" i* Z. ~7 U
    3. net.trainParam.show=1000;
      7 b+ B  o- u/ f$ S' u9 S2 {8 t
    4. net.trainParam.Lr=0.05;9 o0 o! |6 w! ~8 c. f7 H% B
    5. net.trainParam.epochs=2000;
      2 k# \4 F. y  ~\" X. A
    6. net.trainParam.goal=0.65*10^(-4);* L3 o0 B6 R: X2 Y( k
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,8 d: u1 c' }6 a8 [' W
    一、改成单隐含层的,6个节点/ a) l0 M/ M2 F) [
    二、训练函数改成梯度下降BP算法 traingd" F6 h1 y- r4 A( j9 D
    三、迭代次数改成2000+ T5 g- G+ i2 c) Z/ g9 _  F
    上面的参数是自己试的,我也不知道为什么。% ^& v: Q, A  l" u  c
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。; ~* @! [5 ~! f" r% t
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-15 05:14 , Processed in 0.547073 second(s), 103 queries .

    回顶部