QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4873|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!1 ?8 T' [. F. o& Y1 A% U
    0 F& Z' l9 {- g% `# W0 R& w
    %原始数据输入7 E$ a! d- ^6 F0 E
    clc
    + E) Y2 ?, D9 C4 x* F) I* ^- H+ _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,.../ g# q2 R) `. C
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];% n* Y" Q; [- 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,...
    7 p  p( E8 \2 B3 [    2.5,2.6,2.7,2.85,2.95,3.10];
    / \+ f% ]$ ?- Y! Vsqglmj=[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,...
    $ k2 ?2 j# G$ a( g- S# `    0.56,0.59,0.59,0.67,0.69,0.79];* ]2 U* c9 R" S: _+ D& b9 U
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...7 R- P1 A: e/ T) X
        22598,25107,33442,36836,40548,42927,43462];' C7 ?6 P& x& x" V/ z; \0 `2 X
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    / B& W# g6 a+ K6 I( l$ B    13320,16762,18673,20724,20803,21804];
    ) b. h+ Z8 d+ c$ a4 tp=[sqrs;sqjdcs;sqglmj];; m/ _) R" _. }! @! W
    t=[glkyl;glhyl];2 S$ `, a  a8 B
    2 R( z9 e1 [9 A& {% r; U
    %数据归一化/ W) k; }4 H. k/ }9 y# `8 b0 ~
    [pn,ps1]=mapminmax(p);
    8 B$ X- H' D1 |) r[tn,ps2]=mapminmax(t);
    & W3 [3 F! Z/ g1 R1 d) i7 y- t+ X) Pdx=[-1,1;-1,1;-1,1];0 C" |" D( h: e7 J3 F

    " e9 F9 l, K# s& e. H$ I/ i5 ~%BP网络训练
    + o; b( L, o3 t! ]  s% Snet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    2 `' Q( p  D" X6 z2 R$ m: Pnet.trainParam.show=1000;
    2 G6 H2 O4 e* f8 W2 G# M9 tnet.trainParam.Lr=0.05;
      r4 K: ]* K' a1 D0 t9 Wnet.trainParam.epochs=50000;$ y  G8 Z* s. w9 k- R- D
    net.trainParam.goal=0.65*10^(-3);* O, a; p6 y2 x6 r* z6 H
    net=train(net,pn,tn);
    ! |: I' F" S" i" W
    3 R' w# m0 H' f$ |& \%利用原数据对BP网络仿真
    1 h, Q5 Z/ P/ P- U# o2 I* C4 fan=sim(net,pn);
    9 K' {- c  G0 ~* G$ V7 d+ Qa=mapminmax('reverse',an,ps2);" Z" G4 C! @9 R) ~2 f7 \
    : k. m9 ?  \; w  Y9 w1 S
    %仿真结果与原数据对比测试
    ' X! T$ ?+ q, Y' J5 f/ Ox=1990:2009;
    / c# j5 Y# z6 j  l8 Znewk=a(1,:);
    ; h; x5 m: n. X/ w% N' inewh=a(2,:);8 H% d& y' |! n' i& g# l( X* _- n
    figure(2);
    ; [7 F, f6 f9 z  Gsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    6 _/ I3 C5 f4 {. c4 O* u6 L" Qlegend('网络输出客运量','实际客运量');
    % M' o1 I6 E2 L  V" nxlabel('年份');ylabel('货运量、万人');+ y! y1 p9 ~* l0 n# l& T
    title('运用工具箱客运量学习和测试对比图');+ J6 ]" j+ G8 x
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    $ z. X4 T. S  r- A1 l, Y, dlegend('网络输出货运量','实际货运量');+ R) ?. s6 j, {) q2 _- Q3 x% z# C
    xlabel('年份');ylabel('货运量、万吨');
    ( A- O9 R# k3 z7 |title('运用工具箱货运量学习和测试对比图');' ]# n2 Y# s9 j, H+ ^7 b
    - d  d$ z0 D8 K( K) f; {
    %新数据仿真: W/ H- v& d' g9 g6 }, N/ f
    pnew=[73.39,75.55# e0 ~0 |2 m; w2 w! ?0 z
        3.9635,4.0975- p/ z  ?/ |# ^  o. ^8 l/ n% }
        0.9880,1.0268];
    : [* H( }0 p5 `% }# s  |pnewn=mapminmax('apply',pnew,ps1);
    " Z, v3 V( x% r( j7 Ganewn=sim(net,pnewn);
    - a( o3 J) h# h4 g" Yanew=mapminmax('reverse',anewn,ps2)
    , |" u) I! b( |/ R3 x
    / n. }5 n  c+ l. i% d

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

    `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
    ! H( h& q6 Z- L$ s: B2 i; T1 E% u8 M看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    : d7 o- Z' k+ p& |因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    / L9 o- l7 V* ]5 [; gnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');, S) e. f) E* i, {' y
    我修改为:
    9 i, ?/ ?# O/ T9 w" c6 u0 a& znet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    5 u. Y3 u' n& ^0 ~2 [然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:* n! P% I3 `# H: t
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    0 ]9 S' {9 P1 i+ j( ga=postmnmx(an,mint,maxt);
    4 I% B) U6 s" i( G7 j5 vpnewn=tramnmx(pnew,minp,maxp);
    8 C; p* ^: q& Z0 E6 X. Fanew=postmnmx(anewn,mint,maxt)
    4 j; _2 z( b' ]我修改为:; r  q% {1 X# B
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    2 x9 s- M( P, G% Ua=mapminmax('reverse',an,ps2);" Z6 P8 F  @9 ~3 y$ j1 G4 E& ^
    pnewn=mapminmax('apply',pnew,ps1);
    % _1 A% Z  b( S. W% S+ f2 P: O3 Yanew=mapminmax('reverse',anewn,ps2)
    * b* C8 o1 V' D/ k6 G; ?; }0 E8 \7 t; X& l$ Y( u
    原程序为:
    - i; C# F3 M4 o% ^1 s9 `%原始数据输入
    3 O# K# W2 s5 \7 n* h; O2 yclc+ p7 }/ O9 D" u: c4 T, d+ A
    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,...3 O  x2 W1 Q# q/ u  l# f; Z% T( o
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];2 s' U, V! F4 g! S! x2 ^
    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,...
    & W# V& }0 d2 O+ q    2.5,2.6,2.7,2.85,2.95,3.10];) K, K% V) z+ K" [( W  S, T
    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 k8 L2 M: K. S0 t6 `' w( @- q
        0.56,0.59,0.59,0.67,0.69,0.79];
    9 K- P. f$ K+ z+ N0 Wglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...# x& n9 r: F" j7 q* H0 r0 f/ z2 R+ u, y
        22598,25107,33442,36836,40548,42927,43462];
    7 K: J4 b2 }( j8 ]4 {glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    3 m4 m) q7 t, }( T    13320,16762,18673,20724,20803,21804];4 C1 ~4 b" _; [3 _$ x+ C
    p=[sqrs;sqjdcs;sqglmj];
    + A; t# B. t5 [/ l  rt=[glkyl;glhyl];/ x1 Y+ K. {6 C" A6 N+ }& T
    4 @) c0 B: t4 i/ C0 X( G
    %数据归一化3 M! @$ P9 ~# A8 W, o3 B3 j) V
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);9 s7 r2 }2 x* p# }" g% W6 S/ P
    dx=[-1,1;-1,1;-1,1];
    . a: T; F6 _5 t& U1 z& G7 f0 a
    / F& n9 [9 f3 N. W0 H
    %BP网络训练9 b- Z& q# t! J4 k8 S8 _
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');5 F: ?0 l% P: R0 O2 l, @6 I" Q
    net.trainParam.show=1000;5 R# O5 k6 ?* G- }; E
    net.trainParam.Lr=0.05;8 y  h4 H3 q: r( s3 M" ^- f
    net.trainParam.epochs=50000;) s5 |* v8 r; D' v: m
    net.trainParam.goal=0.65*10^(-3);
    / |% L" e1 B' i  l* I; Bnet=train(net,pn,tn);' k  N$ ?$ U) @4 W& f8 a' u+ o
    4 y) r9 e1 X! G. w/ M1 v
    %利用原数据对BP网络仿真( J; U  V+ h# D4 K
    an=sim(net,pn);! E9 o4 m' f, Q& ]: c: S" S
    a=postmnmx(an,mint,maxt);. q0 m0 k4 f) ~$ J: n" Q: G5 {
    5 u9 Z! \' l- A( j$ p
    %仿真结果与原数据对比测试
    - O& u! t2 V' c& R7 c1 mx=1990:2009;
    $ m' N# U/ D, T: e9 H2 R+ j8 \newk=a(1,;7 h0 f8 h& n9 ^" u# d: I
    newh=a(2,;3 z$ j. r8 L' Q" Q
    figure(2);2 T% V) w) ?' U  V" m
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    0 U+ p( s% @; V$ i0 Q# f9 f" N; F& }legend('网络输出客运量','实际客运量');
    3 T6 S2 p0 |( e# g2 D4 `$ h6 p+ kxlabel('年份');ylabel('货运量、万人');) i. S, \5 P  j' E& M7 ?( p
    title('运用工具箱客运量学习和测试对比图');
    & k: x. o! J1 ^. rsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');( K. D% {, N# `$ \+ w
    legend('网络输出货运量','实际货运量');
    $ k! h/ B. d0 Axlabel('年份');ylabel('货运量、万吨');
    ; m4 [& g( I* }3 K; Rtitle('运用工具箱货运量学习和测试对比图');
    # I1 c( V; V( U3 r" G, p9 y2 C: q& m5 ]* i7 r$ u' V: ?
    %新数据仿真
    * K8 t, F' g+ R) |" `$ Y! `pnew=[73.39,75.559 v* P7 y9 Z& R. c1 o  v7 G
        3.9635,4.0975
      D& k% i" o  h3 M* b    0.9880,1.0268];. i- Z3 W4 h1 P; \
    pnewn=tramnmx(pnew,minp,maxp);/ t$ T6 s7 P) |) u
    anewn=sim(net,pnewn);
    5 ^3 N( H# j1 Ranew=postmnmx(anewn,mint,maxt)
    1 q7 O% B) x( J+ U+ |8 `; b
    # E5 \. ~# d; Z2 p
    修改后程序为:$ L& Z: X! o, ^* N
    %原始数据输入5 A# T* `/ g9 `
    clc
    ! Z8 `. H- s1 L/ }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,.... D7 Y, X1 M' I: `: p9 W2 ~
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    + P2 t5 g9 Y8 U) isqjdcs=[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,...
    ! K2 w+ k4 L+ d0 W2 b8 r2 @" z    2.5,2.6,2.7,2.85,2.95,3.10];+ ?. i" ?# }$ S0 p: }' A1 S; o6 y
    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,...; v( P9 t  }" Q7 o7 Y8 }
        0.56,0.59,0.59,0.67,0.69,0.79];* Q' q) X/ ?+ b* C4 O( s1 b9 C
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...4 T; h1 Q( H1 \3 ^% f
        22598,25107,33442,36836,40548,42927,43462];
    ' {1 ~6 r/ {) uglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    - n2 |6 T4 S% v1 p    13320,16762,18673,20724,20803,21804];# I" f% g7 H0 x0 Z
    p=[sqrs;sqjdcs;sqglmj];/ {, o2 t3 I0 v+ `) q
    t=[glkyl;glhyl];
    & S3 F% k5 Q0 P
    1 H: p5 A# @7 j3 j2 y%数据归一化2 i" s) d/ x- a
    [pn,ps1]=mapminmax(p);
    2 ^0 Z/ M. {' e[tn,ps2]=mapminmax(t);
    + ^: Y. E( K" F4 J
    - b! }4 D. \7 L- K%BP网络训练
    0 k+ p7 g! O; knet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');- \( J" P8 I$ x' S
    net.trainParam.show=1000;) z$ W+ N( ^# ?' C, n: e0 k! ]& K
    net.trainParam.Lr=0.05;
    8 Z) a& o* @# v& x! z0 x& I4 ]net.trainParam.epochs=50000;
    1 m/ Q$ B3 H& `net.trainParam.goal=0.65*10^(-3);; W% N3 M* N9 M' P
    net=train(net,pn,tn);  H  V$ Q3 v. I0 ~! O( d

    ( e$ `3 E; S# x# z%利用原数据对BP网络仿真
    ( p0 \: R' Z* Y4 Xan=sim(net,pn);: G, d# \: ~7 d% k/ d
    a=mapminmax('reverse',an,ps2);$ {% v) z+ S2 J. t
    5 _$ g# C. O0 j
    %仿真结果与原数据对比测试: i! n# b5 R  J( k; A. M- E
    x=1990:2009;
    4 N7 l; F; \$ y6 @7 anewk=a(1,;& \, w- t( {9 M3 q/ i
    newh=a(2,;
    2 y( `( u* o# ^$ `: ]2 Ofigure(2);
    ! u/ Z- W- c3 Zsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    6 t& a. `) X- i) y3 T- x0 Y* dlegend('网络输出客运量','实际客运量');
    8 P! w3 @# l# ^( o. D7 _xlabel('年份');ylabel('货运量、万人');
    & L& L( L  M  W+ y- \, ^( h0 f' Stitle('运用工具箱客运量学习和测试对比图');; S) l7 L2 u, o0 o; A- D7 x
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    - `+ d1 f+ d1 K; e. c- j2 C- vlegend('网络输出货运量','实际货运量');
    ) D3 l7 j6 O% N2 q! z8 T, Z  S# d- K1 O. `xlabel('年份');ylabel('货运量、万吨');
    & H( P+ a! o1 \title('运用工具箱货运量学习和测试对比图');* x. o0 K2 s. S) ^  ^

    3 w7 d; v4 _& n+ _2 r%新数据仿真
    0 N, e4 z! C  o& d" @pnew=[73.39,75.55
    ; M, v0 H2 f$ Q) K( t    3.9635,4.0975
    ' i4 o. N; d  Q9 r- H    0.9880,1.0268];* L& I* k, e! t) x, [, u3 p" o! c  P
    pnewn=mapminmax('apply',pnew,ps1);9 N, z/ o% `2 z* H6 h. @$ d
    anewn=sim(net,pnewn);
    9 a; t6 y* M8 B$ P, D! d7 C1 Danew=mapminmax('reverse',anewn,ps2)+ a# t# u% `& ?6 \: m
    (修改的地方用颜色标记了)& ~! X1 m( y6 y3 Y* p
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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' L\" W9 s( X. a* t6 a: G  y
    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,...3 `! w/ q; f; P0 {, A* E+ X- r* [
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];! h3 z6 Y5 _4 m# ?5 X  @
    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,...- I, ^0 {# y5 p4 f! a
    5.     2.5,2.6,2.7,2.85,2.95,3.10];4 X; }) B8 b8 X% p$ f7 A, Y
    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,...
      1 |. q, I+ _- R* _: H\" U9 G
    7.     0.56,0.59,0.59,0.67,0.69,0.79];8 M. W, f' a* @/ R6 `* o8 |
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...% G- g$ m3 B/ D7 c- x; F2 Y
    9.      22598,25107,33442,36836,40548,42927,43462];0 `6 G! t) C+ g$ B  {
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      ! i0 h: u\" Z2 ^% L  X( l( Z
    11.      13320,16762,18673,20724,20803,21804];: f& U. W% R, s$ K
    12. p=[sqrs;sqjdcs;sqglmj];+ C\" t\" K5 K% U% N! k' P: k
    13. t=[glkyl;glhyl];
      6 m$ \/ p. h, k3 ]$ Z0 C
    14. %数据归一化
      - y# l0 _! @  j. T
    15. [pn,ps1]=mapminmax(p);8 A% B$ D! u* ]
    16. [tn,ps2]=mapminmax(t);
      ) L: D3 M, |. s& s0 h- n
    17. %dx=[-1,1;-1,1;-1,1];+ j, d( U) s: E( n' ~2 H* V. [$ Q7 T
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]9 H9 U; K3 P. @0 U, ^, Y1 m0 u9 I- X
    19. 9 b3 p5 C' s2 ^0 L- A
    20. %BP网络训练
      & A- [5 a. U$ O  I
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      \" [! s! {4 e  X; e
    22. net.trainParam.show=1000;
      # k6 G2 ^/ o- a! X3 P
    23. net.trainParam.Lr=0.05;
      . e9 {# {! A) F\" I5 D5 O
    24. net.trainParam.epochs=50000;% K& _3 \& A) |9 N& c. l
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      0 U7 Y; U: @+ w* D  z5 Y\" f1 W8 Q
    26. net=train(net,pn,tn);1 a, N6 u  u% ~8 B# L0 o0 w. D0 T) o
    27. 6 o* S; c3 k  d3 F' b9 @% r2 R
    28. %利用原数据对BP网络仿真0 W& V* o: |5 i8 g8 P- K6 I( z; i
    29. an=sim(net,pn);9 u6 J0 k: D& {  p: p
    30. a=mapminmax('reverse',an,ps2);
      ( J! s, ~' l% p  O* S7 e

    31. 2 L+ U6 S8 P\" V5 I5 j/ p# ]
    32. %仿真结果与原数据对比测试
      1 x  b2 |  |) r; X
    33. x=1990:2009;) T' x/ _) [7 m1 s$ Z8 o% h
    34. newk=a(1,:);
      ; D% k' a+ P, ]8 B
    35. newh=a(2,:);- A3 ?/ a. }: m  H/ {# I2 U
    36. figure(2);
      * r( p$ x\" L1 a# I+ Q5 O7 R
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      \" J; Q# g5 t. S- W( L: B( q& F  u
    38. legend('网络输出客运量','实际客运量');
        k9 B% j8 M, V
    39. xlabel('年份');ylabel('货运量、万人');# k* A( x2 x+ P, Y0 n( w
    40. title('运用工具箱客运量学习和测试对比图');. d% s9 }* D( [4 a0 l* |& E
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');, `& N9 f3 ~0 K: {3 u$ ~
    42. legend('网络输出货运量','实际货运量');
      ' E+ f+ \7 Y6 l& |. d% ~. l) d) y/ G
    43. xlabel('年份');ylabel('货运量、万吨');' o# B2 ^2 T+ C9 S
    44. title('运用工具箱货运量学习和测试对比图');- f6 A' `- J1 A' k

    45.   n. ~. E$ \7 P
    46. %新数据仿真* q\" `8 W6 s  d. ~
    47. pnew=[73.39,75.55# a! [. I0 h3 m7 A
    48.      3.9635,4.0975
      # ?) U$ ~$ b0 }- {
    49.      0.9880,1.0268];
      6 k  W3 N; t\" G1 G8 l9 L9 @. R% o7 j
    50. pnewn=mapminmax('apply',pnew,ps1);9 V7 V\" l& c+ {3 Q6 Z% A/ r
    51. anewn=sim(net,pnewn);  o+ U4 O$ h% 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. clc5 _8 G8 }2 [' E- T& m) u8 o
    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,...
      * B. `$ F( v) |) {\" W# Y  M
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];, G# R! V' l9 J9 X# }
    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,...
      ; \4 h0 Y( J; r: s! Y# b3 c
    5.     2.5,2.6,2.7,2.85,2.95,3.10];; w4 _4 _1 v4 Z* W) o* F+ x
    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,...
      8 ]1 N0 v/ s4 O1 r, T9 i2 H$ |
    7.     0.56,0.59,0.59,0.67,0.69,0.79];. L5 Y/ f& G$ b3 l# L; I
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...8 y. H4 I7 U0 o1 O$ R- N( G0 q
    9.      22598,25107,33442,36836,40548,42927,43462];
      5 N/ J# J$ K5 d9 a
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...# h7 k: @5 h1 H0 t& b* F% W
    11.      13320,16762,18673,20724,20803,21804];
      ( G1 B6 ^, q& Q
    12. p=[sqrs;sqjdcs;sqglmj];
      $ M5 ]) k- Z  P3 ]- y; h
    13. t=[glkyl;glhyl];8 l; i- c6 _; W9 S
    14. %数据归一化. v4 }2 ~+ K9 p
    15. [pn,ps1]=mapminmax(p);
      . U3 _1 w! i' m+ w2 s, h) l7 U9 a
    16. [tn,ps2]=mapminmax(t);
      4 u1 [* f8 X* y) z/ E& Z9 d2 w
    17. %dx=[-1,1;-1,1;-1,1];
      ; [, _+ u7 N& u, Q
    18. p0=minmax(pn);t0=minmax(tn);
      # {3 ~\" l( z. w! ^7 C+ @

    19. ( v. D( F; y, t\" w+ y+ p
    20. %BP网络训练
      2 t5 `! O) O9 l\" a2 V6 K
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); $ b6 v$ c' ^: X  k% ], J
    22. net.trainParam.show=1000;5 k1 u  r8 O4 x  M# Q2 c
    23. net.trainParam.Lr=0.05;
      # {  H: r\" X: c' k! M$ n
    24. net.trainParam.epochs=50000;9 T% V- E1 E, t# F9 s5 o1 p
    25. net.trainParam.goal=0.65*10^(-5);+ i( y' j3 z0 C3 b3 h) b  e& K
    26. net=train(net,pn,tn);
      5 M$ r' _8 y% K6 p: s  i0 ^) R. ]
    27. 7 n* m, U! S, S& w1 ]
    28. %利用原数据对BP网络仿真/ q4 L  S, q+ f1 k! ^\" Q
    29. an=sim(net,pn);$ N% m6 d: @8 P: |
    30. a=mapminmax('reverse',an,ps2);6 c6 @' V7 l! ?

    31. + g$ I  L4 K! o* f5 M; V
    32. %仿真结果与原数据对比测试
      # _/ s$ M4 q' T
    33. x=1990:2009;
      % p7 ~1 p! _8 _* I4 l
    34. newk=a(1,:);. h, v: H! @, ]3 R
    35. newh=a(2,:);
      & f1 G: \* R9 R6 `
    36. figure(2);* A8 `\" r5 j4 s0 V& L
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');3 M/ h3 [/ ?7 s- {
    38. legend('网络输出客运量','实际客运量');
      ) a1 I. c: A% I\" Y9 d% v% ^
    39. xlabel('年份');ylabel('货运量、万人');5 S2 @  k/ u6 r# S% j' W0 g: }# T
    40. title('运用工具箱客运量学习和测试对比图');+ Q2 j7 q$ B; b& m( t8 p; _
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      : h  s% c5 P: S. E6 F- N
    42. legend('网络输出货运量','实际货运量');  C- `\" [* e6 a/ \
    43. xlabel('年份');ylabel('货运量、万吨');% |! t# j0 \; @
    44. title('运用工具箱货运量学习和测试对比图');' W5 I% J+ k\" H  H, D
    45. ' U, @3 k/ M9 _# c% f
    46. %新数据仿真, ?: F2 C* w: ?! e) T: a* g
    47. pnew=[73.39,75.555 D) S. Y9 P( _$ B$ f. F
    48.      3.9635,4.0975
      ! u( F6 M5 C5 f# J$ M
    49.      0.9880,1.0268];: y/ D! Y. j/ n3 m' j
    50. pnewn=mapminmax('apply',pnew,ps1);5 A! B- j4 }& I) p% v( E) d0 Q
    51. anewn=sim(net,pnewn);
      \" O9 i  |4 U  \
    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
    3 P% V/ L( K/ |* Q) q5 E9 |7 \忽略我上面那个,改动的地方在18,21,25行……求批

    $ v9 n9 ?! D. h  r' A+ T+ u8 i) X确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练: }/ [, [; h* ]& Q7 m: x3 [8 L
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); 9 l4 {9 m' {& T\" `1 R: `& |& F
    3. net.trainParam.show=1000;/ ^6 i8 k5 e  T9 N
    4. net.trainParam.Lr=0.05;
      ) _& ]; d+ r$ I. }1 g' N' o  c% j% @
    5. net.trainParam.epochs=2000;  |. T: `5 ~( w0 B
    6. net.trainParam.goal=0.65*10^(-4);# A% Q5 S& A# M! j8 N  K& m5 C' `
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
      h, Z* J! [  J5 ~一、改成单隐含层的,6个节点
    ; C; E2 x1 _1 \+ _二、训练函数改成梯度下降BP算法 traingd
    2 n1 `( {2 U  @* w三、迭代次数改成2000
    3 ]: w  X$ p( @3 @2 S# Y上面的参数是自己试的,我也不知道为什么。9 R8 x5 [$ R4 T0 ~
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    / o/ M) ?! g" h' Q* B( W7 s2 z关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-7-21 23:33 , Processed in 0.565083 second(s), 102 queries .

    回顶部