QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4322|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!7 X6 P7 }+ T$ _0 \) D& U: Z
    % s" L+ J0 u7 K' r1 y
    %原始数据输入
    4 ~! g0 H& g4 f. n, w+ ~' ]" ?* aclc3 D7 a5 u% M+ [
    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,...
    . |2 z. m' z; g0 R$ y  {    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];* g% i3 p  i9 i* l3 j+ ^3 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,...
    . |5 p- U' k! I! M6 ]    2.5,2.6,2.7,2.85,2.95,3.10];
    : j2 z. j1 }% x$ T! Q2 \- dsqglmj=[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,...' C0 t) v; b8 P% Q
        0.56,0.59,0.59,0.67,0.69,0.79];
    ' J2 s! q9 k' Z) m2 q% Eglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...; y$ x3 s# G, Z% E- S0 H1 M# F
        22598,25107,33442,36836,40548,42927,43462];
    " H5 S* {' _0 {- M+ S4 rglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...' F! B) i6 d  O. C( O  r" x  t1 }
        13320,16762,18673,20724,20803,21804];% ^! I6 N7 O: H7 z2 d  D4 u
    p=[sqrs;sqjdcs;sqglmj];( l  A" u+ p1 l4 p5 g) d
    t=[glkyl;glhyl];
    - j8 {4 w7 `! @. H3 R- J
    8 p! `/ O2 w; W( W: D5 ^9 @%数据归一化+ L; R, f8 a) ~% l* d6 h
    [pn,ps1]=mapminmax(p);
    1 x8 C( Z" ^# M5 a[tn,ps2]=mapminmax(t);2 i3 d2 g4 T& Z* c- f
    dx=[-1,1;-1,1;-1,1];
    " I% D' b# [  E) A+ I: R. Q: J6 F, \  h
    %BP网络训练
      X& D0 n5 L1 v6 Inet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');9 y6 c% H0 K- e
    net.trainParam.show=1000;
    / ?( O' F1 u' y& p# `* Xnet.trainParam.Lr=0.05;
    $ A0 v; l- o; P) ?" ~net.trainParam.epochs=50000;: g) [6 S6 y8 \. Y7 r% l2 J+ [
    net.trainParam.goal=0.65*10^(-3);) `' s9 Q2 Z  c* M9 w* n$ j0 G
    net=train(net,pn,tn);
    & d, {) e' }/ u/ A& S3 _2 o, u
    9 @7 C* Y- B* w3 _& D* T% H%利用原数据对BP网络仿真$ g7 ]: A; m3 R! \1 _7 O
    an=sim(net,pn);
    $ p5 F, [/ d4 Z& na=mapminmax('reverse',an,ps2);
    " f0 Y' x- o% N# o% \
    $ t: v, [. P9 t; x+ O1 n7 E%仿真结果与原数据对比测试) _4 E6 L/ z# t) }/ N
    x=1990:2009;
    - u7 [* R6 a" Q- e- `+ \0 Tnewk=a(1,:);! I8 M' m& Q/ F" Y/ Z( a  i
    newh=a(2,:);
    / y) K% _" L6 F( e. K4 s( _figure(2);
    3 n) e- T% _- J( p9 H0 Psubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    6 w* |/ d6 R- \4 N, Y$ y5 W  ^legend('网络输出客运量','实际客运量');# H  U3 Z% O, I( H) j9 H
    xlabel('年份');ylabel('货运量、万人');- V& u) W' o% j. O: y; b
    title('运用工具箱客运量学习和测试对比图');
    4 L/ o$ }. f/ ^subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');. t# [; w" l9 K# M. t
    legend('网络输出货运量','实际货运量');9 A9 ~+ s* A0 ]1 }, _
    xlabel('年份');ylabel('货运量、万吨');/ S6 |+ X& f0 Y& q/ t
    title('运用工具箱货运量学习和测试对比图');3 u. Q% ?) {3 i" Z
    : o$ p4 U# l; Y5 v" q5 a' E
    %新数据仿真9 Z7 I9 n6 J: h
    pnew=[73.39,75.55
    7 D% Y, F& U* ^2 A$ M; D    3.9635,4.0975$ S3 p5 i4 c- W1 Q+ m
        0.9880,1.0268];9 [1 p8 U5 H/ d' }+ w
    pnewn=mapminmax('apply',pnew,ps1);. G% V3 B% C% Z5 n6 p$ i3 v
    anewn=sim(net,pnewn);
    % S9 b2 _! f+ v9 s: kanew=mapminmax('reverse',anewn,ps2)9 `- t) p4 @) {
    5 S. t8 Q2 W3 V' c; r& z& W( D

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

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

    5 G" j. D/ B4 C) V1 _因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:" ]" F# O: X  e) @. g9 U" {
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    + f, a# z* ?; X' h, ?我修改为:
    4 b2 D! p3 G' \$ Q7 y+ U2 anet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    : g2 D/ }& w: [: m8 @9 g3 w然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    5 m* z( ?' ]4 ], g. R) e[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    / w% f8 y! |( [! |a=postmnmx(an,mint,maxt);2 J1 H( X& m) s) N
    pnewn=tramnmx(pnew,minp,maxp);
    , v" }& z. w, R1 Yanew=postmnmx(anewn,mint,maxt)
    9 B3 x* o- a7 ^* B+ i3 i我修改为:
    4 j. J$ ^3 Y* w" s[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);3 E' Y# A# G$ B* Z& i% a5 Z
    a=mapminmax('reverse',an,ps2);: M( l6 d7 o4 g4 O  q
    pnewn=mapminmax('apply',pnew,ps1);( I9 A. v) i8 b  K4 r
    anew=mapminmax('reverse',anewn,ps2)9 q, y1 _' U# ?# T

    1 v+ m5 y  @# @/ M- G原程序为:
    ( I. u* b6 Q" w%原始数据输入
    0 I7 g6 M! j( w) `clc5 r. o* j/ G# e- [# g7 B+ 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,...
    0 j+ h+ m# j/ _- S5 q6 H4 Z2 l    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      ?' h' }$ `$ l& u: ^+ msqjdcs=[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,...& v& {' i  c; A3 ^  J) E
        2.5,2.6,2.7,2.85,2.95,3.10];! m8 D# k: `2 `5 S. 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,..., [; J5 [$ f4 M
        0.56,0.59,0.59,0.67,0.69,0.79];
    # V: V  Z# ^$ c' Cglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    3 h  Y5 k7 v- m& D' c0 q+ L    22598,25107,33442,36836,40548,42927,43462];
    # @( G5 t9 n# T  D8 l3 M; Eglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    6 T: d( }) ]3 P5 c    13320,16762,18673,20724,20803,21804];
    4 X; M: _, n/ A9 x6 a+ Rp=[sqrs;sqjdcs;sqglmj];
    1 J! J7 r2 G1 C, T; St=[glkyl;glhyl];, R) [5 C& ~( |4 g$ ]

    : u$ i5 q2 N8 K1 S& r$ s%数据归一化
    5 P9 e2 {$ u1 T; B# x' h[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);: S9 B; {& w/ [% c
    dx=[-1,1;-1,1;-1,1];
    1 U1 _0 ~; A3 k$ b! n0 E

    ; C) P$ J0 ]6 C, T; c%BP网络训练  I! H) y  N: Z: `. r! y% D
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');7 V- x  R0 r0 I( T: x6 I
    net.trainParam.show=1000;
    , Y; u0 D5 u/ U: @2 b( d# z( Znet.trainParam.Lr=0.05;
    ; U6 s6 D  Y) E0 N- X7 b( I4 ~' @net.trainParam.epochs=50000;
    ( I9 @' O  b1 x/ N/ j6 a* r! Ynet.trainParam.goal=0.65*10^(-3);9 f8 _& S3 @& h# U4 N! J  w9 \
    net=train(net,pn,tn);
    - ?# x' y+ u& o. @/ v- d2 U, O$ \  C/ l8 C
    %利用原数据对BP网络仿真" C: M3 K; b6 j- p/ _& t" S
    an=sim(net,pn);0 j! O" K2 n1 P
    a=postmnmx(an,mint,maxt);* k- m+ ]3 k1 f7 e0 n
    1 u; Q% }/ k$ r$ W* k5 z$ H
    %仿真结果与原数据对比测试
    5 a/ T/ e/ E: cx=1990:2009;
    6 g% u" r$ p4 F' s/ xnewk=a(1,;+ L4 y, g7 f/ u: F2 y: M5 v% f
    newh=a(2,;
    1 D/ W; r' i9 [+ s8 m; Z) lfigure(2);5 m8 Q) C/ ^' @! }# v4 k6 p
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');- J5 \% Q+ S. y$ _$ R* A, x: x+ v
    legend('网络输出客运量','实际客运量');: ^1 [" k0 B) S6 ^* S
    xlabel('年份');ylabel('货运量、万人');  P5 V7 q7 Z- F4 e! F' r/ Y+ x& w
    title('运用工具箱客运量学习和测试对比图');
    ; Y8 u/ B0 K- ~subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    % Q; V4 l+ q8 K! x7 k1 U" |4 R8 F9 @legend('网络输出货运量','实际货运量');
    + k( r6 I- w6 a8 z, S+ J7 cxlabel('年份');ylabel('货运量、万吨');
    , o9 r! j# A4 F5 {2 n  Stitle('运用工具箱货运量学习和测试对比图');
    ! q! ?1 W, l8 C, ]9 n* ^1 c% p9 u4 _, T
    %新数据仿真  F7 ^% c! X: G/ s
    pnew=[73.39,75.55
    4 C- h1 ^9 a( x  Z. h) O2 V    3.9635,4.0975
    # c& `3 F5 e4 Q4 K# |: [  v1 [. ]    0.9880,1.0268];* U6 b( t' }% }
    pnewn=tramnmx(pnew,minp,maxp);: j$ F* R1 _% Q. [0 y& z
    anewn=sim(net,pnewn);
    8 r9 [& n2 g" y3 K1 @anew=postmnmx(anewn,mint,maxt)
    ( R9 G1 a; l" i: A
    ! @* [. k6 Q% A2 ~$ h6 X
    修改后程序为:# B, K0 z- |2 m, w5 B& n% C# P
    %原始数据输入
    % h: W* k, S9 a! A4 x* _) Iclc
      |9 F3 V& E( {; y: T" y, }5 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,...- V- u# L; r, j0 k0 M% W6 L+ k
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ' o8 c# E' {6 b( m2 Bsqjdcs=[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,...3 j& G1 B) }, F, w
        2.5,2.6,2.7,2.85,2.95,3.10];
    # x' M4 l% ~8 s. q* j0 Osqglmj=[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,...( J! {# j- u+ {
        0.56,0.59,0.59,0.67,0.69,0.79];; D, E0 _2 Q, x% A( v3 c
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.... _0 Q% [2 U" V; \& L
        22598,25107,33442,36836,40548,42927,43462];
    ; K: ~1 T4 {; x1 Q' g. ?glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...! g# Y9 c4 Q& I. [- c
        13320,16762,18673,20724,20803,21804];6 c' V2 M& \  d5 {
    p=[sqrs;sqjdcs;sqglmj];
    : E9 f2 `) i" q- H* g7 P8 gt=[glkyl;glhyl];
    . b. K$ x; F" b
    1 m) v- y, |" m& }% |. w) @+ p%数据归一化
    & E/ }  c9 Y, D& {; {/ e[pn,ps1]=mapminmax(p);' H# l" T/ f5 g6 j% n
    [tn,ps2]=mapminmax(t);2 Z$ ]& e2 [$ C8 Y( t1 M

    ' t0 O4 ~& h, f%BP网络训练
    3 a; A7 v, ^9 S5 p# n. Wnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');) j( ^# ^% r/ s: A
    net.trainParam.show=1000;9 y$ j7 n/ ]: L) ?
    net.trainParam.Lr=0.05;+ y- \. ~2 r% p9 z2 D
    net.trainParam.epochs=50000;1 C7 S( c2 m8 t
    net.trainParam.goal=0.65*10^(-3);  G6 E" d; g' {4 s5 V
    net=train(net,pn,tn);( k  j" U2 d8 F2 }# w8 V8 A2 @; o
    1 z+ Q3 E5 R4 }3 c
    %利用原数据对BP网络仿真
    % v7 b0 L! V$ w2 n% x* _an=sim(net,pn);
    . F% Y% `; _9 Ka=mapminmax('reverse',an,ps2);
    3 L9 p2 m  D9 D$ g1 U7 T% @1 F. [" l+ p  B& V; H' D
    %仿真结果与原数据对比测试
      ]0 u6 O: S* Nx=1990:2009;5 h- W9 }6 H% _# O) c6 F
    newk=a(1,;) u" `. I2 O, B: ~8 v" h- a  p
    newh=a(2,;# J; M& ]! O8 E' U( c! {
    figure(2);
    8 w% Y% }) n! hsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');. ~$ i  X5 ?( c& |4 U( V/ `
    legend('网络输出客运量','实际客运量');
    * o9 e# [0 f: t- o5 Hxlabel('年份');ylabel('货运量、万人');' V4 D4 E" a0 x# }
    title('运用工具箱客运量学习和测试对比图');6 `5 i5 F: I9 M' w; G* K  ^
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');1 c9 z% b2 Y9 B" _$ j# F
    legend('网络输出货运量','实际货运量');
    - D, {$ u9 \. A, g: ~xlabel('年份');ylabel('货运量、万吨');
    1 a6 e: Z# l& l0 B! [% ~title('运用工具箱货运量学习和测试对比图');
    2 }$ P% U; q, Y9 h
    + q' `* `6 s. D0 O%新数据仿真3 h" V9 \5 K: j  b% i7 b
    pnew=[73.39,75.55$ C# ^$ R9 p, \# d% B# s; o! _8 {
        3.9635,4.0975
    # u+ B2 T3 O' c- F    0.9880,1.0268];# T6 a+ _, f4 N3 e
    pnewn=mapminmax('apply',pnew,ps1);( L- V0 k0 v' F
    anewn=sim(net,pnewn);
    . D! O! k4 a* eanew=mapminmax('reverse',anewn,ps2)( Y  [  R6 V" a& D
    (修改的地方用颜色标记了)
    3 m$ D% C& C  Z9 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
      % }, X2 F* k: b. T9 _3 d
    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: @8 }% S0 Y$ y( J& a6 q
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      % k4 [3 G9 @+ R9 T2 d4 m
    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,...
      ( L( b4 w/ ^3 ^( ?8 q- j3 W7 U
    5.     2.5,2.6,2.7,2.85,2.95,3.10];% S( _, h! W9 P+ q1 q; R
    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,...) h4 N+ {% s9 T
    7.     0.56,0.59,0.59,0.67,0.69,0.79];# ~' l) B: {5 {1 P; z2 @6 r/ v
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      % ?# F8 x7 z) b
    9.      22598,25107,33442,36836,40548,42927,43462];# Z5 U* n  h1 Q1 C, t( s
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...  F4 u. ^/ G' r\" u3 H% Z
    11.      13320,16762,18673,20724,20803,21804];\" Z& I2 o8 w+ r% p. @, S- L2 C1 i
    12. p=[sqrs;sqjdcs;sqglmj];
      # {/ R; |; v) c3 f2 B
    13. t=[glkyl;glhyl];
      1 p% h7 Y3 j# c  E\" a. S5 ?* u
    14. %数据归一化
      ( R5 Q9 d; G2 b5 b
    15. [pn,ps1]=mapminmax(p);
      6 P3 Z, o# Z) r2 U
    16. [tn,ps2]=mapminmax(t);
      ' Z& t' H3 M8 H/ M4 m+ }  I+ }
    17. %dx=[-1,1;-1,1;-1,1];) j; _* G- l  s% Z7 ?+ t/ d9 i
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      * u( i; y( n( q  I
    19. ' w: w$ b1 r% [0 b
    20. %BP网络训练
      5 i# I% K, \3 A2 `8 N
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]4 A1 y' c' d' V6 A
    22. net.trainParam.show=1000;
      - ~1 X+ \7 X. d6 c
    23. net.trainParam.Lr=0.05;, ?8 D1 d4 f% T# r
    24. net.trainParam.epochs=50000;
      5 ?. N  p+ `$ o  e4 @
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      0 j$ d9 s2 F8 x& t: v
    26. net=train(net,pn,tn);\" ]# i% Z+ X0 V5 G3 e3 H: H
    27. ( T6 {$ k( I) `# M  c& _1 D- g
    28. %利用原数据对BP网络仿真
      7 M' h. G4 Q. |, M! `  |2 |( n
    29. an=sim(net,pn);
      ) r  [7 G  q! `$ m
    30. a=mapminmax('reverse',an,ps2);5 R, z/ Z/ T1 U

    31. 6 @5 M0 x1 V* p2 Y* o\" z! o
    32. %仿真结果与原数据对比测试
      , }6 A/ z; V: P\" R
    33. x=1990:2009;/ i. f( B0 q# h
    34. newk=a(1,:);
      : N: |/ R- ^5 v$ a/ V6 |  u) _
    35. newh=a(2,:);: e4 t; A$ K\" Q  o# |\" T3 ]\" ^* j
    36. figure(2);
      $ ^8 u9 b* U5 S
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      0 a* J1 }2 F; A. R% i8 g. j! y
    38. legend('网络输出客运量','实际客运量');
        ~  L% y/ S. l9 g3 j
    39. xlabel('年份');ylabel('货运量、万人');
        ]+ E# Q! d8 K+ |9 y/ \
    40. title('运用工具箱客运量学习和测试对比图');9 z, y# M. a6 ~5 s  `7 {2 O
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ' B3 X- E9 h: k7 X
    42. legend('网络输出货运量','实际货运量');6 E- r; m8 ]4 P
    43. xlabel('年份');ylabel('货运量、万吨');
      ) |' @2 N3 S1 F' D0 w3 @
    44. title('运用工具箱货运量学习和测试对比图');
      8 I- J0 u+ ?7 n: Q  g
    45. 1 Y' L# p! F( W8 z
    46. %新数据仿真
      ; z) B/ Z2 x; v/ R4 m( ?
    47. pnew=[73.39,75.55
      % p) a2 Q7 K. p+ z
    48.      3.9635,4.0975
      8 O$ ?% r  Y% q- d4 ]4 K3 e: B
    49.      0.9880,1.0268];
      & |0 l# _, T\" k$ Y! d  [5 g
    50. pnewn=mapminmax('apply',pnew,ps1);
      9 }0 B5 p7 |4 I! Z) s
    51. anewn=sim(net,pnewn);
      8 \' s1 r) N2 J7 p- x/ Q* F
    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. clc0 l2 L# ?. T8 Y) v3 y4 b
    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 e: V2 s. I( s: T0 O* ^
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];$ _- J+ `) U9 t
    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,...$ l) X1 F\" s/ ^\" O) E1 ~6 Q
    5.     2.5,2.6,2.7,2.85,2.95,3.10];( m9 S8 Z; 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,...
      ) }\" I6 `# o# O. f) |6 r5 f
    7.     0.56,0.59,0.59,0.67,0.69,0.79];, O6 L# H6 m! ^+ @7 B\" W( a3 r9 Q& o
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...$ e2 Y\" x1 t1 `\" y& W; q* ]2 t9 b
    9.      22598,25107,33442,36836,40548,42927,43462];9 }- ~0 ]! Y# Q- ~+ Q# \
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,.... q1 q9 [; `( k* k
    11.      13320,16762,18673,20724,20803,21804];% D7 q* h' q+ V  Z1 |
    12. p=[sqrs;sqjdcs;sqglmj];
      % c7 Y7 Z8 B2 E  N
    13. t=[glkyl;glhyl];
      $ u8 z6 a5 c9 Z! ]
    14. %数据归一化
      : ]% D: i2 n5 d$ K+ J  e
    15. [pn,ps1]=mapminmax(p);
      7 i/ V$ _# n) S3 H1 F4 _
    16. [tn,ps2]=mapminmax(t);
      # s' g0 `  `\" y: n1 q
    17. %dx=[-1,1;-1,1;-1,1];
      8 N\" X$ y* ^* l
    18. p0=minmax(pn);t0=minmax(tn);
        K/ K0 {2 N4 y  R; x. P

    19. * o8 d0 |+ M2 c4 K6 }7 g7 p1 M
    20. %BP网络训练9 M' R. a4 |\" b( L, G6 N, ^. E# n
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      1 Y' v4 N9 {  j9 `4 D
    22. net.trainParam.show=1000;9 T0 e% z+ i' d
    23. net.trainParam.Lr=0.05;. W% Z& m2 h0 [) d4 o
    24. net.trainParam.epochs=50000;
      * }' ?\" [- M: @- N\" m
    25. net.trainParam.goal=0.65*10^(-5);
      & s/ n) `6 J\" {  l- s- G
    26. net=train(net,pn,tn);
      % T& P) k8 J: @9 {

    27. ) ?; j( [2 K! d; v) ^
    28. %利用原数据对BP网络仿真
      ) C) F3 c: ^8 h( F
    29. an=sim(net,pn);1 @9 l7 b: j$ t% t& ?2 B* |
    30. a=mapminmax('reverse',an,ps2);
      ) D7 G6 J; ?9 d3 J8 {\" _8 R& {

    31. ; e$ Y! ?7 Y+ X  B7 d
    32. %仿真结果与原数据对比测试 2 Y5 l, u' n& t7 o( J; v
    33. x=1990:2009;
      7 E+ R4 A( Y  ?+ U9 l5 i# g
    34. newk=a(1,:);# \' `% f' {+ r, z7 `! Q- j
    35. newh=a(2,:);) r2 t+ ?! ]% Q: `: o; C
    36. figure(2);4 l) q\" T  K: b) U8 A5 u
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');! n6 `& y; S2 _! l% [  x& E
    38. legend('网络输出客运量','实际客运量');\" B8 M3 A4 g% _
    39. xlabel('年份');ylabel('货运量、万人');4 U\" X\" M! z4 O  G$ c( _3 O\" h4 n
    40. title('运用工具箱客运量学习和测试对比图');
      6 ^% i7 o- W  X: f, h. c\" }  E
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      . m7 Y$ @  p& t% b, R3 n6 X
    42. legend('网络输出货运量','实际货运量');
      \" w# j\" B  Z8 n3 W# `( e
    43. xlabel('年份');ylabel('货运量、万吨');
      4 R\" i* {# |5 C8 e4 a. T& H
    44. title('运用工具箱货运量学习和测试对比图');
      % ~: C2 |) S\" d0 W) ~7 N0 ?
    45. ' t% ?% r( S- X. P+ b; x- c
    46. %新数据仿真' T8 F$ _5 `+ G% `, D1 a/ A+ t0 M: n
    47. pnew=[73.39,75.55
      9 H4 a$ ~: B! M0 I$ d
    48.      3.9635,4.0975
      - A1 N% }$ q  m$ S
    49.      0.9880,1.0268];9 T2 K1 f2 \. @
    50. pnewn=mapminmax('apply',pnew,ps1);( {2 N; s3 y6 B/ P9 u' ^/ q( w
    51. anewn=sim(net,pnewn);
      3 S; u' I5 v\" q+ Z/ D2 T! e' 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
    1 x  Q. e; c4 R# ]* G# \' T0 b# |忽略我上面那个,改动的地方在18,21,25行……求批
    ! D  b( X( B) ]% b" T; @; a& _
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      - e8 f7 O; s' f, Q* \! }; c7 j4 r
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      : z! y6 _$ I5 `; }+ f
    3. net.trainParam.show=1000;
      4 ~4 }. `& U7 K' v& ~) a$ N4 U2 M
    4. net.trainParam.Lr=0.05;
      5 X6 N7 ~* {' J$ t
    5. net.trainParam.epochs=2000;
      + [) M+ t/ {0 p+ k! U) e3 O' ?
    6. net.trainParam.goal=0.65*10^(-4);
      - b' ]' N; K+ {# q
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    4 Y) @8 b. |% h! A) d3 z7 {, ?一、改成单隐含层的,6个节点
    1 l) @; c3 A+ H6 X& `2 q/ M二、训练函数改成梯度下降BP算法 traingd2 a3 w8 |+ s- S0 L$ r8 T; f
    三、迭代次数改成2000
    3 o) U$ F8 K* z* K) f5 ?上面的参数是自己试的,我也不知道为什么。
    3 E4 r, c  C/ y+ _7 [由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。9 h. r$ R( @0 s4 u! p: ?
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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, 2025-8-8 09:54 , Processed in 0.723320 second(s), 102 queries .

    回顶部