QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4771|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
      ?* I& Y% W7 q" m3 `
    & l/ `3 P3 n: {3 {  o%原始数据输入
    / N4 Q. v" F" C9 qclc2 t+ L6 @9 X% ~
    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 L4 v: A9 r+ S4 o5 S# Z% b9 c0 U5 t    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    7 ^; X9 ?# x- f, Psqjdcs=[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,...* Y- e0 M; J5 Z/ i. ?
        2.5,2.6,2.7,2.85,2.95,3.10];0 t2 e8 _" y7 i& L. B
    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,..., _+ T8 m( D# O
        0.56,0.59,0.59,0.67,0.69,0.79];7 O# e+ P: y: |0 {0 F2 ?5 Y' [8 ~
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...( @7 I  H% h) I6 P
        22598,25107,33442,36836,40548,42927,43462];* v% k2 \: e- O
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    " B- g! V  l* F3 S* M3 C& q1 _    13320,16762,18673,20724,20803,21804];+ Z7 x* i- t8 k! {. V
    p=[sqrs;sqjdcs;sqglmj];
    ! _4 J6 A- I. ^4 [+ P+ q+ Rt=[glkyl;glhyl];8 M2 h) z$ d$ H; \0 F6 L. B

    ' m! a5 X; I* f% O5 C%数据归一化
    & {: u) G! _2 }2 J. K' P- X[pn,ps1]=mapminmax(p);
    1 S& ~5 r, f* n% L" F[tn,ps2]=mapminmax(t);) p% G8 [  Z3 m
    dx=[-1,1;-1,1;-1,1];$ p, j; v# h2 v9 C

    4 Y% @9 w" j- `1 F# ^%BP网络训练6 X2 e% {' a/ W" W5 i# q9 ~
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');' v. [5 F5 t. Y! z
    net.trainParam.show=1000;
    * P' l: G$ X4 B) j3 A; d7 Pnet.trainParam.Lr=0.05;# L0 t7 y7 a8 v4 W) C' p9 J4 B
    net.trainParam.epochs=50000;! r/ O0 I' P  H# ]1 C5 H
    net.trainParam.goal=0.65*10^(-3);
    % q3 v* v2 Q! r( [; v. L/ j: Vnet=train(net,pn,tn);& q* [" g. ^2 H
    8 F' \7 C2 ^# ]  b5 _- x; _( E& Y
    %利用原数据对BP网络仿真
    5 K8 ^4 X/ c/ K0 D3 Z  van=sim(net,pn);1 q# g2 [. S  V& b" {, O
    a=mapminmax('reverse',an,ps2);
    # {9 P/ X: i8 o3 l& C% S' K( q
    2 _$ _8 b. R/ W# N%仿真结果与原数据对比测试" M/ A; z4 k. R3 F1 U3 B
    x=1990:2009;5 b2 [( K1 u8 K! Q' B1 b
    newk=a(1,:);9 _8 y; M  p2 |
    newh=a(2,:);
    9 Z; m! k$ n% v3 E" ~! Xfigure(2);
    % |% R: K2 ^  p. u7 ~subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    - \9 s* Q, N/ V* `) Ilegend('网络输出客运量','实际客运量');; A2 O; k; S, H# ?" y, ^
    xlabel('年份');ylabel('货运量、万人');
    % U0 I$ i. M; L$ G) ititle('运用工具箱客运量学习和测试对比图');
    7 M9 f5 Y' k/ h- g" j" G: Bsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    5 u$ A, J4 E: @3 Z) Y! @; Jlegend('网络输出货运量','实际货运量');
    / z9 l# u6 j/ N: c+ s) E4 @xlabel('年份');ylabel('货运量、万吨');" s* I/ a7 w% x/ X2 l3 s. o
    title('运用工具箱货运量学习和测试对比图');- a+ V( s: ]$ W- [! H0 N4 [1 k

    ! L- J9 x3 n3 X/ S$ i+ A, b%新数据仿真
    ' m+ ~% p) K3 h; Hpnew=[73.39,75.553 H$ J& w" Z0 m/ C$ H
        3.9635,4.0975, [* c' h$ g) h4 w$ A0 t4 W- p
        0.9880,1.0268];9 r  ?  i6 ?' \; K2 P6 c5 n1 F4 C
    pnewn=mapminmax('apply',pnew,ps1);
    7 ]+ w0 m: }1 z, L  C8 |& t# banewn=sim(net,pnewn);
    9 {; M; S  Q0 U# \anew=mapminmax('reverse',anewn,ps2)8 M( h+ V9 \3 ~( u- z# h0 p
      y7 L3 t/ K$ n& ]- ~/ a2 |

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

    `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 . M, Z& h5 Z/ l. H+ @8 `! E
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    2 Y, c) G4 l5 E$ c/ C- e6 d
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    + D8 \0 r  ^# S3 f* e$ ~7 [net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');6 h+ T" m. X0 L* `3 y6 X- w8 V
    我修改为:7 P8 ~% i! t/ u
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');7 p& f) H5 z: w; w
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:8 \* |/ f  y! J
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    : L  V: c$ z1 b7 }+ z# E- Y* E$ qa=postmnmx(an,mint,maxt);
    ( c7 S( A8 P2 a+ t% ^- E  r6 bpnewn=tramnmx(pnew,minp,maxp);$ v8 a6 w6 O' e% {) ]4 c4 s
    anew=postmnmx(anewn,mint,maxt)
    , L- ~' B: F$ A( X1 G: ~我修改为:
    8 u) u. V0 R4 o[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);) X4 |6 {, v' {$ A- D
    a=mapminmax('reverse',an,ps2);" m# L7 M, {2 {' @7 h* }
    pnewn=mapminmax('apply',pnew,ps1);
    ! o8 F+ R1 V& T! manew=mapminmax('reverse',anewn,ps2)
    7 z* s+ t6 Y6 i3 P, T. r
    ; V2 L# J% U7 m' c# H' V原程序为:
    ; U, X5 K) V2 T# Z1 a6 L- ^3 X) B%原始数据输入( a# q' p, h' C7 G9 L5 L, I
    clc
    / l3 a( ~$ p0 I! nsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    % v8 }$ E. c# }9 \8 c, c' B+ A    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    $ @- k9 v9 W+ O9 usqjdcs=[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,...  |( Y; S; D) [' d) a; ^
        2.5,2.6,2.7,2.85,2.95,3.10];
    / [# C# M8 P+ C- esqglmj=[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; U* p! ?) P# Z
        0.56,0.59,0.59,0.67,0.69,0.79];
    ; E. X4 ]- A# wglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...1 z. W' R. r* w4 _
        22598,25107,33442,36836,40548,42927,43462];* m- f4 o: I1 s+ @8 K6 O$ z
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,.... Y! O  C8 w  r8 D* L3 q0 r
        13320,16762,18673,20724,20803,21804];
    ( H9 A" v: {. @3 yp=[sqrs;sqjdcs;sqglmj];
    9 M/ I. c9 G$ n, et=[glkyl;glhyl];
    : P) z& Q+ Z3 e" B$ c( ^8 [4 B7 k* d' L$ v  T) n1 m; @
    %数据归一化( }# l) l3 ^/ a7 ~  c8 W/ o1 f
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);* g6 O) _) |% d0 _: b5 K9 y# R  s
    dx=[-1,1;-1,1;-1,1];
    ; W# M# w/ ^* S' ?/ g+ Z

    7 @# J9 z1 o5 Z0 x%BP网络训练
    ( F; s; H" ?# s- M1 Mnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');. Y& u! _+ Q. x; X- q8 x7 a+ v
    net.trainParam.show=1000;/ Y4 {# R- N. S5 M
    net.trainParam.Lr=0.05;5 u0 }, M# P" @' B$ B  n
    net.trainParam.epochs=50000;6 E. [9 X. M! r% r& b
    net.trainParam.goal=0.65*10^(-3);
      M+ G/ ]3 n$ D$ g, p. Fnet=train(net,pn,tn);
    9 G3 U* q$ D- M' i  i- m+ F5 p2 c6 x6 a# u: K, I: A1 k% ^
    %利用原数据对BP网络仿真
    0 r& n+ y, n; m# Z" M' t' Q  ean=sim(net,pn);6 o! O( y* P9 m1 F+ K2 O
    a=postmnmx(an,mint,maxt);
    : u( V; r) N& j; N% C: P/ g
    5 a/ d3 r3 m9 ]( c3 W! L$ l/ H%仿真结果与原数据对比测试5 \* J7 L! f( m! _6 y: l
    x=1990:2009;
    $ Z' h* v* h( q2 G3 Hnewk=a(1,;
    + }% c" o; v+ P3 Qnewh=a(2,;- P& C+ b. e3 t
    figure(2);
    : X6 g, @9 W  {* g  v! z4 J* b/ L* Bsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    ! w! c& w" C7 I8 |2 j$ blegend('网络输出客运量','实际客运量');* h5 _2 p( Z$ k- `: b6 g
    xlabel('年份');ylabel('货运量、万人');
    ! h" v8 T+ _( e; Atitle('运用工具箱客运量学习和测试对比图');6 h7 @, x; `0 @; W/ Z' {. [
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    8 t$ s) g! T& R9 G/ U% Q8 [legend('网络输出货运量','实际货运量');4 u  P# W* t  |8 U
    xlabel('年份');ylabel('货运量、万吨');& p1 m: L) i9 |/ m) U' L: z# B
    title('运用工具箱货运量学习和测试对比图');
    9 |6 P+ K- \5 B4 d/ o) _/ n1 f$ l# s1 q# h- H
    %新数据仿真/ z9 G3 O5 h* J* R0 {/ `; x2 ^5 }- N
    pnew=[73.39,75.55
    + V. o; A( T/ B$ c, c    3.9635,4.0975
    * s+ H! p7 e$ R# I* x, O    0.9880,1.0268];# q- Y( V) M4 c9 P4 E" n# @
    pnewn=tramnmx(pnew,minp,maxp);
    $ c- x7 Q" P( F! |% Z2 eanewn=sim(net,pnewn);
    $ `/ R) m' y+ H/ s2 I" W+ Ganew=postmnmx(anewn,mint,maxt)

    3 X4 T9 ]" [( ?9 t7 g/ i2 V% n+ y: ^3 L( R5 v! J. ]# ~
    修改后程序为:8 |, @8 `: \7 O/ }5 p# ]
    %原始数据输入+ k* F- D# B$ Y" d
    clc1 ~7 I* m& s. f/ a% ?9 @* p
    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,...
    : V( S) U' W  d/ V    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    - D, J) M1 b0 j# u$ ?! ?7 H9 Vsqjdcs=[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,...: a" p- c- |* g1 }- l$ G0 N& Z9 ]
        2.5,2.6,2.7,2.85,2.95,3.10];  R8 v" O$ t- D2 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,...1 S- i2 m# L1 n7 _7 M: r
        0.56,0.59,0.59,0.67,0.69,0.79];0 K7 E$ s0 w9 \: I" r
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...; |' u: q& z" \
        22598,25107,33442,36836,40548,42927,43462];
    ) o2 z7 c9 R/ c' o0 s8 q' Mglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    - R2 Y9 L6 u/ u3 u0 x    13320,16762,18673,20724,20803,21804];
    , v0 }& H. ?9 F# o. L! }  Bp=[sqrs;sqjdcs;sqglmj];
    . J" P  k5 I' s  c6 `t=[glkyl;glhyl];
    + g: a5 X+ _+ c( L. {6 v
      e- Q# @+ W" {5 C$ n6 V, {3 j8 Q- {%数据归一化6 T; o4 R+ E+ J1 X; K# v: W
    [pn,ps1]=mapminmax(p);. B& a# K, y* a7 Y7 X4 \+ x
    [tn,ps2]=mapminmax(t);
    % Q5 x- h8 I' z7 W' L8 @+ d  q( I% g) P
    %BP网络训练
    $ I$ V2 o/ V) q: W$ H: bnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ( y( G3 U; ^" r3 gnet.trainParam.show=1000;1 v) }9 G! `7 S/ n
    net.trainParam.Lr=0.05;
    - X/ T, Y. V# F$ q, G1 G1 u7 ]3 Wnet.trainParam.epochs=50000;7 ~2 D! I8 e* m: J6 Y
    net.trainParam.goal=0.65*10^(-3);) E0 W' B' I1 @& ?% u
    net=train(net,pn,tn);4 a$ n  [0 t- P! ~: T6 w* Y  u
    + r5 o2 ]. \* y
    %利用原数据对BP网络仿真
    % g- V9 ~' q% S- a) ban=sim(net,pn);5 ~. ^# O# v" p. p! m
    a=mapminmax('reverse',an,ps2);
    9 V5 O1 V0 c9 w( Z( k, h9 R$ J2 M
    - _6 _+ I# n8 j%仿真结果与原数据对比测试$ B( I0 E( f4 v
    x=1990:2009;
    ' e. ~$ ?4 ]) x- l$ A2 cnewk=a(1,;, l$ `0 f$ \" U( e2 `1 p- J
    newh=a(2,;
    6 x  d5 h5 H  y. i; `2 Hfigure(2);3 x0 |, r7 D3 o' P; K
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    8 q) V" r8 F. n5 B; \legend('网络输出客运量','实际客运量');
    ; R9 d1 @3 l: V3 Uxlabel('年份');ylabel('货运量、万人');3 ?/ G& s# ]" f; L
    title('运用工具箱客运量学习和测试对比图');
    ( C9 z# ?: ~$ D& ]; m) K( lsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    : l# k) E- W# n# hlegend('网络输出货运量','实际货运量');
    0 X, D$ B9 G3 kxlabel('年份');ylabel('货运量、万吨');
    4 f. Z+ i: P7 P/ Ttitle('运用工具箱货运量学习和测试对比图');  P! K. I; \- g- _8 O! w/ O

    " F; C0 {- T4 C" r+ @; w1 Q3 T%新数据仿真
    # N+ K; s+ X0 tpnew=[73.39,75.559 \! j5 a* n) {9 O2 h. |
        3.9635,4.0975  h2 r& O& D0 O9 k
        0.9880,1.0268];
    1 ~( E: R! r$ jpnewn=mapminmax('apply',pnew,ps1);
    ) f: L. q# g( _+ a6 Banewn=sim(net,pnewn);0 W- E$ \" n2 O
    anew=mapminmax('reverse',anewn,ps2)
    ) a! i2 D4 x# y2 F& T/ w9 I7 o; _(修改的地方用颜色标记了)% s0 P3 Z$ \" h4 y/ H& R, o
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      3 ], D* t9 D( o. W8 z9 N3 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,...6 f' @( E$ T+ p  W
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      7 o1 v8 L+ g. x8 R8 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,...
      # \0 a5 R& p% [
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      / i5 D) a/ F) y9 T, @8 n
    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% S+ D  n+ m9 T- w
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      $ c3 c4 O6 N; ?) z9 o: h! n8 w# x
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      + b7 `  c0 I. ]6 S% B' H& P: z; m( r9 B
    9.      22598,25107,33442,36836,40548,42927,43462];  J0 U6 t' i4 K. v3 \& v& v8 E
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      8 Q7 ?\" i/ J; g3 M6 O  j1 U# F% t
    11.      13320,16762,18673,20724,20803,21804];$ e$ }/ _+ u3 o5 Q' _+ z5 f8 `
    12. p=[sqrs;sqjdcs;sqglmj];, q\" V& c8 i1 A5 s
    13. t=[glkyl;glhyl];
      % H) m( B* {7 p$ j! L1 `+ t
    14. %数据归一化
      3 P6 r$ w. [$ l8 Q! p9 \
    15. [pn,ps1]=mapminmax(p);/ B  J: @\" e: [
    16. [tn,ps2]=mapminmax(t);
      9 d' B8 a+ B) l4 s$ n
    17. %dx=[-1,1;-1,1;-1,1];
      # O/ C9 g) M! H6 I0 l7 K* d
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]9 Y! Z4 \9 S/ J

    19. 3 p2 A1 [( Y' ]  p3 X: y; n
    20. %BP网络训练
      ' U% P) C0 b- O' m
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]  {; @( i. G5 ?( z2 W
    22. net.trainParam.show=1000;
      + W/ q# D) d2 I3 {
    23. net.trainParam.Lr=0.05;
      & T8 u3 d  ]( e6 W; T( @
    24. net.trainParam.epochs=50000;; Q% t; A1 j8 B7 C2 x\" W8 b
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      8 F' K- D\" l; S8 G5 {& D  h
    26. net=train(net,pn,tn);0 e( Q) \' A1 v) f) G

    27. ( v8 A2 Z0 Z: V+ H) V, t
    28. %利用原数据对BP网络仿真
      ) s- ?9 [5 k2 p3 g2 @
    29. an=sim(net,pn);7 O$ {0 c8 j* [+ g# j( T
    30. a=mapminmax('reverse',an,ps2);
      $ k6 w( \. P+ _# X, Y  L$ n/ ], X
    31. % ]! f& c9 K5 P8 m
    32. %仿真结果与原数据对比测试 ( z\" h3 `8 e, V: E4 _
    33. x=1990:2009;- ?0 H* v3 `1 G% a- g1 \
    34. newk=a(1,:);& k& V: [& \: E9 ^. S5 e
    35. newh=a(2,:);
      + L% o& e5 x# G) g' T
    36. figure(2);
      7 L, q' X9 d  d3 I3 w! P
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      3 s4 B% J7 }0 h8 P% n( k. Y/ d
    38. legend('网络输出客运量','实际客运量');& f8 L6 c/ D0 G
    39. xlabel('年份');ylabel('货运量、万人');; p9 i; ^/ p- O& d# F
    40. title('运用工具箱客运量学习和测试对比图');/ `- n. x! l9 _! P2 H
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');/ N9 a1 S) x! V5 d7 ^6 T, i
    42. legend('网络输出货运量','实际货运量');
      3 G! e2 _( L9 u  E9 R& q
    43. xlabel('年份');ylabel('货运量、万吨');/ w/ r1 Q% l7 t. U) G5 X
    44. title('运用工具箱货运量学习和测试对比图');& S. y/ o# d6 L# M
    45. / Z5 B! c$ V( ?, ~& L% o/ Y
    46. %新数据仿真
      / U\" V5 S\" d0 [5 g2 h9 v/ f, v- t* N
    47. pnew=[73.39,75.558 v9 z' H5 c& ?/ N$ K* q- n
    48.      3.9635,4.0975' L) O& N3 R: M# ^
    49.      0.9880,1.0268];7 i1 J2 R7 k! `& Q& S* M. D
    50. pnewn=mapminmax('apply',pnew,ps1);
      4 B+ c\" v! H0 K3 T
    51. anewn=sim(net,pnewn);4 a3 G\" W( g+ j+ I: f% p
    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
      $ N# Y# j$ Y+ G
    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,...  A) F; Q  \1 y$ \5 _# J9 |2 a9 ~, q: N
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
        b4 T' x, F2 @& i$ 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,...\" O/ i; J: O. c0 ~/ v
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      ' s) w+ L  @! n: x8 T) a- U0 b
    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,...
        m+ B* ~& l( o7 {0 [& P! w' M& ?- P5 v; q
    7.     0.56,0.59,0.59,0.67,0.69,0.79];% e( a( }3 b0 _9 }
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      4 _- K2 }5 ]\" o9 j: \  L\" x
    9.      22598,25107,33442,36836,40548,42927,43462];  p# d1 Q; w\" h/ W\" \
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...; v6 u5 N! s) D- p8 y7 i, y
    11.      13320,16762,18673,20724,20803,21804];/ I! S) B0 [* i8 ]5 Y\" m+ [
    12. p=[sqrs;sqjdcs;sqglmj];9 t9 ]0 `\" @% w/ V
    13. t=[glkyl;glhyl];
      $ b* {2 D8 [0 {6 ?# \1 C- O$ m
    14. %数据归一化; [+ q4 V& V/ v6 O3 @% |# ?
    15. [pn,ps1]=mapminmax(p);, c$ K2 I* k; O* D1 V1 ?/ B
    16. [tn,ps2]=mapminmax(t);
      ) l+ w& Q\" h( O1 {
    17. %dx=[-1,1;-1,1;-1,1];# Y\" N* P: Q! ^1 {. S7 ^' B# G% O
    18. p0=minmax(pn);t0=minmax(tn);
      . M5 M) ^3 d0 r+ t

    19. 9 j$ a! L) U& a0 n% W) V  N
    20. %BP网络训练, x+ v* j6 _1 e# o, c
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); % m; M1 ^! g% J7 v
    22. net.trainParam.show=1000;
      / f3 D8 n! s! s9 P
    23. net.trainParam.Lr=0.05;( q5 S6 Y# @\" w6 j# s
    24. net.trainParam.epochs=50000;$ L5 Y+ W; M/ P' P; I/ O- h2 o, L* h
    25. net.trainParam.goal=0.65*10^(-5);
      8 |# m1 k$ ~, E& g5 S
    26. net=train(net,pn,tn);8 D1 ]' a1 C\" Q( C: |
    27. : x/ A0 I7 D/ l9 q: s4 E$ ?\" S( u
    28. %利用原数据对BP网络仿真
      1 ^1 M! y. z\" w1 {' `5 a9 N
    29. an=sim(net,pn);
      - U/ ?: Y2 c5 t& t- R  @8 a1 D- f- s
    30. a=mapminmax('reverse',an,ps2);2 B4 R1 R$ g; K/ \( I
    31. : K+ l7 _, J$ N4 g& C4 |4 c
    32. %仿真结果与原数据对比测试
      0 ?4 l0 L9 i' U, U9 j; l# i3 D
    33. x=1990:2009;2 Y/ f2 e9 \! Y0 n* ?
    34. newk=a(1,:);# A! j5 ?4 I3 ~6 Q
    35. newh=a(2,:);
      # a6 V$ Z3 K9 `$ V
    36. figure(2);
      6 R2 |) j& y1 z0 @5 I6 r
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      ; b' N9 f8 K, P+ N* s
    38. legend('网络输出客运量','实际客运量');
      $ K7 s  \4 {- T) E- \' q0 g8 m
    39. xlabel('年份');ylabel('货运量、万人');
      . N- L. g# ?) f5 Z5 t7 [
    40. title('运用工具箱客运量学习和测试对比图');, t; Z# |# F; x$ V5 E9 Y
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      . |' p9 ]5 @, h. i
    42. legend('网络输出货运量','实际货运量');
      8 j, d* k6 K7 G+ |
    43. xlabel('年份');ylabel('货运量、万吨');
      \" D+ N+ x  [( j8 e( i. @! s; H
    44. title('运用工具箱货运量学习和测试对比图');
      0 I* D9 G5 `& I/ f

    45. ) o8 o0 j9 `, I
    46. %新数据仿真
      % d* {% g) o0 m, i: B) f' H
    47. pnew=[73.39,75.55
      8 J! l4 T$ h+ a5 b7 k! ]3 I6 y
    48.      3.9635,4.0975
      ( m( R& R& m; i. B
    49.      0.9880,1.0268];7 b% q3 p% z3 p  y
    50. pnewn=mapminmax('apply',pnew,ps1);1 w( ?' ]* E# ^' e1 G
    51. anewn=sim(net,pnewn);
      \" C# P! {7 y: n! z( d5 N- B
    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 2 H8 w' k; j( ^5 b* Q
    忽略我上面那个,改动的地方在18,21,25行……求批
      \' G5 c7 i$ I! {
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      % y) S& F2 J' s+ I5 \, W( f
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      3 R, Z\" o4 y  c: Q6 b
    3. net.trainParam.show=1000;: p! @2 q! g0 [3 d
    4. net.trainParam.Lr=0.05;# m$ R% O' U: T. a5 c
    5. net.trainParam.epochs=2000;
        O  j, T# l. f; w+ H* {
    6. net.trainParam.goal=0.65*10^(-4);+ I4 m7 x5 l( n8 w& {6 B\" ?8 _
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    ' w' Y& ?5 V& J( j$ J% I$ r一、改成单隐含层的,6个节点5 i& R% m* V& H) h0 N
    二、训练函数改成梯度下降BP算法 traingd) g8 j7 q1 p$ r* Z, \2 f7 w7 G  \# D
    三、迭代次数改成2000
    5 R/ G1 @; _( s3 {: l上面的参数是自己试的,我也不知道为什么。7 O  F+ D" C$ g4 |7 e
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    . ]: t4 H" V% e1 i0 S5 A/ V关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-4-27 10:37 , Processed in 0.456379 second(s), 103 queries .

    回顶部