QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4275|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    9 w1 S/ |+ [+ ?7 f# D: \, g3 y" W/ q* N0 \( G4 Z# n* n' @
    %原始数据输入
    ! [! |" W" u, Vclc
    ! V1 E" X* S4 a% b5 [" g0 zsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...' D. `5 k7 x7 l/ D4 x$ O( E8 K
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    9 I3 X( v9 s& S! e% Vsqjdcs=[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. B( H: o# y) O5 s+ S9 c1 z- N
        2.5,2.6,2.7,2.85,2.95,3.10];7 D7 T: f6 e7 j
    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,...0 u9 y7 o* r1 T( F/ Q* O* I
        0.56,0.59,0.59,0.67,0.69,0.79];
    ' |6 _' _! f/ p- P4 |glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    - w! @& v! `3 ^+ L    22598,25107,33442,36836,40548,42927,43462];
    ! c; N% ]" g& R6 G/ ?' n  Fglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    - I# j$ v: z* B- _1 [; @1 u    13320,16762,18673,20724,20803,21804];) t% P  Y  _1 _4 [' H5 _1 q
    p=[sqrs;sqjdcs;sqglmj];" z, c. g6 q. c# X, U1 p
    t=[glkyl;glhyl];
    0 F- D1 Q7 O/ u, v! q# y! v3 o( d% a- N0 j6 P! `) n
    %数据归一化& E$ {' |1 k7 e' E( R
    [pn,ps1]=mapminmax(p);
    % z, e6 {6 U& M/ g" y  x[tn,ps2]=mapminmax(t);9 g5 L/ n9 |# ]
    dx=[-1,1;-1,1;-1,1];2 l# D" l& Q( d6 j) n
    1 K: U  {( E- a& x
    %BP网络训练
    ; f2 c7 `1 h* n6 Q; fnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    , d% }8 \5 e" O+ `net.trainParam.show=1000;0 a) l3 Z4 r7 L9 Y/ h1 }( \  v% v
    net.trainParam.Lr=0.05;5 ]& V' e- p" \- f. {4 T
    net.trainParam.epochs=50000;6 ~7 D6 A7 v4 X
    net.trainParam.goal=0.65*10^(-3);* ^# d; s: B7 T. E' S7 m" |
    net=train(net,pn,tn);
    7 M: l. h# N% K+ w3 K7 Q4 U4 @' c' _6 I. x- ^
    %利用原数据对BP网络仿真4 d4 P4 |( A) i8 n
    an=sim(net,pn);) h  B7 f8 E6 x
    a=mapminmax('reverse',an,ps2);9 O. s! \% s! G( B

    ( b% ]% l8 }3 i) M- p9 j$ \+ A( t%仿真结果与原数据对比测试
    2 L( q% q& K9 t) x$ G7 R' tx=1990:2009;/ d7 [) X2 X2 X) b0 ?
    newk=a(1,:);
    * u4 M- ^6 j5 z  V" c* `$ [newh=a(2,:);* }& U8 ^( y5 w) G! m) T
    figure(2);
    1 @: k/ k5 J% o7 c0 N; t/ f  \4 ?subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');/ |- i' f) L0 {5 N7 M) Z. b
    legend('网络输出客运量','实际客运量');! O2 K; P3 k% Q4 {2 e0 K3 F/ E
    xlabel('年份');ylabel('货运量、万人');5 Q5 J- \5 r$ U$ ?4 w! V
    title('运用工具箱客运量学习和测试对比图');
    2 I6 s- L6 _& T. Csubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    " h, a8 Y% P8 Q- g( e6 y) Zlegend('网络输出货运量','实际货运量');5 F" \5 H7 B" t/ Y7 {5 P& W4 x( A
    xlabel('年份');ylabel('货运量、万吨');, e/ K* w4 s! s2 Z% i9 ~- D4 }
    title('运用工具箱货运量学习和测试对比图');
    2 R! e$ T- V) z" M8 j$ I- J8 S6 P/ O3 N6 N3 y% p
    %新数据仿真5 V1 Z$ w0 A1 ~. y/ h: j/ G
    pnew=[73.39,75.55
    7 P( G1 M5 R5 N- X2 ^  t6 S. ^    3.9635,4.0975  B. @5 J. A8 M- Q6 N
        0.9880,1.0268];
    7 \0 b2 W9 o6 h1 g. Ppnewn=mapminmax('apply',pnew,ps1);
    : d0 h& m) A) y- T9 R! q! Uanewn=sim(net,pnewn);
      U4 s" v# n6 hanew=mapminmax('reverse',anewn,ps2). c: z7 [- V2 ^' p% ~* o, U

    ) ]& q$ e  s$ O

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

    `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
    4 |* Z: W& ?( B$ d% G看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    $ i- z0 L) q, @' J# Y4 N
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    9 f* Y: L. y* i6 Tnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');0 r" B( i7 C- j) e8 i- a8 W
    我修改为:: l: i$ B3 z9 h4 H0 E' S- J
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');3 j; B! N2 P; s! q
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    - }  {+ V/ g0 q2 |[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    8 A- n+ Q8 y. o- Y$ ta=postmnmx(an,mint,maxt);0 C$ \) @; m- }1 x" e0 m7 B
    pnewn=tramnmx(pnew,minp,maxp);% Y: @  Q4 l) F9 q0 c( b
    anew=postmnmx(anewn,mint,maxt)
    0 `6 B: X5 F. d4 a我修改为:
    3 n% e! n' \: r0 ?[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);; k. K( b3 ?4 O! `; z  V( k
    a=mapminmax('reverse',an,ps2);3 s6 c8 O) w) F( t
    pnewn=mapminmax('apply',pnew,ps1);
    4 D  ~5 v# K5 R7 s; j- \anew=mapminmax('reverse',anewn,ps2)
    & a! g9 e! o3 w) B/ r
    ! J6 ?+ y9 J4 Q, r3 X% y原程序为:0 e- J; x% q- ^) v
    %原始数据输入. p+ H4 Q4 y  a# h8 K/ d, _5 v
    clc
    3 W& ]3 [& t: f' w' ]) Tsqrs=[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. Q1 G3 ?' T1 ?, T! s# q0 c' Y% }2 r
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];8 {3 }0 d# B( s  q" u
    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,...
    - o, ^0 T. ^2 a2 _3 W; W& G    2.5,2.6,2.7,2.85,2.95,3.10];% t" K# |4 D* t% _  I
    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 p6 j, o/ E! Q( l# Y5 S- K    0.56,0.59,0.59,0.67,0.69,0.79];9 n! P) e8 J% M8 K1 Q! _
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...# M, e: \& v8 p0 w
        22598,25107,33442,36836,40548,42927,43462];
    5 D+ _$ W+ [: k, ?" v' kglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...4 g5 Q; `! z5 V0 E
        13320,16762,18673,20724,20803,21804];
    9 K4 d" G3 ]$ r7 v8 R3 mp=[sqrs;sqjdcs;sqglmj];% [0 T& |, G5 U
    t=[glkyl;glhyl];
      u% q! ]+ D- B; r% Y4 h# P: P  M9 }/ p: ~- F. y; Q+ t+ }! h2 R' O* U
    %数据归一化. Q6 x8 f5 D5 j% v* Z) z9 [* {$ W
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    ' \8 u' f1 U4 e, f4 rdx=[-1,1;-1,1;-1,1];% Z+ j) r8 s& a& F8 K- ]
    * E" p; y( F: R
    %BP网络训练  k  W0 e1 ?% c
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    " W  T) v( L8 O1 v* V) ~: }0 q4 A8 onet.trainParam.show=1000;8 _% P/ C7 B' z" E0 e" y
    net.trainParam.Lr=0.05;
    . d5 e6 X- B. z0 U% S7 v2 ^0 M6 w4 b. [net.trainParam.epochs=50000;$ _* b; _: H  v
    net.trainParam.goal=0.65*10^(-3);; u" P# P" S% M* w
    net=train(net,pn,tn);
    9 d# R" w2 n+ {: B. x6 y' E4 z# n& n. A# K+ i9 A# n. K7 r
    %利用原数据对BP网络仿真
    , F* t  Z+ L) g; U6 aan=sim(net,pn);
    ! v- @9 `. O; y, c+ ia=postmnmx(an,mint,maxt);
    * L9 ^4 R& ]7 U$ U) e3 V. c: }3 S4 ?! W/ d6 Z, }+ |! O) b
    %仿真结果与原数据对比测试
    5 b0 n- \. h- i2 ~8 Q0 W0 vx=1990:2009;
    & }/ j  h  j4 T* Q6 o' ~newk=a(1,;
    7 T8 ^; Z2 f9 ?: ?* Anewh=a(2,;
    7 ?* }5 W( C, ]( ~figure(2);
    9 W4 Q$ [3 X' `+ D! _4 B7 h; wsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    $ N0 A% Q; |1 t8 Hlegend('网络输出客运量','实际客运量');8 v7 N1 i9 |" H1 g, J
    xlabel('年份');ylabel('货运量、万人');
    4 ]2 O: X2 w, Q* Y# \2 v; o; dtitle('运用工具箱客运量学习和测试对比图');
    4 _4 s: m5 X, P* g+ Lsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');2 y2 D6 l" {3 q  o7 _: Q1 x
    legend('网络输出货运量','实际货运量');
    $ y, v1 ?3 u8 |- T7 y  q3 exlabel('年份');ylabel('货运量、万吨');8 N" ]: D- k2 t1 h
    title('运用工具箱货运量学习和测试对比图');  P* v& P! ^4 p! h+ Q# z4 d
    6 i- g& U0 W- j2 X( U  \1 X
    %新数据仿真. Q" T* O! ~: w& W% a2 [, a4 o
    pnew=[73.39,75.552 U- F; n5 z: U
        3.9635,4.0975: c( F0 G3 L; g+ v2 T8 y, u1 j# V+ l' m
        0.9880,1.0268];
    ' n# r# ]3 Q) c! D" u8 S, Fpnewn=tramnmx(pnew,minp,maxp);, F- ~' I8 J( d, g1 Q, C
    anewn=sim(net,pnewn);
    1 `8 X7 l* A1 Ganew=postmnmx(anewn,mint,maxt)

      [( I' [1 m8 L  H4 l. U9 v4 `, t& Y; \3 Y* }7 q  m& l
    修改后程序为:
    3 J  e2 X9 a* j3 z$ {+ D, U%原始数据输入
    " A+ K% ]( n/ l; d4 l+ ]clc
    7 ]- d; s0 H: m% n; 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,...
    ; V! O' T0 x3 G* Q! ~0 _    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    5 F$ W0 n4 t. i% p* \% @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,...
    5 a* E3 w5 a: e# [: [- j% D3 C    2.5,2.6,2.7,2.85,2.95,3.10];* h0 F% y9 k4 G
    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,...
    , A. i# ]7 p8 T! [- {* L6 G6 Z1 i    0.56,0.59,0.59,0.67,0.69,0.79];: H0 p' A, B% v4 j  G. z
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...* i, v% I( x7 S+ C9 z, c* ^0 `
        22598,25107,33442,36836,40548,42927,43462];
    ( u& l3 {/ |) f# `glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    - T; m4 Z. P) v8 l) m    13320,16762,18673,20724,20803,21804];
    & a! N2 ?7 }# Rp=[sqrs;sqjdcs;sqglmj];
    - s7 |; r0 }; N2 vt=[glkyl;glhyl];
    / t+ ]8 S  y, O. ^% B* P3 Z& ~9 m$ h1 B* f9 l6 y
    %数据归一化2 d. v) _6 \* k. _" }
    [pn,ps1]=mapminmax(p);, Y% X, X7 w1 A/ E. Z5 @* H; k
    [tn,ps2]=mapminmax(t);5 z/ V- E! c* J( u
    ) ?9 x! m/ @3 b& o& V( d- g6 f/ ~
    %BP网络训练
    & u8 r; Z6 b7 L# h% f# H  fnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');6 N( o: R+ f1 X% U
    net.trainParam.show=1000;
    ( u6 I3 C; f+ `: v0 F" Pnet.trainParam.Lr=0.05;: L7 i3 o# z( h, s
    net.trainParam.epochs=50000;
    + X* r  D  o( A. gnet.trainParam.goal=0.65*10^(-3);8 f, J1 s  H0 B" h( s! r# }
    net=train(net,pn,tn);
    ( E" Q% B$ m& S2 l4 B+ [( g2 @4 [: @2 B8 l2 @& }
    %利用原数据对BP网络仿真- L/ y4 K: v/ V' m4 @3 D/ {
    an=sim(net,pn);, C. O* d/ _( T* a
    a=mapminmax('reverse',an,ps2);
    & |& t5 c& J5 d9 V0 N  [* s9 I3 G& Q
    %仿真结果与原数据对比测试
    * G1 I, O; D$ `x=1990:2009;
    5 v# Z6 u: f2 }' F9 b: Snewk=a(1,;
      P( K6 B$ w( @1 c7 pnewh=a(2,;
    2 _2 S( [4 O; ffigure(2);8 f+ X- i6 G' H7 r- P& A. P
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');' F9 F( O/ e8 {7 Q& a1 M9 w
    legend('网络输出客运量','实际客运量');4 E; R! @; v6 ]# d3 k+ F/ f' O
    xlabel('年份');ylabel('货运量、万人');
    1 H3 B0 a) N8 t' I. u; Ktitle('运用工具箱客运量学习和测试对比图');4 S. E0 Q2 h, {$ @) \% K
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');, ?. f8 B& B0 k' N2 z
    legend('网络输出货运量','实际货运量');8 [; W1 o; b) ^1 s
    xlabel('年份');ylabel('货运量、万吨');
    4 B* g' X9 ^" g7 Y) Z8 }) Z6 htitle('运用工具箱货运量学习和测试对比图');" s5 Q1 z( A  G( D# w% {

    # q, _) A* V, ^! |3 X' M* _%新数据仿真
    $ l" D9 w9 Z+ H, apnew=[73.39,75.55; b" Y' ~+ d4 H8 `# d, p
        3.9635,4.0975
    2 s$ ?. J4 J9 B& w8 u    0.9880,1.0268];( p7 b0 s: \$ d! x$ \' M
    pnewn=mapminmax('apply',pnew,ps1);
    ; j' u6 e6 ?5 eanewn=sim(net,pnewn);# C/ I0 h! N: ]" p
    anew=mapminmax('reverse',anewn,ps2)* ^2 }! e8 R( d0 V
    (修改的地方用颜色标记了)! G8 m4 g5 y+ h) v* z  f! k
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      6 x& m: c. i5 C, B8 b
    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,...+ x7 i# R# Q* A) H
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];6 I% X5 p- x8 \( {, 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,...$ {: `) q. h  H: d( J\" |; N% }
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      - Z' x$ |, T' P( R% z
    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 v8 v9 r! C3 i. P8 B, q9 ^
    7.     0.56,0.59,0.59,0.67,0.69,0.79];# S' R/ ^6 Y  B) d2 h
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...' s/ r9 r. _4 `0 z7 ?! Z/ S) G
    9.      22598,25107,33442,36836,40548,42927,43462];- A, _7 G9 S8 {' `/ A, \. z0 r
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...2 q6 H  ^4 k1 t, y. j
    11.      13320,16762,18673,20724,20803,21804];
      8 z) `3 S4 I, J/ _
    12. p=[sqrs;sqjdcs;sqglmj];6 ]6 f+ Y/ r) y
    13. t=[glkyl;glhyl];7 ?0 n6 O, u, G: k3 H& Q  i3 U
    14. %数据归一化: {2 ^0 E4 s$ u2 P8 M
    15. [pn,ps1]=mapminmax(p);
      4 A5 `- q  a( ]* z6 w
    16. [tn,ps2]=mapminmax(t);
      ' B! Q' z* \( D9 v& ]5 d2 q\" p: z$ b
    17. %dx=[-1,1;-1,1;-1,1];- t8 j) g; O! p2 S  ^
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      ' h* V! |; L5 z4 f5 ^2 J

    19. / w6 K1 s: D3 O: v9 F
    20. %BP网络训练
      2 ~/ y4 f- W; o
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]  B4 a$ @6 x7 ^2 g2 H. [$ z0 ]
    22. net.trainParam.show=1000;
      : F1 V$ N- w$ C& k0 C9 K
    23. net.trainParam.Lr=0.05;
      \" f, P* S; `7 V0 p0 @
    24. net.trainParam.epochs=50000;# N! |8 @5 }# b4 n# u
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      . o% |+ V1 j  t: T
    26. net=train(net,pn,tn);, d2 k, O1 N4 j  Z/ A
    27. 1 {9 r; g) X1 x; j% \) x) P! S
    28. %利用原数据对BP网络仿真& Y0 j6 ~% X8 a. R% J
    29. an=sim(net,pn);
      # S  A. y8 U2 L; [' P$ P
    30. a=mapminmax('reverse',an,ps2);
      - Y9 x  x! ]3 b/ o8 C8 u& x
    31. + W* I, e7 k$ l
    32. %仿真结果与原数据对比测试 5 H' i: U1 S8 Z\" m3 t4 H5 {
    33. x=1990:2009;
      ) v/ L3 j5 `% H( ^\" r
    34. newk=a(1,:);, e' E2 ?( P8 J+ N3 c
    35. newh=a(2,:);* s6 E0 F1 u( `
    36. figure(2);4 S; }  f1 M( n7 q8 p( s! j
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');! L$ ]% h- b' Z9 [* O- f
    38. legend('网络输出客运量','实际客运量');- o' `  a  C; _
    39. xlabel('年份');ylabel('货运量、万人');
      9 A8 p5 M* W+ B! t\" Q& H
    40. title('运用工具箱客运量学习和测试对比图');$ |; I: c7 H1 n9 Y
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      8 k7 T2 y( u  O% h7 l0 t7 f
    42. legend('网络输出货运量','实际货运量');) Z7 L3 l( E& V5 |9 M. X9 u
    43. xlabel('年份');ylabel('货运量、万吨');' I* X* v: m: Z8 C  @# w
    44. title('运用工具箱货运量学习和测试对比图');, ^3 T- |6 a( D, W- }! M
    45. 1 d# {6 y$ B\" c\" ^
    46. %新数据仿真
      8 E* D7 B8 `: ~1 D1 W: a8 v5 Y( {\" U7 k
    47. pnew=[73.39,75.55
      7 U\" q, k1 R7 t: m& O0 l) n/ Z
    48.      3.9635,4.0975
      . l8 m& Q1 I( S4 h
    49.      0.9880,1.0268];
      7 f( J- K) n5 {4 E8 t1 O, ^* U: `
    50. pnewn=mapminmax('apply',pnew,ps1);
      ( u! f3 T1 m\" w
    51. anewn=sim(net,pnewn);
      / @9 I. y. V2 e+ F+ V- K
    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: g& [+ n- o, K2 ~+ p
    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,...* X) Z, i2 X( X9 y9 O0 ?/ f
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      $ c7 }; w0 ?; W4 _  |& \* O
    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,...' }; p) K) K* p
    5.     2.5,2.6,2.7,2.85,2.95,3.10];. c6 m9 f9 h8 Y2 H3 t\" R( T
    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,...( r5 o) S1 ~6 P' r) |
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      $ A: |# V% b; o- f( X5 Y
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...% E' P- e2 j6 ~3 p5 @! `* x
    9.      22598,25107,33442,36836,40548,42927,43462];
      ) t: E8 h5 ]6 t# D4 {7 _
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...\" Y% w2 c7 N1 x+ [1 @# n' m
    11.      13320,16762,18673,20724,20803,21804];
      - N5 }7 i' m) f0 ^+ n! q, m1 Y6 W
    12. p=[sqrs;sqjdcs;sqglmj];) p: X$ k! E; J0 o# H; {+ {\" V
    13. t=[glkyl;glhyl];8 M$ r0 f2 P! n0 k5 u; j$ x
    14. %数据归一化/ x/ l, H  l' c& S
    15. [pn,ps1]=mapminmax(p);
      ; ]  q! g5 s  \+ c3 S! k
    16. [tn,ps2]=mapminmax(t);# X) v$ O3 m( C8 Z1 D
    17. %dx=[-1,1;-1,1;-1,1];
      3 g7 ]. [  C- Q; U6 r. Q6 e( @) i
    18. p0=minmax(pn);t0=minmax(tn);
      ) @* H1 H, l! |: u6 h

    19. , \4 s\" k\" v, |! M
    20. %BP网络训练2 Q+ a7 K9 w. Y/ Z8 C
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); ! v/ D  ~; n4 A0 i3 c
    22. net.trainParam.show=1000;
      8 q\" n\" Z. M* q0 F/ ^: _+ s
    23. net.trainParam.Lr=0.05;8 W9 s0 Y4 u7 E: S$ x, K6 ?
    24. net.trainParam.epochs=50000;
        ^  y+ F2 F, L4 r\" Q- s! j
    25. net.trainParam.goal=0.65*10^(-5);, s8 |; m- K& E1 w( u
    26. net=train(net,pn,tn);% F* e1 g; }! n& J0 e4 h' ?

    27. 2 F\" P- M* _1 F+ ]
    28. %利用原数据对BP网络仿真
        D! j0 y: V- J3 j  @9 G, f. }# A
    29. an=sim(net,pn);
      5 B4 q. U3 q, @, V# ], E: m: d
    30. a=mapminmax('reverse',an,ps2);0 i& u8 U! M7 W! N6 p  Y& _2 t+ e
    31. : v5 L  P9 E8 ]0 _
    32. %仿真结果与原数据对比测试
      ' w/ q. {0 X: z) L: @0 s' a) t
    33. x=1990:2009;
      5 [2 I, t5 `! c( A, ]
    34. newk=a(1,:);
        ~+ L9 J2 a, }; P0 u5 p: `6 y
    35. newh=a(2,:);
      / a0 ?5 g3 ]6 o/ B  V: `; W
    36. figure(2);
      8 q, S& |1 E8 [
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      ) M2 O( ~4 J) k* f5 m
    38. legend('网络输出客运量','实际客运量');5 ^6 S: H0 c. s. C
    39. xlabel('年份');ylabel('货运量、万人');
      1 F) U- `1 S3 Z* O8 `
    40. title('运用工具箱客运量学习和测试对比图');9 q\" [/ h/ e3 \9 b\" W
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');2 h, ~) f\" o* r( Y
    42. legend('网络输出货运量','实际货运量');: l- o; F8 j) r+ C+ W* u! F
    43. xlabel('年份');ylabel('货运量、万吨');
      ; ~6 T0 D: x; S! z' V
    44. title('运用工具箱货运量学习和测试对比图');1 S9 Y( s/ [0 x2 ~/ @! i

    45. . F3 ]  H! U, o! e# d
    46. %新数据仿真
      1 }& Q' o& A' j4 Y+ ^) d
    47. pnew=[73.39,75.553 J$ V  S& K+ j4 }: n
    48.      3.9635,4.09753 S* ?( \2 L5 Y3 v' ?; o( j
    49.      0.9880,1.0268];
        x# {: S0 \6 W. n% M! |7 @
    50. pnewn=mapminmax('apply',pnew,ps1);
      ) e7 Z/ p* U: v' m2 k
    51. anewn=sim(net,pnewn);3 Z3 u, C4 V0 D( 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
    9 W, b2 @; C9 n/ g* w: a忽略我上面那个,改动的地方在18,21,25行……求批
    7 n3 L" H4 D* M
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练3 h\" V9 @. f5 q
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      1 [: T6 d9 A, _2 ]7 x/ _- D- @
    3. net.trainParam.show=1000;# x# L. n% a& j  r7 Q4 v5 i: n
    4. net.trainParam.Lr=0.05;7 p1 z% F% \  Y; u) N  y( }% W9 N/ m
    5. net.trainParam.epochs=2000;
      4 N2 M. B1 A2 Q( ?1 X
    6. net.trainParam.goal=0.65*10^(-4);$ \! z0 Y% s8 J9 d  [9 v
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    . z; i% |+ h4 r/ k: T7 c  {$ r: c一、改成单隐含层的,6个节点; Q* p. J! y+ T' ?& K0 B
    二、训练函数改成梯度下降BP算法 traingd4 D6 z" w4 P. E! m' \+ k/ L$ G* c
    三、迭代次数改成20002 n/ ?7 a& R0 T! g, g
    上面的参数是自己试的,我也不知道为什么。# M6 z( [5 E& F! Z& M* A
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。) s/ A/ k2 M5 b2 R
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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, 2025-7-29 00:54 , Processed in 0.745722 second(s), 106 queries .

    回顶部