QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4892|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!+ A; R4 ]  F8 i

    / J  B$ ]. o7 t! _: r%原始数据输入
    ) L* J* H) L  @3 J+ gclc
    , ^$ H; g5 i  R) V0 J  w6 usqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,.../ t+ o3 z) U$ ^$ U/ L: S- E
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    * f4 a5 D" W- y- H! g6 p" Psqjdcs=[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 Z' H3 J, T) z- t: F: I2 ?' @
        2.5,2.6,2.7,2.85,2.95,3.10];
    4 X# }6 G9 |; `! U  X+ ksqglmj=[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 L8 f5 J$ ?$ j) ]+ i    0.56,0.59,0.59,0.67,0.69,0.79];+ U' b- d& A( Q& K' p6 \
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    6 w1 _/ y7 o4 J0 A# |( u' B# U8 s    22598,25107,33442,36836,40548,42927,43462];) d$ L6 u5 t" ?4 t; h/ k$ O
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    9 N# ]+ \2 _4 d4 e6 G/ b- d) B( j    13320,16762,18673,20724,20803,21804];0 }* g4 s! j/ E7 e
    p=[sqrs;sqjdcs;sqglmj];2 |) b$ Q" p& @( K7 |7 i
    t=[glkyl;glhyl];  B: O( z. u; L4 R$ _7 G4 C. d
    # f2 y& W% b) k3 |$ ~3 u9 k
    %数据归一化1 z! K/ Y2 w% l7 k4 y
    [pn,ps1]=mapminmax(p);
    & W, z$ ]0 I1 o9 q[tn,ps2]=mapminmax(t);' g4 h2 d9 p1 L' |/ U! v# c8 L& j% v
    dx=[-1,1;-1,1;-1,1];
    4 w* m9 F- g/ M$ H! O) ]# I0 q% y" T# |$ O5 a! S( J( w( u
    %BP网络训练
    $ _# }- ]) g7 u+ X5 [" A, _- hnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ; Y" |& {$ v1 N  m% W% ynet.trainParam.show=1000;
    * ^6 u, z! o: }5 u( Vnet.trainParam.Lr=0.05;) I- W0 B! H9 N
    net.trainParam.epochs=50000;
    0 z+ F- i) Y6 u& d; cnet.trainParam.goal=0.65*10^(-3);
    ! O, G/ e: B, Rnet=train(net,pn,tn);
    2 _: ?9 |, q. r2 n3 |! h
    8 I. r. Z- P7 T8 |%利用原数据对BP网络仿真
    . [5 C; H6 I* V/ h( J* g* i: `: Ean=sim(net,pn);
    5 ]2 J8 ^6 @8 n  Q1 sa=mapminmax('reverse',an,ps2);
    : X% a3 d/ z% P# l3 W9 C) o5 i9 ^3 v8 t1 e: ]: U: m
    %仿真结果与原数据对比测试0 a# Z& X( u) U4 m- y$ o* Q7 }
    x=1990:2009;5 x% h7 M/ h: s4 g/ ^' y) q9 ^% V$ g
    newk=a(1,:);
    % `: \- Z/ l- m5 a9 Knewh=a(2,:);
    " X: o% s: W8 Lfigure(2);. W' D+ I" g1 ~1 E
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    $ p" a( _7 U6 N! B! }4 m6 Zlegend('网络输出客运量','实际客运量');  Y* Y" ]( K# j! S; F" E1 L
    xlabel('年份');ylabel('货运量、万人');
      I$ J8 Z/ o9 N6 e- ptitle('运用工具箱客运量学习和测试对比图');( X, e/ b, k& \0 \5 b) Q
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    " T& c% D3 O6 @, t" Y) y. ^1 flegend('网络输出货运量','实际货运量');
    + e2 |7 l  \6 c$ o9 dxlabel('年份');ylabel('货运量、万吨');
    , y1 r% C7 {% h. j. D* f7 Otitle('运用工具箱货运量学习和测试对比图');0 C5 t2 U8 H8 r6 L4 X

    : D' }; H5 C8 _%新数据仿真0 ?# s  \' u/ _: Z- ^. n8 m9 n, }3 g
    pnew=[73.39,75.55
      X$ Z0 L. \5 G. \, [9 M3 u9 D    3.9635,4.0975
    0 p' g0 y1 X8 ?5 ~1 F    0.9880,1.0268];
    4 B) `: r( m) a; B7 mpnewn=mapminmax('apply',pnew,ps1);
    ; h* T- {8 K5 y. @anewn=sim(net,pnewn);# M6 e8 q# O. ]8 H, p
    anew=mapminmax('reverse',anewn,ps2)4 V; n9 x2 i7 {% X$ V8 p8 e5 k
    / a" y# t6 d1 m: I

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

    `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 N9 N, a0 I! S
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    ' B/ f# Z+ h, a, x
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    / Y3 i2 K: r3 J3 P5 O7 o1 |! W1 p0 onet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');$ j  r/ s1 i! {# h
    我修改为:
    ; _& W0 v& {. c6 V1 T, F1 [. e: M1 xnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    2 V. L  W/ ^' R' V/ X1 \) Q# s然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    9 @: j3 n7 E9 C7 q2 n/ O3 x[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    - t7 d$ X* \) E  ]% h5 ^* [; L8 _# @a=postmnmx(an,mint,maxt);! m1 S+ d3 A; R# k
    pnewn=tramnmx(pnew,minp,maxp);
    7 O& k( @5 J0 D( Danew=postmnmx(anewn,mint,maxt)/ t! e7 C2 ]  }2 @- Z6 e1 x
    我修改为:' ~/ [2 Z" {6 K6 _! U
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);7 ^4 Q3 U9 f, l9 h, a$ g
    a=mapminmax('reverse',an,ps2);
      ~9 h# e. x' r% Z1 H& n7 n2 Npnewn=mapminmax('apply',pnew,ps1);
    ' Q3 U1 Y/ q9 u6 Banew=mapminmax('reverse',anewn,ps2)+ d7 r# f  G: Q. Z8 ]  j
    # O8 W4 Z4 u5 W8 r5 r
    原程序为:
    ' G* W3 o$ V- p$ L%原始数据输入
    : W6 z6 G6 @' Q$ s/ b8 E; Z; Tclc% j( F4 o" M2 a. x1 k! W
    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,...' d+ k) J" G- Q& B
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];  q  L3 ?8 o7 J. W
    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,.../ \+ L7 P: d! C1 ]
        2.5,2.6,2.7,2.85,2.95,3.10];/ S7 Y8 |9 h; w
    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: J- `, d+ }% X# q8 \; C! U    0.56,0.59,0.59,0.67,0.69,0.79];& Y8 ]; a: R$ _& e6 H& i9 C
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...- e3 }7 X; f* X  E& |- W
        22598,25107,33442,36836,40548,42927,43462];
    " ^6 x0 H6 Y9 g: B/ rglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    9 L. j0 E5 c: G( {& D4 r0 U% F, @    13320,16762,18673,20724,20803,21804];
    ) b% r& d$ K$ L' R# L; Sp=[sqrs;sqjdcs;sqglmj];
    ) A  e- r. U# I5 i3 et=[glkyl;glhyl];$ w3 c) ]3 i* ^# Y. W6 z3 e& S
    + T- t- w$ }+ @! C" W
    %数据归一化& Q; o/ E3 _9 V6 y8 J0 _+ n: O+ F
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);. X* M, |0 L2 a4 J
    dx=[-1,1;-1,1;-1,1];/ k4 f+ C! ^. |3 Q' N
    6 T5 n0 q# Z) P3 f
    %BP网络训练
    + W3 f* \7 {. xnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ( P8 c6 v5 u. U+ inet.trainParam.show=1000;5 z' x# V( a- b) r9 j5 y& W8 N
    net.trainParam.Lr=0.05;( S: n) _7 v( E9 C
    net.trainParam.epochs=50000;
    ' ]+ j8 e8 n, ^4 t3 inet.trainParam.goal=0.65*10^(-3);" C4 t, u! T% W" i! F8 v
    net=train(net,pn,tn);" Q) W/ i6 @' C/ {8 p7 h3 W" X6 B
    # z  ?" S. |3 D3 f; v
    %利用原数据对BP网络仿真
    * l. Z1 A0 y! O4 F, {* c; dan=sim(net,pn);
    - P/ L$ U$ L4 @5 C1 t' j" \1 b/ a; ?5 Ia=postmnmx(an,mint,maxt);/ w- ]  B5 d) c8 @; F6 O
    % K  {, g- K0 H
    %仿真结果与原数据对比测试# N$ |7 `8 p# K7 a- `
    x=1990:2009;+ o% \' t) q& n! ~- c
    newk=a(1,;( S; v( b- Q$ F9 A( Q5 d& K
    newh=a(2,;
    0 q. V: f1 B2 ]+ Wfigure(2);
    5 [9 _5 r# H" [+ A7 q; c% F' dsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');4 L! Z* H4 k( H# t, k$ I
    legend('网络输出客运量','实际客运量');* x) a4 H+ P' h* t
    xlabel('年份');ylabel('货运量、万人');. y7 b, K3 e: Z
    title('运用工具箱客运量学习和测试对比图');# x( U  [5 P8 `; |. w
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');6 k: A; Y+ S8 n: D/ b. L
    legend('网络输出货运量','实际货运量');
    . A: L8 Y% V0 T2 qxlabel('年份');ylabel('货运量、万吨');* s- t5 O# u' t/ K7 V
    title('运用工具箱货运量学习和测试对比图');
    , J  V- ^( J' m8 P8 w$ T* a  f0 R8 N/ o# u" e
    %新数据仿真
    & K( m+ ], Y' N9 ?) i9 Qpnew=[73.39,75.557 t2 t' Q5 l, c7 e  {7 n
        3.9635,4.09757 L0 H9 S0 C# q8 |- {" Z8 I+ t
        0.9880,1.0268];7 j6 V& u' d4 q' N, U$ L1 s
    pnewn=tramnmx(pnew,minp,maxp);8 m9 f. J. r# H" f
    anewn=sim(net,pnewn);
      w: _' c: I1 a, [, \% u' hanew=postmnmx(anewn,mint,maxt)
    % s- m( \# T: W# o9 R1 ?6 p) ]

    * h9 K; O- m1 l修改后程序为:$ h) F) w8 D/ A- j
    %原始数据输入
    3 W. }9 {( Q" h1 ~1 d. s# k& }2 Pclc
    + k4 G) e1 H9 u; S% t) d; B3 Rsqrs=[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 r8 Q; j" {' p! i& Q
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    1 {0 k, q8 e4 W7 O# t1 k- ksqjdcs=[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+ F5 Y8 \# J1 ~    2.5,2.6,2.7,2.85,2.95,3.10];5 G" h' T# ^; S- P9 N
    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,...  ?7 s( o" z9 A8 c0 l( f
        0.56,0.59,0.59,0.67,0.69,0.79];
    7 V- S$ w1 U8 S. J8 oglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...( L, H  C  F* g: d; o
        22598,25107,33442,36836,40548,42927,43462];
    3 ~$ J% K0 N/ [! a5 Y4 U. u/ ]glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...# \  a" a5 U( X# q  C1 |3 W+ ?' S
        13320,16762,18673,20724,20803,21804];
    7 D" V, V7 j1 I8 y5 K; f( T# a) x: fp=[sqrs;sqjdcs;sqglmj];) o: l& V: F5 H$ x+ ]& z5 X
    t=[glkyl;glhyl];- k2 a* L5 V% b/ \* r
    8 w' W$ U* m7 ~
    %数据归一化) f& g* S# \: N  E6 B4 P
    [pn,ps1]=mapminmax(p);
    3 C  I: Y, {4 A1 l! s[tn,ps2]=mapminmax(t);
    & I+ l" H/ i) P
    6 a. h$ e, ^+ `) z%BP网络训练
    , U2 p# B0 F) x4 ynet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    7 U+ v- ^. u/ U4 @net.trainParam.show=1000;+ t+ W! I4 N: i% J; w8 `: l
    net.trainParam.Lr=0.05;5 t  U. }- P! V& `$ [. ?# r
    net.trainParam.epochs=50000;
    * L3 m: T7 k1 {% ~8 j* G! Onet.trainParam.goal=0.65*10^(-3);
    ( d% C/ l0 o" u$ ?# e" B5 Anet=train(net,pn,tn);0 g5 N4 P% s/ c4 k1 `/ x0 {+ m$ E

      Z5 s. [6 O3 h%利用原数据对BP网络仿真
      I6 A' _; n7 `/ O) ~+ p0 f1 Xan=sim(net,pn);
    % B+ u1 k" l8 B% B- R# p4 D3 d0 Ka=mapminmax('reverse',an,ps2);* g4 {5 |" s  n. h
    ) A0 \3 }0 L- y! X- ]
    %仿真结果与原数据对比测试
    ! {; {: M, f: h: u8 ex=1990:2009;
    & W0 ^: @9 l  E5 X, Jnewk=a(1,;
    % l& _9 @& |8 p6 c, G$ Ynewh=a(2,;
    2 z3 W8 M% b# t, z) N) qfigure(2);
    + [4 g* L: `' l* S) csubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    4 u* ~: D9 C8 |+ ^& r7 qlegend('网络输出客运量','实际客运量');" q4 E  A- {* B9 u. w: z
    xlabel('年份');ylabel('货运量、万人');
    7 |! S  C) u. R$ g0 ktitle('运用工具箱客运量学习和测试对比图');
    / J$ N5 D$ [: u, B3 fsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');% b0 ~! W1 t/ K+ r/ |
    legend('网络输出货运量','实际货运量');
    ! Z1 i2 j! G. a! b$ _xlabel('年份');ylabel('货运量、万吨');( h) g$ M) A8 N+ r
    title('运用工具箱货运量学习和测试对比图');
    9 z( K/ j  x4 f' ~; h6 O) z0 A% e, e6 M1 z3 `6 Q
    %新数据仿真) ?" k: G& A" f; o7 n
    pnew=[73.39,75.55
    ( A+ s" k7 X, \$ R9 G' x  h" o    3.9635,4.0975
    : M$ y4 X1 t+ A& |1 O' j1 H    0.9880,1.0268];' K, c; i  V% w" o, P8 L
    pnewn=mapminmax('apply',pnew,ps1);
    * X8 t0 `5 O* P* k6 ^% {anewn=sim(net,pnewn);# B5 f+ s$ ^: s3 g" U( E+ x
    anew=mapminmax('reverse',anewn,ps2)
    " a! ]/ B* ]( |  \! d/ Z(修改的地方用颜色标记了)5 t' `, g* n" m% N
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      5 @8 h' M, N$ T: l9 s9 u
    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,...& J& r; P7 @2 t- O7 s; A9 c! l: q- e
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];3 o; |5 r9 D! f: b6 O& 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,...- d9 k6 ?3 x: o1 s\" Q4 _- f8 g+ x
    5.     2.5,2.6,2.7,2.85,2.95,3.10];7 C. A$ I6 w9 T3 X% 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,...
      ( C. c3 Y& ?) q. l7 ^' ?
    7.     0.56,0.59,0.59,0.67,0.69,0.79];$ Y. B0 W6 E: _$ n
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...7 s( C  I* E' w/ A- _
    9.      22598,25107,33442,36836,40548,42927,43462];( H: C# q( G1 q4 {, K+ [, v& s
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      2 G9 e# i/ w% T  y
    11.      13320,16762,18673,20724,20803,21804];
      - f, v$ {' m/ |4 T4 w, R
    12. p=[sqrs;sqjdcs;sqglmj];
      1 S+ J3 v+ M4 I( T
    13. t=[glkyl;glhyl];7 ~! j8 [! W2 z/ c0 J
    14. %数据归一化
      # T) ?2 ]6 s! L3 w; l. L3 H
    15. [pn,ps1]=mapminmax(p);
      * V5 Q8 i# a8 y  y' \4 w+ K
    16. [tn,ps2]=mapminmax(t);2 t2 w; D2 ^  e
    17. %dx=[-1,1;-1,1;-1,1];
      # Z7 J. u# |; n4 }' i
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]( l8 r' L' \- G

    19. / g( S; S0 M1 I5 O9 x# j\" s, Z
    20. %BP网络训练4 r) w/ E6 ^9 R  H& Z8 k  v
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      3 C* n  `# c& _) D% A- ?, C- b, x
    22. net.trainParam.show=1000;
      7 L& v+ V- t2 y6 P9 e* {
    23. net.trainParam.Lr=0.05;% ]; Z# p- g* O) {; k
    24. net.trainParam.epochs=50000;
      , h; Z5 Q' v4 u# E+ a/ d
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      $ J2 \! a' n4 a: |, c3 k; O5 x\" G' M, Z: R
    26. net=train(net,pn,tn);; a3 ?  B; ?% y4 g7 t
    27. ; @# e% f5 O! @- l1 l) N+ Z9 h  h
    28. %利用原数据对BP网络仿真: a) q0 ]* b) S
    29. an=sim(net,pn);
      $ s, o, o, v, d* j
    30. a=mapminmax('reverse',an,ps2);
      - Z' z, ~& y8 f9 V3 _; ^2 F
    31. 8 g1 R\" D* ?) q* _% T$ u
    32. %仿真结果与原数据对比测试 5 m9 h: @! f/ T8 h
    33. x=1990:2009;
      1 }# V, R! |& l+ J
    34. newk=a(1,:);\" j  x' u- l& [0 e' E
    35. newh=a(2,:);4 G$ v# f5 F* ]+ }# C6 z8 e2 b
    36. figure(2);
      9 y5 e, w: C5 Z8 i
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      + {. R- o0 B\" r$ F
    38. legend('网络输出客运量','实际客运量');2 B\" ^: P% k) s% a5 w/ {1 M
    39. xlabel('年份');ylabel('货运量、万人');
      3 K- Q4 [0 w/ f+ Z  g, F
    40. title('运用工具箱客运量学习和测试对比图');
      7 l& y! A  v1 i; L\" q1 v9 z' \
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      5 r5 Y  Y2 c0 w( u7 U# k$ n- \; n8 \
    42. legend('网络输出货运量','实际货运量');
      & P7 t4 w) |\" h# \( I\" ^0 S
    43. xlabel('年份');ylabel('货运量、万吨');
      : z% Q( A. X- N/ I5 m
    44. title('运用工具箱货运量学习和测试对比图');0 r1 U2 t8 z  B0 l3 x3 W' L$ k

    45. - `3 P4 w\" r) A2 `
    46. %新数据仿真) [, x. |' b# F+ ?- b8 z
    47. pnew=[73.39,75.55+ }* _; ^( B0 y- _$ x6 p
    48.      3.9635,4.0975
      3 x; Z\" g% Z5 O6 M
    49.      0.9880,1.0268];
      * y! ^5 l% ~# k, T) Y- @% x
    50. pnewn=mapminmax('apply',pnew,ps1);
      3 p* }3 _6 J, d) Y
    51. anewn=sim(net,pnewn);
      - X9 a( h) E3 F! C2 v! z
    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' e7 d2 @$ Z+ h+ `, h; 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,...! _: H4 ]& g! ]; Z
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];% m# O0 g+ }( k7 x) J  p( e
    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,...
      - L1 B! m# n! H- V' _8 `& _; k
    5.     2.5,2.6,2.7,2.85,2.95,3.10];, j' Y+ h; X6 H2 S0 E! M  L0 s\" M! G
    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,...
      7 ^% V1 b/ B! v& \5 r
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      9 ]# H5 S, S6 n8 R
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...; ^- o! Y: J( T0 f. `# }
    9.      22598,25107,33442,36836,40548,42927,43462];
      & i# {! f' ~' v7 i! w( p8 o
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...5 w0 Z1 B9 R5 h  G& K1 u
    11.      13320,16762,18673,20724,20803,21804];
        @1 D1 ]! ^( |: S
    12. p=[sqrs;sqjdcs;sqglmj];8 r: ?- y* x. _/ o3 F4 }6 U
    13. t=[glkyl;glhyl];( J7 r) H; G; Q9 ?4 G
    14. %数据归一化# @! Z8 a- I1 O8 \; ?9 K. s% O
    15. [pn,ps1]=mapminmax(p);
      ! }7 B' Q/ i* g. T: W
    16. [tn,ps2]=mapminmax(t);
      / z) M% `0 @9 Y) H, i; z) a
    17. %dx=[-1,1;-1,1;-1,1];9 P7 Z% W* s' R
    18. p0=minmax(pn);t0=minmax(tn);
        G4 ~9 K$ l9 d* ]1 D% B5 e' B

    19. 0 H0 m. f: E# F* @0 P+ l
    20. %BP网络训练7 E4 |/ b2 S, w1 R. o6 `+ N
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); # M. w: R: B2 U, D8 K) i4 T
    22. net.trainParam.show=1000;
      6 s/ _. Q3 B' B8 c( P0 v
    23. net.trainParam.Lr=0.05;4 L2 {4 y$ h5 I( }9 W7 `
    24. net.trainParam.epochs=50000;: {; `/ h- k4 }: h' b3 J  v  V, r
    25. net.trainParam.goal=0.65*10^(-5);
      2 E9 Z( H2 z) p/ s6 [
    26. net=train(net,pn,tn);
      \" r8 k5 f( @* V8 Z; C) n1 m/ ^) Z- W
    27. 9 V# e; x+ X. _, g+ m6 P
    28. %利用原数据对BP网络仿真& \' S\" V! r1 g! P3 ^# P
    29. an=sim(net,pn);6 h8 ?$ b- p: z
    30. a=mapminmax('reverse',an,ps2);
      8 k( i/ [# L0 n& v& z5 t+ q5 _

    31. % F+ d9 i7 S2 Q- n. {; G
    32. %仿真结果与原数据对比测试
      7 H: X1 }! ]' H* t
    33. x=1990:2009;
      9 k: Z1 m: y' P: ]& F& r
    34. newk=a(1,:);
      : z$ W5 J- {( E+ Q
    35. newh=a(2,:);
      # [: x* k$ n\" L9 t3 Y  c, L5 s$ ?  z
    36. figure(2);7 h1 O+ D( n\" X( ^; @3 @
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      \" B1 j4 S! Z: i% S2 f
    38. legend('网络输出客运量','实际客运量');
      * u5 W' q/ V. b1 ^, [2 {; S
    39. xlabel('年份');ylabel('货运量、万人');: z6 m7 S% g/ d0 ?
    40. title('运用工具箱客运量学习和测试对比图');2 B\" t9 d% D: @9 Z# j! Q: `
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      \" L  n/ u2 [# E8 S, E
    42. legend('网络输出货运量','实际货运量');* d: {& B3 S& y& ]
    43. xlabel('年份');ylabel('货运量、万吨');
      8 P. a7 `( E& g& J
    44. title('运用工具箱货运量学习和测试对比图');
      # q) c3 E# c7 v  Y* x

    45. ' i8 \2 n' e* I\" A% {9 X, ^- Q& s
    46. %新数据仿真7 E  U0 p. @6 o2 @
    47. pnew=[73.39,75.55
      1 C. Y3 A. P5 c% i. p9 C# g& A
    48.      3.9635,4.0975# d, l! m7 F! j: W5 O
    49.      0.9880,1.0268];, u& k! P: W: P
    50. pnewn=mapminmax('apply',pnew,ps1);. B3 m0 G; i\" R
    51. anewn=sim(net,pnewn);+ P1 l# G. c7 _
    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 & Y" o* \& H! U, m6 g
    忽略我上面那个,改动的地方在18,21,25行……求批
      p, a2 S) D& W) A* D
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练  ], }) Q) k, }( d2 ], i
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      # j5 A. }$ R3 M- i' G8 C; m0 g
    3. net.trainParam.show=1000;
      6 z' A8 T9 h' F' C. ]- l0 F
    4. net.trainParam.Lr=0.05;& k$ H' I, b$ `* L9 o; H8 ~
    5. net.trainParam.epochs=2000;; z! O* k8 n' J\" T1 p8 I% \
    6. net.trainParam.goal=0.65*10^(-4);
      $ n) z5 [5 u7 ]7 y( T/ s
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    / t* F( _! h* I, Y* K1 Q6 b一、改成单隐含层的,6个节点
    . ^! W4 Q! ~3 s3 R$ K) _二、训练函数改成梯度下降BP算法 traingd8 c3 _2 B. R; e" M
    三、迭代次数改成2000
    + j% q$ Z+ p0 g% {上面的参数是自己试的,我也不知道为什么。" u1 k2 @7 L. F
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    * @& Y  R, k, `6 S$ V( `关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-23 05:27 , Processed in 0.615238 second(s), 103 queries .

    回顶部