QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4955|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    3 k. P# ?; R6 l9 l
    " ~/ K5 V6 b' _& \7 d. J%原始数据输入
    + x* |: W5 L( ~6 R* P- o* B' jclc
    * h9 p: Z6 _1 c0 s6 y$ W' wsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...0 A0 h9 N1 m3 s
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    " p- Q2 V6 S& Fsqjdcs=[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' D1 j& z$ \% K& [2 N; s( l
        2.5,2.6,2.7,2.85,2.95,3.10];" m. c# W% }  W5 N# [* 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,...
    7 e( }9 W& w7 k& Y$ Q/ w' Q  e    0.56,0.59,0.59,0.67,0.69,0.79];
    + N5 h. S6 L3 t$ H8 m$ Q9 U9 qglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.../ ]: M( x  N- Z
        22598,25107,33442,36836,40548,42927,43462];: Q! L& b. F6 L4 @! Z" C$ g: O
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...2 s; n; j. ^6 P# f; N
        13320,16762,18673,20724,20803,21804];' T- O5 I. v0 r- q0 S: ]" J
    p=[sqrs;sqjdcs;sqglmj];+ M. G! X1 S! _6 e
    t=[glkyl;glhyl];- {# e! Q4 w- t
    " I# a* n# O1 _
    %数据归一化
    4 X; B" w+ s8 @# B  |[pn,ps1]=mapminmax(p);1 s) Z2 M/ y8 M3 q" m, ?4 C
    [tn,ps2]=mapminmax(t);) y6 d* \- y. u" Z( ~0 A
    dx=[-1,1;-1,1;-1,1];
    5 N# {- V0 i, a' P$ \! l3 J- o$ V( ?: l" p& G# `4 Y
    %BP网络训练
    & I; t8 a- E( ^: L2 |7 t2 xnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');7 D2 O/ L' ]9 K2 l3 L" d- E
    net.trainParam.show=1000;
    # U# E6 @' S6 W; K4 Knet.trainParam.Lr=0.05;- J$ r) v* L! Z- W- H! D0 p
    net.trainParam.epochs=50000;
    8 a+ G) _9 x' C) n* `+ ?net.trainParam.goal=0.65*10^(-3);, I. l+ d. c. w1 G
    net=train(net,pn,tn);
    ! ~' e+ [) R" L6 M* U: ^
    * t. }$ l6 U9 `4 B" P%利用原数据对BP网络仿真
    5 ?* }0 d9 d* @an=sim(net,pn);
    4 T5 O# L( s8 i' Pa=mapminmax('reverse',an,ps2);
    ! G. J1 n& P" y4 _* }/ b
    " O8 |) e7 [3 P0 k%仿真结果与原数据对比测试2 n. P, |$ X5 q- Z" I  y. j/ G2 _
    x=1990:2009;
    / W' K# w, _  ^* S( znewk=a(1,:);
    ) ~: K3 l$ X. O/ Inewh=a(2,:);( I3 g# V7 J- X, L2 H4 B/ U3 W* W
    figure(2);, {" l  |% [& D/ ]
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    ! D7 i& U0 o( j$ |& T1 Xlegend('网络输出客运量','实际客运量');# v; y9 ~6 ]  u0 z" t
    xlabel('年份');ylabel('货运量、万人');9 J( q, {% W: d; {: P
    title('运用工具箱客运量学习和测试对比图');: t) p( ^6 u- M+ Q
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');8 s2 E$ J* m' A& u
    legend('网络输出货运量','实际货运量');" t& L8 N% A0 b1 S' u4 F! {
    xlabel('年份');ylabel('货运量、万吨');
    3 o7 s, M" O# `/ a: i  R3 _$ ~title('运用工具箱货运量学习和测试对比图');) @* f, h, E; v9 M+ {

    5 U% z" G2 A0 D+ a%新数据仿真3 p7 j% ^2 N  J& F$ Z
    pnew=[73.39,75.552 }( ^* n: K- V7 E0 n
        3.9635,4.0975* S) r! G* J# ^- P
        0.9880,1.0268];* V; u6 e8 G: H; Y! S: z
    pnewn=mapminmax('apply',pnew,ps1);8 x/ ?" ~7 {- l: c. A3 z8 D  I
    anewn=sim(net,pnewn);; M- i9 R; c9 f( n
    anew=mapminmax('reverse',anewn,ps2): H) w6 c+ `$ q% D1 ]% z
    0 b, m( D" T( K

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

    `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 v" }; U+ {5 f) h看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    : C" I' l8 v  M因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    # W; \9 q# @7 w. |. hnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');4 B1 h4 I; ]7 H0 Q" \" F) H
    我修改为:
    9 m* H+ [' o* l; d9 L( k0 d0 enet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');2 p& I' a% \0 d" W  Q$ l
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:+ s6 _5 c9 U) b, A4 Y
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);  G; U, a$ ~8 H
    a=postmnmx(an,mint,maxt);
    8 m6 W; A) g& _) _4 G/ q5 Ipnewn=tramnmx(pnew,minp,maxp);
    6 @& u6 ]& x- P. Canew=postmnmx(anewn,mint,maxt)
    : p5 _8 ?+ G$ J4 ~9 ~6 K, n我修改为:
    ( n2 \- S& L8 G- B, M2 T[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    2 S; }$ M/ I& e5 S3 ta=mapminmax('reverse',an,ps2);
    + U2 ^) M3 H! ]: b' C2 ^" X- @, m0 Npnewn=mapminmax('apply',pnew,ps1);
    - P: e8 r, {8 I/ V8 Aanew=mapminmax('reverse',anewn,ps2)
    4 G1 D$ z9 S, Z/ g3 X& A2 x; h- m( O# z0 N- n( b& s$ f
    原程序为:' p% M  c$ ~9 Z; U
    %原始数据输入
    $ Q9 m2 R" O  a, j8 ?clc
      |% D0 Q  Q2 ]9 `0 T7 X$ e+ n$ r% 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,...5 B! _+ L/ R8 `7 Q5 L7 \
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];7 s/ i6 F6 D6 e6 J7 R% W  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,...
    " Q  X' L" |0 y+ S- ]    2.5,2.6,2.7,2.85,2.95,3.10];% S) X1 U& H; Q9 z( j! \; G
    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,...
    ( S4 C% c/ x9 _( k6 f    0.56,0.59,0.59,0.67,0.69,0.79];
    ; p. K3 c8 V3 v4 ]* ~- ^glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    ) t. J8 P4 Y8 K' z# K    22598,25107,33442,36836,40548,42927,43462];
    ! n. r8 t$ E+ K: a: C, Eglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...3 l3 v2 Z/ u7 @" Y7 ]* b: H
        13320,16762,18673,20724,20803,21804];8 Y& f. v; D5 f" x
    p=[sqrs;sqjdcs;sqglmj];
    ! b5 N5 t! a; ?' m! H% x% t1 rt=[glkyl;glhyl];
    0 R' w1 B' C" K3 G+ g! F, u9 {" r7 q* u+ b) R9 X! ]
    %数据归一化
    , U/ P/ [" W2 v[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    * O; h( \& N& w0 T% c9 a! K$ ndx=[-1,1;-1,1;-1,1];2 B% b% v5 Z' Q$ m

    $ {* J2 U( ?, k, S. |/ F: Q%BP网络训练
    # ^$ G: Q9 i) y) u, z  `net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');& n  H/ }7 c* B' O/ O7 S
    net.trainParam.show=1000;
    & Y" n& L( P3 k6 x" X! V7 Y0 O' F' Knet.trainParam.Lr=0.05;+ M; A* S$ y& j: t$ P
    net.trainParam.epochs=50000;
    . J+ Z3 N. Y- rnet.trainParam.goal=0.65*10^(-3);. W. P. V* v6 Z; L
    net=train(net,pn,tn);
    5 L- c% b7 d- I" E% \/ T
    . m' ~; C$ M8 ?/ ?  o%利用原数据对BP网络仿真, U/ D! R) z2 r4 N- ?
    an=sim(net,pn);. Q' k! j8 d# W: u6 G4 c
    a=postmnmx(an,mint,maxt);+ p6 ]% [4 _. ~1 T
    + C! ~7 V3 q7 q( x2 x! x
    %仿真结果与原数据对比测试) Q! V  ~  E7 R3 }: V0 ]( j1 G! s
    x=1990:2009;
    / Z1 C" Z0 W. H6 \& Unewk=a(1,;
    6 `; M4 b8 }6 e6 Lnewh=a(2,;9 S- o1 k8 W3 z
    figure(2);
    % l5 D& _9 Y5 U6 Xsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    4 A9 ]8 g" g- F/ Q6 ~& G  }legend('网络输出客运量','实际客运量');2 r" p6 f' W# n& w2 R: e, a* j
    xlabel('年份');ylabel('货运量、万人');
    2 j1 P8 i7 a6 R" J: Gtitle('运用工具箱客运量学习和测试对比图');
    3 L5 F9 _* Q0 d% B" Msubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    / h0 O5 [6 e7 t* alegend('网络输出货运量','实际货运量');
    % O5 h8 J2 `$ F: u8 u& uxlabel('年份');ylabel('货运量、万吨');
    2 K. M. @! l8 ?title('运用工具箱货运量学习和测试对比图');. S: c' O+ D  M# v" \8 v. ^# i

    8 H0 s1 C7 j7 L: C4 F%新数据仿真" J# N) H0 g  K: M) L  R( _- Q
    pnew=[73.39,75.55) l8 b6 l. j6 t( e8 a! P
        3.9635,4.0975: r! d5 i" u$ M0 n- Z5 d+ n+ p
        0.9880,1.0268];$ U6 I0 L, Y: Z0 t" i
    pnewn=tramnmx(pnew,minp,maxp);
    % ]& {% B8 U6 ]  |8 Tanewn=sim(net,pnewn);$ ?) I! `! |, G, q9 N% F- V
    anew=postmnmx(anewn,mint,maxt)
    2 a8 ]  d8 X& c# w
    $ ~8 i1 t; c/ r8 v
    修改后程序为:+ q! E+ x) Z- c
    %原始数据输入
    2 L# B/ }3 Y8 I9 f. F8 X1 [+ `$ Mclc
    * U( m4 w4 i- Isqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    ( l3 s7 p; j6 P; t    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];+ R; S" ]& |9 V& e
    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,...( P2 g( E( f# {' N1 v1 i
        2.5,2.6,2.7,2.85,2.95,3.10];
    ! G# y# M" |- o% r, 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,...
    ) w/ a3 T: m0 w; c  n) K1 N8 U    0.56,0.59,0.59,0.67,0.69,0.79];/ @9 k8 o( M  D3 s5 z6 T- O  ]
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    & S, e, f" d3 D$ i8 E4 m: p    22598,25107,33442,36836,40548,42927,43462];0 U+ `: v3 C. d) O' {; ]) v/ \
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    7 u( h+ n' f. u5 g! S    13320,16762,18673,20724,20803,21804];$ F% D1 c. p" S* |' Z2 d9 T! s& O
    p=[sqrs;sqjdcs;sqglmj];1 d. X: C& H9 v% U! s3 \% J
    t=[glkyl;glhyl];6 T3 V& }* D9 z. F# H% U

    & P8 H0 e  d7 t# ^' G1 s%数据归一化
    & i8 I4 I, q& q' L  G: S8 I[pn,ps1]=mapminmax(p);
    , w- t) s1 f5 i) R3 S[tn,ps2]=mapminmax(t);# _; A/ h4 |" D( }- B7 _
    $ L. U+ v8 M$ a8 a" G. A+ I
    %BP网络训练
    ! z" N; [5 _; Wnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');7 b9 X2 p2 K1 M
    net.trainParam.show=1000;
    7 \( Q# t. A4 Q0 Dnet.trainParam.Lr=0.05;9 t$ ?7 N" u$ m: v9 {! M8 T4 X: a
    net.trainParam.epochs=50000;
    - @5 ~- w5 _4 g, F0 [) `6 Xnet.trainParam.goal=0.65*10^(-3);8 F6 O' ~# u! e! n* u
    net=train(net,pn,tn);+ n. E( s3 o( l7 u
    ! P% k3 s: B: U- X. {
    %利用原数据对BP网络仿真
      I8 J  Y( [. T" x. ^" X+ T. Aan=sim(net,pn);
    ! j% i- {# a9 Z8 ~; o2 g; ?a=mapminmax('reverse',an,ps2);7 T- {& m5 s  G0 g5 H$ v

    6 N5 j. C9 A- A+ U' _2 {%仿真结果与原数据对比测试
    & z  W1 s7 P0 y' {2 m" fx=1990:2009;& R8 R! @) B) r" r  v
    newk=a(1,;6 d9 R  P) S( d( q2 b- t
    newh=a(2,;, n' B0 a, O+ O3 {) `' i
    figure(2);
    . v3 g5 \; x/ J2 bsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');$ w% Z" C' |, u2 y: Q' l$ C3 }' a
    legend('网络输出客运量','实际客运量');
    8 z2 s6 V8 ~5 |/ R! ]1 D( j& sxlabel('年份');ylabel('货运量、万人');
    " Q, a4 ]  j4 h9 k+ o4 @( Mtitle('运用工具箱客运量学习和测试对比图');
    $ r) n5 I& i- l& }( t- U) A: msubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');* M7 W8 W! [& m& G! \
    legend('网络输出货运量','实际货运量');6 q: _; h; ]9 k! Y- f: e0 Q( t) y
    xlabel('年份');ylabel('货运量、万吨');1 J. R5 \/ j, |0 G5 ]- X
    title('运用工具箱货运量学习和测试对比图');
    " |0 l9 h4 d1 l2 }$ z+ t+ |) b4 _
    6 c) ~" m9 K# ~7 m%新数据仿真8 c4 y6 n: f. H+ [" _: e
    pnew=[73.39,75.55( q( G0 X$ W, O* `
        3.9635,4.0975) F/ `; b* Q0 r/ @: N- h4 w, k
        0.9880,1.0268];2 m8 ?' T+ {# [
    pnewn=mapminmax('apply',pnew,ps1);) H/ D4 i: n* u( p9 ?
    anewn=sim(net,pnewn);$ ?+ n" X6 J( V7 d! K, I
    anew=mapminmax('reverse',anewn,ps2)5 H3 t4 G: ]0 d3 r# s8 H
    (修改的地方用颜色标记了)) q! a  V/ ]' x6 F3 u7 h' i3 X
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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  s& Y' r3 _8 K6 n6 U4 G! X; N# `
    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,...
      : Z& N/ E7 S5 {\" J7 G
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];8 P: S* n5 I2 B% J5 M8 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,...\" Z- r$ }$ C8 g' _
    5.     2.5,2.6,2.7,2.85,2.95,3.10];* |1 M, f, y* N* k/ 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,...
      ; Y, K\" w& v  J: m1 ]0 x& Y
    7.     0.56,0.59,0.59,0.67,0.69,0.79];% \9 x4 j- f  h0 p1 z4 ]
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,..., l+ [* {; i0 q2 @5 f7 L
    9.      22598,25107,33442,36836,40548,42927,43462];: w4 M, I) T: c! u) A
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...3 I\" l# `2 \3 ?4 @2 C, |6 S$ Q* C
    11.      13320,16762,18673,20724,20803,21804];
      % ~% s% ]# e- Y) Q& {1 f* f
    12. p=[sqrs;sqjdcs;sqglmj];+ Z4 Q( J* k- v4 k
    13. t=[glkyl;glhyl];
      & s- @% e  M/ ^% j$ k4 ~9 q
    14. %数据归一化\" d) ^& K+ d7 ]4 `0 d7 D4 t* R
    15. [pn,ps1]=mapminmax(p);
      % q, A4 h; j8 O( \% ~, N! @
    16. [tn,ps2]=mapminmax(t);
      6 K% ^# O% \8 q$ U6 ~) F, E& w  I; ~4 S
    17. %dx=[-1,1;-1,1;-1,1];
      ; R  X5 U1 [: u# O
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]9 U& w; \- l$ R* ]. ]8 z& v
    19.   L# w1 ^. j5 z& e
    20. %BP网络训练
      6 ~- e& D6 _- |; A2 _/ x& C0 I
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]5 s# R/ Q5 n+ i. u
    22. net.trainParam.show=1000;; q/ m1 g% z' E) l3 ]& L
    23. net.trainParam.Lr=0.05;
      # l2 `) U) g1 W9 `/ b
    24. net.trainParam.epochs=50000;! n+ E: p0 P# F1 @* L
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]- S$ u6 h4 s7 `! Y\" w
    26. net=train(net,pn,tn);; X2 [, [) u+ L9 V2 G6 k2 b. w/ U
    27. ) L\" p6 I! n- N' q: h/ o
    28. %利用原数据对BP网络仿真7 `: m# j) z& w& L3 t7 b: I
    29. an=sim(net,pn);
      4 c& h& Z\" D/ }
    30. a=mapminmax('reverse',an,ps2);8 a& T( G9 j; R8 ?$ X5 K
    31. 1 U9 p. C$ l- b+ t
    32. %仿真结果与原数据对比测试 ( E' L* x' p! c\" B( r
    33. x=1990:2009;
      . Y$ S) r) ^& Y) ~$ Z\" w: N
    34. newk=a(1,:);
      / `6 t& u2 g+ H& p! g1 v1 d+ L
    35. newh=a(2,:);7 N( }! \2 M7 C( u  a
    36. figure(2);
      9 Y  _0 _$ W( ~; y$ h& L
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      * F: l2 F+ f/ J1 K, B. Y
    38. legend('网络输出客运量','实际客运量');$ T+ Y' b/ M9 l; q4 k) Y5 ]7 w
    39. xlabel('年份');ylabel('货运量、万人');- s: U& p\" Q% I' R$ H
    40. title('运用工具箱客运量学习和测试对比图');, Q6 p$ ~9 x/ n\" }8 n7 C8 S
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ! l# t9 W$ m& w8 d
    42. legend('网络输出货运量','实际货运量');
      / B# P' g( ?5 M$ F9 t
    43. xlabel('年份');ylabel('货运量、万吨');
      & l8 T1 s2 R8 E, j2 G4 F: t
    44. title('运用工具箱货运量学习和测试对比图');
      - `  @! k- Y4 k4 N
    45. ; ~- C9 m  O6 L/ j' j6 ^: d2 p
    46. %新数据仿真% [- }0 [+ u4 ?\" n5 D& E
    47. pnew=[73.39,75.55' u; I/ G, i: z
    48.      3.9635,4.09757 p: S) |! n) E2 q0 l3 Y
    49.      0.9880,1.0268];
      2 j/ r1 U% W\" M  H
    50. pnewn=mapminmax('apply',pnew,ps1);
      * A# u' o; R5 ~, \) T3 l' d
    51. anewn=sim(net,pnewn);) U3 V; [) n# F: [$ N  X2 m3 g4 X! l
    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
      7 P% K- V8 o  m
    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,.... p0 ~$ u; ?, o! I
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      ! J9 Z' \0 U$ d\" ^5 |
    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,...$ d1 U) k) c% o' S\" ?( L' T, [
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      5 ~9 I* \: l2 J
    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$ R; v( y) N7 p* `
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      & l3 E/ ]; L' N! Z
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      2 D( U- b. z+ V  A
    9.      22598,25107,33442,36836,40548,42927,43462];
      7 b8 |8 D# _. H3 S; G( Y
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...0 [9 M4 [: B  e% F  d# n0 z8 r( y* K
    11.      13320,16762,18673,20724,20803,21804];
      9 e9 @7 i& w4 C1 k- R/ Y
    12. p=[sqrs;sqjdcs;sqglmj];
      8 j7 E0 `$ V* k, O& Z6 S/ {0 T
    13. t=[glkyl;glhyl];
      ' A1 I8 c* R/ P0 [* n$ s
    14. %数据归一化
      : a+ H: a, `7 J6 {8 b
    15. [pn,ps1]=mapminmax(p);\" V5 S) K: Q( |$ N6 S
    16. [tn,ps2]=mapminmax(t);1 T5 b/ `6 F) {9 p% Z: g' U: A
    17. %dx=[-1,1;-1,1;-1,1];
      # \7 S1 J( h8 @0 O
    18. p0=minmax(pn);t0=minmax(tn);
      1 D- f3 o1 w0 `9 z3 m: I

    19. 5 j# b9 A, h, O; a: D\" \+ t
    20. %BP网络训练
      , M0 n8 L) X- k  N' G1 ^8 ^  j- \
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); 6 Q6 @2 B) }8 h
    22. net.trainParam.show=1000;2 l* c. J9 p\" N0 k\" M, L! I2 V4 p
    23. net.trainParam.Lr=0.05;
      ! r$ y. p- t  e: z! d
    24. net.trainParam.epochs=50000;5 K% i* z+ }: ?\" l- `) y3 ~* K
    25. net.trainParam.goal=0.65*10^(-5);* K# l2 E5 E3 ?
    26. net=train(net,pn,tn);! J6 P' u) v9 o+ c/ B4 H& B

    27. 2 m( e  l) g7 G, i; B
    28. %利用原数据对BP网络仿真( a6 X: e3 @\" S, M\" \
    29. an=sim(net,pn);\" l/ j& k) Y, }4 H- _7 P
    30. a=mapminmax('reverse',an,ps2);0 e/ m. d  t+ y( y# o, H

    31. \" n1 }# Q$ B6 \) W6 m
    32. %仿真结果与原数据对比测试
      / h! Q- b3 ?9 ^6 A
    33. x=1990:2009;0 S5 j\" X\" f\" R% r
    34. newk=a(1,:);
      0 c# ~\" L1 g  h4 i2 D* C
    35. newh=a(2,:);
      4 x( E3 y+ B9 _3 M
    36. figure(2);8 V* {8 w7 Y9 s9 ]6 d7 O
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      3 B. X\" r5 X( b7 c
    38. legend('网络输出客运量','实际客运量');
      \" B  q5 v/ i' F1 J
    39. xlabel('年份');ylabel('货运量、万人');
      8 @: B  _3 n7 x/ z
    40. title('运用工具箱客运量学习和测试对比图');
      2 L6 I) P: m& E' R7 w6 u
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
        _& }: c! D% [) {% l
    42. legend('网络输出货运量','实际货运量');
      ' J  b5 W- d% Z) X
    43. xlabel('年份');ylabel('货运量、万吨');5 r$ w\" h7 y1 ?* e\" X# }9 K9 c
    44. title('运用工具箱货运量学习和测试对比图');4 g( L3 Q% M2 T! d4 V: l
    45.   g' C$ `( S. R& ^
    46. %新数据仿真* o* c& Y* F. t! p1 r
    47. pnew=[73.39,75.55
      / D\" B' Z  W2 s+ I4 L# `
    48.      3.9635,4.0975
      6 v3 Z  h. T: _5 f5 o5 X: ~* c
    49.      0.9880,1.0268];
      6 C1 {# N! C9 n  S
    50. pnewn=mapminmax('apply',pnew,ps1);\" Z8 W3 t6 A! ?/ E7 e
    51. anewn=sim(net,pnewn);
      7 A8 {, i# {2 \' a
    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
    6 G2 J9 z& ?5 n: q$ Q% ?! }& }忽略我上面那个,改动的地方在18,21,25行……求批

    7 d8 I4 X% k/ D& N- N8 q/ k确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      6 W, n: W7 O) @& ?/ H
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); , r! H5 g/ X( N9 v) p2 G
    3. net.trainParam.show=1000;: Q9 u- e  n/ x: N  R
    4. net.trainParam.Lr=0.05;
      ) Z7 ~6 d0 v2 i) _4 Y0 d% q
    5. net.trainParam.epochs=2000;
      * K4 ?( A# n8 K2 R\" Y! J! ~
    6. net.trainParam.goal=0.65*10^(-4);4 }0 \8 r/ a  U9 h6 f& y4 L
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    + c2 t% }4 a2 t% e! k: `! ?一、改成单隐含层的,6个节点. J$ I& _( e- f( E. A# p6 f' P* \
    二、训练函数改成梯度下降BP算法 traingd7 G, a7 q: j( h
    三、迭代次数改成2000$ i  L, c% u$ H8 Y* E9 j4 G
    上面的参数是自己试的,我也不知道为什么。
    1 z9 g- \' ^' D! ~由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。' s& ]8 b) X# l+ [/ H
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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 11:29 , Processed in 0.554451 second(s), 103 queries .

    回顶部