QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4887|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    ( Z; L, p- \+ e- `
    ' e/ g( ~3 {5 O3 H, S/ Y- w) T%原始数据输入4 i% q/ @% A4 U' {6 X
    clc! [6 a/ _' u5 h  ]6 k; ]: [" f5 W3 S
    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,...8 X0 D3 u. y+ g+ m
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];$ R0 f  ?$ Q+ |8 t- Q( p& O2 S
    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,...
    . r% k! R2 y" D# |    2.5,2.6,2.7,2.85,2.95,3.10];
    # _1 G( n) w' Esqglmj=[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,...
    7 k0 p  }  R3 _3 {; j    0.56,0.59,0.59,0.67,0.69,0.79];
    ) x( M1 T; O! {8 \glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...+ ^. X0 d: e- s: D' K5 _1 T
        22598,25107,33442,36836,40548,42927,43462];: W, S# {# N* l: V0 s2 G/ t
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ) v) v% [) }6 X7 O- j  L    13320,16762,18673,20724,20803,21804];
    3 h. l$ d4 @& ^9 {  bp=[sqrs;sqjdcs;sqglmj];2 W* C& w  U; A$ w. R1 X* \
    t=[glkyl;glhyl];% N0 p4 ?, P" z6 @* q- b2 ?

    : ^( B3 E, ]+ r2 R8 m9 S( ?%数据归一化
    - ^; @3 v) y) S) i4 V# r) G[pn,ps1]=mapminmax(p);
    ( c# p0 u6 t" H3 |6 P# B[tn,ps2]=mapminmax(t);
    7 m+ Z. d+ b* d, p7 Gdx=[-1,1;-1,1;-1,1];
    0 r6 n3 x. p3 ?+ H
    ( k. u: Q' t" I6 z%BP网络训练
    6 e3 {. z2 M5 k" y1 S' Snet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    4 k* A' @" p4 `0 o- \7 c4 Wnet.trainParam.show=1000;
    2 [- j2 a, `& z4 X/ jnet.trainParam.Lr=0.05;; b( \" h$ I6 Q7 Z) Q! O7 i0 P) [' e
    net.trainParam.epochs=50000;& j5 K  G" f2 H0 y
    net.trainParam.goal=0.65*10^(-3);4 ~2 S# G1 s1 E2 X( n
    net=train(net,pn,tn);6 W1 ]' f; @* B5 t5 ?7 h, K
    ) y/ h7 u7 b2 L6 w1 |
    %利用原数据对BP网络仿真
    ' X0 |$ X) S7 O) t6 ?2 N0 Wan=sim(net,pn);
    8 D) Q2 i9 l7 m4 ^& }a=mapminmax('reverse',an,ps2);
    7 u" _7 u( A8 u- U9 \6 Q  b9 K$ @, E0 j( L3 [
    %仿真结果与原数据对比测试: w& N/ U1 i; r) j/ `
    x=1990:2009;
    ) t  m3 J" W6 h, S; t2 ^5 M5 Enewk=a(1,:);
    . Z* \8 `& }1 z$ T6 k: J, A; m0 inewh=a(2,:);
    ! \: v7 {# w2 R1 {8 D: ]figure(2);
      ?$ ^2 I8 ?1 s7 q( ]subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');  P% R5 p8 p  n; C. M
    legend('网络输出客运量','实际客运量');# X* V0 ~1 _- B
    xlabel('年份');ylabel('货运量、万人');
    $ @6 J, G/ g7 P5 r; wtitle('运用工具箱客运量学习和测试对比图');& O3 t2 I  P( t" d0 }6 P, y0 I
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');2 J7 c" q' }) z4 g+ o* Z
    legend('网络输出货运量','实际货运量');
    2 `. |* u7 I- Sxlabel('年份');ylabel('货运量、万吨');  U2 j, P0 [( e
    title('运用工具箱货运量学习和测试对比图');
    " B9 ^& n. J- ?" m1 V1 w5 E" g" Z4 q8 p
    %新数据仿真3 e! y" v0 q' o6 `! `" Q
    pnew=[73.39,75.55
    ( V. i1 b, l; u$ N* n    3.9635,4.0975" g7 y% s) C. n& W" Q3 X
        0.9880,1.0268];
    / n% y! \, [' v7 g) [pnewn=mapminmax('apply',pnew,ps1);
    8 B& J# m4 |9 s" ]: L, q- [anewn=sim(net,pnewn);# ?* a& }# ]1 x3 h/ J
    anew=mapminmax('reverse',anewn,ps2)1 z0 Q1 g- A1 |! ?) n" m* P" y% ^

    - ^* b; {& B* G

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

    `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 3 ~8 _; g* \2 x# g- O: o
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    % f) d% t5 C: _/ |% W: e% v( v& @
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:9 x. G9 @) C$ B$ q4 Q% ?
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    . _' c1 B# S, a; x+ X我修改为:
    3 _- c; o6 x+ q7 V4 Snet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    8 e0 g; d7 J* H8 S然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:- G; n5 _. ^- b- c4 O
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    % m4 L3 N+ [6 J; H1 @8 Za=postmnmx(an,mint,maxt);1 o) o; X* J4 ?( R& Y
    pnewn=tramnmx(pnew,minp,maxp);9 m2 a! ?2 j4 o9 u6 p
    anew=postmnmx(anewn,mint,maxt)( R- V6 i# v- Q" q8 D' c5 u! b
    我修改为:) L5 t1 W3 P; b: V
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);1 Y% K7 \9 `+ r! ?1 `7 V( d9 x+ F
    a=mapminmax('reverse',an,ps2);0 y& @8 X% B; Z2 c3 j$ K
    pnewn=mapminmax('apply',pnew,ps1);# Y3 i5 @& a. ?* L/ p
    anew=mapminmax('reverse',anewn,ps2)% ~9 W( o! V" c4 K; ~1 s* ^  i% [
    / K1 f  r- h6 C6 ~! C9 C" E$ T
    原程序为:' t" w4 ]$ W) f+ k6 L$ A$ d# V
    %原始数据输入
    , m- [+ @  w# t* }1 bclc
    9 s/ k* j3 b9 {/ x& C+ @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 Z1 n  S) W) t
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];; {) K; @/ h+ N7 u9 w/ d1 Z  e
    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,...
    * l' k: S7 H; d- v, Y2 l4 w/ u    2.5,2.6,2.7,2.85,2.95,3.10];
    ' c# w) q% C& h' g# T+ M" jsqglmj=[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,...* y9 j7 g; g5 p; H% S
        0.56,0.59,0.59,0.67,0.69,0.79];
    8 y  c9 }+ G# c3 R! ^3 ^glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...0 i: F; [  {$ q% f" t
        22598,25107,33442,36836,40548,42927,43462];
    ) J. R# A3 L, x( Cglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...1 m3 A* ~' R6 [6 L9 n' r
        13320,16762,18673,20724,20803,21804];! O+ i" Z. l3 t& g
    p=[sqrs;sqjdcs;sqglmj];2 p: N+ u" v$ A+ g( \: d8 z
    t=[glkyl;glhyl];4 A9 P. G, U$ L6 o  w+ S7 i
    " _, R' E& @6 d) x9 \! ]! g# L
    %数据归一化+ T+ [7 A/ y, P9 D
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);( @8 }# Z% S% G1 w  v; c
    dx=[-1,1;-1,1;-1,1];
    / d% o9 Q/ h6 w3 Y( D# S- r. Q
    3 y2 o* O+ V  z$ l; C, _
    %BP网络训练
    ; ?. y; Z5 F. ^) R' w8 \6 Q5 O' Snet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');# k6 f! l- ~9 G3 N) v
    net.trainParam.show=1000;
    , d# C6 ~1 V$ F- Dnet.trainParam.Lr=0.05;0 y( ~" a4 T5 S, h
    net.trainParam.epochs=50000;" o1 B) c' E1 K  h: T! Y/ K
    net.trainParam.goal=0.65*10^(-3);
    3 C7 ~8 I$ c. qnet=train(net,pn,tn);; [3 d& B7 p' |4 `. j' k. D0 D* }
    + v! M2 I* \" Y4 `! T0 g, j" D
    %利用原数据对BP网络仿真
    ( f0 Z2 U- l( e# R& p1 Wan=sim(net,pn);: \9 F4 z) I2 W* s
    a=postmnmx(an,mint,maxt);2 d' q) G0 t- ]( G" E3 g) v

    3 I6 q5 E  B) e  |& k$ `+ z%仿真结果与原数据对比测试
    , x* y5 Z+ P+ H. L5 Q, Xx=1990:2009;9 W2 e( a8 ?0 U$ z
    newk=a(1,;
    : b9 s" }! P: L4 Rnewh=a(2,;
    4 X- O$ K# u/ Z5 afigure(2);
    $ ]& |+ B0 D8 ~, r: H9 jsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');" i0 \8 J9 D+ ^0 G1 k) A  Y; t
    legend('网络输出客运量','实际客运量');# Z1 o& ~+ f! Y- o
    xlabel('年份');ylabel('货运量、万人');
    ! h0 ~5 r' R" M" z+ Etitle('运用工具箱客运量学习和测试对比图');
    ! W9 W& Y7 l. F( q2 zsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');9 T4 k- a7 j6 S( Y4 ~' a
    legend('网络输出货运量','实际货运量');
    1 W4 t# i" Q  ?6 e1 S, i2 jxlabel('年份');ylabel('货运量、万吨');4 I$ A, o0 P. w3 A& _+ y
    title('运用工具箱货运量学习和测试对比图');
    4 h/ P* b$ l# s0 j* ?+ d7 a9 @$ q- a& f- k- c
    %新数据仿真
    - `9 k2 P1 A+ I+ F4 r+ rpnew=[73.39,75.55) o0 {8 [0 ]! N! M
        3.9635,4.0975, _% Q7 m* g0 {* ^- i
        0.9880,1.0268];; Q1 b$ c0 ]! V9 U
    pnewn=tramnmx(pnew,minp,maxp);
    / x, A3 c2 f# b- }9 P$ Manewn=sim(net,pnewn);& q  c8 n! G% O/ R) T
    anew=postmnmx(anewn,mint,maxt)

    ( G( h" J1 N1 a6 U9 H% \0 J% V1 x4 L. F2 L* H$ G
    修改后程序为:
    : d  K5 X1 X4 [9 S0 l%原始数据输入
    4 B3 ~0 u! k# I2 _% \* S" P6 a- v' Qclc
    & I" r' |/ a; m# g( ^5 C( [+ ]( 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,...
    2 i% u+ |1 }. g! a    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    - s, |% O! _' |0 asqjdcs=[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 I) p0 q    2.5,2.6,2.7,2.85,2.95,3.10];% W& j5 N$ g+ }/ l  i0 C6 Z9 A) q9 J7 g4 f
    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,..., v" W% q( I# V1 F# R
        0.56,0.59,0.59,0.67,0.69,0.79];
    ; Q0 J* S: V7 Q$ t+ N1 jglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...8 q- c: F8 r: c  a/ ^$ e
        22598,25107,33442,36836,40548,42927,43462];) h9 {1 L# f& f" O) n3 o
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    $ e/ D, D( j3 H9 Z* s- Z    13320,16762,18673,20724,20803,21804];" f. L* v1 D) ]! C$ P1 B
    p=[sqrs;sqjdcs;sqglmj];0 n' |: U+ J; L5 E" ]; a
    t=[glkyl;glhyl];. s- J# H$ ~' N) N6 t3 u) d; w

    ( h% `0 T5 k6 R%数据归一化
    5 p6 I) E; D# _) |- _  i0 ?[pn,ps1]=mapminmax(p);% x  d/ N% L) \, l1 p
    [tn,ps2]=mapminmax(t);
    1 J# `( ^! b# U  ]" U% B. e, y+ P% K' r* g4 ~
    %BP网络训练
    # N' E& g& K0 z# `& k+ Tnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');4 }0 m, F% L3 V* ~) c
    net.trainParam.show=1000;
    ) O, u1 H: p) e) d5 b$ D; cnet.trainParam.Lr=0.05;
    8 {, ^; C. W) G3 h0 W6 Vnet.trainParam.epochs=50000;
    3 U! s' Y! C7 |* _) g6 t. R6 Cnet.trainParam.goal=0.65*10^(-3);- r" k9 O2 Y9 v+ _, N) ^" r
    net=train(net,pn,tn);& P% t5 K& a, _6 ~' E) F
    4 N% U; J) D7 L$ F
    %利用原数据对BP网络仿真  V6 ^7 X7 A1 f* m/ V8 }0 J
    an=sim(net,pn);- y7 @! `+ [5 \
    a=mapminmax('reverse',an,ps2);9 a# T& Q. N2 Z" {, i. D( ?. ]# \
    * e/ L! A" w* T! h$ P" b+ Q* A
    %仿真结果与原数据对比测试2 c2 [$ A* g% w, _- E
    x=1990:2009;
    4 c. R, x: w8 Znewk=a(1,;$ _- J0 ]" ~& ^& W1 N  h7 M
    newh=a(2,;
    . d6 D, z- I: ^$ m- e7 vfigure(2);0 t8 [/ g) V$ O' M/ M0 c
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');7 J$ E5 Q; X5 [' |
    legend('网络输出客运量','实际客运量');
    & z' a+ g" ^9 x! Oxlabel('年份');ylabel('货运量、万人');
    % ]0 g" Q/ H8 |title('运用工具箱客运量学习和测试对比图');
    1 B  X; o) G" R0 B3 Fsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ; w. g' C) U9 `- `+ l! H# ?legend('网络输出货运量','实际货运量');
    9 S3 J/ z( U( V! C& i2 s) P& Bxlabel('年份');ylabel('货运量、万吨');' a- \0 |& B" G) U7 I
    title('运用工具箱货运量学习和测试对比图');* t. Y0 ?) V9 C- H# A. |" P

    $ P5 E7 {# ~% a6 A3 I2 o6 o2 }. I%新数据仿真, ^+ O! f7 v2 L! m$ [# R1 W( r' X
    pnew=[73.39,75.55" h/ J/ s5 _! _1 U  ]1 i9 ]
        3.9635,4.0975
    ! G9 q% t( K/ Y# {    0.9880,1.0268];. `% u) s. \/ h- V# |' N
    pnewn=mapminmax('apply',pnew,ps1);; d- Q6 b" T! p; g  B$ J( q9 K* [
    anewn=sim(net,pnewn);2 q! f7 d6 \6 f" @! G* |
    anew=mapminmax('reverse',anewn,ps2)
    ! x" v( y/ D5 Y% c1 [  s5 Z0 O# n9 S(修改的地方用颜色标记了)8 V; ^% J$ T: s+ @
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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. clc2 R6 g$ D  g/ A. e4 W
    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,...; {\" Q\" ?: [5 T; k4 ]/ l- |8 @3 {$ U
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];+ \\" X6 w\" U\" g2 }- @$ d
    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 r% F3 I; I! g% x1 i* f# Z8 w
    5.     2.5,2.6,2.7,2.85,2.95,3.10];. W6 k  X8 p3 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 v2 m4 X! l/ j. j- O
    7.     0.56,0.59,0.59,0.67,0.69,0.79];# N( m! ^$ ?5 |! m. p% `
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...\" }3 K- g  `- D+ C
    9.      22598,25107,33442,36836,40548,42927,43462];
      , p& n+ u# e! G8 m: ?; m
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...: w, R5 d: H7 M' J& ]- Q0 X' `
    11.      13320,16762,18673,20724,20803,21804];& Q% D# |' h/ N4 m6 f
    12. p=[sqrs;sqjdcs;sqglmj];
      1 e4 U/ R; |2 B) V9 @) o3 P
    13. t=[glkyl;glhyl];
      - s6 B  E: x& D\" h6 x
    14. %数据归一化
      # L; j# d4 V, }, ~% k
    15. [pn,ps1]=mapminmax(p);7 g5 r; l' c  o+ p8 Z\" V
    16. [tn,ps2]=mapminmax(t);
      8 t2 w1 d8 g  S- _* [, _
    17. %dx=[-1,1;-1,1;-1,1];
      ( g\" H+ X\" l. ]4 c9 L- C* L6 [
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      8 D4 p$ Q, S' P& Y: G
    19. ; m* ~/ J+ U( R2 U- J. g
    20. %BP网络训练
      # Y; o+ b+ ?$ p
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      6 D/ o7 M2 Z5 D- |8 {( L
    22. net.trainParam.show=1000;
      0 l$ p8 Q9 u) O% R! P6 J
    23. net.trainParam.Lr=0.05;
      - ~  P% V5 G0 ]1 T- a' R
    24. net.trainParam.epochs=50000;
      ) p\" g8 e7 v7 k, [
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]/ V; P) b; u8 f% Z; M+ e0 M3 z
    26. net=train(net,pn,tn);! L6 ]/ [$ N6 b$ L# [1 m2 w

    27. \" N4 ?$ U9 s! I; w! e- ?; I
    28. %利用原数据对BP网络仿真
      + N; q1 G0 k$ N\" H5 m, W! l. p& S: k
    29. an=sim(net,pn);, w5 c+ h9 c# u4 G6 g( J
    30. a=mapminmax('reverse',an,ps2);, R  H+ H: B7 @2 S! Q

    31. 2 {1 c# r4 M) q3 o% H
    32. %仿真结果与原数据对比测试
      4 z9 X1 Y0 \& L1 x& F7 L
    33. x=1990:2009;% q  d! q0 j% ?\" I( |- B
    34. newk=a(1,:);- H* x- I8 [$ a) }
    35. newh=a(2,:);
      , t5 o9 a$ n* D' ~
    36. figure(2);
      % n& H# y: |7 ]
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      $ P& _4 W( _  f- o
    38. legend('网络输出客运量','实际客运量');+ O, Y2 N0 X8 s0 F! y! G8 O' B
    39. xlabel('年份');ylabel('货运量、万人');
      + s: M3 ]8 V) M; v% U
    40. title('运用工具箱客运量学习和测试对比图');
      5 ^$ x2 D, c% P- ?. A
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      2 {( }4 |3 \9 x& L# C  l7 y  s
    42. legend('网络输出货运量','实际货运量');% e) j- d3 Z: U* }
    43. xlabel('年份');ylabel('货运量、万吨');
      . R! S% O9 j. t: o- q\" C
    44. title('运用工具箱货运量学习和测试对比图');
      * [# B. X, N/ B1 m& r. E, I: T1 Q\" ^
    45. : l1 n. i2 E+ E0 }. T) _\" u
    46. %新数据仿真
        X% e7 Q8 q+ g\" r
    47. pnew=[73.39,75.55+ M  A0 g: M1 f3 J- A
    48.      3.9635,4.0975& E6 p2 T7 \+ ?9 A/ D; Y\" Q
    49.      0.9880,1.0268];
      0 N\" u9 J% Q* @7 W/ I. l
    50. pnewn=mapminmax('apply',pnew,ps1);; D9 A2 K8 s5 Z6 _
    51. anewn=sim(net,pnewn);0 }% m5 U4 f1 s\" P3 ]6 `\" D- u
    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+ t, H2 r' R, F
    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,...
      2 B5 q5 k* f+ |6 E* q
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      / N0 j# ]6 j* Z# c8 Z5 Y9 v
    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,...
      + |& ^( C4 v9 L+ n, t6 W* j
    5.     2.5,2.6,2.7,2.85,2.95,3.10];! D& a' \; U, i5 ?\" b/ Y
    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,...# O! J( O5 F' l
    7.     0.56,0.59,0.59,0.67,0.69,0.79];- h& p, p/ V5 b% P
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.../ ^+ A. ?. i# |  }2 v/ }  c& f
    9.      22598,25107,33442,36836,40548,42927,43462];
      ; r6 N  s/ D; G0 {& e( S
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      1 `; m! _! V1 g
    11.      13320,16762,18673,20724,20803,21804];! `4 Q7 e; V/ B4 O: ?/ h+ _3 M/ F
    12. p=[sqrs;sqjdcs;sqglmj];
      ) A# k9 u) d% x' |( J4 B
    13. t=[glkyl;glhyl];
      * s3 U/ V7 @+ J, A3 m
    14. %数据归一化6 M& Y  R2 a1 a( i8 L$ n\" {7 z' M% x
    15. [pn,ps1]=mapminmax(p);# G  j; U; [$ H0 X' W
    16. [tn,ps2]=mapminmax(t);
        k+ ]/ ]% r0 D$ c: [$ z! u
    17. %dx=[-1,1;-1,1;-1,1];; B% A3 p6 ]8 k2 ]  Z+ T
    18. p0=minmax(pn);t0=minmax(tn);\" u6 ~% C' o8 n  U4 d
    19. 0 l! g% N. A) B& [7 `$ z
    20. %BP网络训练1 _! A7 x1 c5 |* b: q3 q
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); % k2 X. M5 e% Z; U3 p
    22. net.trainParam.show=1000;$ I9 s% ?/ O/ u/ y: D7 h\" ]; l
    23. net.trainParam.Lr=0.05;\" ]# v7 P8 ?% X8 Y7 ~\" ]3 _
    24. net.trainParam.epochs=50000;
      5 v  W& K' r7 q' G' C2 g5 o1 j- X$ w
    25. net.trainParam.goal=0.65*10^(-5);
      \" p2 ~9 z  `9 I! {+ Y
    26. net=train(net,pn,tn);5 J; U- _# ?; |& a6 z, ~

    27. 7 n# g$ x* ~' [
    28. %利用原数据对BP网络仿真- H' L% y& R  e  z& Z1 N
    29. an=sim(net,pn);6 N3 K, R/ y4 l* }$ x4 h/ a
    30. a=mapminmax('reverse',an,ps2);
      ; p  R& Q5 v% Z+ Q/ J0 \! @. e2 a
    31. : H8 N3 L7 J% o) z0 r& _2 l! G
    32. %仿真结果与原数据对比测试 7 g/ L: D! e; z\" {
    33. x=1990:2009;& v2 \  e/ Y5 c  c\" p: W+ z
    34. newk=a(1,:);
      ; ~9 E8 z1 x! r; Y- @% Z, G9 L- x3 v
    35. newh=a(2,:);0 s  ]2 y% d) t  y8 N, _( N, y
    36. figure(2);2 T8 E6 Q7 l\" L* }+ C0 Z
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');\" |: Q. C5 l3 D6 a( G' w( g
    38. legend('网络输出客运量','实际客运量');, s8 `( F6 |( G! a8 P\" g
    39. xlabel('年份');ylabel('货运量、万人');
      2 Y: s6 T) L6 D8 ?
    40. title('运用工具箱客运量学习和测试对比图');8 g! Z9 V* s( e/ D$ f3 j0 L
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ! w$ U1 x% o1 v4 [2 V
    42. legend('网络输出货运量','实际货运量');! k$ U% Y2 [  z3 |, X4 |
    43. xlabel('年份');ylabel('货运量、万吨');
      8 W$ w2 K: @$ ~/ _0 m
    44. title('运用工具箱货运量学习和测试对比图');
        ]% p5 e+ M. c: ?# p. W0 z0 @
    45. . ~; P& y\" M  s: K! `- p
    46. %新数据仿真
      % L0 n. Z; @1 ]( `. s/ c
    47. pnew=[73.39,75.55
      7 G% C7 ?3 u: G8 L$ Z: ?
    48.      3.9635,4.0975+ @9 p! h0 \; h+ d; i2 X1 a4 A) b
    49.      0.9880,1.0268];
      . s) @7 M# q, [9 ~
    50. pnewn=mapminmax('apply',pnew,ps1);1 B+ q/ W\" {& c1 ^2 O& ^4 u; J
    51. anewn=sim(net,pnewn);# J4 e( s& p+ _2 A* F+ ^  B
    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
    - j: b$ f* N9 y% o4 ]3 \忽略我上面那个,改动的地方在18,21,25行……求批
    ( ]% t& m+ ~. C! c8 ~* o' M
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练. Q6 `; G& S% Q1 n7 |1 s
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      $ U  }; g- a. h- G1 e! Q
    3. net.trainParam.show=1000;$ R$ [% y$ T+ Z9 P0 L: V
    4. net.trainParam.Lr=0.05;
      . M% ?/ F% A5 d9 g7 E
    5. net.trainParam.epochs=2000;2 i3 M+ i/ ]/ Q% D
    6. net.trainParam.goal=0.65*10^(-4);3 i, G2 [/ g5 A3 ]+ D$ ]6 F
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    7 E' X2 Y, I  @7 Z, l一、改成单隐含层的,6个节点
    8 T5 W! X3 J- O, l" `. W! l二、训练函数改成梯度下降BP算法 traingd
    ! ~2 N- g/ \" J+ J2 a三、迭代次数改成2000
    . J; g; D' Z* g) B; l# h' X  L0 h上面的参数是自己试的,我也不知道为什么。1 t( B3 I3 S0 y& X9 ^2 O
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    * \7 o1 c! G$ E& g) J关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-7-22 17:18 , Processed in 0.509778 second(s), 103 queries .

    回顶部