QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4802|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!) v$ n8 ~9 N( `  i/ T
    3 n% E9 s: h( {# \$ u6 t
    %原始数据输入
    5 G+ g4 U6 e# u7 R8 \8 f; Iclc5 f: V* T, C+ [
    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,.... n3 }- B# S$ Y/ A( {
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];) s$ q& u, p" ]. q( C5 n+ }
    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 P1 h9 g+ X: U8 @7 Y% s8 ?7 S    2.5,2.6,2.7,2.85,2.95,3.10];
    : }7 _3 I5 |; B% ^( y! K6 Isqglmj=[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,...
    - m0 c8 j$ {, C, Q    0.56,0.59,0.59,0.67,0.69,0.79];3 E2 {, }. t) t" R: Z# L$ p
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...3 I8 |; G6 b5 T+ s
        22598,25107,33442,36836,40548,42927,43462];
    . i- ?7 l: X% \$ e: ?2 hglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...7 e/ s" S4 K7 B: C  z
        13320,16762,18673,20724,20803,21804];, a$ u: E/ G1 j7 t/ Q
    p=[sqrs;sqjdcs;sqglmj];2 h/ Y+ L9 E, N) o1 t9 |1 y
    t=[glkyl;glhyl];
    0 s2 j; Z2 K& v- Q% x1 \8 d" |
    7 f+ E/ F. W( t8 ^/ p%数据归一化# l9 L% l# G) B
    [pn,ps1]=mapminmax(p);! D6 `! e# j, h# l
    [tn,ps2]=mapminmax(t);
    . H, w4 y" E* m& r2 Ddx=[-1,1;-1,1;-1,1];" J0 j6 e# y- |7 }2 S/ |# ?

    ; b8 F( }! F' W7 S%BP网络训练# l4 \$ c! w* a
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    ' ]) @# _( c  u4 L9 ]net.trainParam.show=1000;& Z# O) L: Y( Q( u
    net.trainParam.Lr=0.05;
    * G' n/ Z; u6 e' Knet.trainParam.epochs=50000;( d: m: R( Z4 w/ O! J8 L% K
    net.trainParam.goal=0.65*10^(-3);( D/ {  N+ q. R2 g. |
    net=train(net,pn,tn);
    9 F+ W! I! l: Y( k/ e9 U: e) a" w1 Z) I
    %利用原数据对BP网络仿真
    ( r- b- S- X1 gan=sim(net,pn);- U3 ]2 j: v8 |8 t! H9 W
    a=mapminmax('reverse',an,ps2);7 o1 M( C6 L3 a2 B
    $ d- h, C- A$ ^) U% ?! o/ `2 _
    %仿真结果与原数据对比测试
    1 S: k' [& h- _0 ]4 w- fx=1990:2009;7 M, \) y, w. N  k! T3 }
    newk=a(1,:);. j/ A$ r: D  t1 o$ B( k  ~
    newh=a(2,:);
    0 z. p, E, H! n# P9 p/ ~! Hfigure(2);
    ' G0 ]/ ~- [& b( qsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    & x! R3 z% L% [6 J, u. d# rlegend('网络输出客运量','实际客运量');
    6 a) Q. \* k5 `$ T1 g7 Y' X% N& w; nxlabel('年份');ylabel('货运量、万人');
    2 M+ Q* C# b' q) P* V/ Ntitle('运用工具箱客运量学习和测试对比图');4 q& j8 [; g! e; j2 u/ V9 }
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    * d  L/ P; O3 ~, e% v5 j1 }legend('网络输出货运量','实际货运量');
    $ T6 K* a! G, P. L* E# g' zxlabel('年份');ylabel('货运量、万吨');
    ' T! ?+ a  ?4 a4 ititle('运用工具箱货运量学习和测试对比图');
    9 X) W2 n$ S4 r' B8 K/ f; Y! K$ v: n
    %新数据仿真. {3 p3 [& n) b- i9 ]
    pnew=[73.39,75.55
    4 n- l# r8 Q: X7 g& d8 g    3.9635,4.0975& L! D; n# y( V* g; Y2 y- y
        0.9880,1.0268];
    ) E5 l0 r( W% D3 fpnewn=mapminmax('apply',pnew,ps1);
    6 B$ U% L5 N  o) A* |  G1 vanewn=sim(net,pnewn);) C; P: z1 s/ g7 i
    anew=mapminmax('reverse',anewn,ps2)
    * J0 y* _0 c4 z
    8 O6 T: F4 Y1 c  ^/ S8 s' c. {7 S

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

    `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
    * j5 q' L, q# |. z2 ~看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    9 T. _) w. V; [
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:0 L4 x2 p* p% |) F. m3 V* a' k
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');, v7 x! H+ C3 t& ]: j
    我修改为:7 B: ?* j9 f* P* _1 _- T- ]
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    8 a& h, I3 s% O然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:* g% _2 t/ Q  ?* V! o# _9 b
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    5 W# T2 o& `! ma=postmnmx(an,mint,maxt);3 f7 u, N, ]4 i  C5 Z# }
    pnewn=tramnmx(pnew,minp,maxp);2 d% P6 s% ]8 f% l& k
    anew=postmnmx(anewn,mint,maxt)5 r/ d: l6 j% O* _
    我修改为:! i: c1 z% q4 `  o& O
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    2 k6 b7 S. F" N' [a=mapminmax('reverse',an,ps2);
    5 ~4 E: I$ F: Jpnewn=mapminmax('apply',pnew,ps1);
    ) P+ ?: z2 F# P& V& ]& L7 g2 eanew=mapminmax('reverse',anewn,ps2)! [( ?0 H. p) W, `6 J6 l/ D
      _& a, r  |2 k* z
    原程序为:
      X. ?! z9 O- A%原始数据输入( k% S# W) P, j$ C9 \3 Y- n8 @8 N
    clc  X( b& D7 s7 V$ j' Z/ I3 c' 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,...3 J/ t* X5 U8 q. d) }  y
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];- s( y6 U1 ]8 x, @# `  l5 d
    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 [/ W- I+ ]: Z! c* j3 ]/ g    2.5,2.6,2.7,2.85,2.95,3.10];6 W- n1 A  [! F; ?0 B. 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,...) R: ~# i' R" w( \
        0.56,0.59,0.59,0.67,0.69,0.79];/ ^& e% j# V4 o& U8 Z$ g% t
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    6 G0 z0 ~4 d7 e; q' W; A- O    22598,25107,33442,36836,40548,42927,43462];3 o# |  G4 W  S( E
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...9 Q- K( y" M- @5 X+ s
        13320,16762,18673,20724,20803,21804];. l  i% x& q5 z" H4 t8 n% W
    p=[sqrs;sqjdcs;sqglmj];0 }  B% g8 K; B4 a2 u2 ]$ E/ n. B* ~
    t=[glkyl;glhyl];* K. k- q  x; k$ \6 @; i

    9 d( H8 s  B4 J+ ~# H%数据归一化- Y! U  s: Y, D; H% w" J+ N
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    " k$ i6 g" r% E0 C/ Ydx=[-1,1;-1,1;-1,1];
    : }6 Z/ \( B# C/ q
    2 v! x  e1 o3 ]$ x9 y& E! _
    %BP网络训练
    1 f- c" h4 x2 z+ n1 anet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');. E# V0 F2 I. t* f/ V. _
    net.trainParam.show=1000;# `& j4 O+ G8 V. g
    net.trainParam.Lr=0.05;  {2 [- A/ Q" m7 I
    net.trainParam.epochs=50000;
    2 }; B) f' O) S* k. b' N" N5 hnet.trainParam.goal=0.65*10^(-3);
    2 G5 J2 K. s9 p1 a/ J; snet=train(net,pn,tn);
    9 U9 a& E) w' w0 G: N" A  C9 |0 w' A
    5 M# A: s% ?. f%利用原数据对BP网络仿真. I( w/ \3 V' G& m9 y- N5 I
    an=sim(net,pn);! w: p3 ~9 K4 g! W" {  ~3 U
    a=postmnmx(an,mint,maxt);
    ' N! I7 D/ ?! o( L' j; R0 M& }" Z8 ~- I
    %仿真结果与原数据对比测试
      a) ~7 D: U* P* Z  J- H3 E- D8 bx=1990:2009;
      z. n8 p& o; [, {newk=a(1,;* I' g- k/ z$ r8 l' U
    newh=a(2,;
    * p" x& t  J1 l$ i6 t6 C4 sfigure(2);
    : H6 Z; |6 z# c, msubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');! X- {% R4 h* d1 z  G; R. u
    legend('网络输出客运量','实际客运量');: P! ?  p( R. g( {3 f
    xlabel('年份');ylabel('货运量、万人');1 D( ?# \0 S0 H0 g; {; X
    title('运用工具箱客运量学习和测试对比图');
    " d: g/ P" _  ~7 J) J3 x1 f; @subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');3 M" L4 J& y% j4 |+ O. ?1 v
    legend('网络输出货运量','实际货运量');0 c% T! N1 q$ j: O) |" _! f" U
    xlabel('年份');ylabel('货运量、万吨');
    ! o9 \- `) _+ H$ i; J, [title('运用工具箱货运量学习和测试对比图');
    # S1 b! D' L2 D# o! O
    6 s. g  q0 y' [%新数据仿真
    & {& @) w" d9 k3 b" |pnew=[73.39,75.55
    9 E" {- G* l$ k8 |2 d* a    3.9635,4.0975
    6 l; `% ^$ n; x& k; t& h6 F    0.9880,1.0268];
    ! v- b+ O/ e# I2 W  Wpnewn=tramnmx(pnew,minp,maxp);
    6 ?- N/ Q9 r: D6 l: m/ H( Z4 B$ \anewn=sim(net,pnewn);
    5 M0 U; F+ C& C0 Q1 i6 m( g' t# yanew=postmnmx(anewn,mint,maxt)
    1 ~  {. b' [, |5 F, `- q2 P

    3 o% V; \! A5 K/ ~. \* b2 }2 m修改后程序为:
    , P" h- i! O! K2 ]* E' e%原始数据输入
    & J% l  e7 n( Sclc( ]% o( l/ R6 }' \' {0 e& g2 n
    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; A7 L! @/ {" a" R: ~7 O
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ! e/ M* Q$ s' f+ l: n/ m9 ]  hsqjdcs=[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 y. N1 O" P# G
        2.5,2.6,2.7,2.85,2.95,3.10];
    ' ?( [/ C% G& ^7 Z% b! N' o, \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,...+ w# R: J. b; w/ y" W- X/ F* N
        0.56,0.59,0.59,0.67,0.69,0.79];
    ( h4 C! F- \+ v+ ~. b* y6 b) V8 sglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    . w  _# x+ w' L% d8 Z, J1 j    22598,25107,33442,36836,40548,42927,43462];" w3 ?5 w; M9 l/ x3 i- o9 Z
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...& ?3 a9 n- Q9 W, k/ K5 \
        13320,16762,18673,20724,20803,21804];
    # A; I, D$ `5 n# K+ @" Jp=[sqrs;sqjdcs;sqglmj];4 G& U4 K, {# p. a' P4 T( g/ r
    t=[glkyl;glhyl];
    / _3 H" b) w% l7 g" }8 K
    - ]  l4 @5 W0 G; V" @% U" x8 @%数据归一化
    - j7 a* z6 a- y+ b+ D[pn,ps1]=mapminmax(p);. \: j" e" b; k" ~4 }) H
    [tn,ps2]=mapminmax(t);# [& t3 H0 @/ M  e8 `7 w% a2 \

    : R5 O! [1 P5 G# x%BP网络训练4 j1 J4 w8 f7 ?0 C
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');9 ~. ^/ z, Z$ S2 O
    net.trainParam.show=1000;
    % }/ G: z2 w; g3 ~net.trainParam.Lr=0.05;
    6 M) x3 x% [1 I; A0 Y: vnet.trainParam.epochs=50000;
    , v. [" z9 P' s* `& }7 Rnet.trainParam.goal=0.65*10^(-3);
    ) E. b/ @2 T9 _, j9 [5 Onet=train(net,pn,tn);' A% x) W: |5 i4 c. [2 T

    : l/ {1 _" I7 ~%利用原数据对BP网络仿真
    1 K# t; p8 ?$ H! N0 `4 oan=sim(net,pn);
    " b$ Y, T3 }$ x. d8 x- n6 Ia=mapminmax('reverse',an,ps2);: ?2 t6 {7 a  P! j4 l1 S5 C

    2 b& R  }( Q8 Z9 w2 u%仿真结果与原数据对比测试1 C7 ]0 J# Q3 ]2 R$ f1 g- y
    x=1990:2009;
    4 W* m2 A/ p; L9 p* Q, T5 Enewk=a(1,;# H7 U! F" U  J/ O8 T" m6 K
    newh=a(2,;  |/ [4 V- G8 _1 u
    figure(2);
    2 Z: R* P9 d, z+ S( n/ ^5 R$ osubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    # x3 l6 J! ~% j! y2 e# N% ?legend('网络输出客运量','实际客运量');. V9 v9 s  S2 w8 {1 @* s4 G
    xlabel('年份');ylabel('货运量、万人');% }, R4 X% n2 C, x& x( E
    title('运用工具箱客运量学习和测试对比图');
    & F+ l1 K+ Q$ ~8 g) lsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    1 G* R) c3 O/ t: qlegend('网络输出货运量','实际货运量');- U' s0 P8 m1 p' Q/ ?% `
    xlabel('年份');ylabel('货运量、万吨');
    . c. Z! C- K' D2 E4 C& {9 xtitle('运用工具箱货运量学习和测试对比图');  X7 G; M/ j8 [/ i
    + p+ }2 _0 C% L) Y9 [
    %新数据仿真
    , w, t" |3 O7 {, t; Y5 opnew=[73.39,75.55: x3 s4 Y/ d2 E# i2 }( }' u
        3.9635,4.0975
    6 B: ]7 K9 Q/ n& G    0.9880,1.0268];' ]( h- m8 x5 y
    pnewn=mapminmax('apply',pnew,ps1);
    1 F5 b0 ^+ H' r7 ^3 ]anewn=sim(net,pnewn);
    0 {1 ^3 Q6 t. h" M; U. l- S+ ^# @anew=mapminmax('reverse',anewn,ps2)
    ) b  [# w# E1 I3 a( v(修改的地方用颜色标记了)
    5 U$ n4 |6 V% Z# `8 G; F7 F麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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 F. Q, ~. v7 b, A6 e, s
    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,.... D8 D6 T7 m1 R* i; X4 y7 e4 @\" D
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];3 C; o6 R2 ~9 u6 f) b. e8 n% 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,.../ i1 |; b3 L4 I
    5.     2.5,2.6,2.7,2.85,2.95,3.10];. y/ x% Z4 s& Q' ?* z+ ^
    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,...% @# B+ c5 y; d
    7.     0.56,0.59,0.59,0.67,0.69,0.79];; g% G1 ?5 X: W4 r7 D
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      4 ^+ O6 |) ?; _- P+ C7 V
    9.      22598,25107,33442,36836,40548,42927,43462];
      - \0 X& h. d7 y( C
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...* f* v! ^% a- a  Z; M
    11.      13320,16762,18673,20724,20803,21804];% ?4 Z) z. N& z* P% w' N/ g2 D
    12. p=[sqrs;sqjdcs;sqglmj];
      - n& d1 X5 z% M6 g
    13. t=[glkyl;glhyl];
      8 N4 p6 x! K+ f. U, y' B; k
    14. %数据归一化
      3 ]* G, M3 w) o% Q$ g
    15. [pn,ps1]=mapminmax(p);' F0 K2 G. d  B1 Z; }9 w+ K' a
    16. [tn,ps2]=mapminmax(t);
      . ?/ ]+ h$ S6 W  H0 Y
    17. %dx=[-1,1;-1,1;-1,1];& D, N- H3 b/ s  t/ a
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]# K* b2 d* |, y

    19. 9 u: E  G5 |$ l( [0 h
    20. %BP网络训练
      0 D! B: T1 i4 d# ^6 j2 ^+ F/ ?
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      4 G1 O8 D' `4 |2 I2 A
    22. net.trainParam.show=1000;; P( o: S$ H) s: p
    23. net.trainParam.Lr=0.05;+ F& A- p1 M# a
    24. net.trainParam.epochs=50000;& S0 v6 y/ t) ], |/ J2 P1 ~5 q
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      # [; _1 J/ l( D+ i+ b
    26. net=train(net,pn,tn);1 i. @/ d7 L; _( d: g5 ~; N
    27. 5 i- N$ U\" D' y+ u1 m& k
    28. %利用原数据对BP网络仿真
      5 \6 w/ e1 L/ T
    29. an=sim(net,pn);& O& W+ Z+ ?2 m3 k! M\" s
    30. a=mapminmax('reverse',an,ps2);
      7 K& x+ ~$ ]( q. A) r) a9 z2 @( H
    31. : O) g- n* v, l# \1 Y% C9 @, h  f6 f
    32. %仿真结果与原数据对比测试 % p1 }5 L! b. {) R
    33. x=1990:2009;
      7 M# A  F5 t* ]8 f5 u: k! k
    34. newk=a(1,:);2 _! w! j' O0 A; _
    35. newh=a(2,:);  |- m9 Y0 z; N4 G; V) _
    36. figure(2);5 y& ]- [/ `+ z. u\" j; O8 ~: K
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');6 s\" Q4 A- f7 X$ O# y% N- o
    38. legend('网络输出客运量','实际客运量');0 J) k) n0 S0 c' \/ Z\" q- ~/ N  \
    39. xlabel('年份');ylabel('货运量、万人');
        F& K2 w& ^\" o& C& z
    40. title('运用工具箱客运量学习和测试对比图');% M1 d5 I% N5 C) l3 U; {3 L
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');* O  S2 t( O# o
    42. legend('网络输出货运量','实际货运量');
      - I3 Q$ G( p% B' I/ j7 R
    43. xlabel('年份');ylabel('货运量、万吨');: a& ~/ o% s3 T
    44. title('运用工具箱货运量学习和测试对比图');- S5 z: C# I8 @! Q$ F3 r/ s. M3 k
    45. 2 v6 E5 `. X7 ~2 M/ I9 j
    46. %新数据仿真
      * e. Y9 N- o3 a6 h4 ]1 S4 f\" j
    47. pnew=[73.39,75.55+ O5 x; `( G: F2 y  R4 N
    48.      3.9635,4.09751 }) @# i$ E1 m7 A* {
    49.      0.9880,1.0268];* P& q2 O: Z, e* [: d, G
    50. pnewn=mapminmax('apply',pnew,ps1);
      , [# h  f8 t& p; h+ [+ {
    51. anewn=sim(net,pnewn);
      0 n& D8 Q  M7 v4 b0 M* s
    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\" i# X& w% G$ ^% D7 T$ m# _
    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,...1 J7 z2 H2 w+ a) e$ q! p- {% r8 g
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];+ N1 B+ [6 o$ u7 t$ R7 w
    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,...
      / H) S3 `; r. B/ A/ n
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      . e7 t; Y+ @$ Z! o& H\" U( H
    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,.... ~! ]: b2 |) Q  v, l( O) ~
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      ) r6 l: P8 Q6 M, g\" Y4 v+ f9 Z
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      7 \3 C9 e3 Q7 K# w8 a9 ^
    9.      22598,25107,33442,36836,40548,42927,43462];7 ^( `* U) N$ Z2 C, F2 R
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      1 a7 ^8 r2 }. I
    11.      13320,16762,18673,20724,20803,21804];
      - v1 M2 |0 q& [; T7 v; b! N
    12. p=[sqrs;sqjdcs;sqglmj];* C0 W: n# Y. r2 d2 ^+ A
    13. t=[glkyl;glhyl];
      2 b+ M6 U* ~8 `! l& y
    14. %数据归一化: \2 [\" ?. Y2 ]8 A2 F9 D$ s& U& [
    15. [pn,ps1]=mapminmax(p);\" [- t$ M0 E: B- w# X0 [
    16. [tn,ps2]=mapminmax(t);
      # S; O1 z/ X\" n; m) P3 C
    17. %dx=[-1,1;-1,1;-1,1];
      - E, e6 k# ?/ K. ?2 o
    18. p0=minmax(pn);t0=minmax(tn);9 I2 d( Y! L, b- n4 b5 g. Q
    19. ! L1 `7 {% a6 |. y9 c. @
    20. %BP网络训练
      % ?1 w6 Z3 @* p, @( T$ J
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      4 M! d- y- I6 Z3 h( p! B5 E/ ^
    22. net.trainParam.show=1000;; s; P, d$ j0 H9 Q2 i
    23. net.trainParam.Lr=0.05;: }$ j\" x% y' c% f( D
    24. net.trainParam.epochs=50000;
        r  S6 ]* `! B- X
    25. net.trainParam.goal=0.65*10^(-5);
      : n! z, k) q4 ^% E: F
    26. net=train(net,pn,tn);! v! F5 O) U! R5 I, m& j' S\" ~
    27. & q0 `( p; F4 [
    28. %利用原数据对BP网络仿真: D! G2 q$ @( n\" N' W3 Y
    29. an=sim(net,pn);5 u$ Z. i3 e/ e( M% c5 E
    30. a=mapminmax('reverse',an,ps2);
      3 P  \$ M5 d0 Y( f8 j8 f

    31. 7 L2 Z\" V& T! u! N5 g+ E2 S
    32. %仿真结果与原数据对比测试 + n, X: [& D7 d2 v2 W6 E
    33. x=1990:2009;
      1 \5 H4 n% A& F% o* I8 ?
    34. newk=a(1,:);' P; Z; Q1 \5 @9 J- s
    35. newh=a(2,:);
        S! H4 I8 I6 x2 d
    36. figure(2);
      8 L+ U1 L' G& s6 q  c$ q, V
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');' {# l* ]- Y7 y! [2 X
    38. legend('网络输出客运量','实际客运量');* D+ E/ X8 _+ v. _/ T8 Y' s; m
    39. xlabel('年份');ylabel('货运量、万人');' A; ~4 z+ J4 c
    40. title('运用工具箱客运量学习和测试对比图');; I3 t9 u6 V( t3 y
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      3 F4 l4 `: {# Z( @- X% x
    42. legend('网络输出货运量','实际货运量');
      ) a% \; N* c' v  T
    43. xlabel('年份');ylabel('货运量、万吨');* F- O% o5 R( D
    44. title('运用工具箱货运量学习和测试对比图');
      8 H, S/ [( }. D) w7 T
    45. ! [$ z7 e( N) s& p
    46. %新数据仿真
      , a6 _0 a- y& B7 R  V
    47. pnew=[73.39,75.55# H: f, ]4 o0 g/ L! j2 L
    48.      3.9635,4.0975
      $ @8 j+ i+ _6 P: t# l0 J2 g
    49.      0.9880,1.0268];
      & X* ^* n. U  y+ g) c* K; v
    50. pnewn=mapminmax('apply',pnew,ps1);& ?! v' o2 ]) a* `
    51. anewn=sim(net,pnewn);/ r& Z) a* A9 F4 r% c8 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 J' j4 c- m4 j5 _5 i; q) L7 L% d* b
    忽略我上面那个,改动的地方在18,21,25行……求批

    - D0 R9 o) ], M2 R0 C确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练9 E% I8 G6 P/ U0 m# Y! t
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      7 ]$ y( t/ v9 n$ ]4 G
    3. net.trainParam.show=1000;
      + Z9 A: u4 H; k8 H
    4. net.trainParam.Lr=0.05;
      \" X+ \6 w. o. q4 Z
    5. net.trainParam.epochs=2000;
      $ ~  X( ?4 j3 a1 t1 M
    6. net.trainParam.goal=0.65*10^(-4);
      ) g1 w2 w7 B2 G, ~6 t# y
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,1 \- d5 a5 p2 l
    一、改成单隐含层的,6个节点
    4 x8 ]: X1 z+ w8 G% M/ o  O, v/ x二、训练函数改成梯度下降BP算法 traingd
    5 e5 _6 g( C" O: o& C三、迭代次数改成2000
    7 F* C+ c, K' Q$ M上面的参数是自己试的,我也不知道为什么。
    ; D7 X/ J; @: v1 k由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    6 _& K/ L2 O7 f5 d9 U/ ~0 k6 ?关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-6-4 00:32 , Processed in 0.539646 second(s), 103 queries .

    回顶部