QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5124|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!. h( _8 m5 U9 o# v1 S2 F
    4 U& ?& a8 K/ Z1 @# V0 X# h
    %原始数据输入
    $ N+ M% Z1 `4 m+ q( S* s6 _! lclc# O0 e3 H; v3 H% W1 d) v- n4 \; C
    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,...$ B6 F7 i2 d* s1 Z) o# a; ^
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];( W/ R+ x, X3 d9 o* o0 a; o
    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,...
    . F' M8 w9 ?9 V, `) C9 k    2.5,2.6,2.7,2.85,2.95,3.10];$ Q- d+ d. F& C& X
    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 f3 o" q% U6 ~3 r9 N    0.56,0.59,0.59,0.67,0.69,0.79];3 u  V% u5 {# g! }
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    # i; E( S1 s/ F% L    22598,25107,33442,36836,40548,42927,43462];4 ]. E" E) x* n- T6 Q  ~3 L0 d
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    & C- x3 n: e: E/ {+ Y% h# j) }3 Y' N    13320,16762,18673,20724,20803,21804];
    5 K6 [# U! u, S9 [/ ap=[sqrs;sqjdcs;sqglmj];* X. U, A! g& U. P" K9 S
    t=[glkyl;glhyl];. n, d% Y# [; B, g

    . s9 y$ Y. n1 q1 ~%数据归一化9 T! L! g' V: D3 g  ?/ Q
    [pn,ps1]=mapminmax(p);! C( `4 u) e: G9 q
    [tn,ps2]=mapminmax(t);7 o! r* Z( t+ T; E. T, K0 q
    dx=[-1,1;-1,1;-1,1];6 R: |: r- v0 z. x/ V% ^8 p
    6 u" a- o, k  o2 n0 v3 G9 D+ Y
    %BP网络训练
    ; Y5 D) t1 r8 K" ~: C+ J% t3 |net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    / R) }% n5 b6 G! ^& ~net.trainParam.show=1000;! b: d; l- T% ^+ N0 M1 A
    net.trainParam.Lr=0.05;" z; M5 T& o2 y9 H2 ]
    net.trainParam.epochs=50000;
    2 ~7 G8 }6 k9 Unet.trainParam.goal=0.65*10^(-3);8 Z5 j) l; i$ q8 P7 A
    net=train(net,pn,tn);
    2 ~# D; R" U! [* }5 U3 P, l( D+ T7 G/ \7 p" k/ |
    %利用原数据对BP网络仿真5 K) Z+ M4 r3 g
    an=sim(net,pn);
    : |- J# J& t5 sa=mapminmax('reverse',an,ps2);
    - b1 E3 f8 y0 _. |9 A6 t+ d( L) Y
    / N( j, d+ n. o, c2 u%仿真结果与原数据对比测试* z  N- ?9 k, Y% H2 @+ S
    x=1990:2009;/ _5 Q" N6 b% ?
    newk=a(1,:);
    9 p4 ~: s" t: ~& Znewh=a(2,:);$ C( \: q$ j8 }* {
    figure(2);
      T" q; n4 @$ t  I9 C, L, E6 C% E8 [subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');8 Q# |* Z' E; r7 X- h
    legend('网络输出客运量','实际客运量');
    / n9 @1 t+ k" n8 @xlabel('年份');ylabel('货运量、万人');
    # W% O# y6 M! s) T/ ^title('运用工具箱客运量学习和测试对比图');# K" W2 e, H5 Q3 ?) _; {& t3 R+ J
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');& z) q1 X; K, y( l' j$ Z
    legend('网络输出货运量','实际货运量');
    7 b8 e) J- S! U" N2 y! ~& d% Mxlabel('年份');ylabel('货运量、万吨');
    3 ^; ^1 u# Q& ^title('运用工具箱货运量学习和测试对比图');
    - j& k. f. f3 j; W" d0 C8 N2 j% [3 c/ H, P8 m
    %新数据仿真3 Y- `  r, K' J4 a) v
    pnew=[73.39,75.55! Z8 E, E" ], Q0 @8 o6 |9 f
        3.9635,4.09750 C3 r* z' B1 k: C) O9 {
        0.9880,1.0268];
    ' n1 X1 x) I( Vpnewn=mapminmax('apply',pnew,ps1);! a! o* _- ?5 O) _5 Z* M
    anewn=sim(net,pnewn);6 i! s: V$ N) z' C( |
    anew=mapminmax('reverse',anewn,ps2)
    0 e2 E6 d8 Q: d/ k# v; f/ D- N  l

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

    `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
    ( Z" y8 }, q) D% U0 W! Z看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    9 c# f! ~6 P" w& I4 B( i9 f因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    ) f( J" O$ k/ v) y; w1 o7 inet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');2 `- W8 @& K* m  m
    我修改为:
    ! k4 i/ n# a% I6 Snet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');; j8 a. n% R  E0 w' S+ Q- i' M
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:: g  }" i% b. \6 _7 L/ G
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);7 F# d9 r8 E5 {9 U3 r
    a=postmnmx(an,mint,maxt);0 P4 Z+ N0 Y! V$ h" U. N/ F: n
    pnewn=tramnmx(pnew,minp,maxp);$ x. a5 H9 w# |5 K
    anew=postmnmx(anewn,mint,maxt)4 U( v$ z4 V! r* q! A
    我修改为:' _- u0 x7 X) G3 G5 x' ^7 }, \* Q
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    " Y' h5 z( I5 w8 k$ }% ?: R: ia=mapminmax('reverse',an,ps2);
    & Y; o1 [$ y8 I* K+ z9 i+ Zpnewn=mapminmax('apply',pnew,ps1);6 b% k8 K% @2 ?' F' T
    anew=mapminmax('reverse',anewn,ps2)6 r) w) p/ Q" z# \

    * e" P0 y/ I, g: K& t; \7 Z( R$ B8 o原程序为:
    $ S5 R* y; T! n$ g% h) o%原始数据输入
    ( G8 p; ~, Z# h. lclc
    % M& D" \7 E$ Q" Dsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    " w6 s) }: C: l9 w, R$ i9 y    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];, ]" I5 G2 w, }( h' ~
    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,...
    , r9 f. [) d% p, d: u: W0 v    2.5,2.6,2.7,2.85,2.95,3.10];4 s' x# D; x4 d4 a
    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 G( |( n, o/ g' n3 A
        0.56,0.59,0.59,0.67,0.69,0.79];
    9 `5 i8 m6 C" }0 r6 Yglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    " f) F0 q* R* d( w3 w# ]    22598,25107,33442,36836,40548,42927,43462];' q1 Q% }- I: v
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...8 J4 E) }2 F9 q, g
        13320,16762,18673,20724,20803,21804];* w' H; u# P' X# \3 a% h7 h
    p=[sqrs;sqjdcs;sqglmj];
    . A0 `: e7 E# {) L- [/ Rt=[glkyl;glhyl];, F1 r. o4 O: B  j$ d- d$ U
    ) H! v) i4 i2 j0 r8 a
    %数据归一化
    & N, [3 ~) `7 f. u: E5 [6 K[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    0 p- e; o( m) [0 \dx=[-1,1;-1,1;-1,1];$ ^) h1 {" e1 q6 D0 Q1 R& p3 F2 u! `

    / b" K3 W: t. e9 I5 w! J1 h; Q- T, u%BP网络训练/ z; L% v: R. ?
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');4 S+ k  ^& S3 ?( G" z
    net.trainParam.show=1000;( n8 q! G; F( \( t7 a+ `
    net.trainParam.Lr=0.05;
    # d7 z% y" V5 {0 {3 A, f5 Anet.trainParam.epochs=50000;1 _0 @" G. k3 N
    net.trainParam.goal=0.65*10^(-3);3 Z  _1 H' B7 b* L7 d
    net=train(net,pn,tn);2 ]8 E* C. D' D$ s
    1 |# M- f+ s3 `/ K
    %利用原数据对BP网络仿真; ?! l8 @! E- s* x1 C. d4 y2 [
    an=sim(net,pn);7 c) O$ N) ~/ H! S7 m
    a=postmnmx(an,mint,maxt);
    " b% ?6 {+ r* ?1 _. A$ q1 s4 E+ r! ~
    %仿真结果与原数据对比测试( A1 @  y# A- u# R3 E8 j: e1 k7 e% j
    x=1990:2009;1 c* h2 W" |, N; G$ _
    newk=a(1,;
    $ A& E5 y. m" G: Bnewh=a(2,;
    0 ~  W3 c- F; Qfigure(2);5 R) m4 w4 x" R) A8 K
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');. F  ^: I/ b/ {& N
    legend('网络输出客运量','实际客运量');
    2 u' t9 Y. r# G; Y$ fxlabel('年份');ylabel('货运量、万人');
    + q; L: l3 n: E1 {  ^title('运用工具箱客运量学习和测试对比图');
    / p2 U! A! I0 }' f! W; z1 p. n/ ?subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ( w: \+ C& G( W5 B* ^/ qlegend('网络输出货运量','实际货运量');' B  Z+ d( h8 p) L/ N- A" A) \
    xlabel('年份');ylabel('货运量、万吨');( y0 {+ g" T, {1 |. w7 A
    title('运用工具箱货运量学习和测试对比图');
    ' D1 S! F+ ^; b$ u, o3 L/ x4 _7 o' d
    1 \* h! v5 h4 E0 d3 M# z! I. j%新数据仿真5 Y4 x5 H( V* V- @
    pnew=[73.39,75.55' v# A' i+ R5 e
        3.9635,4.0975
    7 Y+ {& ~: q+ X# ~% d. q& M9 \8 Q    0.9880,1.0268];/ c8 ]- h1 p8 W
    pnewn=tramnmx(pnew,minp,maxp);6 n: I3 v, Q8 s$ s
    anewn=sim(net,pnewn);9 H/ _4 A* i7 m8 b4 |
    anew=postmnmx(anewn,mint,maxt)

    $ U) r% c" g: x/ Y& h% h: G: J& t# m6 u/ G! B' O" @6 H' F1 `
    修改后程序为:
    $ Y8 i- t- H$ O%原始数据输入% Y+ G2 o+ B% H2 N4 C6 p4 W1 r
    clc
    ' i3 }4 z# G/ V5 `7 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,...1 Q- }' J/ g8 d& I9 ^- o( x& Z
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];; W% J5 `' z* ~/ o: I
    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,...7 h4 U! B: Q2 ]  i, v0 @6 @0 ~; g
        2.5,2.6,2.7,2.85,2.95,3.10];
    9 R1 h, F* `3 u, d: [7 fsqglmj=[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 ^8 q& f  L& A0 _- b* E+ v0 x2 w1 O    0.56,0.59,0.59,0.67,0.69,0.79];
    ; f& [- X# X- a1 R* ^0 iglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    0 _- X- s$ ~7 J7 w6 C4 F8 M    22598,25107,33442,36836,40548,42927,43462];
    " J( I5 W/ m; h1 @! Pglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    1 Q) ]4 m$ H# f+ W    13320,16762,18673,20724,20803,21804];
    0 H; F: Z7 r7 A4 ?$ P+ K9 }! }p=[sqrs;sqjdcs;sqglmj];! Z) G7 L/ {, Z! H8 E
    t=[glkyl;glhyl];; Z' X, J, ]: m! r: w, G& g: n# d

      G* @- q$ B6 c6 R# g! M! E1 r3 C%数据归一化
    : l+ @7 g9 n$ k2 U  R- o- q/ }[pn,ps1]=mapminmax(p);. J9 |/ ]. \, i+ v- }# z
    [tn,ps2]=mapminmax(t);. B/ _! P  g! ?! _, P& h, u

    0 W# a- f. g" L# ^  z%BP网络训练1 i- q9 q/ J$ Y/ l  i- N
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');+ E' \* \0 g! F. V. u
    net.trainParam.show=1000;
    4 j* ?# G( O7 C7 l: J5 m5 m- H' cnet.trainParam.Lr=0.05;
    6 U5 i: t# l3 q) C. [net.trainParam.epochs=50000;# M! z8 N* X5 D" Z) [' H9 u
    net.trainParam.goal=0.65*10^(-3);, Z1 Q$ x, g3 g# z! I" S: H7 v3 J% A
    net=train(net,pn,tn);
    / j. D1 _+ T! f& A7 D! C+ C7 u3 W9 Q8 d4 l. S+ E, ~" s$ l8 ~- B
    %利用原数据对BP网络仿真
    # C4 m, @: }! l" dan=sim(net,pn);; y5 e% d& U' b3 D0 E
    a=mapminmax('reverse',an,ps2);" A& p8 r' e6 i# q7 C! Y9 @

    5 O; \" F5 u. _; W4 o1 S1 X! n%仿真结果与原数据对比测试
    6 p2 s$ Z- y. B( y2 d5 P+ Jx=1990:2009;  E8 R- X; B- L6 I, E
    newk=a(1,;
    ) h( L* y* j9 I  L  q( N0 Pnewh=a(2,;6 u3 h$ ~) q, l
    figure(2);( l- J, {: E% v! ^+ `2 E! P
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');  |6 J& ]5 y" Y- k6 c
    legend('网络输出客运量','实际客运量');
    8 }+ u1 E/ T8 pxlabel('年份');ylabel('货运量、万人');: v& h8 p( @, T( z- x1 w- u( y
    title('运用工具箱客运量学习和测试对比图');
    " Q8 V; w) l1 b; b! dsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');4 x, Q; O* v# \+ z
    legend('网络输出货运量','实际货运量');  D; }5 J# e: K: n* Y- ~
    xlabel('年份');ylabel('货运量、万吨');
      z# L0 l- M* _7 ]% ]/ Ttitle('运用工具箱货运量学习和测试对比图');
    % }+ f+ ^9 E4 b2 F) x0 b) w3 P! [5 s% W( p& L# F
    %新数据仿真
    " ^& H$ }) z  N8 i6 C9 fpnew=[73.39,75.55
    & o5 H" x) R0 @    3.9635,4.0975! @" c, J# s3 W+ }- n/ j$ c8 w2 P" {9 T
        0.9880,1.0268];
    8 k0 U' \+ Z& v* h9 {8 ~pnewn=mapminmax('apply',pnew,ps1);0 h1 K+ H. l2 l$ y/ t
    anewn=sim(net,pnewn);
    1 w4 j: V8 w8 r% {anew=mapminmax('reverse',anewn,ps2), o5 q# _& T: C9 x/ H/ G' N0 p
    (修改的地方用颜色标记了)
    ' c9 n- o6 F& l% c麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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. clc1 h2 r& n\" B  |  t! u8 l6 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,...
      0 d5 f, ]3 U3 U0 r
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];\" L6 t  w3 ]3 u, Q5 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,...
      . {) F7 q& E& G0 ]+ q
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      0 @3 c& X. J0 E; B\" |4 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,...& w5 u( I6 h1 ^
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      + h& p0 F: [2 L4 O! r8 a* T
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
        S2 U/ K1 D& o. q\" C
    9.      22598,25107,33442,36836,40548,42927,43462];7 X! g# k$ x; w
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...4 }0 K% }/ T: _/ i2 L, u0 x2 d  w
    11.      13320,16762,18673,20724,20803,21804];
      ' Q8 M  S4 F6 T+ D- _5 m$ K
    12. p=[sqrs;sqjdcs;sqglmj];0 R3 l7 h' b1 K3 x
    13. t=[glkyl;glhyl];
        f( I, o( G\" {7 n# L% [4 L
    14. %数据归一化: N) v- c  H- G$ v
    15. [pn,ps1]=mapminmax(p);) H0 F, }% s  C  o5 N% O
    16. [tn,ps2]=mapminmax(t);
      ; R& Y+ M+ ^$ w) q3 I  F
    17. %dx=[-1,1;-1,1;-1,1];8 d9 m' c2 U6 D7 d: e
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      2 C: h! b! l  p\" d\" v4 m

    19. - u) Y; S. R& {\" Q
    20. %BP网络训练
      , u7 d$ C6 c0 p
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      ) s$ f& P4 m  w8 B
    22. net.trainParam.show=1000;/ @# V* s( {* C5 i$ E9 L- t
    23. net.trainParam.Lr=0.05;* Y% {  ~3 X1 B
    24. net.trainParam.epochs=50000;
      0 {# C% G& s  z! u3 n2 j
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]5 w- k\" Z7 T' C7 ^
    26. net=train(net,pn,tn);9 h3 T  Y' s5 i; Y2 a
    27. 0 A* S0 m/ D$ y; o9 j
    28. %利用原数据对BP网络仿真& m1 ?( o, L- l
    29. an=sim(net,pn);- `6 E\" p\" w% h7 ~\" P
    30. a=mapminmax('reverse',an,ps2);( Q8 L7 O, I! p

    31. / s  j6 z8 x8 f# U  P) `
    32. %仿真结果与原数据对比测试
      / ^: e- ^& O\" x4 M( I
    33. x=1990:2009;
      1 x4 P' S! K' w( Z$ l
    34. newk=a(1,:);& v& a3 g$ G' ]) M# X+ o
    35. newh=a(2,:);4 v5 S2 E7 F) A3 p) y- k, T6 O
    36. figure(2);
      7 b. ?+ ?, y\" T: ~
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');, Z9 U9 S  @1 N  J, R3 [
    38. legend('网络输出客运量','实际客运量');5 t! c0 u# G% m7 s4 W\" ~* W
    39. xlabel('年份');ylabel('货运量、万人');
      & t5 q/ U0 ?& t8 T0 V
    40. title('运用工具箱客运量学习和测试对比图');
      ( S: m7 `& M, `& X; s6 G
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');+ Q6 B' p7 e, l4 K' }\" A
    42. legend('网络输出货运量','实际货运量');# v6 L. _) m) [, E* f2 {\" E5 T; g
    43. xlabel('年份');ylabel('货运量、万吨');
      & ]9 ~, J+ E$ T- c5 |
    44. title('运用工具箱货运量学习和测试对比图');% ~0 W! ]4 @) [1 v6 |% ?1 Y

    45. 6 h8 D# q1 q4 k9 G\" l
    46. %新数据仿真
      . u+ ]$ M% k& ~
    47. pnew=[73.39,75.559 O: a! U8 Y8 y1 }! L9 R  d* E
    48.      3.9635,4.0975  ~. A* J. H5 g2 U: t) z
    49.      0.9880,1.0268];4 d/ J8 ]. R! a1 @$ M6 b\" B
    50. pnewn=mapminmax('apply',pnew,ps1);5 c% @2 C3 F3 v$ h9 W( n
    51. anewn=sim(net,pnewn);' M4 E! h( q\" y) B
    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
      3 x( w\" X) h5 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,...
      ' M; C3 B7 l0 ?( `+ j; J, m. O\" h2 w3 p
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      . V+ g+ ^8 N/ z$ f
    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,...
      % _- k. o\" B# h
    5.     2.5,2.6,2.7,2.85,2.95,3.10];0 b0 d4 `, `0 q, _# @1 D/ t0 F6 Q
    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,...
      # h# q% v7 u& K$ V
    7.     0.56,0.59,0.59,0.67,0.69,0.79];3 k! Z9 h' z9 {; o6 V; L1 C3 `
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      3 _8 `9 C\" J, r, Z  I\" C0 [) H2 W
    9.      22598,25107,33442,36836,40548,42927,43462];
      , V0 P\" ]+ @\" }5 l
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      5 i5 \( H4 L7 p
    11.      13320,16762,18673,20724,20803,21804];3 |+ ?; O5 O$ W5 q6 B* _
    12. p=[sqrs;sqjdcs;sqglmj];2 ?; A# X( f' o3 `, \
    13. t=[glkyl;glhyl];
      # I% s9 C3 \* s
    14. %数据归一化
      ) J0 v! r) ^' q
    15. [pn,ps1]=mapminmax(p);( p4 T: [$ C% c\" C& j\" u) c
    16. [tn,ps2]=mapminmax(t);
      1 ?8 B1 M5 b. M2 O) W2 }( _3 m' J
    17. %dx=[-1,1;-1,1;-1,1];4 p$ \: [$ Z( Q, L4 r6 x3 F
    18. p0=minmax(pn);t0=minmax(tn);
      7 y1 [; }. p% N, e. o5 q

    19. 3 x# U, ~, x3 q2 `+ ]+ y
    20. %BP网络训练$ [6 \! t# x  h- w1 S( {
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); 1 v+ ~8 V+ ?\" w0 s
    22. net.trainParam.show=1000;
      9 J0 y, q2 {$ X& y; u3 k% P
    23. net.trainParam.Lr=0.05;, ~. P' H2 V: r2 Z( D! x# l& m( g
    24. net.trainParam.epochs=50000;0 q, {+ e2 y2 Z# z# a1 L' F* D7 E- b
    25. net.trainParam.goal=0.65*10^(-5);+ w1 e, Q' v- J( v. s
    26. net=train(net,pn,tn);9 n9 s- x# g- B; k0 {

    27. 4 I7 T* V% ~6 t$ N( k
    28. %利用原数据对BP网络仿真
      8 x5 u5 ~% B: Y( |9 K
    29. an=sim(net,pn);1 U7 i4 S. B\" s* G! G9 B
    30. a=mapminmax('reverse',an,ps2);: _\" J2 N1 c. d1 G
    31. ) y% \  A\" A) y% l
    32. %仿真结果与原数据对比测试 & g. h+ a; Q. Z+ G) B1 l0 L. n, [+ L
    33. x=1990:2009;3 f' |) i- A7 t  h
    34. newk=a(1,:);$ K- e1 L6 {# F; o
    35. newh=a(2,:);
      % U8 G  H5 x6 n: e0 W. }( n
    36. figure(2);\" z9 b6 g4 j4 e% U' t& g) v0 g
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');6 `* h/ I5 D- o: N) W
    38. legend('网络输出客运量','实际客运量');
      - S! J, S2 ~% `5 }4 |) u* D3 t
    39. xlabel('年份');ylabel('货运量、万人');
      , r+ X7 C4 P* b
    40. title('运用工具箱客运量学习和测试对比图');
      1 i8 n\" q% y5 c# V\" J3 ^* |4 b$ ^
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');: J( ?' P, d/ W
    42. legend('网络输出货运量','实际货运量');
      + e, |) e' G- @: r
    43. xlabel('年份');ylabel('货运量、万吨');; K# [: }( k$ |2 n- Z8 k! Y! R
    44. title('运用工具箱货运量学习和测试对比图');
      7 p5 Q9 f8 ~9 u

    45.   B\" {4 K0 ^) Z: J# G% p
    46. %新数据仿真
      ; [+ ~, |2 a+ A% m/ M8 W
    47. pnew=[73.39,75.55
      \" b1 f  p; |: D4 \
    48.      3.9635,4.0975
      * R: F8 j' T. p/ F; t3 I6 }
    49.      0.9880,1.0268];
      7 A  ~! K9 c* @0 ]) g
    50. pnewn=mapminmax('apply',pnew,ps1);
      3 e$ o- Z+ ?- L3 L
    51. anewn=sim(net,pnewn);; X+ B; s\" k( W  M
    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 ) f1 f# z/ J: @
    忽略我上面那个,改动的地方在18,21,25行……求批

    * j2 N7 H1 l# K' Q+ }* B' ?确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

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

    群组: EXCEL

    1. %BP网络训练; f! G1 O- j4 \9 V$ R& M
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      ; S6 p\" {) G8 M& N8 U- }
    3. net.trainParam.show=1000;' z1 X) e2 S. M5 i
    4. net.trainParam.Lr=0.05;
      / w' C* {: f( `. q2 r
    5. net.trainParam.epochs=2000;' n2 M! p8 R- w4 M. m4 q
    6. net.trainParam.goal=0.65*10^(-4);
      / y( r4 O% I) i6 w' @' u
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    4 L; d3 M+ j. Q5 A& ]一、改成单隐含层的,6个节点
    * y4 g& Z0 W- _4 C* ^二、训练函数改成梯度下降BP算法 traingd
    . G2 Q' d; p0 J/ B. `! [三、迭代次数改成2000
    " b$ |4 w: I5 B( Y' U, c7 S上面的参数是自己试的,我也不知道为什么。) c1 {9 k# `' s1 E. U. j! J
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    : v! N! o! P8 r/ }# v1 A3 f# k3 ~  n! I$ @关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

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

    群组: EXCEL

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-11-1 09:29 , Processed in 0.294157 second(s), 102 queries .

    回顶部