QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4957|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!: U- l. `) l, u& f9 g; W6 F

    5 s# E. A5 F2 f( k9 O  U%原始数据输入# e% r8 `1 D9 ~* c& X5 Q3 \
    clc
    9 f8 e6 l9 l/ T' _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- ^/ n, f3 `; p: B
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ) E# q, C$ H7 r/ M: }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,...
    ; m0 U! M# K5 ]7 c    2.5,2.6,2.7,2.85,2.95,3.10];/ E' \% u/ x3 }) Y
    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,...) z4 }1 K! j9 p( {0 D" W1 P' ^3 T
        0.56,0.59,0.59,0.67,0.69,0.79];
    . g$ K. @8 ?2 r2 rglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...) H; I8 t1 L: P% x  Y& d
        22598,25107,33442,36836,40548,42927,43462];7 v# q4 C6 g! E: O* C) O
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,.../ N8 h$ P" a: Y* u" U% t7 H
        13320,16762,18673,20724,20803,21804];$ Y! d: p% j! w( o
    p=[sqrs;sqjdcs;sqglmj];8 |  x# h% X. c6 V$ R& V( x9 {
    t=[glkyl;glhyl];
    * h, y+ v% P4 w2 G9 g
    8 U7 q' y# {& i0 J( P%数据归一化6 a9 W1 Q* `; e7 X  @7 a7 Y
    [pn,ps1]=mapminmax(p);6 E( J& U9 V/ d! w+ U
    [tn,ps2]=mapminmax(t);1 R' w2 M- r9 ]% z" x& `5 {
    dx=[-1,1;-1,1;-1,1];
    4 A% I* q. @/ r  l% o8 S+ a  M5 t+ |# a) X7 P9 R
    %BP网络训练/ W0 l3 j6 n/ G4 G5 r* S9 V; p! \
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');9 i5 F7 l4 P% ~. \5 M
    net.trainParam.show=1000;' T' Z1 {" s1 B( y% U
    net.trainParam.Lr=0.05;
    9 k& Z7 @* d0 P9 j, L9 Tnet.trainParam.epochs=50000;1 l% _* K1 o) w1 A4 `6 k
    net.trainParam.goal=0.65*10^(-3);
    3 ^. S" |$ `; A& h3 ~# enet=train(net,pn,tn);
    " U  R; r+ L9 j
    : x8 Q  I. V0 ~1 G9 S) `4 J3 A# S& X0 z%利用原数据对BP网络仿真
    ( q5 w  d2 g( c+ {( `an=sim(net,pn);
    , Z3 Z% Y$ n/ l8 }) n! m6 e$ Va=mapminmax('reverse',an,ps2);- J0 F* \; B2 [0 ?  v
    . Q6 y% N. }6 c4 \: B' X( P
    %仿真结果与原数据对比测试
    ( l; f+ x' ]! j+ d$ {$ X( O2 Qx=1990:2009;
    $ I( ~/ L( ^/ I* tnewk=a(1,:);
    & O0 Y! O3 D( S: ^5 ~newh=a(2,:);
    : i. Q, j- Y* J; S6 U5 ufigure(2);* F4 a# c8 t$ b9 _2 }4 {, k
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    . B2 z' E9 m# A5 ~legend('网络输出客运量','实际客运量');! V& |' r1 q9 I) ^( D
    xlabel('年份');ylabel('货运量、万人');
    0 o6 C0 N% H# Xtitle('运用工具箱客运量学习和测试对比图');/ ~0 C1 y6 |. s3 n4 `9 H
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');8 U0 x1 r7 w  b: [( e+ p
    legend('网络输出货运量','实际货运量');
    " ~8 v! ?7 `- K! P2 ^xlabel('年份');ylabel('货运量、万吨');# q5 h  u+ D' q* I& C' |
    title('运用工具箱货运量学习和测试对比图');
    ' z' {* }0 `' I- i! L) `
    . F3 k9 u8 i1 K4 t1 w8 [" m%新数据仿真3 _+ w8 p3 C! R$ X' j3 `
    pnew=[73.39,75.55
    * ~) B) _' ~) C2 L6 L  ]* T    3.9635,4.0975
    2 H4 Z  j" n* h" q    0.9880,1.0268];
    ' ~1 x& Q. G" V% hpnewn=mapminmax('apply',pnew,ps1);
    6 _) M- ^' Z6 G- M0 }2 u) D! fanewn=sim(net,pnewn);  Y3 w: H9 I# p- M( N  F
    anew=mapminmax('reverse',anewn,ps2)5 ^5 P  U- H5 S# [/ t3 R7 G

    + B! b7 l; }  n+ f2 \/ a+ k! U

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

    `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
    6 y- ]+ B/ c$ z% j/ C$ g: ?1 ^- Z看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    % J2 N2 E. x  [- |- M- v/ _1 B
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:# `2 p* @$ k# t! `; f
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    : K/ n/ [- q! x" v6 o我修改为:$ s/ S2 m) Q6 P$ O9 Q2 Y; l% |
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    6 w3 H6 z0 U! q然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:* r+ T$ L3 }* x. s3 F2 h( y
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);: L9 V* b. M* s" Z2 t& r
    a=postmnmx(an,mint,maxt);4 Q1 o3 X7 B  r. Y& y8 C. S2 P
    pnewn=tramnmx(pnew,minp,maxp);
    : c3 S2 y3 r! W# x% \anew=postmnmx(anewn,mint,maxt)% d" r& d* ?: j( l6 B' i
    我修改为:4 z0 o( b- k0 E( g! [- S) \
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);+ x! y# {$ O2 P6 Q6 ?
    a=mapminmax('reverse',an,ps2);
    * B7 {/ z! j9 G9 \" Q9 |pnewn=mapminmax('apply',pnew,ps1);& p4 f( Z$ |4 t. b
    anew=mapminmax('reverse',anewn,ps2)
    + {! |; K6 `8 H2 u+ p2 K( m
    ; H1 c7 B5 I- N0 L: ~- n0 k原程序为:" Y! b# y. V9 C: J5 H: U2 p
    %原始数据输入
    1 f+ J6 j9 e* F% Z7 P) o- uclc  c! A2 e2 Q% s  U  Q) w0 h' n+ _
    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,...
    + ?4 {: M: y  r. j# u    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ! o( P6 v+ M, Hsqjdcs=[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,...
    0 R8 q% Q) N# Q- \    2.5,2.6,2.7,2.85,2.95,3.10];( ~5 p3 z5 C0 n5 g- ~8 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,...
    6 C) ^9 f0 @; m$ u, c    0.56,0.59,0.59,0.67,0.69,0.79];
    , J3 r( D) @- p2 }glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...+ m( s  N9 d5 n$ c$ ]  p
        22598,25107,33442,36836,40548,42927,43462];' M9 c; q6 D4 X/ S: c
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...  s1 K  E# j. L6 [( c
        13320,16762,18673,20724,20803,21804];
    , t# S( i8 F0 C4 bp=[sqrs;sqjdcs;sqglmj];
    + d$ f/ s# C* X% P7 _& j# |$ Yt=[glkyl;glhyl];% G; W  g( f% Q- o

    5 g. y  ?4 E. U6 f8 h%数据归一化
    $ v+ E. M# g* O4 N4 Q6 a  b2 `[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    : s  H! M4 W8 m: i: B, Q$ Pdx=[-1,1;-1,1;-1,1];
      O# _- Z4 p$ |; {  ?  g2 }

    1 \' e: _, u8 N1 X% u6 R# T. r%BP网络训练
    * ^4 F' Q% c: n8 K# {" ?# C  w7 Q: ynet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');0 F" p7 `6 T9 [  l% J
    net.trainParam.show=1000;2 r7 o$ a# U- g0 J
    net.trainParam.Lr=0.05;
    1 m  F2 k5 {" h# Gnet.trainParam.epochs=50000;( p) E3 N0 K3 b) i( T& f7 I2 w
    net.trainParam.goal=0.65*10^(-3);
    : j6 d2 x7 ?! x' d6 Q/ X' znet=train(net,pn,tn);
    5 @% ]- u9 F4 ]* o; E8 r! a6 d% N  G$ c; i% [" s
    %利用原数据对BP网络仿真/ b7 r7 n. m1 [: n( h" p
    an=sim(net,pn);
    * y, J$ `6 d/ n, V& I  a8 n0 Wa=postmnmx(an,mint,maxt);
    : L# X& S, K& |6 U* `
    - d0 T& B- E% B1 F' T! j  S# A- h%仿真结果与原数据对比测试
    $ p* h/ K4 M$ K# V' Px=1990:2009;
    + H% h$ N3 n" K9 W! Znewk=a(1,;$ c9 D7 u2 Q. W7 u
    newh=a(2,;
    / x  f5 C* b- b$ \6 i3 Kfigure(2);
    : b. Y$ ]) @! O) ]9 csubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');4 ?- v( P3 ?$ D* t5 N
    legend('网络输出客运量','实际客运量');
    7 W3 g0 H3 T' M$ G. K1 J# txlabel('年份');ylabel('货运量、万人');: c; N$ W" n: s" L. [% v: v* `+ s. J
    title('运用工具箱客运量学习和测试对比图');  D8 p: a9 B: |+ K& M
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ; R6 s# B/ |. e, t; T9 E1 C, [legend('网络输出货运量','实际货运量');
    1 B7 A  P5 L/ p; H( Q; Xxlabel('年份');ylabel('货运量、万吨');1 d2 M5 h, t9 m7 i" J4 {! w
    title('运用工具箱货运量学习和测试对比图');
    ; G7 q, I" x! p, ^  J( q2 C+ n) o
    / w$ \3 H7 y/ E%新数据仿真
    ' n' s& n$ |6 J  z0 [pnew=[73.39,75.55
    $ L5 q, J0 i- Y# v) T+ O0 f  V    3.9635,4.09754 X6 _1 g- \3 p- R% ?2 z
        0.9880,1.0268];$ U6 h2 @+ x5 F# H! Z. ?/ D
    pnewn=tramnmx(pnew,minp,maxp);8 q9 Q! u5 ^) E8 i% o5 ?( U
    anewn=sim(net,pnewn);7 q4 J0 f# ]$ \! C8 U
    anew=postmnmx(anewn,mint,maxt)
    " x0 \  e) ?$ @* N+ J6 i% C* L

    6 {3 W6 I  Y" g* n  Z( W1 e修改后程序为:
    & H7 _1 B6 R5 f+ m- @- d" x%原始数据输入6 a8 [& _0 D3 P, ]; T$ `
    clc) Q8 w; B& M; Y$ w( Q0 e: }6 J% }$ y
    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,...& B: ]' y0 J% q7 p( r* p1 y5 V+ @
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    2 g! h; c8 I8 Q4 L$ M& ]4 ysqjdcs=[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,...
    ( f! y! h  ~. H9 w2 d    2.5,2.6,2.7,2.85,2.95,3.10];2 N8 \8 Z: ?! d5 l  |! r
    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,...
    # G* a1 M- b" A7 r8 y    0.56,0.59,0.59,0.67,0.69,0.79];
    ! @2 `- z% k2 }6 f. z2 @glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    ; H  q1 X' d4 i. S; R' H( X    22598,25107,33442,36836,40548,42927,43462];
    # j4 Y4 h7 p. G0 f  h6 eglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    3 B3 s2 O8 K) v+ N! m# n    13320,16762,18673,20724,20803,21804];$ `" N. j% ]* y; j/ ?
    p=[sqrs;sqjdcs;sqglmj];3 M* s, N5 A% C/ t3 g9 ^6 H3 e) q
    t=[glkyl;glhyl];8 h. d0 G- n+ }/ _

    , U: B4 |9 F- @4 Y5 @2 o%数据归一化
    1 T) c& b. G; [* M7 r' [. |[pn,ps1]=mapminmax(p);
    3 s3 v  W1 D8 B7 r7 y% M[tn,ps2]=mapminmax(t);# k8 N& b* Y' C/ G

    ' j) ^$ a. O! T( ~4 y7 w2 v# s- G7 o8 v%BP网络训练  C8 g+ }1 }# l! {
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    + C' k) t& X, L- s. ?0 _: {net.trainParam.show=1000;
    5 d. S9 U$ \' F2 n8 z# G& m( ?net.trainParam.Lr=0.05;
    ! R  k% E( p1 `1 |- u' h3 Mnet.trainParam.epochs=50000;: T+ i  X# ^. p, B& n7 {
    net.trainParam.goal=0.65*10^(-3);0 ?. A% e; ]( y/ {5 k) J( q5 {% F
    net=train(net,pn,tn);# ]$ G3 n* x$ U! \
    ! ~" g8 S7 x7 N# L6 j' z% Z
    %利用原数据对BP网络仿真8 S2 \2 s* v$ t, q8 Z
    an=sim(net,pn);
    / z% \+ r0 W- p2 ^: ?: `4 V( va=mapminmax('reverse',an,ps2);
    $ g' W, g! g, q- n$ I$ C! S
    1 r( z1 O6 W( t! n) [) g2 U%仿真结果与原数据对比测试! `1 o' E2 O) s; p* s$ j. B
    x=1990:2009;
    0 V7 k; ~7 G+ T* h1 dnewk=a(1,;% M) j3 o9 Q( v
    newh=a(2,;
    $ }7 g) ?% S1 nfigure(2);3 q1 ~4 N- q& Z8 ~3 l. h
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    9 c; @1 s  j% o' o" D1 Clegend('网络输出客运量','实际客运量');
    3 x/ v( q: a' cxlabel('年份');ylabel('货运量、万人');5 [  m  Q. V# ^# Q6 v% S& Y( ~
    title('运用工具箱客运量学习和测试对比图');
    & p1 @4 g' A- b' f# d; ]! Psubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    : k8 N/ `+ @0 u6 o! q! ^0 S6 Tlegend('网络输出货运量','实际货运量');0 U, ~- ?! ?: p# o! H5 I" [& S
    xlabel('年份');ylabel('货运量、万吨');
    ! ]2 u# b& q( U* utitle('运用工具箱货运量学习和测试对比图');- ]5 M" R1 z" {1 |
    . |+ t& `1 ~' r; ^% x1 D3 A% l$ n
    %新数据仿真& M+ L, i) `( U
    pnew=[73.39,75.55
    " X! m7 G* l7 @    3.9635,4.0975/ A! X  E0 Y- C5 N: W( V6 E$ x
        0.9880,1.0268];
    8 S, m# O# P, I0 K) ~pnewn=mapminmax('apply',pnew,ps1);
    2 j/ ], {! l  ^& Banewn=sim(net,pnewn);  L) A. z4 E, Q+ A: O; W
    anew=mapminmax('reverse',anewn,ps2)
    ( M* Z0 K6 Y. _+ x3 N( y5 V(修改的地方用颜色标记了)1 [0 N6 C* c0 v
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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. clc3 c- |7 M' O) z1 q6 s
    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,...
      ( h$ ~. _0 C& q: k
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];4 o9 ^9 ^8 C8 r/ o9 K
    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,...' E+ G5 B) V$ l% W9 a7 A; X
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      / M\" d* W$ y, W
    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,.... @0 |0 X. }/ Q) g* e& `
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      7 r: o4 x3 V/ }5 l$ h
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      4 u9 e( c7 ~8 ]! c
    9.      22598,25107,33442,36836,40548,42927,43462];  B* r: u5 E0 ^1 n7 A$ K# O9 w
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      , ]# c9 |$ Z3 s) D% O  J' u* B
    11.      13320,16762,18673,20724,20803,21804];
      ' \- }: ~9 X: g! a% ?) R
    12. p=[sqrs;sqjdcs;sqglmj];
      . k7 O( p- H' H: l
    13. t=[glkyl;glhyl];
      9 t& l, M2 `: z# A% ^
    14. %数据归一化( ?- Y% @) x& b6 Z
    15. [pn,ps1]=mapminmax(p);
      9 h2 ~; Y- D7 P
    16. [tn,ps2]=mapminmax(t);  f( l+ K- s5 f+ [* |
    17. %dx=[-1,1;-1,1;-1,1];
      $ j/ r% ]  s, p. w
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      / y- k( O5 N1 n
    19. 6 x- @  r9 v6 _0 W$ U6 @- e0 s! u
    20. %BP网络训练; o* ]( ^  c\" n5 y! `6 G0 n2 @
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      3 W8 A  y9 Y/ I$ d( t0 ]
    22. net.trainParam.show=1000;
      # w8 I* x- m& E8 C
    23. net.trainParam.Lr=0.05;
      8 k8 [: E$ K) w3 O
    24. net.trainParam.epochs=50000;
      \" g0 l8 E: O, v) Q
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]. S: V5 a+ r7 l! N+ a2 o. y8 m' u
    26. net=train(net,pn,tn);4 n! y4 P: A2 b\" @7 S4 ~
    27. 5 Y  Q4 {1 m* m; h5 ?! g- |+ a- k
    28. %利用原数据对BP网络仿真
      ) E4 M2 d- ?; u% T0 x1 u6 f
    29. an=sim(net,pn);
      , N0 }+ I$ u3 i5 \+ K2 v- n7 q
    30. a=mapminmax('reverse',an,ps2);
      * k3 i1 H- X9 _& t3 z$ f) R' ]' n

    31. 7 }2 B; s* L; G2 l! m' C/ a  ?
    32. %仿真结果与原数据对比测试
      - J* q# |5 n- j& F3 n- b5 n5 U
    33. x=1990:2009;& s0 z/ Y1 ~% f4 x6 E% b2 c5 o! a
    34. newk=a(1,:);. K: ^6 c  M! x4 c; M- W# {) C
    35. newh=a(2,:);0 E6 L% S8 ~/ y$ e/ Z  R2 }
    36. figure(2);
      $ S$ K* J# \; x& Y\" Y2 m
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');( y1 @: X\" a* C* i
    38. legend('网络输出客运量','实际客运量');
      / N1 n0 K' B% \8 f
    39. xlabel('年份');ylabel('货运量、万人');
      4 `6 ?\" N, B) Q- \7 V& g/ _: i
    40. title('运用工具箱客运量学习和测试对比图');
      # K# W/ L2 A+ N$ {+ J/ [
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      3 K  \8 ]7 {9 T% N2 d5 w7 Q
    42. legend('网络输出货运量','实际货运量');7 t9 E. L  {! H: A
    43. xlabel('年份');ylabel('货运量、万吨');7 K' N- o8 ^8 S( S2 a* o3 G# K
    44. title('运用工具箱货运量学习和测试对比图');
      2 x0 V: I. b; @: F) X

    45. & P1 ^: P- B  a/ I
    46. %新数据仿真+ H$ |5 `1 H) \. U
    47. pnew=[73.39,75.55
      % f5 y6 Y1 G, G/ m7 @\" W  X
    48.      3.9635,4.0975
      9 X: e7 T+ L$ X! o& k
    49.      0.9880,1.0268];
      2 z, [% n5 {. N3 [
    50. pnewn=mapminmax('apply',pnew,ps1);
      $ i+ M+ Z6 J4 D0 n( T
    51. anewn=sim(net,pnewn);* E: F- A  W3 K1 U9 m* o6 _
    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
      - v/ }; D3 M! I1 h# U! c# m- 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,...
      1 q9 m6 }  Z: u. {6 K
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];' x5 u9 v, w9 e- q* ], L' u
    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, B% c$ a, B* [+ [
    5.     2.5,2.6,2.7,2.85,2.95,3.10];4 Y; p$ J. U& p2 t. i
    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,...* p+ T0 ~- D( s) r\" n
    7.     0.56,0.59,0.59,0.67,0.69,0.79];! A! A& g4 j3 r
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...$ b3 z% r+ @2 Y- @% j
    9.      22598,25107,33442,36836,40548,42927,43462];
      & p& ~\" o: L; G- a
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      / D, |2 A( t: t9 r- t( H
    11.      13320,16762,18673,20724,20803,21804];0 C8 b0 X. \! F7 Z: Y5 R& A! A
    12. p=[sqrs;sqjdcs;sqglmj];- a9 G8 j/ M* C) N
    13. t=[glkyl;glhyl];
      : o\" I1 s+ P' _' q
    14. %数据归一化, \6 P7 O/ y3 V2 u
    15. [pn,ps1]=mapminmax(p);
      , X/ u! V! r) f6 d% K; Q
    16. [tn,ps2]=mapminmax(t);
      7 {- G' o3 D0 k  z/ L% ?+ p$ |
    17. %dx=[-1,1;-1,1;-1,1];5 ]1 h0 `: l3 y/ n3 g  `; B4 f, Q4 p
    18. p0=minmax(pn);t0=minmax(tn);
      ( M8 y& s3 j/ O# ?; e
    19. 3 S+ y! _7 Y! n1 {\" e6 D
    20. %BP网络训练5 Z7 M  H) }% z, [$ c% a
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      + l$ g6 r* \# L% [9 D: G7 C& Q/ r
    22. net.trainParam.show=1000;
      . \8 d, G/ z$ O* @2 h. F/ P, P/ C
    23. net.trainParam.Lr=0.05;
      9 ^9 D# l4 X! h  K/ z6 Q
    24. net.trainParam.epochs=50000;\" ?7 Q# i# `, X+ o$ W) B
    25. net.trainParam.goal=0.65*10^(-5);
      / Y7 A+ K  I+ o, Y, J\" `8 w
    26. net=train(net,pn,tn);: ?7 R  w& N( u) x) A
    27. - a/ T% B7 F( s- ?2 X! J
    28. %利用原数据对BP网络仿真
      7 g& t& R% Z, I; I1 ]& _3 ]
    29. an=sim(net,pn);
      ! q8 c( x+ s\" x3 m1 o
    30. a=mapminmax('reverse',an,ps2);
      ; g5 C5 j, G8 U% K( D0 b6 I0 z
    31. ! V8 x- u$ w( {. v\" B+ W
    32. %仿真结果与原数据对比测试
      . ~0 v/ N6 t9 j
    33. x=1990:2009;
      ; N2 f: u2 v+ u
    34. newk=a(1,:);
      2 t, E4 T3 [* F
    35. newh=a(2,:);
      7 @# [- O8 [  ?) w
    36. figure(2);
      9 d$ O/ g5 ?$ _! a1 p. E
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');# o  W2 X, J5 S9 y7 [
    38. legend('网络输出客运量','实际客运量');8 I+ B6 ~( g; V\" ~8 h- N, h+ A3 d
    39. xlabel('年份');ylabel('货运量、万人');5 L) A1 s* z# J- e0 f- ~8 ^( ~; a
    40. title('运用工具箱客运量学习和测试对比图');$ F9 y$ Y- z0 l& i/ b$ o8 n
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');; y( ]' c# o2 c# V1 C2 [1 n* T
    42. legend('网络输出货运量','实际货运量');8 ]* `6 g5 Y. T1 m/ o; q2 m( ~
    43. xlabel('年份');ylabel('货运量、万吨');
      9 _7 f3 Y6 x/ f# W
    44. title('运用工具箱货运量学习和测试对比图');$ Q+ I- c% K3 H, u* P

    45. * a1 l4 E6 H! D5 Y& G
    46. %新数据仿真
      \" t& ]( C& n# K% D9 P0 f+ K& R
    47. pnew=[73.39,75.55
      / |: j6 x: @. Q+ ^0 m
    48.      3.9635,4.0975
      ; R/ Y& c5 Q7 \2 G
    49.      0.9880,1.0268];
      9 D3 |6 ]8 X' q6 E; ]! c
    50. pnewn=mapminmax('apply',pnew,ps1);
      ' F. P# m0 I1 r5 C* f
    51. anewn=sim(net,pnewn);
      ; a* d6 |$ B) {, g
    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
    5 m' j; G6 @: X+ W9 E忽略我上面那个,改动的地方在18,21,25行……求批

    - z( I# H/ Y/ @3 e& D" J' x确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      ' z4 ?+ [; G7 G8 b6 r/ t- P: {
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); $ ]) M$ v5 ^3 J8 Z
    3. net.trainParam.show=1000;  D$ H3 k& h. P- [( H4 o
    4. net.trainParam.Lr=0.05;
      ; s( @  d- `( I7 ?\" R
    5. net.trainParam.epochs=2000;
      6 i! u6 w; w' l0 @: s- J& H
    6. net.trainParam.goal=0.65*10^(-4);1 N% A* |0 m) j+ h
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,6 I/ m. I6 m- ?6 S7 F# f" J* f0 O
    一、改成单隐含层的,6个节点* o0 D3 a) y* U6 \1 n# f0 G" r
    二、训练函数改成梯度下降BP算法 traingd
    - }" j0 c! n4 P: |. w1 R" I三、迭代次数改成2000
    ' t: G( b( {6 q' ^# B上面的参数是自己试的,我也不知道为什么。
    ' N4 `: r" K0 t% f" ?6 G由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。% w" i% ^" f* i& z7 G; q: [
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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 16:10 , Processed in 0.887170 second(s), 103 queries .

    回顶部