QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4960|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    ! b. h2 d" g- w4 h1 h
    2 E' J2 I/ o$ d+ X%原始数据输入
      v, ~7 }& i0 i' C$ K  d) ]clc! v! `0 p! I1 x% 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,...
      i( C; s5 u3 d8 u" e8 @& j    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];" a6 S9 l* [, C; 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,...
    : y- O* I  W7 m$ Q: S: f    2.5,2.6,2.7,2.85,2.95,3.10];
    0 s+ Z4 C& U( T/ |8 s  C/ 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,...3 Y4 b4 t$ y( O3 g9 T
        0.56,0.59,0.59,0.67,0.69,0.79];
    # e+ `" {$ ?0 |3 M  S8 oglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    4 I- q, l0 M7 r+ T! m    22598,25107,33442,36836,40548,42927,43462];
    * Z; U& |+ H/ I5 G% uglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...1 o* P  Y, {# x+ g, ^  Z
        13320,16762,18673,20724,20803,21804];
    ! ]1 Y2 F8 h2 ap=[sqrs;sqjdcs;sqglmj];
    , v3 R5 u: h7 t5 m- ]t=[glkyl;glhyl];
    8 M1 n1 a3 i, X1 E1 K' y+ I3 W+ Z& O
    %数据归一化4 H8 d% U" f2 f; f1 _. @
    [pn,ps1]=mapminmax(p);9 G4 q7 S& |3 C; [
    [tn,ps2]=mapminmax(t);5 E" R. V3 B1 j/ {1 t
    dx=[-1,1;-1,1;-1,1];
    0 V% ~2 p1 ~9 ~2 {$ L3 P4 N0 l$ W% c1 k9 K1 a
    %BP网络训练
    ! i* S9 j. v6 T5 r: A5 B: tnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    & ^4 D7 I& h( R5 o: D4 J# I/ Rnet.trainParam.show=1000;
      A% Q6 ^2 J+ {: knet.trainParam.Lr=0.05;
    0 i+ J9 e3 @$ D) U$ D5 Unet.trainParam.epochs=50000;" l: m. H8 V! B) c" a& f4 ^* @
    net.trainParam.goal=0.65*10^(-3);
    ; {& _. y* v- _/ Q( Znet=train(net,pn,tn);
    1 z" x* m3 p$ g5 s& L- e# T6 ~$ c/ W/ ~, i* ~2 W8 D
    %利用原数据对BP网络仿真
    0 S$ F3 r) a4 B: ^; J$ @an=sim(net,pn);
    ) Z: Q. B2 ?' J: t; r/ Ca=mapminmax('reverse',an,ps2);
    ' f" n3 O% b( a# H3 X
      E! _3 ?3 H$ `7 L%仿真结果与原数据对比测试* l$ Y  ~4 k7 ?/ }* x. P4 Q3 C5 z2 ?
    x=1990:2009;) I/ S8 V) P, m" g9 t# K
    newk=a(1,:);
    5 v" M0 Z4 u" k# T8 s2 `* Knewh=a(2,:);/ }% [% e2 s% F+ \! `3 C
    figure(2);9 j+ Z# N9 j: z$ h5 |/ a  x7 l0 R
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');9 g% n, J+ N$ z: F* I
    legend('网络输出客运量','实际客运量');+ Z9 L9 e! V. z7 s* s) d5 o- `
    xlabel('年份');ylabel('货运量、万人');
    0 K7 u& J$ u: M; ztitle('运用工具箱客运量学习和测试对比图');
    # q0 O8 t, c' r! P4 Jsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    7 i$ M% }4 c" a& r% Elegend('网络输出货运量','实际货运量');8 o2 b# v/ B8 _4 |4 ~1 Y; q$ j
    xlabel('年份');ylabel('货运量、万吨');
    , ~4 M3 A! M& S8 B/ s- m2 Dtitle('运用工具箱货运量学习和测试对比图');) |3 n0 r( d5 @' T
    7 l  n: |) R5 E8 e$ D% i! a  M/ H6 Q
    %新数据仿真4 n* D: o7 X: f: a8 M5 [+ C; h
    pnew=[73.39,75.55. P% B. D" g7 D+ ^2 P8 p" B
        3.9635,4.09757 H1 s# X, g& _$ G' c  \; j  M! e
        0.9880,1.0268];  _$ M3 _: M3 e" O7 J, c  K5 V
    pnewn=mapminmax('apply',pnew,ps1);9 V6 `8 a: W0 _# p0 e
    anewn=sim(net,pnewn);, V( G" G' c% Z5 Z
    anew=mapminmax('reverse',anewn,ps2)9 ^8 \! ^, c2 `% H8 f

    8 w) W" [' g- T$ m( S, T+ s

    `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
    : w7 z: z& i+ j看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    0 T5 n$ q$ c/ a3 O( O# ~
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    3 T/ [0 B' p- x: |% N$ Q) nnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');5 ^9 \$ m$ g% Y3 c" g
    我修改为:
    1 Q9 b+ J& j, B7 _net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');2 D  o4 ?4 N2 p+ N6 a1 T
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:( K: E# d& M$ ^2 z: i
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    - X, S6 u" x  p. Z) g2 F0 q4 Y8 {a=postmnmx(an,mint,maxt);
    ' R: l7 \5 z! v% h7 u3 S: V. Ipnewn=tramnmx(pnew,minp,maxp);
    ( l8 Z# ?2 G1 i5 J" fanew=postmnmx(anewn,mint,maxt): m& N1 i# S" i" m) H" I0 P
    我修改为:
    3 z7 Z) R: F2 h) @# R6 Z5 ^& m/ |[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    1 a: F; G1 ]  Ea=mapminmax('reverse',an,ps2);7 {+ O3 ]7 V) r% T6 T" ]8 }0 p6 ?
    pnewn=mapminmax('apply',pnew,ps1);5 I3 a8 t% N3 k& a0 k3 H! M/ y
    anew=mapminmax('reverse',anewn,ps2)
    $ F: |  w# ?/ ^( n4 F$ l+ @
    & R: \1 }4 v& y- r) L% g原程序为:' d, e. e, Q' N  X7 Y
    %原始数据输入' J1 _& g# m' J$ Q" V
    clc0 k; {; o7 M& s* c2 g5 `
    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,...' T6 S. \: y+ W% a
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];0 r# o1 g3 a- F5 a2 ~
    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,...
    ' n4 b+ B6 ?( o6 G  p+ ^1 ~    2.5,2.6,2.7,2.85,2.95,3.10];
    1 `  ~( y# h: T# ~8 H2 Qsqglmj=[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,...4 K. E) Z6 ?/ T" n, Q; d; h
        0.56,0.59,0.59,0.67,0.69,0.79];
    + Z9 I- m& h/ ^) \glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    - Z. E2 R, B! m4 R3 x    22598,25107,33442,36836,40548,42927,43462];
    0 E& O5 _0 M& k5 u3 `; Zglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...1 t  n- h6 ~' E8 _$ F
        13320,16762,18673,20724,20803,21804];0 ~8 p" D, M) ]1 m! N6 K; Q- c6 p
    p=[sqrs;sqjdcs;sqglmj];
    - c* J3 T3 e' n: b+ H* X; k6 ]: It=[glkyl;glhyl];
    + G- h2 j- W3 Q, {  n+ x' ~' O! @5 ]/ o6 F5 l: X& j
    %数据归一化
    6 B$ n- a  G# w5 Z[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    # w! K& X* F! A; Wdx=[-1,1;-1,1;-1,1];
    " H1 J' o6 v' z8 k% \: H  d
      s; M. Y2 T' \" `; |  t# |. f+ S
    %BP网络训练
    ' B/ q8 h. ?* c2 K: G' b# knet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    & D# J, `0 S( ]4 y+ b9 I5 |net.trainParam.show=1000;9 p# ]: m8 V  _' L$ v4 O
    net.trainParam.Lr=0.05;1 O+ R" @4 M/ N
    net.trainParam.epochs=50000;
    % D9 b- D8 R* T/ }' H- J3 Jnet.trainParam.goal=0.65*10^(-3);
    7 n& I, Q2 Q. ?' mnet=train(net,pn,tn);
      \# U0 b$ E$ ^' W" r3 t. ]- ]
      r& ?( s' k5 ^% n. Y7 H2 V%利用原数据对BP网络仿真. Z4 s! X3 w* E3 z: ~& [4 {; _
    an=sim(net,pn);
    ; b, q  J& N/ D6 \) |# ?a=postmnmx(an,mint,maxt);% {' p( Q- N7 p
    : T# _/ P; F7 z9 ^: `
    %仿真结果与原数据对比测试0 @0 ~: H, b/ S7 |: a7 ]  m
    x=1990:2009;
    / v% p+ i( b& m' V3 |* Dnewk=a(1,;$ X+ [# k6 B+ o" r$ M" q$ C& U
    newh=a(2,;5 t/ z7 f! ]: C* `' P8 b$ t2 d
    figure(2);
    3 L8 g8 ]% l% ^0 S4 \" B- Psubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    6 A) B; H& n9 m0 {6 v& C$ }$ x0 Ulegend('网络输出客运量','实际客运量');
    1 T: a, U8 i$ H, z' Fxlabel('年份');ylabel('货运量、万人');# N+ @$ @, m: Q
    title('运用工具箱客运量学习和测试对比图');( F) `) z* m5 g1 r) o5 X0 ?, V1 B* d- S
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');# Z. M8 }) Q; H# O
    legend('网络输出货运量','实际货运量');
    ) G7 k5 A0 j9 g4 M  Dxlabel('年份');ylabel('货运量、万吨');
    $ m/ `9 N7 N3 V# G2 O8 U6 ?title('运用工具箱货运量学习和测试对比图');
    4 n# [6 U. ]$ t! S- R: S/ @% Y) ?6 d, p) S( b- o- V# p  b9 p7 U
    %新数据仿真
    4 p5 i9 R! k$ g7 K& Xpnew=[73.39,75.55
    # _2 r" m( Q. B    3.9635,4.0975
    * p) {1 }- Y; T) Q    0.9880,1.0268];
    ( h& M! [- i5 n: C. V% s; Bpnewn=tramnmx(pnew,minp,maxp);' y& q4 o3 K* n% u4 r0 t( [
    anewn=sim(net,pnewn);
    - ~4 k, V4 x: l- F3 @' B) [: i& ?# I- `anew=postmnmx(anewn,mint,maxt)

    . b  L9 C" B2 T1 O+ }9 ]7 {' Z8 O. C) v6 i; H
    修改后程序为:
    2 I  f% R' N$ R  l! ?%原始数据输入! H2 z% \, J# p" q# o( u
    clc
    - t+ q7 k- ?* f! S7 M# Gsqrs=[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 t' C* E. F8 h1 i/ B    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ' F5 V& W7 I. y0 u. U4 T" 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,...$ H/ r: I( `* ]) |% Y  B
        2.5,2.6,2.7,2.85,2.95,3.10];' Z! K! |! T! g3 E
    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,...
    + n; c# y4 {- I* m    0.56,0.59,0.59,0.67,0.69,0.79];
    : [9 i# u3 F6 gglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    4 i; M: ]3 Y  {8 s( Z8 y" V) e3 b    22598,25107,33442,36836,40548,42927,43462];3 Z+ c: Z" ?! k; d- F% \" z* [
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...3 L! S9 v3 r! n' Z" \/ v9 B
        13320,16762,18673,20724,20803,21804];
    3 K: e4 r$ |9 Mp=[sqrs;sqjdcs;sqglmj];
    3 s# _1 e2 e: g* I- `9 Vt=[glkyl;glhyl];! B$ D$ u( O) h0 }7 A$ u% N8 V, t
    ) S; p9 H' s/ S* h
    %数据归一化
    : d6 r; r4 G+ P+ t, C. {9 ~* s[pn,ps1]=mapminmax(p);
    ! `3 x; L; A' h4 \6 Z# `[tn,ps2]=mapminmax(t);
    : q* {2 F1 u( x3 V
    % G0 ~& b1 c3 N; y8 ?- V5 @%BP网络训练" g% u4 p: l7 D; }7 ^# e+ ]
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');# H% P- H7 h. f( J6 r
    net.trainParam.show=1000;9 [# U. `2 n: A/ n, y9 s2 y! E
    net.trainParam.Lr=0.05;
    2 g1 ?) I" V9 ]( i+ ]net.trainParam.epochs=50000;4 j5 ?  E5 {/ @/ N3 F
    net.trainParam.goal=0.65*10^(-3);! U' C: \& H4 w1 t% g) Z
    net=train(net,pn,tn);7 a- G' k/ N4 a
    2 J9 A7 ]* _# v! M- u' V
    %利用原数据对BP网络仿真1 J; t- s, K, `6 B
    an=sim(net,pn);. E# d& ]7 n* Q
    a=mapminmax('reverse',an,ps2);+ P# A  x& Z: f4 c! T. Y3 a

    + [/ ], g  Z2 X% z% F- k2 G, [%仿真结果与原数据对比测试1 l2 |& d9 c( M9 R) w% O' U
    x=1990:2009;& S; d) o+ E; o: O, v: ~$ {
    newk=a(1,;; v) `& ?0 ]; R4 m, T7 w3 {3 q+ B
    newh=a(2,;
    9 N! n; ^" j. U$ E' Q0 cfigure(2);
    7 M) J  r, M8 K6 |3 P& m1 K: d. |subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    * q. z5 Y& {1 R+ ]$ a* e+ U1 D9 vlegend('网络输出客运量','实际客运量');* F: ^/ ~# L% O5 Q2 }
    xlabel('年份');ylabel('货运量、万人');
    ; r0 E6 W1 T! ^' m# ftitle('运用工具箱客运量学习和测试对比图');: x) b1 K* H6 W  R7 r
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');1 ^4 O) t3 ~. U) _- t
    legend('网络输出货运量','实际货运量');
    7 M/ Q/ C& t0 G" }9 lxlabel('年份');ylabel('货运量、万吨');" J! _- Q5 O. ~6 C, f+ p+ g
    title('运用工具箱货运量学习和测试对比图');
    8 M# N- ~7 ?' Y1 r( D; f# _) ^% n! i2 g4 W
    %新数据仿真
    ; H) f( j! ]+ }% Hpnew=[73.39,75.55
    / j' \: u2 n" }9 Q4 y7 M    3.9635,4.0975/ P1 d. Z1 ^" c% O9 Y
        0.9880,1.0268];3 `+ _3 c  S# a5 p# r& s% o9 |7 l
    pnewn=mapminmax('apply',pnew,ps1);
    * w1 q& a8 S/ Wanewn=sim(net,pnewn);5 K8 Y: d3 ]' e0 f) w
    anew=mapminmax('reverse',anewn,ps2)
    ' X% Q$ L. Z: w% q! ^(修改的地方用颜色标记了)
    . l& j/ @# _" p* B( 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. clc9 {/ \5 G! b( U\" J  |
    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,...
      # a, w. t' ^- x# h% [
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      7 s( ?5 g) B1 h0 G1 p& }+ 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 j/ h. q( h- z1 b% P5 C. B
    5.     2.5,2.6,2.7,2.85,2.95,3.10];7 j) ?) o  A1 W( S$ h# t+ \$ X
    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,.../ K0 N3 Z\" Q% D/ Q5 x, _& v) n6 D: E
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      7 t7 h1 }! h7 |
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      % A, K7 ?8 H4 A* u1 }, o
    9.      22598,25107,33442,36836,40548,42927,43462];' C\" F3 X: ]8 l4 `0 m; A1 i' F
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      4 ?2 E\" H  C2 p\" \7 _6 j
    11.      13320,16762,18673,20724,20803,21804];9 u- l0 V4 F( J! U/ |. k
    12. p=[sqrs;sqjdcs;sqglmj];; t& E6 S% p) G' z5 ^, Y; ?
    13. t=[glkyl;glhyl];
      1 ~( }6 W: \, G; s9 \' O2 F! N
    14. %数据归一化
      7 _) t3 t5 y+ m0 B\" E
    15. [pn,ps1]=mapminmax(p);
      # P1 T9 ~: y5 L4 V8 C4 e' I
    16. [tn,ps2]=mapminmax(t);
      . `8 L\" C; o1 L! N+ G9 {
    17. %dx=[-1,1;-1,1;-1,1];
      $ g4 j6 a* P. B  k: M( a
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      & j/ X2 u8 f- H0 T

    19. & ?5 x: c: A0 _
    20. %BP网络训练
      : P* |0 z% W7 Z9 s3 j8 Q9 W
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]6 F# f2 D5 i6 n( m5 `7 U( w
    22. net.trainParam.show=1000;$ T! C\" \0 X9 i% p. `4 d
    23. net.trainParam.Lr=0.05;% d# }, n8 l- x& V7 Y8 B
    24. net.trainParam.epochs=50000;
      8 S+ w4 K7 u7 `/ m, u  O
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]* [+ q  a5 g/ j- k4 Q0 C  t0 S
    26. net=train(net,pn,tn);6 `! b$ R1 U: n1 D
    27. $ y0 S( U9 E- E& `- M1 \' S4 I
    28. %利用原数据对BP网络仿真: T( K/ _' L9 I, [6 n& p- Q) W
    29. an=sim(net,pn);
        e( \0 ]9 Z) j/ v
    30. a=mapminmax('reverse',an,ps2);1 |7 J. I. h$ Y
    31. % e. {* l& U5 e\" \. |+ m7 W7 Y4 j$ p
    32. %仿真结果与原数据对比测试 % _- A4 {& Y8 O, y% u
    33. x=1990:2009;
        O- `5 V; |' v  X+ m) C% X
    34. newk=a(1,:);3 u\" ?0 a& E' V4 _6 \- P6 x3 D
    35. newh=a(2,:);
      ! T2 s\" o1 w# z, B6 n
    36. figure(2);0 c\" @) }: t, t! }: ~% K1 b
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');9 x2 J' o& f: h! S
    38. legend('网络输出客运量','实际客运量');
      3 I& |  [9 h  X% U2 n
    39. xlabel('年份');ylabel('货运量、万人');
      & j9 r) X) c- p4 W! Q
    40. title('运用工具箱客运量学习和测试对比图');) i( d* }: r: t+ c: @
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      $ ^- e* s\" V, g
    42. legend('网络输出货运量','实际货运量');
      9 _$ o\" N1 h2 Y3 z$ p/ n
    43. xlabel('年份');ylabel('货运量、万吨');! d, w3 h, s9 z! Q+ R7 l7 }( H
    44. title('运用工具箱货运量学习和测试对比图');
      : E' ?% y+ [0 C* k+ \) s4 ^
    45. / E5 b) U. D/ ^1 d2 a: c8 V
    46. %新数据仿真
      0 h0 l! |2 T+ y0 X2 b4 `
    47. pnew=[73.39,75.554 ~2 r5 T9 J8 d( m& ?8 Y' l
    48.      3.9635,4.0975  ^4 ]* X0 o, a0 C7 @  k
    49.      0.9880,1.0268];
      / p- W\" ~( d) T0 o
    50. pnewn=mapminmax('apply',pnew,ps1);\" V# i% _7 `0 m& Z
    51. anewn=sim(net,pnewn);; W6 D3 A0 v1 ^- u; [2 J6 ?
    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. r) {\" L2 s8 v) F$ W9 t
    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,...
      ! W& c* V' y2 S+ a+ U
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];3 L' _, r  A( l7 z+ O9 n8 ]; A/ r3 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,...
      * K8 @. h5 n( ^' ]+ J
    5.     2.5,2.6,2.7,2.85,2.95,3.10];1 R8 f$ c4 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,...
      , q) h% T# y& j' ^  a7 o+ E
    7.     0.56,0.59,0.59,0.67,0.69,0.79];; i2 l( W& d) X  W4 T
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...6 q' f% Y. x; i0 C; x* q9 `
    9.      22598,25107,33442,36836,40548,42927,43462];0 W: ^+ O7 n; p; y1 a! ^
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...3 s$ x2 ?9 i- e; Y( q9 t\" f
    11.      13320,16762,18673,20724,20803,21804];9 q1 O+ r3 }\" }  D
    12. p=[sqrs;sqjdcs;sqglmj];
      6 W) K: x0 H1 v4 [- N
    13. t=[glkyl;glhyl];
      ; f$ N) H  y3 M5 r. l+ k
    14. %数据归一化
      0 M  x8 V$ c) j2 l$ G
    15. [pn,ps1]=mapminmax(p);6 ], d# q, X# z- y$ w/ y
    16. [tn,ps2]=mapminmax(t);
      ' P8 z9 g1 }4 O
    17. %dx=[-1,1;-1,1;-1,1];
      - B5 X- \* Z  Y1 I) l3 v% @
    18. p0=minmax(pn);t0=minmax(tn);( s8 a. G9 J5 V! l: W6 `8 n

    19. 4 r9 Z7 Y9 z0 Z! t4 P\" p
    20. %BP网络训练$ }4 B* c7 u# f4 O8 W\" U
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      \" R- g2 j\" Q) B* n% R8 j
    22. net.trainParam.show=1000;
      * o) s, r* j  q8 \
    23. net.trainParam.Lr=0.05;
      & L8 {0 f/ K' y# w) i3 f; _# S5 m
    24. net.trainParam.epochs=50000;
      7 D! t, x7 ]8 x
    25. net.trainParam.goal=0.65*10^(-5);/ v! a( I0 C) N: ^
    26. net=train(net,pn,tn);
      5 x* m: p- i! v1 B5 U
    27. # O8 y8 T( E2 v+ x
    28. %利用原数据对BP网络仿真
      - ~- R! s* ^* T# n: B
    29. an=sim(net,pn);0 \* \! [( z  d0 T3 k
    30. a=mapminmax('reverse',an,ps2);
      ' e2 q) T3 y: I8 Q- A' `

    31. ! s( G/ A/ q# G; B2 f* M) V$ }
    32. %仿真结果与原数据对比测试
      3 j  @# U% v) i3 {! j. S
    33. x=1990:2009;
      5 I' P$ }: e2 p. ?
    34. newk=a(1,:);
      ) P1 }) o6 E  C1 V
    35. newh=a(2,:);
      & Z* k5 s\" V\" C: w; k$ a
    36. figure(2);; v3 Z* r% q! ~+ R9 _- }+ G  s7 {
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
        c\" u% h1 n* n0 ^
    38. legend('网络输出客运量','实际客运量');
      0 P1 K  t: Z& Y$ |
    39. xlabel('年份');ylabel('货运量、万人');7 j2 t' L7 R+ N+ Y
    40. title('运用工具箱客运量学习和测试对比图');& `2 a# L0 p8 l8 M* u! T. o! |; B+ T
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');8 W7 f1 h1 O7 K6 N
    42. legend('网络输出货运量','实际货运量');
      & D' R6 Q2 J$ T' n8 `4 v9 B* m# S
    43. xlabel('年份');ylabel('货运量、万吨');
      8 n3 f* t' A1 K8 D
    44. title('运用工具箱货运量学习和测试对比图');
      8 H6 N' q4 r- M4 q1 p
    45. ! ]  `- r& a/ a* c+ }- M6 i: G1 k
    46. %新数据仿真
      % f& ^& L4 I7 Q/ @! L
    47. pnew=[73.39,75.55- G$ Q0 o+ S$ q' T/ c) t
    48.      3.9635,4.09756 l5 b$ I0 K4 E0 Q
    49.      0.9880,1.0268];
      2 g& @; b& a4 M* k9 b, i$ C$ Y/ ^
    50. pnewn=mapminmax('apply',pnew,ps1);
      7 i+ F# O2 P: f% i2 h2 o
    51. anewn=sim(net,pnewn);
      2 O$ E+ D: U3 X, x
    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
    " q" e& A, p& U7 X+ q9 Z; q7 J忽略我上面那个,改动的地方在18,21,25行……求批
    $ Z" [  X; v7 N$ A
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      2 o; \. t: B' E/ p% N  q
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); ) C& `7 U3 e/ x  q. v& O
    3. net.trainParam.show=1000;5 j  T; ^% T0 e0 D  w3 A- t1 n' e& g4 F
    4. net.trainParam.Lr=0.05;
      2 f6 x- e! k$ e1 t: k2 a
    5. net.trainParam.epochs=2000;+ t  H3 X; V/ ^. {
    6. net.trainParam.goal=0.65*10^(-4);' f' w/ p/ W. @) Y1 a3 O6 b
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,+ x3 k/ _7 ]( U
    一、改成单隐含层的,6个节点
    / F/ L! v4 H5 e* a- _7 w二、训练函数改成梯度下降BP算法 traingd5 y, a) d& u0 J3 U4 d' \
    三、迭代次数改成2000
    % d6 ?' I( ]/ t) R# i5 [# m+ C上面的参数是自己试的,我也不知道为什么。. }, v* N9 T4 I% g: T/ }
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    6 }- D' B0 F3 _' d' A关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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 21:59 , Processed in 0.517295 second(s), 103 queries .

    回顶部