QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4748|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    $ M% N* y% t4 {# C
    4 O0 F+ a, i  M3 S9 {. v& Q: A%原始数据输入
    9 d" ]+ B4 L9 a& K6 u& Wclc+ L9 A/ F; W" |2 a# e0 v, f
    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,...
    : D/ [$ V% M# d2 D  B+ |    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    9 g$ m# S3 |" nsqjdcs=[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: d% Y  O# C: d) p9 S0 }* }% E
        2.5,2.6,2.7,2.85,2.95,3.10];* [  _3 ]7 x9 M' [3 ^
    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,...
    + ^8 @# F9 Q+ f0 ^6 V9 \    0.56,0.59,0.59,0.67,0.69,0.79];3 {9 f: X& q3 D
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    . {6 A4 C: F3 x! D3 U' S3 [- P5 x    22598,25107,33442,36836,40548,42927,43462];! F% m6 m  |. |
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ' Y7 `! n, l7 h    13320,16762,18673,20724,20803,21804];$ C9 }3 s) U) h0 f! ^; T3 v. _3 h
    p=[sqrs;sqjdcs;sqglmj];
    % D' `3 M+ y: r. M# Q4 ]t=[glkyl;glhyl];
    : C0 I1 \& e1 Z  L- V1 V: V- j5 p6 m! m1 G; S; v
    %数据归一化
    & c8 w! m, M2 M# r[pn,ps1]=mapminmax(p);
    4 f+ |9 ~" Q; M% `. t  Y$ o[tn,ps2]=mapminmax(t);6 A  E# b- E6 U1 I" r: S1 q
    dx=[-1,1;-1,1;-1,1];
    ( @9 U. {. G& w* Y; y$ ^( B7 i+ c$ ^5 U7 k0 ~
    %BP网络训练. M4 E. Q- a1 k# S  Z( [
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');% f" q8 @6 C6 _4 _, w
    net.trainParam.show=1000;
    2 p4 x% ]+ L5 g# Z* [# f3 {% Pnet.trainParam.Lr=0.05;" z. X) e: A( W+ t% e4 [
    net.trainParam.epochs=50000;
    * W: Q% T# p! _  Rnet.trainParam.goal=0.65*10^(-3);
    5 X0 f! U( ^  o: t4 inet=train(net,pn,tn);
    2 u3 y% \' b% x3 L# ?) `* T1 Y2 H8 m8 }! z* q8 I3 z
    %利用原数据对BP网络仿真
    , I, P$ q1 ?0 V. P# ran=sim(net,pn);
    7 t& x1 Z# l2 ?' h3 Pa=mapminmax('reverse',an,ps2);
    $ j0 A/ D! @0 C7 \1 n" k; F- k: \) P9 f# ^, s0 s& `+ r
    %仿真结果与原数据对比测试1 @  p, i  C# {# V2 `/ f9 q8 k
    x=1990:2009;
    / X( W+ d+ S: B1 c; P1 gnewk=a(1,:);
    - h! Q9 r6 P! h/ \+ n0 vnewh=a(2,:);0 Y  Q2 t) Q, j$ {( e1 k9 I
    figure(2);
    5 H3 k- H; k6 R4 Psubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');8 |2 v7 y  W& g! ]5 _: p) ^5 t
    legend('网络输出客运量','实际客运量');, C6 r( i4 K& }0 T7 m* e0 D
    xlabel('年份');ylabel('货运量、万人');) a1 p, `& k& u3 {
    title('运用工具箱客运量学习和测试对比图');; r2 h7 o0 o' g6 Z" K4 `
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');/ l2 p4 l( }+ E' M0 g
    legend('网络输出货运量','实际货运量');# s, V) b5 |. K
    xlabel('年份');ylabel('货运量、万吨');# U, z8 s# r  M
    title('运用工具箱货运量学习和测试对比图');
    ; E! s+ s9 G$ J/ K$ e) w7 L4 c9 t! z/ j" [3 P  ]
    %新数据仿真
    : e9 v) N2 B3 G- S+ ypnew=[73.39,75.55
    7 W1 K6 u- \" R$ F    3.9635,4.0975; b) O: h/ C+ P/ }8 {
        0.9880,1.0268];+ u1 [2 J2 j. U2 A# l
    pnewn=mapminmax('apply',pnew,ps1);
    / X, k, b+ ?8 ]' G- ]4 g' Qanewn=sim(net,pnewn);
    1 b4 I5 ?8 Q: ]anew=mapminmax('reverse',anewn,ps2)
    * W# {3 F9 W6 k1 p5 G7 G
    2 Z  P. x* e) x4 R

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

    `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 / b1 R, j6 o9 @# w* g
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    , T% Z" J* D5 Q, W6 S2 A; t4 Z! [因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    5 k& e1 e' D5 cnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');3 v& Q- B& Z! i% l/ F
    我修改为:6 Z" j# Q/ w# B6 N: X+ J
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ; S" H" M; U8 n# x) c7 U然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    ( m  ~7 e( Y" [# q  n[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    : f& o" f* s' R; _a=postmnmx(an,mint,maxt);
    7 x/ ]  Z7 q* C# g1 O* apnewn=tramnmx(pnew,minp,maxp);  C+ ]- F3 n) ~6 @& |6 p& Q$ I9 z
    anew=postmnmx(anewn,mint,maxt)
    6 j) \3 U3 c7 E% l' O我修改为:
    " F4 s+ W; X* w, Z1 z5 k[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    0 X( N, H! e: p/ ~3 `% ga=mapminmax('reverse',an,ps2);
    0 D6 S# v. Z3 X5 _pnewn=mapminmax('apply',pnew,ps1);
    $ l& s/ o# s/ h+ s* h# q0 b& X; kanew=mapminmax('reverse',anewn,ps2)
    ! v4 e$ z; ?0 W' Q. s, @: x1 B6 s3 l1 q+ y+ N* t  D# M
    原程序为:
    # T/ w$ H- S" X# m8 ?( w" E%原始数据输入
    % ~0 w: ~" I6 |7 _clc
    $ d1 w, c' c* z# t. Hsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...( F3 f9 ~9 W+ w4 r
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    % v% O2 W( j6 w+ {8 C0 n; ?1 asqjdcs=[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,...
    , u: P( k' D3 U; g5 ?0 W9 |    2.5,2.6,2.7,2.85,2.95,3.10];+ q/ s& g7 t7 T/ d
    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,.... j( z+ p. o, J
        0.56,0.59,0.59,0.67,0.69,0.79];0 a. E: c  w, f( q; U, h
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...# z+ n4 L% u' F; c9 b& ?
        22598,25107,33442,36836,40548,42927,43462];( M! r$ V# q5 N
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...  r/ {1 h! {/ v" M0 T$ S5 d$ O
        13320,16762,18673,20724,20803,21804];* A& j% s) _; E8 l' ?
    p=[sqrs;sqjdcs;sqglmj];1 i0 x! _6 X+ E4 G" z( S# x9 [. S
    t=[glkyl;glhyl];, L. v* t$ ^1 H" r
    ! p# Y6 u  v; d  j' a
    %数据归一化
    ; w0 `* L8 L& {* b5 {: F[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);5 h6 {+ J1 Z1 l: i
    dx=[-1,1;-1,1;-1,1];+ V; C8 P' b$ b
    6 k. y& k/ k* `. ~) }; b# t
    %BP网络训练. ]* W4 S/ L+ e" G* b
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');5 ^9 v/ x, @" ]  H; {7 [' H7 u
    net.trainParam.show=1000;
    $ `/ t+ Z* J0 X2 h  Wnet.trainParam.Lr=0.05;* w# ^$ F8 ~3 T( d5 q: L9 |% Y$ x
    net.trainParam.epochs=50000;
    * P! Z. }) ?: Rnet.trainParam.goal=0.65*10^(-3);
    . L/ m: j7 [! N  q4 y- ynet=train(net,pn,tn);
    ) l8 K3 h  |1 U& u, q- f8 ^# a, [
    % k3 i6 }  l" P2 e2 u7 o$ F5 {%利用原数据对BP网络仿真
    5 l+ l4 k  s$ Y8 i9 h5 Kan=sim(net,pn);" R- d' C3 ?8 S, Z7 H4 _7 z
    a=postmnmx(an,mint,maxt);* p% q$ c4 c3 N1 |2 r

    ( V7 K3 s& x1 P% s  d; W2 n0 r%仿真结果与原数据对比测试
    3 Y( J! F8 n# o% @. Bx=1990:2009;+ E0 j$ u' l* Q
    newk=a(1,;
    5 e/ P& x1 V) znewh=a(2,;& [: n6 S, \2 i9 v" P; ~  P) I% E
    figure(2);
    ( d0 n( m% u  h8 {" T, b8 Usubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    ( h, Z, Z* n4 q+ f* U# h* Qlegend('网络输出客运量','实际客运量');
    , k6 Z0 q0 z8 ]# e8 Qxlabel('年份');ylabel('货运量、万人');
    & @0 f2 V7 m/ h1 otitle('运用工具箱客运量学习和测试对比图');
    ( e/ Q/ A, A! h+ Osubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    " [3 S8 J5 k! N5 R9 W: Qlegend('网络输出货运量','实际货运量');6 [& C4 Z; B) k* e% l
    xlabel('年份');ylabel('货运量、万吨');: U5 z4 ~. B1 b1 {: g1 I
    title('运用工具箱货运量学习和测试对比图');7 V* q2 m& l2 G" ]/ w
    $ s7 H4 h. v% ^3 e* o
    %新数据仿真% L( b( d/ X0 t! z8 R4 k2 K
    pnew=[73.39,75.55
    ( `8 c! }/ l. g    3.9635,4.09752 }! g' `) H, G6 Y7 k' x
        0.9880,1.0268];; x8 I0 _$ }) C- z; d% X  P
    pnewn=tramnmx(pnew,minp,maxp);/ c# \* [' b8 ^: [! n
    anewn=sim(net,pnewn);0 Q( C9 M1 e1 o/ V
    anew=postmnmx(anewn,mint,maxt)

    ) j' m" S5 q' c+ t% N" W2 O* S8 d9 B7 D; ]! o4 C0 Q# C% h
    修改后程序为:
    & D8 |1 |3 {7 W/ \' X. A- p%原始数据输入
    % `8 Y0 F2 L7 I% j$ fclc
    % B4 }" Z9 ?$ E6 h- ~5 [' Tsqrs=[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 J  K, w- G) k! u2 v. c& C) g
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ; A5 c. K5 }& x5 M1 Rsqjdcs=[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 Q; r5 K% U; E" h
        2.5,2.6,2.7,2.85,2.95,3.10];
    - J2 \1 p* J( B. Z7 Wsqglmj=[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,...
    , R# s8 k0 C5 t9 y    0.56,0.59,0.59,0.67,0.69,0.79];
    + ?. \) M) Y* V4 p' F! j/ Bglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...# M( q5 s+ @5 f) A4 \
        22598,25107,33442,36836,40548,42927,43462];+ E, T- o9 t. F  K" j, U
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ' Y3 I4 Z- B1 Q) s  y) k* F    13320,16762,18673,20724,20803,21804];
    5 Q2 y. s0 J! `p=[sqrs;sqjdcs;sqglmj];
    ( [3 y% p* k  et=[glkyl;glhyl];& m! w4 F0 a5 H( F# N# F. Q
    ; Z/ K7 O, g. Y; O% x% V
    %数据归一化. {" K3 G% X+ ~$ K0 U
    [pn,ps1]=mapminmax(p);
    $ n# C8 s5 m. L9 S2 o[tn,ps2]=mapminmax(t);
    9 h; X' [5 U2 S8 w# F$ g+ r$ I  p- |( z8 V
    %BP网络训练  x. z' q! Y# v1 K" g$ }' ^
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');8 Y5 l: K0 O0 g7 ?' g& B
    net.trainParam.show=1000;
    3 [* }8 q, W# H0 onet.trainParam.Lr=0.05;
    / y& |) u& l3 M/ f- nnet.trainParam.epochs=50000;
    * @8 H, Y! |3 ?& x  x* \net.trainParam.goal=0.65*10^(-3);
    1 z% e# N$ }5 G0 dnet=train(net,pn,tn);
    6 `% x% f2 e4 j( K8 a# ?* Q. y4 ^5 y0 I1 C
    %利用原数据对BP网络仿真+ ^, ~6 m+ C1 Q0 A
    an=sim(net,pn);# m2 c+ Y* ^9 C; h8 k, S
    a=mapminmax('reverse',an,ps2);
    , S0 N: J6 a+ [* \3 O) R1 X) v% h! H- G$ x
    %仿真结果与原数据对比测试) ?2 a4 S+ m/ F2 \  x/ L$ q; D
    x=1990:2009;$ u) a8 C% u$ L/ [7 D3 V' H
    newk=a(1,;
    4 l) Q5 \/ w, r5 e4 qnewh=a(2,;9 }$ P! g* h3 ~. V# I( V
    figure(2);
    $ V5 ~% A4 g2 I; D# nsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    , g" H( ?+ k& k4 N' P+ J- olegend('网络输出客运量','实际客运量');' O5 q. c- d" ^8 [5 m  P% }5 w
    xlabel('年份');ylabel('货运量、万人');
    3 y: N# n; i& C1 B" Y# x8 qtitle('运用工具箱客运量学习和测试对比图');5 u" F( j5 T4 u
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    % Q& I4 I( g3 K$ v. d' Alegend('网络输出货运量','实际货运量');, P) l0 ?2 K, G$ g0 C
    xlabel('年份');ylabel('货运量、万吨');! f( b# f: R5 w/ s- \9 z* y( ^; K0 c
    title('运用工具箱货运量学习和测试对比图');
    ( p. m* V4 X; ?' h8 |& d) M
    # D" A# o' \" V: V( a%新数据仿真  G1 M* H0 B3 l$ O0 s# P
    pnew=[73.39,75.55
    9 G" I1 f5 E* y0 U4 x  n  x    3.9635,4.09753 B0 B3 u3 L/ o8 }6 T' J5 {2 B
        0.9880,1.0268];
    / s  l$ T+ ?$ v9 H  J) x9 dpnewn=mapminmax('apply',pnew,ps1);  \, w% R2 |. F& ~4 a, D. B
    anewn=sim(net,pnewn);2 G8 c$ U  z' l0 B3 l) z: R& x
    anew=mapminmax('reverse',anewn,ps2)
    3 h0 _2 ^& L. e2 W* G. j(修改的地方用颜色标记了)- {; ~/ K! D6 }, A
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      * @7 E6 M& l0 U( ~! T\" n5 i2 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,...& ~5 l' n4 y# x/ F
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      % \# @, i  I6 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- h7 w! E/ I7 j+ W% i\" e% c
    5.     2.5,2.6,2.7,2.85,2.95,3.10];\" m  K9 l& T( i5 e
    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,...( T' L  _0 k, D& q\" d. R
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      3 r- z! a, [! B3 H4 B( v
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      ! Y1 F\" M9 n! K- v' h  Q
    9.      22598,25107,33442,36836,40548,42927,43462];
      & F, }* m; J  v  O
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      / A5 m7 G* w9 x, U# e) B+ y
    11.      13320,16762,18673,20724,20803,21804];
      . W1 t: P' i- x
    12. p=[sqrs;sqjdcs;sqglmj];! ^' [1 {* r6 T( Z4 G6 K, r( s. B3 k# {
    13. t=[glkyl;glhyl];7 H& h' r; z) v: F  b, f: E
    14. %数据归一化
      8 T3 D* p( V0 w' k2 j! N
    15. [pn,ps1]=mapminmax(p);
      $ o) M! r% c# y; R' q1 B
    16. [tn,ps2]=mapminmax(t);
      + a6 z! _+ M1 A* ~* n
    17. %dx=[-1,1;-1,1;-1,1];( F6 I2 i, c/ D$ p5 b* m
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      8 P9 {  C5 m\" E7 {- B9 A\" V
    19. % y6 [* a9 a- ?# d\" g. U! j
    20. %BP网络训练3 U  x( j4 G! a
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      $ l, t) W0 q0 b5 g0 s3 o
    22. net.trainParam.show=1000;
      # z& Y\" ^: w( u  P5 b, s4 t) v
    23. net.trainParam.Lr=0.05;
      ; `1 p& v8 |% N- X  I3 E
    24. net.trainParam.epochs=50000;
      + R, ~# _5 ]( f& G
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      \" q: ?6 `. a\" S& q& F\" O, D4 L( E
    26. net=train(net,pn,tn);
      3 V! f0 J: Y- Z' u: |' y& S

    27. # c' E0 _( p. ~6 d2 y* y
    28. %利用原数据对BP网络仿真
      $ D) J4 ?; M; v\" \
    29. an=sim(net,pn);
        P( D4 s2 a  }\" N- G
    30. a=mapminmax('reverse',an,ps2);
      # u  \5 q- g! e

    31. / t+ ]7 I7 v3 h5 n# p4 g, U' |# w
    32. %仿真结果与原数据对比测试 % @4 T  w) O- n9 j
    33. x=1990:2009;9 i6 K3 P0 [% O9 P( `8 u
    34. newk=a(1,:);
      8 \\" H, F5 p) \' `, C
    35. newh=a(2,:);9 a+ V/ N$ W  F+ H5 G/ ]
    36. figure(2);. y$ ^6 o+ W8 {2 d! x
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');3 r/ A2 m9 j: ]\" Z  s+ D3 t3 L
    38. legend('网络输出客运量','实际客运量');
      ) g9 E2 h# q0 j5 B* {7 \2 R1 d
    39. xlabel('年份');ylabel('货运量、万人');
      * Q: @9 t( U8 ~7 g8 Y+ [
    40. title('运用工具箱客运量学习和测试对比图');; A2 L; z, v6 K% ~' J; g
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      : V/ T$ [0 {! P, _
    42. legend('网络输出货运量','实际货运量');( X6 }$ [. e+ p5 y( I
    43. xlabel('年份');ylabel('货运量、万吨');
      2 B2 @/ ?3 D  i) I
    44. title('运用工具箱货运量学习和测试对比图');6 D+ A# ^' H2 a& u0 v! W8 B3 I
    45. : p+ u# Y% M: Z( ]# R- F6 {, X7 ~% D
    46. %新数据仿真
      5 M$ g, |) C0 L# u
    47. pnew=[73.39,75.55
      2 a1 J0 y( S\" v3 M, Q) w! @; U; _+ P
    48.      3.9635,4.0975
      ' T0 S& A: u: \) o: e: S3 @4 g. x  {
    49.      0.9880,1.0268];$ V& U1 l, ^7 W% }
    50. pnewn=mapminmax('apply',pnew,ps1);, w$ j# m+ Q2 x+ F7 C, _\" j$ h: M/ i
    51. anewn=sim(net,pnewn);4 ?  d5 n/ B# [' P2 w
    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
      \" x* D! O' ~6 ~8 [/ O3 W$ z7 ^% ~
    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,...: K6 t$ K9 S# P2 s6 m/ K4 y
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];0 E9 ?5 g; Z& I
    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,...7 k+ J: M' B9 [8 [; g7 D* m
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      # g- T3 `3 C( u  D0 r3 D2 p9 C
    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,...9 F) [  _3 i& j  e' n8 D
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      & V! j8 Y8 H& v* ]3 C
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      / _' v' r- D! p) U
    9.      22598,25107,33442,36836,40548,42927,43462];( t3 t+ N( O. }1 V
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      ! {- B' @\" Z, N& K- E. K
    11.      13320,16762,18673,20724,20803,21804];
      % x0 L6 j# j+ F) s+ \3 N; `6 O
    12. p=[sqrs;sqjdcs;sqglmj];8 T, |+ d& t+ N4 }+ r
    13. t=[glkyl;glhyl];
      ) u& U* Q, n( l/ H: |
    14. %数据归一化
      1 x5 I( u# Y( Z0 f) ]- u2 E
    15. [pn,ps1]=mapminmax(p);3 C  Z) v' @4 p3 d, ]& W
    16. [tn,ps2]=mapminmax(t);+ ^5 _% p- e$ g$ w- U2 U
    17. %dx=[-1,1;-1,1;-1,1];
      + d$ N) m\" b9 D8 n
    18. p0=minmax(pn);t0=minmax(tn);
      & R  J& G) t+ t0 v
    19.   x& q% ^$ z! ?4 a
    20. %BP网络训练
      5 O9 g# D  Z. @0 t; H# B
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); . L, y5 N$ k( L
    22. net.trainParam.show=1000;
      $ b; O( z2 h# c, [- a, o
    23. net.trainParam.Lr=0.05;
      $ g3 I# d7 z; a9 b
    24. net.trainParam.epochs=50000;+ D\" q3 ]\" t# b* Y, u
    25. net.trainParam.goal=0.65*10^(-5);% j; U/ u2 U, y& D\" S. v4 t% i$ u0 c
    26. net=train(net,pn,tn);
      3 y1 I; f& [' M) u: ?2 F2 F' a

    27. $ K  T% l9 e; p8 u9 p! y
    28. %利用原数据对BP网络仿真\" T6 n( i* v% W2 O% r
    29. an=sim(net,pn);
      % q* G' i$ P; w* s$ x4 I/ C! L
    30. a=mapminmax('reverse',an,ps2);
      / Y' `3 g7 f, f3 C- M8 u5 y

    31. \" f5 S+ T. D) m$ Y& t) Y
    32. %仿真结果与原数据对比测试
      , l7 ?5 N! b! n
    33. x=1990:2009;, C$ a% L  _* o; t1 Y: |+ z
    34. newk=a(1,:);
      $ M) @5 r' O, a
    35. newh=a(2,:);
      2 [1 Z  R/ q% R- q) [. g  B, r; \
    36. figure(2);9 e\" e+ ]: _( r\" I& _$ K8 A
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      : p# L1 z2 R9 B& [1 [
    38. legend('网络输出客运量','实际客运量');( L9 p) c1 C; ?. k# D
    39. xlabel('年份');ylabel('货运量、万人');
        l% f  V2 C5 m6 ^- o
    40. title('运用工具箱客运量学习和测试对比图');
      5 V4 E5 i6 }) P
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ( T: D' U! X0 D8 Y5 k+ a* C
    42. legend('网络输出货运量','实际货运量');$ q$ f& P! v3 D- G$ P7 @1 _
    43. xlabel('年份');ylabel('货运量、万吨');
      % v7 d/ `5 n( Y1 Q
    44. title('运用工具箱货运量学习和测试对比图');
      \" r\" X8 d# Q* x$ ?6 x

    45. 8 ?' M3 {9 w! Z
    46. %新数据仿真0 [( Q+ }9 t! b' c( l
    47. pnew=[73.39,75.55! Q; B9 u  v1 R$ S2 N2 |& t+ E
    48.      3.9635,4.0975
      * Q. Q4 q2 q! x! N
    49.      0.9880,1.0268];9 I, j6 _3 Y6 p$ w3 v
    50. pnewn=mapminmax('apply',pnew,ps1);
      ' E$ \) Y3 h. P! `
    51. anewn=sim(net,pnewn);
      & _; p  u' W7 h
    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
    4 z' e& C* T* @/ H# a6 j  u忽略我上面那个,改动的地方在18,21,25行……求批
    2 O# d* H: h% g2 g
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      : t5 [+ [+ d/ g1 k8 g5 |\" R/ K# }
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); & j+ d0 E) U8 \& K( r
    3. net.trainParam.show=1000;/ x6 |0 E! w7 c5 a  t, f, M\" ^
    4. net.trainParam.Lr=0.05;8 \5 `7 ?: `& l) m4 r: m. I
    5. net.trainParam.epochs=2000;
      / s\" M9 |( W' q$ ]4 L# H
    6. net.trainParam.goal=0.65*10^(-4);' ^; Y# A8 F# C1 ]1 o
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,0 s( b2 i9 \& C3 D! h
    一、改成单隐含层的,6个节点+ t: Y2 c, v% R7 p5 a
    二、训练函数改成梯度下降BP算法 traingd
    , @, S7 |0 F  Q+ r三、迭代次数改成20001 S( t, l' W2 G9 d& x2 \
    上面的参数是自己试的,我也不知道为什么。$ J2 ?5 E$ R* x, q1 F& ~
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。2 {; Z: j% O) o3 F3 Y, h* R8 {% _
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-14 13:23 , Processed in 0.501424 second(s), 102 queries .

    回顶部