QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4895|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
      @- p/ J" o4 r' P. L. \) {. E1 V' Z' h
    %原始数据输入& h& H1 H% U7 Z  E: @% E% U
    clc
    3 F7 J# A& N( d& s% 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,...# V' k% Y  {/ [4 w) o
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    7 X6 V4 e$ g4 K# M1 T7 U$ ?) J! ysqjdcs=[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,...& G2 w1 ]( H. ?$ a
        2.5,2.6,2.7,2.85,2.95,3.10];2 X' u: j- y& u7 \# 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,...
    / F- b! n0 `! b% N; a% N8 j& q    0.56,0.59,0.59,0.67,0.69,0.79];
    + ~) H# ]* A) Z5 D$ C. M3 r1 X  fglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,.... k5 _4 U4 Z6 h- U! g9 U
        22598,25107,33442,36836,40548,42927,43462];& q+ ?6 v  @6 P  `! ]& v4 q' w7 h
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    " J" l6 Y  g0 `8 g4 E+ H    13320,16762,18673,20724,20803,21804];
    5 B  r6 c3 v# [. Q0 W2 |" Gp=[sqrs;sqjdcs;sqglmj];, v# ~" z8 p3 o+ f6 n
    t=[glkyl;glhyl];
    3 n) s  Q5 @: g7 u
    ; g- S# B7 s( s) O" Z6 Y# h%数据归一化) {( V# D1 s+ p/ b5 {4 e1 \
    [pn,ps1]=mapminmax(p);# m9 C* \6 x" K8 g7 _- s
    [tn,ps2]=mapminmax(t);) \: t4 p7 s- s1 b, Z9 M5 S# Y
    dx=[-1,1;-1,1;-1,1];
    4 H. _, R9 ^" Q* [
    % @% v; B, L% I%BP网络训练
    * b/ i2 d: r( U* ]net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    6 T3 u/ o; y2 l7 |* J& {net.trainParam.show=1000;  j4 A9 X. s5 X  Z
    net.trainParam.Lr=0.05;
    ! J" A2 b1 x/ J  W8 I& |( x6 vnet.trainParam.epochs=50000;6 Q3 {& u! ^3 w
    net.trainParam.goal=0.65*10^(-3);
    + J* d( T' y4 ?4 F3 ynet=train(net,pn,tn);
    2 X+ _! N  I( Z9 C7 A+ r; j! z& Z# A; J- O  \2 I
    %利用原数据对BP网络仿真
    9 K. W8 S) u; e, x6 }$ u* }9 nan=sim(net,pn);0 S0 r- S7 T. |- C! c
    a=mapminmax('reverse',an,ps2);$ L2 F( L# c* |$ T
    8 O8 Q+ `% {- r  }  N7 s+ `8 r5 |
    %仿真结果与原数据对比测试- `! N5 {- w) E+ H; M, ^0 ]% [
    x=1990:2009;6 A; j3 y* W" ~
    newk=a(1,:);, ^% E! ]! }, x" p; r2 P
    newh=a(2,:);  @# q' c; }$ p
    figure(2);6 Y$ B$ m; h% y% n" e" t
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');, G( x& j# ]/ L: E3 ?
    legend('网络输出客运量','实际客运量');7 v4 g* m! `  D+ k9 k
    xlabel('年份');ylabel('货运量、万人');
    * o0 c' Z# Z/ j. Etitle('运用工具箱客运量学习和测试对比图');
    - R! b6 a# m0 P" u1 Q# lsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');2 B$ O. Z+ X+ t& p
    legend('网络输出货运量','实际货运量');
    8 h% v; ~4 I7 Y3 X8 _xlabel('年份');ylabel('货运量、万吨');
    2 C, @4 v: K( J# i! ?( h$ ktitle('运用工具箱货运量学习和测试对比图');) k) G* w1 Z' P  `# z+ E

    # I7 w7 p0 q2 A  p0 K3 m5 I%新数据仿真
    3 P  ?5 c) V8 q/ V7 o- bpnew=[73.39,75.55$ k0 J" i0 a* c+ m
        3.9635,4.0975/ R7 e: O7 m( K# R
        0.9880,1.0268];
    ' {+ D9 i' t9 @8 Lpnewn=mapminmax('apply',pnew,ps1);+ a' G  `* j4 N
    anewn=sim(net,pnewn);+ f4 x, J$ U; X4 J- W9 G3 m
    anew=mapminmax('reverse',anewn,ps2)+ u4 J  U# ^. `/ ^2 u

    % C  ~7 m% O5 b8 Z# ~# Q5 f! O( B) k

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

    `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
    - g" p$ p" x$ H' p6 o看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    " @' p& X- E1 k$ @9 E因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:3 q. Z8 k% `% I5 S5 ?; u  E) Y1 W
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    ; t  W& o3 A4 S2 B$ r我修改为:2 u' e) D& W9 S8 T6 v% O  {9 w
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    1 J( M; F' e3 X5 v然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:/ r/ z$ \5 o$ }! P" ~
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);* t7 K5 B& x+ j- ^9 _6 t
    a=postmnmx(an,mint,maxt);5 q4 k2 ?1 X9 y+ l0 N! }- [
    pnewn=tramnmx(pnew,minp,maxp);5 Y) V- f4 z0 t6 {
    anew=postmnmx(anewn,mint,maxt)
      s" b( O$ U4 N- D0 e我修改为:2 v- d9 }& d9 l1 Z- m
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);% ?' _& N5 e1 I4 [" ?% _
    a=mapminmax('reverse',an,ps2);8 ^" ]1 {2 r1 J. |. }. ^: @
    pnewn=mapminmax('apply',pnew,ps1);
    & j" `# k( g$ j' _" D" \2 Q+ yanew=mapminmax('reverse',anewn,ps2)
    - z0 A" l/ z: ]2 N0 K: @# x2 p/ ?5 G* V$ Z6 |/ _3 u
    原程序为:7 _0 m. B* n! ]' H2 F. p7 P
    %原始数据输入
    , U& \3 z8 `: }, _1 ]+ wclc
    ) _, @4 U) n4 P0 B& Q+ X3 ssqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,.... m  R7 c# |0 B
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    2 b4 S' ~3 N& F* v( 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,...
    / X( v1 l1 J3 S3 g    2.5,2.6,2.7,2.85,2.95,3.10];7 T, S% o) T% \& b* 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,...2 [7 h, \. c4 ~. |3 y
        0.56,0.59,0.59,0.67,0.69,0.79];6 j! E; j8 y7 R' J. i) E
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    - U& b- n% r4 m# j4 g$ K% k    22598,25107,33442,36836,40548,42927,43462];: J% a0 F& B+ `7 ]2 v
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...5 B5 e" Z# `. m/ n: q
        13320,16762,18673,20724,20803,21804];: ^1 I, N, w. f: G5 C1 g
    p=[sqrs;sqjdcs;sqglmj];: |2 l' _( Z" Z4 i* J6 e! H7 E
    t=[glkyl;glhyl];
    & w% m- s. t2 q: _7 y) Q3 m8 F& W% v- h
    %数据归一化5 B0 M! a% A, N5 G# ]4 l8 A; Y
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    & g6 ?; r7 n& Jdx=[-1,1;-1,1;-1,1];
    1 a# b- k5 S! w7 Q3 L
    , j' C' U0 [( T7 t2 x
    %BP网络训练/ K7 l) A3 q: \
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    4 U. ?8 y6 Z  ]0 v  lnet.trainParam.show=1000;4 N" q5 ?) Y; t4 ^
    net.trainParam.Lr=0.05;
    ( V: q' ^9 m, w( {) U* S) o! pnet.trainParam.epochs=50000;! r7 c3 l! g; `: l
    net.trainParam.goal=0.65*10^(-3);
    0 X' S' d9 G/ [! hnet=train(net,pn,tn);& A& H7 B  \4 g' c" W$ q9 V; C3 t( I
    7 Y5 w# r, H* }  e1 y  C8 w. F% P/ o5 D
    %利用原数据对BP网络仿真7 ^+ Y) F4 }) \6 y# x" l
    an=sim(net,pn);0 a: Q+ X/ j4 k4 U5 X3 c
    a=postmnmx(an,mint,maxt);0 S/ C8 `' V, W+ |/ b

    4 ~5 M5 O& v; I8 n, [%仿真结果与原数据对比测试
    : k; \# X) P( z# Mx=1990:2009;
    . m  M9 b* d" D2 q1 i8 K7 ?; |7 q1 Bnewk=a(1,;( U: O0 E: z9 ?) o. ]1 z' T" S4 ^7 y
    newh=a(2,;
    7 p/ Y& b9 E5 p4 qfigure(2);; p% [2 i7 @7 i7 n& U( P. I
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');& }/ S- f; D+ j) \9 C' W
    legend('网络输出客运量','实际客运量');4 x) Y2 |' X4 [
    xlabel('年份');ylabel('货运量、万人');
    - q+ W, R. Y: E! Rtitle('运用工具箱客运量学习和测试对比图');
    & d2 [* g/ E! c$ ]8 Zsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    " R+ L( z9 F" O; f9 ulegend('网络输出货运量','实际货运量');
    2 ^& Z$ P; j- ?+ V% j& Y7 Yxlabel('年份');ylabel('货运量、万吨');/ `! y8 H- l/ U
    title('运用工具箱货运量学习和测试对比图');
    % m; n! I# U2 q
    ( _- B' r' r' l* t' A. Z%新数据仿真7 z! T: s5 o' d# I9 B
    pnew=[73.39,75.55
    + j0 _) {- i0 M1 O    3.9635,4.0975, Q1 Q, `6 @* z0 v6 z- Q8 K
        0.9880,1.0268];7 o4 r% k8 B' [  m. d
    pnewn=tramnmx(pnew,minp,maxp);$ h) ~$ V, L0 n# |( E
    anewn=sim(net,pnewn);0 _# r) `) j8 e# j
    anew=postmnmx(anewn,mint,maxt)
    ; s% g* x2 ?1 t9 l* T2 G8 k

    & p6 a$ n0 o% p修改后程序为:
    / `9 y' A, Y2 }" d) S/ |%原始数据输入/ l. Q2 r# C- c4 ]7 i
    clc
      T" c4 o" [# R0 p, P( P1 f4 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,...( l# ]. B  K# B/ U/ z
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    - h; B* q4 {; k! Bsqjdcs=[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,...$ G, k) r0 \2 A5 y
        2.5,2.6,2.7,2.85,2.95,3.10];0 n/ U# z% r5 E8 a! J3 g2 {
    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,...
    # |# `; e0 n6 y    0.56,0.59,0.59,0.67,0.69,0.79];
      @- h5 h0 p& K2 Aglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...8 h$ Y0 w7 a. M- p0 O' t4 W: `# ~# a
        22598,25107,33442,36836,40548,42927,43462];# \( ~0 G! l& o3 V) S
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...% o. p0 b7 A, g7 @
        13320,16762,18673,20724,20803,21804];6 a# d! E2 i1 ?' |: h
    p=[sqrs;sqjdcs;sqglmj];
      n) L9 k$ ~- Ot=[glkyl;glhyl];( _/ ?3 s2 b! |
    , Z3 D6 f% i6 h7 V' M
    %数据归一化' w( J2 k' {7 z! `2 q8 ^! `
    [pn,ps1]=mapminmax(p);
    5 o& F0 J' |. g. M9 e[tn,ps2]=mapminmax(t);
    ! v* Q% k3 C/ f) O2 d5 C" Q/ C# g
    + Z1 O( P9 H! H$ P- d$ z, j%BP网络训练. t; b9 T5 E5 }
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    3 o/ p3 k9 T8 q$ vnet.trainParam.show=1000;
    & a3 R& @; u( t9 Onet.trainParam.Lr=0.05;
    # ^" U) X. q2 I  y8 @$ U/ l* xnet.trainParam.epochs=50000;/ a9 j7 M) k' \8 X/ }3 n' {& P
    net.trainParam.goal=0.65*10^(-3);
    $ G2 E3 {% c# Tnet=train(net,pn,tn);1 E* M* a1 x9 ~" @3 V- e3 ?

    ( j! ?: |/ O- S7 p1 X%利用原数据对BP网络仿真& g, v8 E! z" y: P+ a* R
    an=sim(net,pn);
    % ~# H9 _9 L! L; l- d' W! D6 Va=mapminmax('reverse',an,ps2);4 t( g' E0 @4 z5 F& h: f  b, [8 Y
    % d3 C8 i/ X- P* P8 b( `
    %仿真结果与原数据对比测试2 u# `: b5 L0 T
    x=1990:2009;
    7 A% I6 t& S) o" O# Q& jnewk=a(1,;
    1 r5 b$ i$ C+ }  u- `' s$ n3 N. _newh=a(2,;
    * ]+ ^0 Q: o; |+ u% afigure(2);
    , u4 j, S6 ?. k' l% t- _. F# rsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');' h$ V" t4 h9 X5 q- p5 R: h$ H8 }8 e
    legend('网络输出客运量','实际客运量');
    " |  a7 D# t7 l* @( A" ]/ pxlabel('年份');ylabel('货运量、万人');
    ; h3 d6 J) I! y; ctitle('运用工具箱客运量学习和测试对比图');, A+ g4 P6 l& r$ I5 S1 ?9 R" [
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    $ C7 P8 A) c4 f$ L, Wlegend('网络输出货运量','实际货运量');% Z: g$ x) J# L
    xlabel('年份');ylabel('货运量、万吨');
    # X) h1 ]# l9 i4 K# }# utitle('运用工具箱货运量学习和测试对比图');
    ' D5 w6 f$ A1 D( X/ Y" }/ k2 X4 C7 v; p% g' a- o2 u7 m2 u
    %新数据仿真  t9 I8 w- `* O7 Q& Y
    pnew=[73.39,75.55
    - i8 A0 h0 R. U" F% W& c    3.9635,4.09750 W2 C8 e! v: r, j
        0.9880,1.0268];8 X2 O0 G% w( G! w0 G
    pnewn=mapminmax('apply',pnew,ps1);( x" \, l; g- \' t7 \% X3 }( Z
    anewn=sim(net,pnewn);- ?( r9 c8 O3 S0 c4 ?, t2 r
    anew=mapminmax('reverse',anewn,ps2)
    , c) e  l" ?0 }- I(修改的地方用颜色标记了)
    $ F% P7 C- q0 W$ [+ V$ w# 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# S2 W/ {' c9 Q% [5 h\" s: S* t
    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,...4 B( g- H* w; e$ {, M! \% Z0 f
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];- k  z) P- f3 w4 }+ A& o, F4 C0 J4 L
    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,...% K: t2 j; ]7 N3 ?
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      / W$ j0 c$ h* o6 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,...
      * {; g# R% X( I9 j* \! ^0 N
    7.     0.56,0.59,0.59,0.67,0.69,0.79];2 }' C' x& o0 j$ J( ]/ A, P
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      8 A4 }$ _# c* u; q& T1 T
    9.      22598,25107,33442,36836,40548,42927,43462];
      # j& n) B/ ~* _! }' |- w
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      \" [6 P4 m- b0 J  c5 F; \1 N
    11.      13320,16762,18673,20724,20803,21804];9 M& Q$ {* B  a( Q) i
    12. p=[sqrs;sqjdcs;sqglmj];
      , s, i% x6 X5 @+ l3 \: E1 h# E) d9 G) l% v
    13. t=[glkyl;glhyl];6 T5 o3 F1 e4 `3 t$ o, a
    14. %数据归一化4 f6 z8 }$ n) Z: ]\" j/ `9 M
    15. [pn,ps1]=mapminmax(p);
      # X7 g; e. N- j' T. W, E\" S
    16. [tn,ps2]=mapminmax(t);
      ! F& L6 }\" O* U0 k3 B. n
    17. %dx=[-1,1;-1,1;-1,1];
      ( @# p% i  O\" ]
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      2 Q. {$ Y& m9 w; p9 o

    19. 6 H  M( x/ t2 {0 i  [  M6 P
    20. %BP网络训练5 u5 J8 @) G# C& p, T& W9 I' _
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      * U1 \$ [) G( y% B: L( E
    22. net.trainParam.show=1000;
      $ [0 u% U3 {- h7 o, t
    23. net.trainParam.Lr=0.05;
        P4 F, u! ]. e) w- Q
    24. net.trainParam.epochs=50000;' c9 e' I# A) I/ C! x
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]$ }7 p& b2 L. W7 D
    26. net=train(net,pn,tn);
      1 S\" V: ?6 @( W+ B& H

    27. : l\" I0 z) s! }4 E
    28. %利用原数据对BP网络仿真4 ~6 t; n8 T7 q. Z9 O7 f3 F
    29. an=sim(net,pn);& I( x- k( E* ?1 z! x
    30. a=mapminmax('reverse',an,ps2);$ E' y) P. k0 t% ~3 D; V8 J9 X/ N
    31. * ^% z\" }; x0 K' ?) B7 B5 u0 p, P
    32. %仿真结果与原数据对比测试 0 b5 q  Z2 E0 [
    33. x=1990:2009;; N+ z/ ^) `$ q# v7 F1 N! }3 V
    34. newk=a(1,:);
      $ h3 W8 S/ M- Q4 |
    35. newh=a(2,:);
      ! i1 @' ]7 H  o. Q+ q! A9 F; `
    36. figure(2);2 K' D\" V/ o5 J& ]# [1 T/ t3 m
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');! Q+ T- W% Y2 A; p/ J
    38. legend('网络输出客运量','实际客运量');1 u/ {! G; N7 c; k' b% A
    39. xlabel('年份');ylabel('货运量、万人');, |/ c* Y5 q4 J, Y/ x8 }6 k# G
    40. title('运用工具箱客运量学习和测试对比图');
      6 y& V1 a6 W, k% P0 n) J5 X
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ! M% n' M\" G\" D* z1 p1 [7 |
    42. legend('网络输出货运量','实际货运量');
      : b5 e5 l4 \5 A1 x
    43. xlabel('年份');ylabel('货运量、万吨');, r\" ?5 w5 ^1 O+ q# [! g- s
    44. title('运用工具箱货运量学习和测试对比图');1 s# c4 |' w! A

    45. 6 D7 \# L8 N# V# U6 X
    46. %新数据仿真- d+ @# i( w# O, ~' I( l# ~# O
    47. pnew=[73.39,75.55
      7 C# ^* F! G$ G: h\" |
    48.      3.9635,4.0975
      & A3 V! B. C) s$ b5 `
    49.      0.9880,1.0268];
      / E* a* L* E+ ?5 U: d6 t  m
    50. pnewn=mapminmax('apply',pnew,ps1);. e1 M7 z) `\" k) h
    51. anewn=sim(net,pnewn);
      . N8 q  j8 r& o5 n' V
    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
      2 B# g* |9 C5 R1 R$ K
    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,...
      ' f% G2 |- e% D& n3 h
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      $ t  Z2 T0 z\" j  c& ]5 m: t
    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,..., a+ q0 y/ R: c, K( \. u' u  G8 n
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      . z& p# Y  z$ _8 S/ Z0 O
    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 u1 E, `- D$ F9 o/ l\" g
    7.     0.56,0.59,0.59,0.67,0.69,0.79];. R/ m0 p  ~- B* b% Z+ k2 a- f% L
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      % v2 ^* P+ u6 X1 ]
    9.      22598,25107,33442,36836,40548,42927,43462];8 f& c+ {: X3 c5 c\" F
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      4 l! N% l2 ?, `* Y  @+ m
    11.      13320,16762,18673,20724,20803,21804];( ?$ d  t- f, T- v9 @- C
    12. p=[sqrs;sqjdcs;sqglmj];: y0 C0 G\" R5 I5 F\" @% Y9 X7 o
    13. t=[glkyl;glhyl];/ w: L5 A\" ]7 V2 T) L
    14. %数据归一化' b/ p3 m5 X1 L( l! T. H
    15. [pn,ps1]=mapminmax(p);$ R) {- h# _& z: ]. G1 O
    16. [tn,ps2]=mapminmax(t);
      & g4 }4 L3 U0 v
    17. %dx=[-1,1;-1,1;-1,1];* |+ B0 Q  ]  I% ]$ N  E5 l
    18. p0=minmax(pn);t0=minmax(tn);
        P3 a$ m6 r\" {, [* X0 S

    19. 8 X3 [3 B( C) U/ |/ i1 o
    20. %BP网络训练
      ; r0 Q4 o$ p* x* o( V- l& {
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      / ^7 }9 j. h) z& a  U, R. C
    22. net.trainParam.show=1000;
      : e1 A, z$ O0 @- q\" @
    23. net.trainParam.Lr=0.05;
      6 L- I5 W' k& P2 ]
    24. net.trainParam.epochs=50000;
      + O. g) |) X$ c# @0 J\" D
    25. net.trainParam.goal=0.65*10^(-5);5 r* Y* {7 R! X/ N
    26. net=train(net,pn,tn);
      ' `3 l' N. V& Z2 G3 n
    27. 0 E' j5 v+ ^( J- g9 g
    28. %利用原数据对BP网络仿真
      ' Y8 P2 Q$ ^: t& t' I4 K
    29. an=sim(net,pn);
      . u\" U( h- f1 }  T; a
    30. a=mapminmax('reverse',an,ps2);
      ! L# F7 z. _2 x) @) N  c* R2 l/ C
    31. 8 t( V! Q- R  k8 k. i
    32. %仿真结果与原数据对比测试
      * }1 E6 G9 E/ C6 f  }( r8 t
    33. x=1990:2009;
      \" T/ H3 `$ H8 }8 X5 ?
    34. newk=a(1,:);
      . {6 c  ]2 }\" s& e0 l& k9 X
    35. newh=a(2,:);. ^. \! D! @8 E8 y& V! K0 l
    36. figure(2);# `* L* S* p5 S2 u- d& r
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      $ H+ D% |0 P7 Z8 B' P  [\" h
    38. legend('网络输出客运量','实际客运量');+ S7 T5 H7 v  [6 I. T( t' D\" G
    39. xlabel('年份');ylabel('货运量、万人');
      ( \, o/ n% X2 L\" ]
    40. title('运用工具箱客运量学习和测试对比图');
      ( g$ N& O$ J  D. z
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      3 O4 K\" B5 r* w; o
    42. legend('网络输出货运量','实际货运量');! \2 t4 M: d% u2 [& s( X
    43. xlabel('年份');ylabel('货运量、万吨');3 q/ D4 @2 y+ t) N+ ]
    44. title('运用工具箱货运量学习和测试对比图');( a& G+ I8 h5 l7 K% D: K7 V+ W
    45. / |( c* h9 y3 h
    46. %新数据仿真
      ( ^* t4 S8 y* c3 c
    47. pnew=[73.39,75.554 u8 c6 T2 h8 _- M
    48.      3.9635,4.0975
      : A/ n5 J\" f: J% }
    49.      0.9880,1.0268];; t5 ?\" Z( J8 I1 O. h& J$ ^' f4 w
    50. pnewn=mapminmax('apply',pnew,ps1);
      , y% v3 O5 N1 G; o+ s+ v6 `) m
    51. anewn=sim(net,pnewn);
      % Y$ E: W, I, }2 y! N1 i2 k; r
    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 t( E, E! {5 |& N6 R忽略我上面那个,改动的地方在18,21,25行……求批

    5 N2 `9 j7 a2 h  j' ]0 [确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      ! g! z) B' B+ t( ^
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); $ s\" d1 m. L( P* n7 M) ]
    3. net.trainParam.show=1000;
      ! K\" |3 n' n3 p2 S4 T+ F8 s. L
    4. net.trainParam.Lr=0.05;' q4 t4 ]+ N/ d- j1 [  S( F
    5. net.trainParam.epochs=2000;% W! D\" X8 ?3 z+ X3 k
    6. net.trainParam.goal=0.65*10^(-4);
      ( z% _\" l- a& u' x7 ?: j# }
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    8 T  X& H5 V: l, e5 \一、改成单隐含层的,6个节点2 o$ [% }8 ?9 |$ C# D
    二、训练函数改成梯度下降BP算法 traingd
    ! G: l. e1 B* o; ^9 L, A三、迭代次数改成2000  C7 Q6 m: s! n) a0 H  i
    上面的参数是自己试的,我也不知道为什么。
    8 m, o( N  p, ]+ G; k; l* c由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。2 n% \; ~, W) C
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-27 12:36 , Processed in 0.386278 second(s), 107 queries .

    回顶部