QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4880|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    9 H8 ^( ]% W- o2 F) B) [. T# B# }0 g
    %原始数据输入7 c" e: p1 @$ q2 l- p9 \
    clc- W( h& W1 O- d
    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 T4 ~1 ^2 @; M' ~4 [& y
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];7 d4 N8 A, e) C& c& k  M! U
    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,...
    " X4 E" A' B1 J, R% h- ]    2.5,2.6,2.7,2.85,2.95,3.10];
    0 U0 J: l  n' t! Z2 Ssqglmj=[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,...
    2 }) S; s! k; b* a- n    0.56,0.59,0.59,0.67,0.69,0.79];4 y% I' T. [1 }4 G# G# K
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...7 z( l  Z# H% O2 h
        22598,25107,33442,36836,40548,42927,43462];
    9 M" v% [& H) g3 |1 \3 M8 S8 o3 Vglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...1 l. I, w1 v+ C; Q
        13320,16762,18673,20724,20803,21804];
    & T' k1 a6 ]+ u7 J: ?9 Z, {p=[sqrs;sqjdcs;sqglmj];1 J. \* X# |8 F$ e4 M
    t=[glkyl;glhyl];0 I2 `/ d5 Q& K- f7 {2 G. G

    2 R8 S  _/ o" l%数据归一化& L0 j: ~& |+ z$ ^4 S
    [pn,ps1]=mapminmax(p);8 d" \! t7 H0 E& `: L& ]/ W
    [tn,ps2]=mapminmax(t);  s7 g4 I# ~9 V, |# G" e
    dx=[-1,1;-1,1;-1,1];
    : p* p/ T4 {: L5 \
    ' E  i7 T/ X0 T2 w+ D* ?  S%BP网络训练; q! z) H3 f7 I: z
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');. K. A1 X6 o; `& ~# i- _$ p
    net.trainParam.show=1000;
    - F) [! J( h: Y7 w& z" D  znet.trainParam.Lr=0.05;
    8 \6 ?6 Z' f7 s) E; [net.trainParam.epochs=50000;4 r/ \+ A+ q2 t  }! h/ ]% ~
    net.trainParam.goal=0.65*10^(-3);
    1 z; |* E; m1 d, z- q  mnet=train(net,pn,tn);
    + A  W7 \* C7 w( A( V; l. Q  }
    + {( ^; g4 t8 o) W/ S: z, p; A%利用原数据对BP网络仿真
    ' }1 G1 T6 v( Gan=sim(net,pn);( Z( M3 n2 A7 w1 ^% h
    a=mapminmax('reverse',an,ps2);: S" X0 O9 n% h- ^; @7 s2 T1 T

    " ^8 j% H1 u, D: u7 I9 x%仿真结果与原数据对比测试
    3 U5 c# D3 E3 A# B6 Mx=1990:2009;
    1 P- k& [+ g: t+ Rnewk=a(1,:);) d( G7 C& r1 s0 Q$ V
    newh=a(2,:);
    + e8 P0 _& f4 n( C" ~  Ffigure(2);
    : S- s. W5 Y2 O# {9 N2 C$ esubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');% x4 g# p4 {* Y% V% j  G
    legend('网络输出客运量','实际客运量');& T: j* b+ P. z  Z* O0 ^
    xlabel('年份');ylabel('货运量、万人');3 o: C4 c2 c& K1 e+ X
    title('运用工具箱客运量学习和测试对比图');# z/ s* h* K3 o6 p$ p# ?
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      X7 L9 z( A; T0 e) f& Plegend('网络输出货运量','实际货运量');; m1 B( R  x  \
    xlabel('年份');ylabel('货运量、万吨');
    8 x8 K! D) _+ M$ S% t; Htitle('运用工具箱货运量学习和测试对比图');+ U2 I# ^* ~2 o; C, u& V

    0 P5 {" E6 q  q% q%新数据仿真
    1 [! R/ Q9 m9 c# Cpnew=[73.39,75.55
    + w* a6 g1 x& Y" @$ k; i    3.9635,4.0975
    * f0 ^6 L; \: [7 n( W, |    0.9880,1.0268];: L- c1 z1 x. J. q) k/ d2 }( [
    pnewn=mapminmax('apply',pnew,ps1);
    2 a% O3 M# v/ [! B4 Janewn=sim(net,pnewn);. a2 V5 D) M) ~8 `2 U7 Q6 u- |
    anew=mapminmax('reverse',anewn,ps2)! R- _6 `& o+ U' @

      h( O+ q2 v, i

    `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 & q6 y: b6 \5 j
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    ; K7 q" f7 J! j5 o
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    # @2 I( f) A: J+ y9 Znet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');2 c7 ]# _- w" i' _
    我修改为:$ j! K7 z% D* q. e
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');' R) z' m9 l: d! ]& y) x; u0 i6 K
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    4 O1 s8 N% P  o3 R4 F5 U. d. }[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    / G) s: Z" C( w; u' wa=postmnmx(an,mint,maxt);
    # L: ]% m% C% l; n+ tpnewn=tramnmx(pnew,minp,maxp);4 u/ M9 F! i9 T' D
    anew=postmnmx(anewn,mint,maxt)$ h; e! d% `4 ^
    我修改为:
    # Y. e3 U- H" Z6 u[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);3 u/ [9 w/ |* i  D3 i5 U
    a=mapminmax('reverse',an,ps2);0 y- ~7 r: M1 }
    pnewn=mapminmax('apply',pnew,ps1);
    $ g% z& o" l2 l& ^anew=mapminmax('reverse',anewn,ps2)( s9 k) R9 v( a, p' {- S5 Y

    4 T, W2 D9 G# }+ \$ P! Z4 w原程序为:
    8 I; _5 c% u8 W%原始数据输入
    ' V  G% c: p. B) Y& T/ hclc
    ) [% K. z9 n, \2 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,...2 _" p0 o' i1 ^6 k
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];" T1 W: V. r% e
    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,...( |8 s6 @6 {) Q" y0 o
        2.5,2.6,2.7,2.85,2.95,3.10];! f+ l/ r5 S3 l0 H2 @7 P6 D8 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,...
    # [# E& e6 V0 j6 r: }' J! A' }2 d    0.56,0.59,0.59,0.67,0.69,0.79];0 \' X$ Q+ `! Q8 h2 u
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.../ ~! R4 Z" Q* v6 k, z8 e7 C9 w7 i
        22598,25107,33442,36836,40548,42927,43462];$ F# C6 r% v0 T# O- l5 X
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...0 \, m$ ?% D4 X3 z! m8 Z
        13320,16762,18673,20724,20803,21804];
    ; q$ @2 Q/ u5 V2 K" `9 Ep=[sqrs;sqjdcs;sqglmj];
    + l9 ~+ m  t( u$ B$ Y+ Z, f" c. d8 tt=[glkyl;glhyl];
    ) k, p$ f" U% B& D2 r- Q1 O  \- i' d& C/ J
    %数据归一化
    ' W9 X/ N9 b2 l( g6 }' s% |& K[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    4 `6 C/ x$ Z+ z  v1 Xdx=[-1,1;-1,1;-1,1];7 L  {; \/ }- q; ]6 J+ m/ D0 z

    1 A3 G- R# L2 E& b& j%BP网络训练
    : z( E$ o% O+ c0 _net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');8 {# o' t1 Y0 s7 {6 V' P/ M
    net.trainParam.show=1000;
    ' Q# s. o: G$ K0 S4 e& anet.trainParam.Lr=0.05;" L; T2 b) S3 O+ N, I8 a( [
    net.trainParam.epochs=50000;
    9 j" c- w% R' L5 x. r5 n9 Q" cnet.trainParam.goal=0.65*10^(-3);
    9 j/ F, U- y! v, t" I% Lnet=train(net,pn,tn);
    7 @3 \! R# J1 c. p7 u7 D
    ! V1 M' U$ `+ }+ d$ z%利用原数据对BP网络仿真
    , d6 n$ ^* {. H$ f. San=sim(net,pn);1 e1 e! o  H4 K  `* b5 {
    a=postmnmx(an,mint,maxt);8 Y+ B! Z2 f% U' u+ ]5 u# c# ]
    , h& Q3 }% C; I4 @7 {/ F% v
    %仿真结果与原数据对比测试4 p' Z2 X* h& l+ b$ g$ w
    x=1990:2009;& k7 `+ o6 p1 `, F9 U  K' e. H
    newk=a(1,;
    ; B/ w" n* p: Inewh=a(2,;
    " J1 \+ o  l; Y. J8 d7 v% _figure(2);- t* B8 j, ?9 O7 |5 J  @/ a9 h
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    . n$ V* j# C: C& J7 v  U8 j9 elegend('网络输出客运量','实际客运量');" K2 A) r1 K. g4 V& U( r+ h7 A
    xlabel('年份');ylabel('货运量、万人');) j" h4 v8 v& u0 U. s
    title('运用工具箱客运量学习和测试对比图');
    7 M) `2 D0 O: ]6 e  P7 R* u" ysubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');+ Q$ x, g( U# i8 o6 o
    legend('网络输出货运量','实际货运量');, H! L8 d# z( i+ P0 x/ T8 y  ^
    xlabel('年份');ylabel('货运量、万吨');
    ! `2 }8 V* a2 I/ m+ }% z$ ]title('运用工具箱货运量学习和测试对比图');
    * H4 @* U! A# f  t
    - u: S3 Z5 _2 c( t2 ?8 F%新数据仿真9 P, s! j+ [7 l, D; U
    pnew=[73.39,75.55+ m# \" `8 j- T0 p! {6 J
        3.9635,4.0975
    $ x. G' |- G, ~    0.9880,1.0268];
    , F1 b) ]$ c" K9 |9 Z7 \+ S9 upnewn=tramnmx(pnew,minp,maxp);
    8 d/ ?  }% p0 nanewn=sim(net,pnewn);
    + j! S  n6 x! _' b$ y/ J9 Tanew=postmnmx(anewn,mint,maxt)

    6 w& l2 g0 t- P8 Q' u. a& R8 d  @* d6 |# t$ r$ d8 d
    修改后程序为:
    0 D5 W$ o) Z# s4 L& @4 X0 V2 }%原始数据输入( z/ t/ Q/ f) _& R! r
    clc
    : |- B# c: J2 ^# I+ V* rsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...; S- m& r- s/ {# }" T
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];9 t& |. d5 Z7 w
    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,...! P) \' Y" g. L" s
        2.5,2.6,2.7,2.85,2.95,3.10];
    5 t( x5 p* x  Q8 Z9 m& 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,...8 y9 i0 x  P' j$ q! `4 U
        0.56,0.59,0.59,0.67,0.69,0.79];0 C' L8 [3 y  \
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    , J# F" A* B2 R. Z$ p0 `" m    22598,25107,33442,36836,40548,42927,43462];8 B  q0 t# u3 G* W' _+ ^
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...' }" l! A9 V& I( ~; Z8 n
        13320,16762,18673,20724,20803,21804];  W2 t  O5 ~- K5 j
    p=[sqrs;sqjdcs;sqglmj];  F, Z$ Z( |9 [4 a$ }: {- L
    t=[glkyl;glhyl];
    3 N! O8 n! l/ s% N1 d4 c
    * M- P" f' Q" E. m+ ~4 F1 K; q2 v%数据归一化" M# ~, W( ~  n' \- Q
    [pn,ps1]=mapminmax(p);  x" ~; ]% V+ N& @. [
    [tn,ps2]=mapminmax(t);
    4 X$ e7 R& f$ S) ?+ `; C6 M% E6 u) B7 x: [
    %BP网络训练
    4 R" M8 D% X5 a0 g, w$ A+ Qnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');' U) s! G% z/ m- Y* u
    net.trainParam.show=1000;' {- n3 t5 z$ B, ~
    net.trainParam.Lr=0.05;) o8 {3 l, a) C% b& x/ p& C/ R# Q
    net.trainParam.epochs=50000;+ c/ l) f8 L, x2 a6 J7 ^+ W
    net.trainParam.goal=0.65*10^(-3);
    8 ]( B! X/ m- d. o3 h1 w. xnet=train(net,pn,tn);
    2 {+ `. x& }, w% y" f* l: @* b4 t& a' z+ f
    %利用原数据对BP网络仿真
    8 M3 Y' g- Z* _an=sim(net,pn);
    0 k3 F; h0 I0 Z5 E) j, Ma=mapminmax('reverse',an,ps2);! g& o8 i5 L* v+ G5 Z
    2 V, B2 A6 ~$ P3 P
    %仿真结果与原数据对比测试" L& D0 L- E9 F5 i% X
    x=1990:2009;2 a" D; n$ }$ |8 C
    newk=a(1,;: z# K5 j4 p& F4 `% J4 f( O
    newh=a(2,;: \( a1 z  r# _2 Z2 u
    figure(2);! ~2 @: j% m) n% A+ ?: \* q# N- M- G
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');( _5 }1 E& ]% G2 v! P
    legend('网络输出客运量','实际客运量');
    1 f2 t- y0 D* R) R  oxlabel('年份');ylabel('货运量、万人');
    ' H/ P9 _7 ]$ wtitle('运用工具箱客运量学习和测试对比图');/ t9 y. h9 W  C+ x, m* e! }
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    6 K6 H. D% n7 H$ n/ q3 T$ blegend('网络输出货运量','实际货运量');
    ( u; S; }( n4 v# C+ Jxlabel('年份');ylabel('货运量、万吨');
    1 J, \+ v: w! wtitle('运用工具箱货运量学习和测试对比图');/ l) C6 c# @7 W3 {+ [
    / l+ @1 {" r2 ~
    %新数据仿真" H) g: |. x5 s% K" E+ s
    pnew=[73.39,75.55! I+ U0 r) f8 b( P6 k
        3.9635,4.0975
    % i% v& H4 v( v$ [. U( X; o5 P- h    0.9880,1.0268];
    ( _- C8 S) D2 A; Z) @pnewn=mapminmax('apply',pnew,ps1);
    . F4 ?+ {2 F- F( Kanewn=sim(net,pnewn);
    % ?6 H6 @) A) J3 I$ D- manew=mapminmax('reverse',anewn,ps2)
    1 H6 N. ]: @, X, G(修改的地方用颜色标记了)4 _5 v: H9 s# I# 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& g' B$ @1 `% ]) {- p3 L
    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,...\" D% l+ t* X+ p) M. U2 H\" y! [; R
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      . M5 i; R4 J6 G7 E# w6 ?* S7 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,...
      $ a4 o: u% L! \\" f  y/ E
    5.     2.5,2.6,2.7,2.85,2.95,3.10];# V% s1 {7 G6 U( a. u- g1 ?
    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,...& z- w2 g% p- \% G( ^
    7.     0.56,0.59,0.59,0.67,0.69,0.79];' G4 ]2 K) j4 K0 A1 f2 x! y
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...$ z! ?$ f* H7 a* [4 D
    9.      22598,25107,33442,36836,40548,42927,43462];8 {; d& d5 T# h, N8 r1 ]+ D
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...9 R/ \5 V- E2 }+ ?% r) ]\" K7 p. S
    11.      13320,16762,18673,20724,20803,21804];
      \" M) ?! q  N7 j  Y2 n8 E5 m
    12. p=[sqrs;sqjdcs;sqglmj];
      \" i$ s& c4 w+ v. m. O2 W
    13. t=[glkyl;glhyl];' [7 {0 v. _: {; H# F, f% w
    14. %数据归一化+ \9 Z) Z* t3 W% m2 g
    15. [pn,ps1]=mapminmax(p);
      \" l# k2 K' @* G' u\" @% e
    16. [tn,ps2]=mapminmax(t);5 k* {5 J+ }1 z4 S, C4 V
    17. %dx=[-1,1;-1,1;-1,1];
      $ r' ~  s1 f8 v% w6 D' q9 h, _9 u  R
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      9 t' i) [/ U9 B
    19. 6 @2 I: `$ J1 t: i6 F7 e
    20. %BP网络训练8 Y! R: I\" d: l
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      \" u5 M/ n) N) ]) C7 k
    22. net.trainParam.show=1000;* U  ~- t2 H1 e  u! g
    23. net.trainParam.Lr=0.05;- y- K3 x  h  n2 |* ^
    24. net.trainParam.epochs=50000;8 A2 u. {2 x1 I
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      * _, W9 U9 C7 {+ f* B% T! M
    26. net=train(net,pn,tn);: l3 @# c$ ?: w' ~4 f# n: u% j

    27. ! r: x  P6 b6 Z2 K/ E$ s; s2 U2 k
    28. %利用原数据对BP网络仿真! C. \! \\" a! b, o8 B/ ]0 P
    29. an=sim(net,pn);, |+ z& H/ y3 ~8 p6 I6 t
    30. a=mapminmax('reverse',an,ps2);& Q. |2 u5 y* \1 e. l

    31. - g  M6 {  Q( ]( s, L
    32. %仿真结果与原数据对比测试
      % c8 O1 p' C1 T\" N' `! f- V
    33. x=1990:2009;
      + P6 z4 a& i! a1 G1 T6 u# v
    34. newk=a(1,:);
      $ C5 w# k\" G; w
    35. newh=a(2,:);- ~# t' @5 }* A) A. u& T! I\" }/ v  Z) ?
    36. figure(2);% [8 u( k1 k  T+ K7 V0 j1 Y; A
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      5 Z1 @, f  b* v3 D! O
    38. legend('网络输出客运量','实际客运量');
      ; p: K* W0 C- K4 h
    39. xlabel('年份');ylabel('货运量、万人');# D  Z# Q( t) @( Z7 X( d
    40. title('运用工具箱客运量学习和测试对比图');) ?& P0 C2 u5 n: W; W
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');# n# G. X' O; `9 w: m# I$ X! Q
    42. legend('网络输出货运量','实际货运量');6 {; F* e. l7 J  N  e# }1 O0 e
    43. xlabel('年份');ylabel('货运量、万吨');$ q\" f) N, b6 a& R- X4 V2 R
    44. title('运用工具箱货运量学习和测试对比图');; e5 `\" _5 U% ?7 q5 I
    45. & n\" K( ]8 `7 e  {6 `* C, u
    46. %新数据仿真6 |9 u1 \0 b  T! q; Z
    47. pnew=[73.39,75.55
      ; M\" J2 X, H: I$ e* d
    48.      3.9635,4.0975
      ! k( B  N7 e) g9 q8 O6 F
    49.      0.9880,1.0268];* u' R' ]8 V! `( Y8 L3 x
    50. pnewn=mapminmax('apply',pnew,ps1);
      6 [! i\" X8 o  m6 q
    51. anewn=sim(net,pnewn);! W5 \\" z\" |' J, r
    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; k+ _  r$ i+ ~( g+ ~% ?\" B# n
    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,...9 n) X) B( G+ @+ O
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];8 ~$ m/ a8 }: L  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,...2 m+ K2 o8 @7 c; O7 U9 G) b; R
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      : s- a; r7 o9 @, j& g6 W0 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,...# e6 d, u# {# f+ h
    7.     0.56,0.59,0.59,0.67,0.69,0.79];# \6 b# U3 n' ]4 }& b5 \
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      , `, u% z\" `& H$ \
    9.      22598,25107,33442,36836,40548,42927,43462];
      . i+ ]6 g' i\" c% N  {
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,.../ o/ l; T! E8 I( W0 g+ n( y% r
    11.      13320,16762,18673,20724,20803,21804];4 o5 @( }  q+ ?0 C7 y, O) i6 N
    12. p=[sqrs;sqjdcs;sqglmj];
      ) d+ Z9 \! J3 g4 H. w8 G
    13. t=[glkyl;glhyl];. m5 f! m1 L3 k1 G1 ?! n
    14. %数据归一化7 w: u# R: d  j/ F
    15. [pn,ps1]=mapminmax(p);! j+ p8 E3 \* @  e1 W7 k7 s
    16. [tn,ps2]=mapminmax(t);
      / i* ~3 D; N. @
    17. %dx=[-1,1;-1,1;-1,1];  `! x, X0 ?/ b- r9 Z' |4 n
    18. p0=minmax(pn);t0=minmax(tn);
      + f: y) b0 t& C) \4 p) d
    19. . o/ {4 k5 @, H\" A
    20. %BP网络训练9 b8 }0 v; C. ^4 g2 v' e! n: n; x, \
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); 7 t9 h\" C/ |* K7 g9 Y1 w- D: J
    22. net.trainParam.show=1000;2 L( P$ ~3 e! x4 k8 j
    23. net.trainParam.Lr=0.05;6 s8 S7 T8 d+ A3 N7 _* ]
    24. net.trainParam.epochs=50000;
      ( j  G* }/ l# D% I
    25. net.trainParam.goal=0.65*10^(-5);
      , U5 n% f# x( b4 P% C$ @' P$ \
    26. net=train(net,pn,tn);/ A, v, K( k) U  j. }2 N
    27. * K9 v) T* B8 u& }8 ~1 J
    28. %利用原数据对BP网络仿真% A3 ], U- c2 ?& B0 p) ?* ]
    29. an=sim(net,pn);6 a* H3 K+ T5 A: o4 J1 i8 b) }- D
    30. a=mapminmax('reverse',an,ps2);
      % C/ O9 t0 G' |1 a/ {

    31. + L* G* N( a2 y$ s; e1 o! N! K
    32. %仿真结果与原数据对比测试 # y# ]  Q\" R! e2 m& o
    33. x=1990:2009;
      & U\" q* r8 N7 U9 `4 C0 D& \8 Y
    34. newk=a(1,:);
      1 a! c1 g# J% n9 W7 k3 b' g: P
    35. newh=a(2,:);, E' n  K& i7 `# ~( ^\" N: b9 C7 b$ L
    36. figure(2);1 \3 I7 }! ]0 S\" b
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      1 L# \8 k; D5 P, z& L0 [6 X
    38. legend('网络输出客运量','实际客运量');0 k9 \8 v- `$ ?- |  f  ~: J
    39. xlabel('年份');ylabel('货运量、万人');: @& j2 H1 P. z( m6 |
    40. title('运用工具箱客运量学习和测试对比图');
      , Q2 d- ]# }' x9 n2 q, h
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ! u; d9 j8 O\" j5 M6 S- l
    42. legend('网络输出货运量','实际货运量');
      * g1 s; [7 s* z- I0 V. q2 D
    43. xlabel('年份');ylabel('货运量、万吨');
      $ ~3 g$ Y4 _' o4 g
    44. title('运用工具箱货运量学习和测试对比图');
      : i. _$ s% V5 {! g
    45. # A\" s, b2 x9 f$ ^
    46. %新数据仿真
      * S: M5 X) {/ c+ I8 X9 i
    47. pnew=[73.39,75.55
      0 Q, H' {5 H+ r: y0 }3 b2 Y
    48.      3.9635,4.0975
      2 A  X6 ?; x8 M: J
    49.      0.9880,1.0268];6 i8 _6 l3 c; [7 ?# Q, _
    50. pnewn=mapminmax('apply',pnew,ps1);
      7 z, C. g! q  c* g' X; {6 T& d
    51. anewn=sim(net,pnewn);$ q: Y# L) I  Y5 @9 {$ ]
    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 K0 Y5 Y$ R5 ?. ?" i# c/ ?
    忽略我上面那个,改动的地方在18,21,25行……求批
    ' q) `, A1 R! j5 D6 B! k
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

    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网络训练\" n' ]/ @2 g7 {/ X2 u
    2. net=newff(p0,t0,6,{'tansig'},'traingd');   A: q: C8 ?, w1 i0 z7 k7 {; i
    3. net.trainParam.show=1000;
        B7 e* @( R) u7 n/ \
    4. net.trainParam.Lr=0.05;2 ~$ {$ F( T' e\" c; B
    5. net.trainParam.epochs=2000;  n% z+ a0 h, p7 O
    6. net.trainParam.goal=0.65*10^(-4);
      # N1 A+ y0 M( d1 d! ]; U2 @' i
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,. D/ Q) f4 ~! z1 U" b  _
    一、改成单隐含层的,6个节点
    3 C3 y( x& d& b/ v" M  c+ o6 X二、训练函数改成梯度下降BP算法 traingd
    6 Q+ |, y, Y) c三、迭代次数改成2000" H5 w5 Z0 g/ q8 I/ k8 G0 z4 n8 `
    上面的参数是自己试的,我也不知道为什么。% ]. v7 L* @% q' X" G6 n
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    ! u  K1 P' T2 Z3 t* t关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-22 11:48 , Processed in 0.618431 second(s), 102 queries .

    回顶部