QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4803|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    - [) z4 U# P4 V' h+ c9 i8 B0 h7 j* G' W2 R. Q. F; B$ B5 E" E
    %原始数据输入
    1 w# O- [0 h4 z8 `: _clc4 G6 w/ M& S4 p, H" P8 b, H. z2 d
    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,...
    6 z: e, K  |  L% \8 \+ v* m4 `5 V, V    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];! R* d; g" L9 K3 A$ t
    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,...
    , @6 ]. M2 U: y$ X' D' S  _    2.5,2.6,2.7,2.85,2.95,3.10];7 q! {. w6 e) ^0 u; K9 ~+ ~
    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,...
    5 K- p# L2 l  \: P( K4 V    0.56,0.59,0.59,0.67,0.69,0.79];5 T8 P7 l" t! W; E. s% |
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...2 d( L' o6 N% g7 f# K
        22598,25107,33442,36836,40548,42927,43462];" u& s  x  ]: Z' S3 W( X( H. c# x. Z
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...+ q3 l3 ^4 k5 V1 M3 a1 H  T  V
        13320,16762,18673,20724,20803,21804];
    7 f2 W6 c7 e& r6 |8 L2 Up=[sqrs;sqjdcs;sqglmj];
    + |4 ~: e6 M8 \t=[glkyl;glhyl];* \( C# B4 _8 e5 [
    1 h3 d& ]: f; t2 B1 o4 f) [3 i2 f
    %数据归一化
      n5 c" S0 W% Y4 v8 x; Q8 }# w3 H[pn,ps1]=mapminmax(p);
    2 H7 O* E2 B4 q- a[tn,ps2]=mapminmax(t);( B# ~+ {" K- S+ X& r7 G
    dx=[-1,1;-1,1;-1,1];" m6 I  K& C3 W; I
    0 R3 V# R( [& i5 R0 n8 [) C3 \
    %BP网络训练
    7 F$ G' J6 ]# ?net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ( s+ I6 I, m  u1 j. c6 W7 {7 Wnet.trainParam.show=1000;* H4 G8 o' k6 }7 F
    net.trainParam.Lr=0.05;" Z2 I. p' ~; x+ z1 S1 l
    net.trainParam.epochs=50000;9 x  Y' n7 r4 Q' \( g& o5 ]  _3 }
    net.trainParam.goal=0.65*10^(-3);
    : K$ k* h8 o8 w5 f: Unet=train(net,pn,tn);# T( E3 b( H3 N! [; V% b
    1 e/ m; U+ a. _1 v
    %利用原数据对BP网络仿真8 `- R5 p4 F0 g
    an=sim(net,pn);
    $ D' d$ x1 H4 u5 }. Ca=mapminmax('reverse',an,ps2);
    8 I8 @6 L7 _5 ^) m) k/ L" j3 Z. f6 U: ~2 K/ Q
    %仿真结果与原数据对比测试
    + P( X- Y& |2 yx=1990:2009;# }5 `4 f* y3 b; W% s' i% t& ?- M
    newk=a(1,:);7 X8 K& q( M. D! K) h7 Q* E
    newh=a(2,:);6 c% y; Q; q" k
    figure(2);
    % ~! v1 K4 g  Usubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    - {  v* z& r4 |5 t$ ^legend('网络输出客运量','实际客运量');+ \5 n, m2 y/ X" b4 w
    xlabel('年份');ylabel('货运量、万人');5 ^, n' K5 s# U' u
    title('运用工具箱客运量学习和测试对比图');
    ) Y/ z2 d4 y; |; M) J* vsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    % {+ ~! }1 d: b1 q. G- Llegend('网络输出货运量','实际货运量');
    2 H$ x7 U2 E1 o5 g, J# w: Rxlabel('年份');ylabel('货运量、万吨');
    # N9 X! L) U: C, s$ |5 Gtitle('运用工具箱货运量学习和测试对比图');
    2 y$ ~$ S, w0 ?' a- `. y% E7 v3 o/ k
    %新数据仿真% Y8 q) e6 H) B* ~
    pnew=[73.39,75.559 Q5 w4 w( l2 a  L- ?
        3.9635,4.0975  K3 M% g2 F. U4 P2 `6 J* `" r+ u+ c
        0.9880,1.0268];5 R" |* t% C. s* j
    pnewn=mapminmax('apply',pnew,ps1);& _: o& B3 [- l- Q) _% s
    anewn=sim(net,pnewn);
    $ Y* h; P* ]4 ]5 Ganew=mapminmax('reverse',anewn,ps2)
    3 i1 c! s3 {* h0 n6 _6 N- r2 ~
    ' B9 L# k5 H. T# H2 [

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

    `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 q" W  V$ E' @; }' J+ E( r
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    # i( o! H4 Q' x! ~" R因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:* ?" z& @/ S6 P! _
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');9 Y0 z) Y$ G! P8 q# f4 l
    我修改为:
    8 a- O1 d% m6 e( Fnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');! O" V5 M$ s9 T# W1 M( Z0 Q" j1 Q
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    ! c9 a, }! T3 k$ z/ x+ `+ X6 `2 D[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);. j- O8 ]: t/ H
    a=postmnmx(an,mint,maxt);
    ; D& r: q6 J; S6 T- I* ^) epnewn=tramnmx(pnew,minp,maxp);
    , J, `" S- ^; ~5 w* z& T- \1 Kanew=postmnmx(anewn,mint,maxt)4 O% R8 L# s4 S/ C! b
    我修改为:2 g# u# r; Z8 s& F5 e
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    : M1 A. K: H% x; h  Ya=mapminmax('reverse',an,ps2);
    - E0 [5 m( f; d. ]$ @pnewn=mapminmax('apply',pnew,ps1);( R) T  w9 ^+ H* ]8 \
    anew=mapminmax('reverse',anewn,ps2): Y8 E5 B: c5 W) Z

    % k; w; p% u# J  _原程序为:. ~$ I6 V4 X+ S8 a2 K4 s* e- F
    %原始数据输入! }7 U, x/ H0 R5 q9 e* T
    clc
    ; |1 z% s6 a6 a3 S1 Z! b1 Vsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    9 V3 x6 h! K7 ]8 A    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];: o& J6 J' i' l( |) ]8 f$ b* P- O- J
    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  K/ U% ]) ~( ~' L    2.5,2.6,2.7,2.85,2.95,3.10];' r5 ]6 m: n: L, S9 t* b6 K
    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,...: u4 U8 g* K0 @
        0.56,0.59,0.59,0.67,0.69,0.79];! k& F# f/ B1 O2 i
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...0 j7 a7 U7 m4 W& @4 G# `. H2 K
        22598,25107,33442,36836,40548,42927,43462];
    ) B9 z2 v0 U5 k& d- ~& H/ _glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    3 T$ i2 d- i' e    13320,16762,18673,20724,20803,21804];7 C- `* D: t$ B
    p=[sqrs;sqjdcs;sqglmj];
    9 P1 h/ q$ }: }0 T) Kt=[glkyl;glhyl];9 K/ e  v3 j9 U3 d
    5 O, \3 K! M5 h2 k
    %数据归一化# F5 ?' R4 B7 q7 a. q8 `
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);; q- n7 F; _( W. G8 R+ V$ V
    dx=[-1,1;-1,1;-1,1];
    : p+ y' j: e; m! I8 d4 Z9 I
    ; U$ P2 z( C) S
    %BP网络训练6 Y, R- y1 S. A/ E2 v( c3 E
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');0 P; L& U, a3 @9 G2 ^
    net.trainParam.show=1000;
    7 a* r# j% K& K  r! n. }net.trainParam.Lr=0.05;
    0 f# r2 {+ w9 A- snet.trainParam.epochs=50000;
    9 N. o1 Q8 g3 i0 x" D& h5 G6 g8 Onet.trainParam.goal=0.65*10^(-3);
    2 f0 H- ]$ I% I' j& Y9 ^( ~0 Fnet=train(net,pn,tn);2 s" d) u; N# T$ r, S
    5 E* `* S' R6 }$ P9 G
    %利用原数据对BP网络仿真: p  e4 y$ s3 U5 o) L
    an=sim(net,pn);
    7 k0 ?$ ^. x7 a% S! Oa=postmnmx(an,mint,maxt);: j3 S1 R' ^' _$ O

    : K' I/ G" j% G! e%仿真结果与原数据对比测试. E  m$ C' W7 @4 k7 n7 M8 W
    x=1990:2009;/ {/ ^7 H$ ?# F( W
    newk=a(1,;
    2 _/ A) W1 i. g. E: {newh=a(2,;
    5 e" T3 K5 w8 |( C# U3 ~  Xfigure(2);
    ( `# z' z9 O! t' v: Ssubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');, M) o$ T+ h( |
    legend('网络输出客运量','实际客运量');
    , t: l' X/ B- c+ x( Lxlabel('年份');ylabel('货运量、万人');
    % n* b. _  v2 |) t' |5 k8 s8 Etitle('运用工具箱客运量学习和测试对比图');
    : P7 b9 ~2 Z7 |3 ~! p% ?$ ]: O6 d& asubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');0 [; M( E# A: l4 x# B# c) d) q- e
    legend('网络输出货运量','实际货运量');7 B: ]( _! `: R
    xlabel('年份');ylabel('货运量、万吨');
    - w! t) F$ r  K5 a$ S8 A* P& b) Ftitle('运用工具箱货运量学习和测试对比图');
    2 X/ y2 |$ {8 M' ?( S7 L* O
    , K! L, [) R* G9 a, z7 {2 c%新数据仿真
    9 _& [! O( `1 wpnew=[73.39,75.55% \+ K; ]  n* ]- A, s4 o
        3.9635,4.0975: r1 u( s( e" a: N' k+ q/ p
        0.9880,1.0268];
    # T7 A8 ^# t. H) H! \6 apnewn=tramnmx(pnew,minp,maxp);
    ; \. x. N" r+ x9 F4 m& H* Banewn=sim(net,pnewn);
    2 b/ [0 Y/ S* ?8 c" Z# \; Fanew=postmnmx(anewn,mint,maxt)
    " `! h' E, w- e1 N

    9 N1 A7 C8 T! C8 ^' q( M1 p% l修改后程序为:% w2 q1 y" u& I& O, h* Q  F* M
    %原始数据输入
    % U, B9 G6 a8 f8 q' Q3 h* lclc
    ( B0 S' i. A0 {4 N) r: |( Asqrs=[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 ~6 d7 c, A7 x" i9 J+ K    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      Q; f3 I+ c# Zsqjdcs=[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,...
    & t. y, C0 C5 ^( A) a" b8 q    2.5,2.6,2.7,2.85,2.95,3.10];/ x$ B3 N. g) q) 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,...
    7 v, \& z& Z, E: S& x& b" e    0.56,0.59,0.59,0.67,0.69,0.79];3 ~# x' k0 W1 u( D8 e
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      U- T  \. c6 m6 y    22598,25107,33442,36836,40548,42927,43462];7 }6 Z3 H) ?9 y. a1 A" J4 D
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...! B' q* C* K. @8 t2 G2 r
        13320,16762,18673,20724,20803,21804];" T6 Q% t+ b+ l7 z: l
    p=[sqrs;sqjdcs;sqglmj];* [2 O$ y# u5 X1 k; p- x' D7 t
    t=[glkyl;glhyl];9 p/ k8 J( }8 s# l, v. k* P) T+ k' S

    ) s+ q/ \* D8 R" j& C%数据归一化
    1 e! G" k+ N  i1 W7 X$ N1 f8 Z[pn,ps1]=mapminmax(p);% O5 M- n8 D9 b) q! M' W
    [tn,ps2]=mapminmax(t);$ ^+ j* }6 G1 Z

    ' I. f) c) l- @- r%BP网络训练8 r7 A/ f" ~7 _0 x% Y6 A
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    , Y, ]* c" m! x' Y9 @% b+ l% Wnet.trainParam.show=1000;
    ; S4 q' l: q7 l+ ^* H! P5 Znet.trainParam.Lr=0.05;
    / y5 ^. J# m1 Snet.trainParam.epochs=50000;! j/ f! \+ x/ A5 d
    net.trainParam.goal=0.65*10^(-3);
    5 R1 ~! H. Q0 o4 R0 o: [. Ynet=train(net,pn,tn);
    $ u, V2 @$ h. h% D- z& a; N$ H, A6 e
    ' x, \4 l" y* k- Y%利用原数据对BP网络仿真
    8 t, j) Y- B" y" Q! O! O) Y+ Gan=sim(net,pn);' R' V) x' E* O: _4 F; F' s
    a=mapminmax('reverse',an,ps2);
    % j8 F6 X( v8 j$ I+ y$ `- l, p2 T/ s0 ?1 ?( [7 l' {2 Q; u. L8 J
    %仿真结果与原数据对比测试2 Y! Z' @, y( g  [7 Z* p4 ]: M: [- e
    x=1990:2009;, u7 P* _, P* V
    newk=a(1,;  T3 L, c& o5 l$ L0 S
    newh=a(2,;
    - T* _; ?* X4 K% ]6 M/ Y& ofigure(2);6 E4 b9 p+ s% b1 u* o4 n# R
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');1 O  M- V* u+ i/ u$ [' f
    legend('网络输出客运量','实际客运量');: V6 E2 _: u. y# D" V1 @, \2 E0 F
    xlabel('年份');ylabel('货运量、万人');, m) u; K- u. Q2 x
    title('运用工具箱客运量学习和测试对比图');
    * \- R+ q+ T. a" A# r' \6 G7 h6 osubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ) ^2 m! X4 k9 G, Wlegend('网络输出货运量','实际货运量');8 ~3 y* j: e: c$ P9 u% v; `
    xlabel('年份');ylabel('货运量、万吨');
    . k9 A  O# g1 J4 B2 J7 J# |title('运用工具箱货运量学习和测试对比图');: q; {$ B9 l8 m/ u9 e

    , F: Y7 f- z/ F6 p( _# \" P, N4 }%新数据仿真
    + v3 e& k, t  f5 u" [1 Cpnew=[73.39,75.55
    1 {* i" _2 D! U( k    3.9635,4.09750 X& x  f) u1 ~4 F0 ]
        0.9880,1.0268];
    - e* m, }* Z' P8 P+ O: Qpnewn=mapminmax('apply',pnew,ps1);
    4 c% ~$ u# v$ [$ @  r1 ?( m% \anewn=sim(net,pnewn);2 p2 f3 u/ i0 `1 u
    anew=mapminmax('reverse',anewn,ps2)
    2 ~/ z; I" a4 E; e/ X& m/ K(修改的地方用颜色标记了)
    . z# ]0 [- t4 S; G: \1 r9 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. clc
      ; U3 A: C) E- V# x4 j) c! {- X( G4 v
    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 ~. y) d, R9 f, z( ]
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];- U: P8 S8 d+ D; s. ?
    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,...
      4 K& l; ~! q' g# Y$ ^! U, R
    5.     2.5,2.6,2.7,2.85,2.95,3.10];4 R5 k9 P8 s3 x: 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,...
      $ v! }, n) s7 n4 S! R* P! u
    7.     0.56,0.59,0.59,0.67,0.69,0.79];3 `8 j  n& n3 j0 _$ l. h
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...' r! P6 ?* }3 k. b/ \3 j
    9.      22598,25107,33442,36836,40548,42927,43462];+ [& {% \7 F2 S
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...5 `$ q( D6 R) P* }  L2 Y+ ]
    11.      13320,16762,18673,20724,20803,21804];& o, B0 m# i5 z! n* k$ d
    12. p=[sqrs;sqjdcs;sqglmj];. N2 A# I8 v& r\" N, g
    13. t=[glkyl;glhyl];
      ) W! g; ?' V; Y/ N* E8 W- o) r) P
    14. %数据归一化0 j! |5 a- W! l- a, P
    15. [pn,ps1]=mapminmax(p);3 G5 O/ |$ J0 ~  y3 Z
    16. [tn,ps2]=mapminmax(t);
      ( o$ ^$ ~2 [$ Z% I( v+ M
    17. %dx=[-1,1;-1,1;-1,1];
      . Z2 v/ Y- m/ Z) l- v; O4 W
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]- x; u9 U6 ]* t  a: T5 G( X
    19. 5 q- C4 L0 I4 i
    20. %BP网络训练* K( d6 L\" D* O6 l6 {3 ]3 e
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]2 C+ Z2 F- P, G  n0 u\" W3 f
    22. net.trainParam.show=1000;% m, E. z6 x) z. r! s& G
    23. net.trainParam.Lr=0.05;
      - Y, R  H4 U. O9 y6 W
    24. net.trainParam.epochs=50000;* ?+ j! K7 D/ w. ^
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]2 b$ h6 {+ O\" v( ]\" b1 c
    26. net=train(net,pn,tn);
      : P\" T4 x/ W8 d: f$ `5 I9 _

    27. ) o' b! ^0 B# k/ I9 Y! ^2 f+ f
    28. %利用原数据对BP网络仿真
      7 R5 m2 r) E* ]' b
    29. an=sim(net,pn);8 M0 Y5 ]$ c. l( V# X% k
    30. a=mapminmax('reverse',an,ps2);
        [6 d' k' Z# C  @5 Q3 l

    31. 1 y+ N% M+ u0 r$ q
    32. %仿真结果与原数据对比测试 3 X6 q8 y! Z! O4 d7 u. j: f  l
    33. x=1990:2009;
      ) C  a$ R+ |: k: Z
    34. newk=a(1,:);
      & U; ]- {% c5 q
    35. newh=a(2,:);
      ; g! N) l! ^0 L/ H* R3 a
    36. figure(2);6 d5 c\" Q7 {. M* y8 b9 Q( j
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');: ?\" V% s1 G  q5 _- F
    38. legend('网络输出客运量','实际客运量');! x( m+ B% C( g  z\" u
    39. xlabel('年份');ylabel('货运量、万人');
      6 N1 G; B& b/ b# `0 D
    40. title('运用工具箱客运量学习和测试对比图');$ ]8 u1 x7 a6 W2 Z) P
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      $ p! X6 e  b9 f! f$ f* \+ u
    42. legend('网络输出货运量','实际货运量');
      & t) i# J( g1 c# r! A* }
    43. xlabel('年份');ylabel('货运量、万吨');3 O. q, c* Y( e# P& t' |0 f
    44. title('运用工具箱货运量学习和测试对比图');5 t0 L/ I# V# K: m% N
    45. ( M% a7 N\" G/ N( W- ]/ N2 c# S
    46. %新数据仿真& I- h- G- N# I\" R) S
    47. pnew=[73.39,75.559 G* o) ~\" U5 X3 m! t6 L4 g
    48.      3.9635,4.0975$ r1 E  B7 {/ T& b3 b: _
    49.      0.9880,1.0268];* |6 Z6 d. e9 Y& s8 x) |8 @* L( y
    50. pnewn=mapminmax('apply',pnew,ps1);8 v0 W! M6 q9 H0 m! c1 |* c4 I\" B+ C
    51. anewn=sim(net,pnewn);
      6 |! c/ I9 S4 a3 @0 M. x4 z$ d0 G
    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
      / I& P0 A8 s: U, W* }\" p; r
    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,...
      & B\" _6 ]1 n1 V, e& \- m
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];/ K/ [$ `% F3 i. D: r9 |
    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,...- w$ }' K5 V9 d, D+ d. L1 o
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      9 u' V8 N\" ?( ?5 L, h  u
    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,...; n! }: V! o. n0 ?
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      ( t/ K# G7 N\" y\" u- Z: S
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      / p  h3 M8 z% t& X
    9.      22598,25107,33442,36836,40548,42927,43462];
      ' @: {( ]& n+ r  ^+ o1 Q2 V& z7 C
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      ( w\" p+ l- P+ j0 ~- L; Q9 U
    11.      13320,16762,18673,20724,20803,21804];
      2 o5 ^: t5 A# E/ _/ p' @
    12. p=[sqrs;sqjdcs;sqglmj];' ^* Z8 w4 J' q  |
    13. t=[glkyl;glhyl];
      / K. ~! E$ ?7 m% _
    14. %数据归一化: }+ ~1 H+ Q1 H0 Y\" j6 u' u3 q
    15. [pn,ps1]=mapminmax(p);) X, s- L6 `1 l8 F* t& @1 f: m
    16. [tn,ps2]=mapminmax(t);$ J: _( D, Z' ~4 ^+ f% m9 H$ Q) m$ _
    17. %dx=[-1,1;-1,1;-1,1];% c\" p, w  T. G$ P. p
    18. p0=minmax(pn);t0=minmax(tn);' w7 c6 ~, \6 m% j! g

    19. 5 \1 f: {\" S' M% E- k/ x1 z! A
    20. %BP网络训练+ F* z3 `% w( e( P  R/ N
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); # _\" j  Q! P$ V/ g
    22. net.trainParam.show=1000;& k3 I' g. }' u5 X! l: L
    23. net.trainParam.Lr=0.05;# o3 P0 J* _1 x3 ]7 u
    24. net.trainParam.epochs=50000;
      4 T; I# Y* e; B# @- C) e
    25. net.trainParam.goal=0.65*10^(-5);
      \" l. Y/ V. P4 o; `\" K8 S5 N) h
    26. net=train(net,pn,tn);8 H* ~( R% K5 @+ v* _# j
    27. 7 b* }- y% g9 z) w) `\" C6 k0 ?
    28. %利用原数据对BP网络仿真
      # G) V, V: B3 w' \  T\" d0 Q
    29. an=sim(net,pn);
      # l# `3 Q7 N' x/ g
    30. a=mapminmax('reverse',an,ps2);$ ~% V: f) D& D

    31. 6 I5 M/ Y+ f! E2 Y/ p. P
    32. %仿真结果与原数据对比测试 7 y; D! e\" q, P+ U
    33. x=1990:2009;
      # |8 n7 V6 Z' J* G8 a
    34. newk=a(1,:);( `: t1 \- w7 P6 b
    35. newh=a(2,:);* S\" s! R7 g* _6 E3 v) n( q
    36. figure(2);4 l# _' f2 h+ }/ y  J- g) S
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');) E* p) G* F: o6 O7 S1 p
    38. legend('网络输出客运量','实际客运量');6 ~/ ?. j2 f- v. d0 g% E
    39. xlabel('年份');ylabel('货运量、万人');/ L* H# w6 J: O% U
    40. title('运用工具箱客运量学习和测试对比图');
      / E5 ^& |2 R& Q/ Z% d; m/ g' ]
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');' `\" r9 I# u+ g' D) V. U
    42. legend('网络输出货运量','实际货运量');  \9 L! Y1 v/ w+ _6 n6 g8 I
    43. xlabel('年份');ylabel('货运量、万吨');4 K% ?: Z4 |% ^1 N. k/ y
    44. title('运用工具箱货运量学习和测试对比图');* m3 F! m' n8 m- B4 r. f: w
    45. ( y, T. I2 v; f) _# z
    46. %新数据仿真
      2 D( s4 s  T3 y3 U
    47. pnew=[73.39,75.55% o\" l0 F\" m. o\" ^. p$ \, p
    48.      3.9635,4.0975
      2 f, ?4 x5 C7 W: ~
    49.      0.9880,1.0268];, ~: {& L* ?: [* a
    50. pnewn=mapminmax('apply',pnew,ps1);( W' U% g6 x5 E& y( u
    51. anewn=sim(net,pnewn);
      % D& y  d+ Z0 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 % q8 y0 H2 ]( B) b  [
    忽略我上面那个,改动的地方在18,21,25行……求批

    * L" G, v9 K& j* A5 U& v确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    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 n! M\" D( v  W/ I' @
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); & R2 n# T' y& F+ i% z& V$ {4 D: y
    3. net.trainParam.show=1000;/ F) Y; d\" e/ Q\" A$ F; H  L2 }8 l
    4. net.trainParam.Lr=0.05;. {2 v8 E& x$ L- _1 j
    5. net.trainParam.epochs=2000;
      8 K9 D# h6 q' E* \+ i9 e$ i
    6. net.trainParam.goal=0.65*10^(-4);* _0 s\" w+ F# m$ |
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,7 @# w3 f7 ?  K9 M
    一、改成单隐含层的,6个节点
    ' w, K0 T$ z$ S0 c) r$ S二、训练函数改成梯度下降BP算法 traingd
    ) ?  _$ h/ @$ @! _7 S6 M/ \三、迭代次数改成2000* P: Z/ J- g# ~$ b3 K2 ~- Q* h: n
    上面的参数是自己试的,我也不知道为什么。$ g/ q# e: |4 A5 a
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。. L7 z; [* ]( T2 [; c4 s. 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-6-4 00:33 , Processed in 0.565849 second(s), 102 queries .

    回顶部