QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4962|回复: 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 g+ w& b6 y7 t' |: f
    , L/ C$ C" j( T3 G' {; D! ^. a%原始数据输入! m4 f! c+ z7 W8 q2 [8 p, s
    clc
    ) [8 q2 K0 _0 y% 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,...
    # Z& T$ }( `, z1 ~    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];2 n8 c2 g# W1 ^( c  F0 ^: J
    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,...
    ' [; g  L0 M6 [" b9 u, l6 e# b. \    2.5,2.6,2.7,2.85,2.95,3.10];
    : t+ k- ]3 E+ X8 A0 ksqglmj=[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  |- @# Y4 z1 @9 a
        0.56,0.59,0.59,0.67,0.69,0.79];
    4 `+ v) j, {! r: Kglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,..., f3 d, Q2 ^+ s4 @
        22598,25107,33442,36836,40548,42927,43462];  b: E7 F" d' ~3 M; [! q
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...% a: d& m7 K6 Q2 o' C
        13320,16762,18673,20724,20803,21804];
    8 d. e. S/ V; K/ K; qp=[sqrs;sqjdcs;sqglmj];
    - B7 N( Q9 n+ I! {t=[glkyl;glhyl];
    % u0 ?2 s% c: C+ w# J* V% I- R3 J6 x( H3 X2 G" m- K
    %数据归一化
    ' q* R- N9 o( N1 w0 o[pn,ps1]=mapminmax(p);7 r: {1 _. T$ ?0 _) G$ i# Y4 ?, I$ v
    [tn,ps2]=mapminmax(t);7 q4 G2 I" R2 m- ]8 I+ B
    dx=[-1,1;-1,1;-1,1];" r& W1 g$ U' V" v! A
    2 O  K) ?! d8 w" S; @( q9 ~
    %BP网络训练4 g/ f, g' U) h5 o
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    . o* E% z9 A' P7 Nnet.trainParam.show=1000;0 `0 D8 e, v' \# K# G6 _
    net.trainParam.Lr=0.05;; g, s2 h6 N+ _
    net.trainParam.epochs=50000;
    % _, x* a8 W+ S' U% F* F7 bnet.trainParam.goal=0.65*10^(-3);" s/ |$ |+ }4 s) L( F
    net=train(net,pn,tn);% \9 J7 F4 \: ^, H7 T! W6 l* ]

    ( D4 f6 d/ Z, U) @. s) B# r; g9 ?%利用原数据对BP网络仿真& ^) r8 T" k2 r: n1 ~
    an=sim(net,pn);
    + J" B4 b  Z; I# Q9 b6 n+ v+ _a=mapminmax('reverse',an,ps2);5 O7 g& \' I' I# }* p

    & i: q0 j8 u- z, ~, p5 _8 o%仿真结果与原数据对比测试) W9 F" b0 s+ l- X  [. n
    x=1990:2009;
    - G8 \% h6 n! K- F  B' k  Z# }, onewk=a(1,:);
    # E. J. [; C0 E% Xnewh=a(2,:);
    . k0 w4 [. W, }1 R* {$ ^. ~! Pfigure(2);
    0 r; J% Y8 I3 W# {2 h% Nsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');, O. {9 [: J5 ?8 Z1 `" |  s
    legend('网络输出客运量','实际客运量');( E2 Y* }* _% @+ W
    xlabel('年份');ylabel('货运量、万人');2 j! K2 r: Y* t0 P4 z# N% ~
    title('运用工具箱客运量学习和测试对比图');4 K6 z8 f8 M% |% I
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');' h. G* n- ?0 J( j- s! q' ~" y) s
    legend('网络输出货运量','实际货运量');, l$ _0 @- z, Z3 L8 i( a/ P
    xlabel('年份');ylabel('货运量、万吨');
    ; C, M( y9 L. G7 Stitle('运用工具箱货运量学习和测试对比图');
    . l2 r* Z. M7 B! T5 {. ~( R1 t5 c6 Y2 z7 h
    %新数据仿真, O% p. s3 Y; @; U% R* [6 q
    pnew=[73.39,75.55
    / J; w+ t+ _# n" Y" `+ _5 {    3.9635,4.09758 c# K9 A6 T/ O" ?: w
        0.9880,1.0268];0 |* {! K) v, t0 y* n% T# q. Z
    pnewn=mapminmax('apply',pnew,ps1);
    + f; @5 P- `7 E; q3 lanewn=sim(net,pnewn);; C# ^0 O8 t& X7 W  t; i& E) E
    anew=mapminmax('reverse',anewn,ps2)0 e; i0 r9 I! F) Y
    $ z3 [- ]; p# Q) W! }. q* @

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

    `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 0 h4 l% h! @5 n, Q' ~: u
    看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    0 J$ l( r# E! I' z* k9 U因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    ( j3 ?% \0 i2 ^$ rnet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    7 S- _) _; i+ {4 E2 a7 o* A我修改为:
    + N0 ]. O9 v0 p. |* _net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');5 h# I3 \; A7 T
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    , k1 d7 X. t, D3 Z" s3 o[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    # L: g9 f1 c' ?5 Sa=postmnmx(an,mint,maxt);
    6 Y* q5 Z1 m, w3 }% p- T/ b+ c# hpnewn=tramnmx(pnew,minp,maxp);2 [) \, l" z  t, {) m
    anew=postmnmx(anewn,mint,maxt)
    . U4 v6 O7 B" w% X. j/ u7 Z我修改为:3 U) ?  s1 [  z4 G: [
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);, |; T! q, o# m
    a=mapminmax('reverse',an,ps2);# F8 f/ Z8 S5 o; \' g/ @# I3 P
    pnewn=mapminmax('apply',pnew,ps1);
    ( G2 i7 Y! z7 j( d9 h9 N$ Fanew=mapminmax('reverse',anewn,ps2)# x1 e* k& @+ j" ]3 S8 G! R6 l# L+ P9 ~
    & P+ u7 o! I5 W* F) H
    原程序为:
    % e! N2 n' L8 f/ z%原始数据输入; V$ s1 ^! a! K7 k+ n5 G  g
    clc
    3 q, Z, v3 D0 \! I, fsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    ! x/ U7 ], |4 y& n& v- d7 u    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];. z9 P: e% F- I' C! 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,...
    : @. m! O- r" Z$ ~$ l6 `    2.5,2.6,2.7,2.85,2.95,3.10];
    % n, H1 s: c( F* a. Rsqglmj=[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,...: _* K, E  J# H9 W- [- ?
        0.56,0.59,0.59,0.67,0.69,0.79];
    ( V% T5 P6 J' Q8 F3 Z, qglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    ) @) Y1 [# p, h+ L/ C$ P# {6 G    22598,25107,33442,36836,40548,42927,43462];
    : a0 b$ f2 O" O( W, Z: Nglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...6 \! l. _1 l# f* q. i; n
        13320,16762,18673,20724,20803,21804];
    2 P8 g5 t  f  h9 l2 ~1 O- c7 Bp=[sqrs;sqjdcs;sqglmj];
    5 i3 D, P! j! B% F! Dt=[glkyl;glhyl];
    - ^: u! {/ I5 q) o
    : y$ r0 f; a% k. x3 l%数据归一化
    & h( r. G' h, u& |. }[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);1 n4 Y+ X, U0 P' c* F/ K$ o
    dx=[-1,1;-1,1;-1,1];
    1 q; o% d/ }. [/ ~
    . y6 m; n' `2 s. U0 G
    %BP网络训练  C, ?/ Z' Z3 [6 z( v% m6 R
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    2 B7 d2 H4 O5 K  J/ @. v7 onet.trainParam.show=1000;
    " h; t! ]2 f1 @7 Tnet.trainParam.Lr=0.05;
    # V* }3 w9 F  J8 T. Anet.trainParam.epochs=50000;
    3 K, g' v: |; O5 [" g9 U$ x0 F9 Qnet.trainParam.goal=0.65*10^(-3);
    ) k! a/ [  b, W9 R. |- rnet=train(net,pn,tn);; s+ e0 Q. {2 }" `; N2 L. V
    5 T  D, O8 ~" k7 p/ F
    %利用原数据对BP网络仿真; N8 l. c9 d# }5 M
    an=sim(net,pn);! _- Y6 ^- R2 r
    a=postmnmx(an,mint,maxt);
    0 M& ^! y2 \, }4 W' z# a: p; B: k8 ]4 s7 H+ ~
    %仿真结果与原数据对比测试
    % ^- j$ ?" V! x# m/ Bx=1990:2009;
    2 |$ a) r$ ^7 {# O; Rnewk=a(1,;
    " ^6 j0 l9 O! }7 c9 v. g2 O2 g+ Dnewh=a(2,;0 O# V6 g' B: A
    figure(2);7 Y' h; N; j/ N  [& W4 Y
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    % z/ Z0 s) ]# k# [8 F" A6 glegend('网络输出客运量','实际客运量');
    7 l9 ]- D& N2 ~" M+ E. txlabel('年份');ylabel('货运量、万人');
    4 T( g9 t; I; V+ ^9 J' x# Atitle('运用工具箱客运量学习和测试对比图');+ L* y6 M# `! o$ [# E
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    # w- \+ H: `& k% [: b. slegend('网络输出货运量','实际货运量');
    + d: z& E- y1 K0 M7 M/ Nxlabel('年份');ylabel('货运量、万吨');/ A& ~% R' q+ C7 G- q, D8 G6 y# }
    title('运用工具箱货运量学习和测试对比图');+ j' l3 H, ]3 D
    ( b1 q( H+ ~' x4 y& V
    %新数据仿真
    / P0 s& }( e7 t2 j* E5 Cpnew=[73.39,75.55
    ! s: P+ |# C) B  g! R' Z% G: H    3.9635,4.0975; F9 m% N0 g5 F/ A8 R5 A- o% e) O
        0.9880,1.0268];
    % u1 y0 L# [3 l3 S. npnewn=tramnmx(pnew,minp,maxp);' u, N' n7 X0 Y3 g9 A
    anewn=sim(net,pnewn);
    & V& V9 P. w8 ?# }anew=postmnmx(anewn,mint,maxt)

    1 c9 D/ D% e+ h" Q
    ( A3 v  j) o" H! A6 g/ c- \修改后程序为:/ n& k; m# @3 M/ _- n( H
    %原始数据输入3 K3 t2 E6 q. E8 @" P! N
    clc
    7 |2 B7 @8 b$ J8 |% B0 a& gsqrs=[20.55,22.44,25.73,27.13,29.45,30.1,30.96,34.06,36.42,38.09,39.13,39.99,...
    & n) D% Z( P% M3 O2 y+ o& ^- y    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    / @- w# Y+ ]' m8 I3 gsqjdcs=[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 {: u8 f5 Q2 z$ J. S1 {
        2.5,2.6,2.7,2.85,2.95,3.10];
    * }$ r' P8 U* p6 v+ 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,...
    , Z' a# D8 b- w% O2 i+ e0 |    0.56,0.59,0.59,0.67,0.69,0.79];0 J  T: z7 H! H' b8 v
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...; I1 q& t# Y6 K- K( s
        22598,25107,33442,36836,40548,42927,43462];! G- r: \6 c/ F! m  W
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    $ y7 c8 ^9 D, o    13320,16762,18673,20724,20803,21804];" V$ u  N9 `0 A. K* i
    p=[sqrs;sqjdcs;sqglmj];
    ! T2 u+ f. B9 L: z9 ]t=[glkyl;glhyl];
    5 i9 R! z3 {4 W& F$ B8 {8 p% M9 j7 n! C( |5 S( X
    %数据归一化) `7 q0 h7 A4 ]. l$ }! C
    [pn,ps1]=mapminmax(p);
    % v8 Z( c+ `0 k: e[tn,ps2]=mapminmax(t);
    + K, b& b( N! V  J9 q+ g" b3 z5 C7 j9 T0 d) B
    %BP网络训练
    # p$ B& k1 u: F/ I0 Vnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    " c" ]/ k+ P4 L+ b1 Znet.trainParam.show=1000;
    6 F4 O" |% q& E" ~* I; H' l" x% Onet.trainParam.Lr=0.05;; q) J( c: l5 k- T* I' x; _8 f- S
    net.trainParam.epochs=50000;
    9 [8 g4 a  o4 Z, Tnet.trainParam.goal=0.65*10^(-3);, D7 K4 a% N. F) O" C* v/ c
    net=train(net,pn,tn);1 i+ ?; Q! e4 W9 m) J
    . B; o* t4 P' l* G
    %利用原数据对BP网络仿真- J, d9 |# c7 @# I
    an=sim(net,pn);
    # k! E' v3 |9 c% v7 q0 ^4 wa=mapminmax('reverse',an,ps2);
    ! [( Z* d& \7 {/ y( E7 Y) v' j* |' G' z7 L9 F% r. d2 {1 l$ l
    %仿真结果与原数据对比测试
    0 u  U8 }# w8 K0 s/ Ux=1990:2009;
    : Q) }5 q) [8 X. f, [% inewk=a(1,;
      j' p8 M8 Q  _1 n$ [& y5 wnewh=a(2,;
    : z9 Q8 ~' }/ A  }- T/ Y" t2 ^figure(2);
    8 D6 n+ h; F/ m3 jsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    8 p# C3 {( L; }, xlegend('网络输出客运量','实际客运量');
    4 c; b8 R4 d( H: @1 Z- {xlabel('年份');ylabel('货运量、万人');, V  R4 D4 |% ^$ e3 t& K! P
    title('运用工具箱客运量学习和测试对比图');
    3 k! o: i  a) {* d- W' n9 G* nsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    , t! j: [. z  U5 {legend('网络输出货运量','实际货运量');
    + Y7 A  E5 [1 s* z4 V. }5 ]xlabel('年份');ylabel('货运量、万吨');
    2 W6 }( L% ~" m) ?- etitle('运用工具箱货运量学习和测试对比图');
    " p5 q4 k$ C, j1 T1 E+ P) N- @* z2 K9 \- D# ^
    %新数据仿真
    : g' A+ d# y0 F$ a* p1 epnew=[73.39,75.55
    3 a0 @" I1 W3 x6 r1 o( q. Y% r    3.9635,4.09752 Z0 ]0 l2 K$ \" ], z/ |
        0.9880,1.0268];$ x" [7 _, c/ r! }: L( P* k
    pnewn=mapminmax('apply',pnew,ps1);2 c& N9 s' z' v8 `0 Y" R
    anewn=sim(net,pnewn);* s& N: j% i) h" ~3 A
    anew=mapminmax('reverse',anewn,ps2)
    2 L6 n. W) d+ _& u9 D- q(修改的地方用颜色标记了)8 I. V) k  b- v% w- i
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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. clc6 p1 I. U\" N% 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,...
      $ V$ i- k. L6 ~: ?; E
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];* j! j! ~% i$ k7 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,...# m: [7 E2 ], A$ N0 x( p# H+ |1 o, }
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      0 S& y, g7 v; ?0 r/ u) C  ]\" r
    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,...3 j* F, P; X8 S8 R
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      ; v3 \0 M, L7 |' c& q+ [
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...7 C' x1 Q, U7 Q) P& Q: e! v& }$ N
    9.      22598,25107,33442,36836,40548,42927,43462];
      * \; g  a% C\" B% `1 u% o; ?
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      * ^, f* I$ d  g. A
    11.      13320,16762,18673,20724,20803,21804];2 f\" S. H  C1 ], E4 S
    12. p=[sqrs;sqjdcs;sqglmj];( H6 n, u' z* \\" M
    13. t=[glkyl;glhyl];
      ' f5 V! _* i0 N9 K9 Y\" s) F
    14. %数据归一化. j; W7 i) L\" A& }: }
    15. [pn,ps1]=mapminmax(p);1 S/ i/ h1 v8 N# ~
    16. [tn,ps2]=mapminmax(t);
      ) N+ h4 R/ W. j1 q
    17. %dx=[-1,1;-1,1;-1,1];
      5 h. j3 G: U' R/ K- A* x5 E
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]5 h9 C0 W9 N1 q4 |& H, `  H
    19. - a* j1 F8 ~# W4 v6 r9 a
    20. %BP网络训练) o' G7 a, S' \3 e. A
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      4 X\" _$ b* o! m' i
    22. net.trainParam.show=1000;! O; G% ?4 a1 |5 W
    23. net.trainParam.Lr=0.05;
      $ {$ f9 x5 w\" C  i5 `1 Y' h8 R0 R
    24. net.trainParam.epochs=50000;
      1 W0 N' N% d% h% M3 d2 X
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      \" j$ o: Q$ H3 S: t
    26. net=train(net,pn,tn);( Y' ]9 c( ~% X7 i# w* u
    27. ! u4 b; x/ h9 }+ n) W- q$ M
    28. %利用原数据对BP网络仿真
        w1 u7 L; w) D) a8 v$ m& q
    29. an=sim(net,pn);
        q5 F; A6 }! m
    30. a=mapminmax('reverse',an,ps2);
      0 j' {/ E- c2 D\" h- C, ~3 z5 `' V
    31. 6 X& D4 R$ S% I- a
    32. %仿真结果与原数据对比测试 ) w; m9 E- O4 a5 U
    33. x=1990:2009;
      . H8 Y3 z; L! c. z% c- Z
    34. newk=a(1,:);: u5 s. X) P0 [! O! L- H
    35. newh=a(2,:);
      7 v* g7 ~2 c4 h6 U  k% N6 E) Y
    36. figure(2);
      ! h0 M- {0 ~& N* z
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');- W/ }. ~/ e. Y) @8 r* A' F
    38. legend('网络输出客运量','实际客运量');- S5 d( Z4 N' r9 a, \: l4 N3 M
    39. xlabel('年份');ylabel('货运量、万人');
      * ]$ }1 C. v+ T+ o4 ~2 K4 T
    40. title('运用工具箱客运量学习和测试对比图');
      5 T$ A. f. u6 `
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      / Y+ e* _$ Y0 Y  F
    42. legend('网络输出货运量','实际货运量');
      4 n+ N7 w\" R# H; k0 n8 T% d
    43. xlabel('年份');ylabel('货运量、万吨');
      6 Z) _: \3 @2 L' K' {' r
    44. title('运用工具箱货运量学习和测试对比图');
      0 I* F( V' N4 t

    45. / w+ [% \/ \3 F' [# p* U
    46. %新数据仿真3 _- ^+ @2 ]9 m( N/ ]
    47. pnew=[73.39,75.552 T5 _0 K3 r3 R$ e+ ?# f
    48.      3.9635,4.0975
      9 y\" ~# b7 D. f& F  G3 ]# x
    49.      0.9880,1.0268];
      . A# S9 j8 P& R6 {: K
    50. pnewn=mapminmax('apply',pnew,ps1);
      6 T% c4 p& F$ W9 N/ i! p3 A
    51. anewn=sim(net,pnewn);# n. b- U; o( ~% }( K$ n0 N- a8 o
    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
      6 Z% y' F' {4 w' ^5 x! Y  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,...5 P0 [4 K8 t. Q5 e/ [/ @6 B\" y
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];2 T$ Q* w1 a\" T8 }1 V1 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,...) Z- b! w: [\" c\" ~) D\" s; {* r
    5.     2.5,2.6,2.7,2.85,2.95,3.10];* L  f\" H0 R5 W2 C2 }0 a
    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,...
      % i2 O% V' y  s) d\" l$ a9 x, H
    7.     0.56,0.59,0.59,0.67,0.69,0.79];, v# E3 u. s% f; ?/ n3 A3 N
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      5 I5 e' M5 s! T$ l# `$ d& t& b
    9.      22598,25107,33442,36836,40548,42927,43462];4 ?5 e' b# a  d8 V8 {
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,..., ?8 ?# h7 v( n5 T( G/ _
    11.      13320,16762,18673,20724,20803,21804];0 s6 d+ M- P, J% h6 W
    12. p=[sqrs;sqjdcs;sqglmj];& c7 l; M' X  [
    13. t=[glkyl;glhyl];
      : O0 t4 A; @9 p0 u7 [/ }/ J
    14. %数据归一化
      2 Z5 {1 z! O( r0 f: j! H
    15. [pn,ps1]=mapminmax(p);( q3 U, I, P5 D4 M
    16. [tn,ps2]=mapminmax(t);
      . g5 |' U$ J- F1 w\" O
    17. %dx=[-1,1;-1,1;-1,1];, l, r6 o6 ?0 k' j
    18. p0=minmax(pn);t0=minmax(tn);# n- [0 Q& ~8 w* ?

    19. 2 X+ i, S3 Y; l; Z, G# B% z5 ?
    20. %BP网络训练) A4 r+ _7 m: p: x$ W+ M, y- m. @
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      ; X0 D7 `# k  f3 i# i3 B4 O\" b' K
    22. net.trainParam.show=1000;: k- n5 y  P, D) R* [
    23. net.trainParam.Lr=0.05;
      1 `5 a1 r\" D) \& x5 b
    24. net.trainParam.epochs=50000;% m, ?5 U! x\" L* F1 [7 x9 \
    25. net.trainParam.goal=0.65*10^(-5);5 c' {\" y, x5 b& h7 R# p
    26. net=train(net,pn,tn);
      3 `# [+ N, _1 _9 H
    27. ) [  B0 p  @, b\" O4 j+ ~
    28. %利用原数据对BP网络仿真
      ( v$ }/ T3 |7 B+ }3 m4 o# E
    29. an=sim(net,pn);\" B7 Q/ a' Y  m\" A- z- Y% d
    30. a=mapminmax('reverse',an,ps2);6 V- B2 y( A! n/ z6 k
    31. 7 N/ y; `8 f4 d' h\" ]
    32. %仿真结果与原数据对比测试 , I: L\" ]& E2 ]* P\" b) L5 M
    33. x=1990:2009;
      3 v4 Q- R# B8 X  `; y+ d
    34. newk=a(1,:);, F* @\" Z1 q$ x4 C7 D# i7 q# A
    35. newh=a(2,:);
      4 S( c( t4 e1 L! b
    36. figure(2);' j0 T% O* ]; T
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      % n- b, H! }& G: ]$ b# l
    38. legend('网络输出客运量','实际客运量');0 k4 h( e! m9 e$ k( W' h6 s0 I7 W& f
    39. xlabel('年份');ylabel('货运量、万人');
      5 Y3 [: S; d5 Q/ m
    40. title('运用工具箱客运量学习和测试对比图');
      / J- v/ ~, f7 D7 e# V
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      + B9 @$ w\" F& `: Z/ j% O\" W4 ?
    42. legend('网络输出货运量','实际货运量');
      \" [3 p8 B5 @' M9 A. [# |
    43. xlabel('年份');ylabel('货运量、万吨');
      2 `\" M/ f& {! t) R, c. ~! ?% W
    44. title('运用工具箱货运量学习和测试对比图');( q3 `1 h) t8 R! t

    45. 5 G& s& \/ r' }& W1 S& v
    46. %新数据仿真
      $ _& \' D# W# \' o2 d% K- s
    47. pnew=[73.39,75.55
      ! q! u8 c  B: |
    48.      3.9635,4.0975
      ! c# D: U  z2 j& o+ E
    49.      0.9880,1.0268];
      / E* s$ a& ?. y6 u! |( c( T
    50. pnewn=mapminmax('apply',pnew,ps1);
      5 f- P7 W  a5 K) z
    51. anewn=sim(net,pnewn);
      0 g5 `. n; l* r4 H! h5 s. k/ N
    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 I* X: n* ^0 `+ t$ ^, d4 p
    忽略我上面那个,改动的地方在18,21,25行……求批
    4 m2 a$ {+ S1 P+ k5 }; C
    确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      + {; }* P' U3 ^- ~$ P\" ~+ [& _
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); % b# s$ x  C2 X9 I1 k$ e3 y( l
    3. net.trainParam.show=1000;, X7 k+ ~( T% v: m
    4. net.trainParam.Lr=0.05;# G) A5 v/ Y# }$ ?4 F$ {# T\" h% @
    5. net.trainParam.epochs=2000;
      * v7 ?\" y$ `  c, j+ S
    6. net.trainParam.goal=0.65*10^(-4);2 O- W6 r0 P& o' |
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    ! L/ z  Q4 @- D3 e一、改成单隐含层的,6个节点
    / S# g4 V: ^8 C二、训练函数改成梯度下降BP算法 traingd
    / t' j" D# m0 d" V/ ]三、迭代次数改成2000
    " i; G, n* E6 N上面的参数是自己试的,我也不知道为什么。
    ! |4 z! `7 F! @4 W  P' ~由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。0 c  e$ s6 ^- X4 H" g
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-9-12 02:17 , Processed in 0.346964 second(s), 103 queries .

    回顶部