QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4961|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    : b3 o' D: a& o* C: i) \& z6 [+ G3 H* n! A" Z3 C6 `+ P
    %原始数据输入
    ' o3 C: _6 o$ D" U* c3 Q- mclc# H# D# ?3 P8 k. ?4 P$ \. m
    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,...
    ! N1 j6 c0 Z3 [! }; G/ D% i1 M    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    3 r+ b+ Y; m5 h1 G8 }8 esqjdcs=[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,...& g  ~/ l* [1 A1 T% f  {
        2.5,2.6,2.7,2.85,2.95,3.10];
    & o- T' ~* \" psqglmj=[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 W& J. D$ Q# s
        0.56,0.59,0.59,0.67,0.69,0.79];
    * w  h, i3 ]% u. F/ Y2 E; V& ?glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...1 S3 Q  v4 U! T$ v
        22598,25107,33442,36836,40548,42927,43462];( }, @/ i) I0 n% J! {; I/ M$ V
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    5 z  _; w9 o2 Z' E/ c9 a    13320,16762,18673,20724,20803,21804];  n, R0 Z. A# Q' E* N# y" a5 @6 h( x
    p=[sqrs;sqjdcs;sqglmj];
    / \/ b" h- m2 q8 Q% V2 ct=[glkyl;glhyl];1 G2 b' D: m, u( \7 S; L* J

    $ g, }; v4 c; i9 I2 e6 t  H5 H%数据归一化( ?+ g5 v: m8 [3 |7 G- t9 ~
    [pn,ps1]=mapminmax(p);" o+ w' J, n& P. t3 f
    [tn,ps2]=mapminmax(t);8 r2 x, k4 L+ M2 ~, f7 S' R
    dx=[-1,1;-1,1;-1,1];
    - m/ \1 w  D! M  I% T, n' _* f1 g6 W' t) C5 w
    %BP网络训练
    $ B' Y% s6 n8 U+ b: u+ \! Enet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');5 Q; l) v* V3 b. W5 i8 u
    net.trainParam.show=1000;8 V. Y5 k! a3 @# c; g' x8 L
    net.trainParam.Lr=0.05;3 U& t# x; |" M: e) ~. o9 q* X
    net.trainParam.epochs=50000;
    : F3 _0 r1 }( Q$ F2 B' _net.trainParam.goal=0.65*10^(-3);
    0 T* b9 a# \2 [, hnet=train(net,pn,tn);0 y$ k* U6 h: I5 h/ C& R( \) e

      k) h% R4 _* j' p%利用原数据对BP网络仿真
    5 U0 G: J2 h) |an=sim(net,pn);
    / r) D/ F, z- {/ O8 ua=mapminmax('reverse',an,ps2);
    + l9 P% v3 B+ n7 H/ M# B1 f
    . {% y0 M) V+ N1 m+ |4 O# I' S%仿真结果与原数据对比测试% F, K; S$ w: p5 x# L- h
    x=1990:2009;: M9 E0 _* s% s$ h) x* `- D% n
    newk=a(1,:);
    . J1 T2 ~; B) z( v/ \newh=a(2,:);) _" f# r5 v6 Y7 g# A( A5 n) M& Q
    figure(2);
    , d$ J) w' r+ H5 W# f& [# Csubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');" u$ _8 J2 O5 |' I7 X: q
    legend('网络输出客运量','实际客运量');
    2 M9 |4 A' M3 \9 H$ z5 cxlabel('年份');ylabel('货运量、万人');' J( ~; U" D3 y& ]; O8 ~
    title('运用工具箱客运量学习和测试对比图');+ N! J3 H. Q* a2 O! l, M2 U( A
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      b8 a) k! y. h( |9 ?6 Mlegend('网络输出货运量','实际货运量');
    4 r1 }: F1 B# rxlabel('年份');ylabel('货运量、万吨');
    " q; A  G3 J' [9 b7 Ntitle('运用工具箱货运量学习和测试对比图');" z5 T! r" M% i8 V/ x
      J4 [3 s+ T: q2 T# R4 h
    %新数据仿真. A% A+ D  ~3 R1 }
    pnew=[73.39,75.55, N4 v. Y& A: w2 x4 z) c0 C
        3.9635,4.0975+ N) m  e) G4 R2 E( u3 p2 G
        0.9880,1.0268];) H5 L5 w# q) R- J) U$ j! K
    pnewn=mapminmax('apply',pnew,ps1);7 k: E9 D$ H" M/ z# y! [& V
    anewn=sim(net,pnewn);
    : ^$ b3 }4 D& j! L8 a# yanew=mapminmax('reverse',anewn,ps2)
    ) l1 F* Q  M, O+ ?5 V. \
    " s6 l+ ]' b7 L" f) a( [

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

    `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 : H2 [: ?9 `, p; W3 I  x
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    4 r& ?1 y3 Y. Y$ f因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:0 Z  f& ?; t! u3 }
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');+ K# {: }1 f* _4 w
    我修改为:) ], J2 |" ^5 J' k& H- j9 Z3 x0 ~6 y
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');' E6 d) r- i# K4 N; @- p
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:- h/ c5 w/ g5 h
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
      R  U# l. k; _a=postmnmx(an,mint,maxt);
    ) ?# `3 L" n9 P7 ?7 S6 Opnewn=tramnmx(pnew,minp,maxp);
    " H& m9 \- Y, tanew=postmnmx(anewn,mint,maxt)
    : ]& e$ b3 ]% K6 o+ a  h. ~我修改为:
    2 [2 y6 C( ?6 R/ k[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);; z7 E0 C: n3 P, n! [
    a=mapminmax('reverse',an,ps2);* H8 t: C* K* Y$ X
    pnewn=mapminmax('apply',pnew,ps1);* }7 Q$ S- k5 B% h1 @9 @5 o
    anew=mapminmax('reverse',anewn,ps2)
    : K1 e& ?' B8 X
    0 ~+ G$ n5 w! m" I" e5 z原程序为:
    8 ^2 Z' h: x8 @& E0 S$ [/ s%原始数据输入4 f) U# B$ }$ h1 A$ q" ~* |
    clc2 M3 w/ F) R0 F% H
    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,.../ P  w# B5 C% N/ E6 U+ }/ }
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ' x0 _1 D( ?. B9 l+ k9 f$ G# |8 `, B! r) Esqjdcs=[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,...
    ' k6 c: S$ l; D    2.5,2.6,2.7,2.85,2.95,3.10];
    ! J" g! J& d0 X/ N; T2 g# \1 Usqglmj=[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,...' b5 }- ^- F9 n3 x1 r' L5 o0 u0 `
        0.56,0.59,0.59,0.67,0.69,0.79];
    # l) z/ Q! |  M8 o. g1 g8 Q: pglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    ' k+ W0 }5 _' ^2 W. t7 e    22598,25107,33442,36836,40548,42927,43462];
    3 L& r' x1 R' {7 ^  Vglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...% g. p) d' ^% k/ o* r8 J
        13320,16762,18673,20724,20803,21804];% S  x: \7 k" v; P8 o  t' H
    p=[sqrs;sqjdcs;sqglmj];
    $ l4 W( n) j; e) ]t=[glkyl;glhyl];
    $ ~8 l1 [& g& K: U% B& Y: }3 W  M, c' h* S
    %数据归一化
    ) b( z6 [$ f1 D# |" K[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    ( N3 t  ^) F6 }5 z/ _) `/ hdx=[-1,1;-1,1;-1,1];' Q# I; G" c0 c7 P

    " t  {) h( t% e3 g%BP网络训练1 D8 ~4 `, Z$ g
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    5 X$ n5 _: K" Q8 `5 L" O# }net.trainParam.show=1000;
    8 E: I3 W, f* a+ V. t# _. Knet.trainParam.Lr=0.05;, `4 X* j6 G' T8 a, l6 `
    net.trainParam.epochs=50000;
    6 E* G) C5 G4 \* Knet.trainParam.goal=0.65*10^(-3);  C2 h7 U# R0 m) ?( k
    net=train(net,pn,tn);( O, O' a4 p6 x9 ^6 I* |
    : I/ e9 g! |4 f/ [* d
    %利用原数据对BP网络仿真
    ' b  V! A4 y) s5 _an=sim(net,pn);
    & t/ f4 ~9 B. E% Ua=postmnmx(an,mint,maxt);. _% j( I9 a! y* }
    5 U0 v. O0 I# O$ ~
    %仿真结果与原数据对比测试
    3 k2 ~" ~- {1 t8 G$ Zx=1990:2009;1 ?, @9 h9 O' p) h. ?5 k
    newk=a(1,;  z- Q5 C2 w: }. [- t0 {6 U7 b
    newh=a(2,;' _0 U9 d6 c  p
    figure(2);
    4 V. ^5 K) R3 D' p8 u/ Wsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    9 U. ^, |2 j. q1 Klegend('网络输出客运量','实际客运量');
    4 H& r  ]/ |( n% c" j2 rxlabel('年份');ylabel('货运量、万人');+ @/ t+ T7 N5 M- h3 g% ?
    title('运用工具箱客运量学习和测试对比图');7 F3 W: W5 Y. n) F/ S7 i! g
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    7 Y3 e& O  m2 W/ Y1 Dlegend('网络输出货运量','实际货运量');/ B1 m# M2 z7 @" j- {+ R4 u
    xlabel('年份');ylabel('货运量、万吨');
    8 f8 v- V- H$ A! Ititle('运用工具箱货运量学习和测试对比图');2 k3 ~9 J1 G$ e' u5 Q4 R

    $ g& O9 n( |$ L2 U/ r%新数据仿真
    7 Q! L( e0 V, }. f  P. Spnew=[73.39,75.55
    9 u% L1 S- [0 O! b    3.9635,4.0975$ D9 j2 ]% l& V$ ~# @
        0.9880,1.0268];
    5 r& F8 t/ n: v- I- w1 Hpnewn=tramnmx(pnew,minp,maxp);& u; p, f" t+ i, y- E" K
    anewn=sim(net,pnewn);5 R7 S" e& g8 E4 Q1 _8 x+ J2 K
    anew=postmnmx(anewn,mint,maxt)

    / g& x4 t& ?. L8 b0 q4 z! M
    * a; I8 Q0 U7 e9 }修改后程序为:
    ; ^1 x) D0 U: T  G%原始数据输入
    . `# ?0 t$ G+ v* j) v& oclc
    - H9 G1 g2 M0 m7 n( M0 ~9 ]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,..." E1 R% A+ V0 E  a2 p" Q4 n
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    4 l$ i; |7 ?9 S6 ~+ }/ Y3 Csqjdcs=[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,...( m' t# \& S( a8 l& |# w2 c
        2.5,2.6,2.7,2.85,2.95,3.10];
    # W5 G  k" A' Y6 }6 msqglmj=[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/ P# \# D/ \" C; r
        0.56,0.59,0.59,0.67,0.69,0.79];8 D- T  M7 Y0 [. N
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    + m3 Y2 k2 w- p! H8 C) Q    22598,25107,33442,36836,40548,42927,43462];
    , e9 z* h# T. J5 V" @9 Nglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...0 p. U5 H( ~4 y! h1 w5 t# [
        13320,16762,18673,20724,20803,21804];
    6 B- s5 R! c+ {; ~0 e0 I/ k  Jp=[sqrs;sqjdcs;sqglmj];
    ! Y4 W2 ]2 e; H* A, n$ St=[glkyl;glhyl];
    0 Q* X$ s2 C+ ^, s- z! i* v+ g& s% r: d8 p) c; z3 d. m" ~
    %数据归一化) }- `0 @. c6 Q2 l" g8 t
    [pn,ps1]=mapminmax(p);: l$ Y* x3 p- m) @
    [tn,ps2]=mapminmax(t);! I! @2 a% i& v2 z

    . p* w$ k8 w+ t%BP网络训练7 V" j6 U' P+ f3 N- x+ s1 ~, m
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');; f( T, `. w- ^- _' [0 j
    net.trainParam.show=1000;
    ( F% |: _" m$ Z5 Dnet.trainParam.Lr=0.05;
    " v( I! X/ ]9 \3 U! tnet.trainParam.epochs=50000;' E% i/ B! x/ R4 J/ J7 J
    net.trainParam.goal=0.65*10^(-3);
    " X( x' P' G" E9 inet=train(net,pn,tn);% {- y" U" E& u) a' I! Y/ s9 j

    . H( x9 J( E" ?* H%利用原数据对BP网络仿真  p+ W! w7 Q+ I) t/ y5 Q8 E
    an=sim(net,pn);
    & y$ }3 x$ f+ Q9 K" {- h( Ea=mapminmax('reverse',an,ps2);: {% z# f( y, z; g7 S

    ) L* r6 t8 w; ^%仿真结果与原数据对比测试! s: j* z) G: r: u, Y# \
    x=1990:2009;
    7 V$ u% d. y& e* l- ]! \3 @9 Snewk=a(1,;
    ! o' f+ i( Q% Enewh=a(2,;
    0 z) k1 @5 e/ V$ ]5 hfigure(2);
    ( j' n3 X; P- t" asubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    6 `6 G# @  z$ t9 R& M/ }$ elegend('网络输出客运量','实际客运量');
    3 D! O  {, `  k$ g# l* y2 Q- K; B7 Jxlabel('年份');ylabel('货运量、万人');
    # `7 J4 m8 h) _# \+ ftitle('运用工具箱客运量学习和测试对比图');
      o0 r1 l, j: ssubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    : V  v- X9 L/ W3 B: C5 K, K* F( N$ ylegend('网络输出货运量','实际货运量');
    - U+ x; l9 M3 b6 x# C: oxlabel('年份');ylabel('货运量、万吨');
      a  j& h3 ^6 L+ D. ntitle('运用工具箱货运量学习和测试对比图');2 l9 D0 ]7 z% r( s
    6 p& X9 k) O& d2 P9 l0 k
    %新数据仿真# x1 G# Q. ^+ x. l/ B# c4 O3 l  \7 x6 n
    pnew=[73.39,75.55
    . h5 I( m- o$ Z9 x) r" _4 V1 ]" u    3.9635,4.0975
    " x9 Q! _" x; Z# U1 P  Y    0.9880,1.0268];" r% t# a- S1 r) j
    pnewn=mapminmax('apply',pnew,ps1);6 Z. g6 Y7 i6 R9 q$ ^
    anewn=sim(net,pnewn);
    + T1 L& ~& ]5 h( H0 ganew=mapminmax('reverse',anewn,ps2)
    3 y; n- K# D* b# M3 A(修改的地方用颜色标记了)
    . Y, C+ f  p3 M. J; o麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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: r; \5 Z5 Q! K( Y+ x
    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,...7 u2 _6 f# F% s) S1 a
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];& V% `  `. _6 n\" X& |\" ]5 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 ]& I& z  p( \* \2 t* c- W# r7 g* C2 r
    5.     2.5,2.6,2.7,2.85,2.95,3.10];' d, K2 q) a( c7 L9 T0 c: n3 F
    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,...+ t+ N4 A# n/ R* s# o& ?& a# z
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      2 ^! w! D- @& y$ r5 Z4 a; s* o
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      ( R% `9 W: S\" B1 [; u
    9.      22598,25107,33442,36836,40548,42927,43462];
      ' B/ s- F  T1 W- J$ i& |7 D. r
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...6 |\" e8 G6 O0 Z2 m7 ?, \4 a\" C  ?
    11.      13320,16762,18673,20724,20803,21804];$ z, W6 c* o9 @! {2 Y
    12. p=[sqrs;sqjdcs;sqglmj];9 M9 `\" I* c- O) ]# J
    13. t=[glkyl;glhyl];+ V3 j+ T8 h) Q5 h/ B
    14. %数据归一化5 s% U+ `\" t. g1 x5 i
    15. [pn,ps1]=mapminmax(p);9 H4 ~* b% |& W$ k
    16. [tn,ps2]=mapminmax(t);
      $ X1 a- P$ u* B; P4 D7 t3 t
    17. %dx=[-1,1;-1,1;-1,1];
      % c; M- _3 U5 }\" W* t
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      - d( W' n8 D! L. e

    19. \" }5 s+ ]* X; o5 f7 p! N
    20. %BP网络训练+ T) d8 X( f4 V+ }. P2 P* \
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color], w! ^; X' ~\" y5 D5 H1 k) Q7 Y, V
    22. net.trainParam.show=1000;( r# X1 H+ S4 g9 ]( t& p- ~* N0 V% G4 h
    23. net.trainParam.Lr=0.05;
      4 A5 j4 R; V4 C\" O( t& j2 R
    24. net.trainParam.epochs=50000;
      2 [, v; W. ?& p
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      . A: J) k0 J( V% U) q# I/ D1 ~
    26. net=train(net,pn,tn);: l# |3 `\" Z( j) x# J
    27. & R) B4 |; A5 L8 }
    28. %利用原数据对BP网络仿真
      ; W& i' ?+ S8 `+ n
    29. an=sim(net,pn);' r5 U/ @# o8 p
    30. a=mapminmax('reverse',an,ps2);
      3 g5 r* f! U; B' s4 ?5 \8 \' t! N, G
    31. : }2 r4 r& p  W2 q
    32. %仿真结果与原数据对比测试 ( n' B3 ~. R0 l& |
    33. x=1990:2009;2 _5 ]. I' V! E$ T! Q4 w. y
    34. newk=a(1,:);9 q' O0 l- W) E6 K; W3 a
    35. newh=a(2,:);
      . L+ G. n( {! _% f9 w( i9 s, e
    36. figure(2);  N; W1 M: I) L; @9 M
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      % V4 G+ U\" q5 X& M  l* g5 k
    38. legend('网络输出客运量','实际客运量');
      * h. n6 q7 P4 `6 }. |
    39. xlabel('年份');ylabel('货运量、万人');
      7 a7 n9 h5 S4 K: R* W0 x; B
    40. title('运用工具箱客运量学习和测试对比图');
      9 V* [2 W2 |% F/ A1 l0 A
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ; t\" G$ R% |\" @
    42. legend('网络输出货运量','实际货运量');$ x  U* |. a! b\" @
    43. xlabel('年份');ylabel('货运量、万吨');
      % N\" Y& Q7 {/ u4 \) i! E, k
    44. title('运用工具箱货运量学习和测试对比图');% k; ?! y( F% V# `9 D0 n
    45. 5 J! `2 _3 _6 l& [% n4 M
    46. %新数据仿真
      % t4 W- H5 N( u' C7 W* H
    47. pnew=[73.39,75.550 A2 K/ ?( d: W
    48.      3.9635,4.09751 }1 r* ^' x( t9 a( `, N/ n- \
    49.      0.9880,1.0268];! c! i4 j7 `$ w( O0 @
    50. pnewn=mapminmax('apply',pnew,ps1);
      3 x+ ?, f9 P' P$ g. b
    51. anewn=sim(net,pnewn);
      # k. y4 ]; V6 z5 }1 N
    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& ~% i4 `$ ?0 h/ f5 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,...5 I  T3 l6 z3 G$ I& |
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];# r0 \0 f' E1 P, X
    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,...
      : y. G$ f1 F- N7 ?$ q7 i. C
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      ! F0 j+ C5 B( [\" V
    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 n% P( Y) E\" z
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      ) m: q2 U% E/ b9 \/ ?+ k& t+ j
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...1 e1 E- ~5 K: c& f5 Y9 y) @
    9.      22598,25107,33442,36836,40548,42927,43462];
      ( ]- M2 q- Z3 c% w
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      * j9 R+ B0 C2 `; [: O; t: ?* z; W- O
    11.      13320,16762,18673,20724,20803,21804];
      $ ^2 t' _; C/ [' t
    12. p=[sqrs;sqjdcs;sqglmj];+ W9 y7 U$ @5 D1 e6 _3 P
    13. t=[glkyl;glhyl];
      8 t5 p5 k* u+ F! N) S% b1 Y; S
    14. %数据归一化
      - J7 y# Y( L0 ^: b
    15. [pn,ps1]=mapminmax(p);- D% F/ v  t3 |) |\" ?
    16. [tn,ps2]=mapminmax(t);$ m- C. L+ Q7 T! P* A9 r
    17. %dx=[-1,1;-1,1;-1,1];) v) Z% M$ k# k) \+ A
    18. p0=minmax(pn);t0=minmax(tn);; Q! O: S; b) z4 ^- C
    19. : O% W\" u2 J# Q1 y: ^: e
    20. %BP网络训练
      8 g; t4 O1 l0 v& [% [
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');   C, f* w/ p1 H9 z) p9 a  {
    22. net.trainParam.show=1000;
      1 S1 z! @2 b& h4 q; R: |7 x0 Z! ^
    23. net.trainParam.Lr=0.05;
      5 |: `! h4 a4 y( L9 E4 L2 M; \
    24. net.trainParam.epochs=50000;, ~% v6 C+ g% O* {
    25. net.trainParam.goal=0.65*10^(-5);
      + n/ H0 c9 `6 y+ F8 o3 u
    26. net=train(net,pn,tn);$ Y  {! E5 ]6 o* Y- n

    27. & e( T' _# X$ C\" @
    28. %利用原数据对BP网络仿真
      \" {0 q8 r! [. R' Q' ~  D- i/ b
    29. an=sim(net,pn);
      5 D; H8 ]; \; W- u. j4 g: s' G
    30. a=mapminmax('reverse',an,ps2);; q6 U9 I3 t3 z4 }% M; r
    31. 3 W; f3 e* c$ k8 D+ s9 a. s+ H
    32. %仿真结果与原数据对比测试
      ' U3 C/ A+ V3 [
    33. x=1990:2009;2 {& U' i2 R; p0 H2 G
    34. newk=a(1,:);
      . r# h& r9 X& Z% q' K3 x
    35. newh=a(2,:);# W8 X! n+ R- ?( i. K9 j
    36. figure(2);
      + t' h  i8 Y4 a$ ^
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');% y% r6 K' |% o; i) Q& l
    38. legend('网络输出客运量','实际客运量');
      0 K& N' C# Y, }/ U8 d1 o
    39. xlabel('年份');ylabel('货运量、万人');
      6 R3 j\" ]/ D% u$ v2 k2 m- p' t
    40. title('运用工具箱客运量学习和测试对比图');- i) U! |8 u( [$ h  [
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      5 e* u. Q0 l! R5 i
    42. legend('网络输出货运量','实际货运量');
        ~6 |9 k, x% E' x
    43. xlabel('年份');ylabel('货运量、万吨');
      1 X: Q( P* z9 a, ]$ L
    44. title('运用工具箱货运量学习和测试对比图');$ O3 z+ }* I8 h) N/ w2 Z# ~' L
    45. ; F% e8 d0 M( }) e4 d* F/ e
    46. %新数据仿真8 D7 Y, ^# a) z/ t  j% d* Y! D
    47. pnew=[73.39,75.55' @5 d0 D3 A3 s9 D; A
    48.      3.9635,4.0975\" f1 x  T; ?0 M\" W8 Q* S
    49.      0.9880,1.0268];1 k2 M, z: x+ }) H; N+ _9 F4 @
    50. pnewn=mapminmax('apply',pnew,ps1);
      / z0 m7 r% [0 ]4 L5 f\" y
    51. anewn=sim(net,pnewn);$ _; _$ X' Z\" l
    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 7 q" n0 z; ^4 x" t4 ~. Y/ L
    忽略我上面那个,改动的地方在18,21,25行……求批

      J! ]( a' \" t! y确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      9 o: B0 m' x/ K/ r, H\" M
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); \" _4 z$ N! U/ a
    3. net.trainParam.show=1000;7 J3 O+ h' E# J2 y) z) v8 m
    4. net.trainParam.Lr=0.05;
      8 C  F+ X: r' A* C
    5. net.trainParam.epochs=2000;/ R: K# j( u/ B3 s1 Y
    6. net.trainParam.goal=0.65*10^(-4);: H) s3 V- u$ Y' t, i  H. Q
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    " V% N0 J. \7 ]" R. p  z一、改成单隐含层的,6个节点
    0 w1 V0 Y& v) C0 M二、训练函数改成梯度下降BP算法 traingd
    7 T) X6 n' b, r, _4 ?) i! r# [1 E三、迭代次数改成2000. [" ?  J$ U1 K$ [
    上面的参数是自己试的,我也不知道为什么。
    " o8 U7 o* C" a6 {; U$ V由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    ' s1 j/ h+ r# T9 Z3 w$ _) k2 W关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-9-11 22:07 , Processed in 0.441549 second(s), 102 queries .

    回顶部