QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5117|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    . g8 h  ^! A3 }' W
    4 {4 Z  S$ P) Q# K%原始数据输入/ N5 \- W, I5 n) C" c
    clc- c# P: b7 _; w1 y3 v1 U- k# z: I
    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,...
    ( }" y, b+ f3 E$ z2 E- [    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];, Z' Q2 s% x. E0 s% ]+ t) T
    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# j0 G+ U. R; q    2.5,2.6,2.7,2.85,2.95,3.10];7 C! N, J6 _! h) M$ ?9 i+ 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,...9 E+ k  {, U6 i/ m
        0.56,0.59,0.59,0.67,0.69,0.79];
    - K% i* {% p  F' B& @3 O% Dglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    5 L! d$ A' |9 e7 A8 X$ v- o    22598,25107,33442,36836,40548,42927,43462];4 d: J" I  P6 J- @
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    : Y% n+ x' Z& b0 ?6 R    13320,16762,18673,20724,20803,21804];
    ! B2 m6 C( a9 v% q0 W( e! p/ Op=[sqrs;sqjdcs;sqglmj];8 V( J1 w+ P/ ^. l# h. ^
    t=[glkyl;glhyl];
    ! {) B  G  h  K
    + t# X% {6 S. t) a8 |) N" |%数据归一化& O6 M2 e  L$ O. S4 C5 Q& d
    [pn,ps1]=mapminmax(p);
    ' L! S2 P$ m# I: {[tn,ps2]=mapminmax(t);5 ?: F2 l0 @; D3 g; m+ ?
    dx=[-1,1;-1,1;-1,1];
    ) i3 J! {. }- O! O  W- G+ q
    ( Y4 Q$ t% D3 R%BP网络训练
    - R3 L0 o' {5 W* s/ L; Z# }, |+ Ynet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    . b; D& P% ~) A; wnet.trainParam.show=1000;
    ) u8 Y+ V) |( \! V! t* cnet.trainParam.Lr=0.05;
    ; v% c6 M; ]( z( s) Q& U7 V; l5 ~net.trainParam.epochs=50000;
    & Q. K0 s7 {$ l0 U% g* x9 anet.trainParam.goal=0.65*10^(-3);; z! R. `" V; m& V( N, N
    net=train(net,pn,tn);
    , ]2 r. y5 x, q( _' q) a* D
    , G' n  U% i( z%利用原数据对BP网络仿真5 N: ?+ L, m- [- p$ K2 I4 T
    an=sim(net,pn);
    1 z- I. V- b$ H; Y: ^1 b0 Q% ca=mapminmax('reverse',an,ps2);" ^& V& |4 I# b$ x9 @

    ; l( S# S& R$ t3 c" b' |8 U' H%仿真结果与原数据对比测试
    # \2 E. V. b8 o5 ax=1990:2009;
    ( o- ?  u) G. Y8 Q, B2 `5 gnewk=a(1,:);
    5 Z0 p# \3 d3 E6 |6 i! inewh=a(2,:);
    5 R( S/ \4 E, R" L9 u# v' J& b8 Qfigure(2);
    % x9 j2 [  ?: E$ ssubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');) V, a# a5 o4 C, Q
    legend('网络输出客运量','实际客运量');
    6 W$ `& I, y$ M) o0 Xxlabel('年份');ylabel('货运量、万人');
    4 _' t+ M. F6 h# l0 X' S6 v* D4 V& T. Ytitle('运用工具箱客运量学习和测试对比图');& t; B$ h* t( O* X! m& W+ k( q3 X
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    3 c- F. L2 N. k& R1 F* x! I3 Nlegend('网络输出货运量','实际货运量');+ u$ j$ a; b/ {! @' u  ?8 ~
    xlabel('年份');ylabel('货运量、万吨');- U  n9 }5 o3 X2 o* S
    title('运用工具箱货运量学习和测试对比图');
    . k  J5 E6 t. U0 y
    , T$ g$ t. L0 l1 p, }5 S) c9 {%新数据仿真
    % [% d3 \: J' Wpnew=[73.39,75.55
    ' b4 c. W0 Y% q' o    3.9635,4.0975- u4 R1 K+ ?8 I
        0.9880,1.0268];
    " L- c0 b9 _" P9 |2 ^4 o& @pnewn=mapminmax('apply',pnew,ps1);
    2 S7 [" C0 d" P. }- ?anewn=sim(net,pnewn);' Y- _0 y# @0 ^$ [" \( h( H
    anew=mapminmax('reverse',anewn,ps2)
    0 f/ E1 O/ h( S8 v% E. x/ N! U/ ~( {3 R. W7 |/ c

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

    `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
    * n. w* }# H; u4 b, |+ E看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...
    / @4 d. E" {, b: p9 @9 l( m+ @( V, F
    因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:8 i+ u9 D  e; g" [7 Z
    net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    ( m) |2 F3 ?- g我修改为:6 z9 ?+ `# e+ k/ L2 W$ B' M( \
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    8 b5 d5 L) C) E3 A- c9 a0 R然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    % ]% D, l: k% D. _; z! M# {( Q[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    ' B. P" m" b+ w: @# Z& p% Ta=postmnmx(an,mint,maxt);3 m- U# z$ m$ l1 P  C& R* w) Y
    pnewn=tramnmx(pnew,minp,maxp);
    $ \9 X9 a1 t. y# d6 O( Uanew=postmnmx(anewn,mint,maxt)
    * S9 E, `4 C. \: E我修改为:
    0 S# ^& f; h' D( Q* P: A[pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);* l, j. b8 R( X- p4 Z, E% Y) [
    a=mapminmax('reverse',an,ps2);7 g* G: K5 o* A- ?
    pnewn=mapminmax('apply',pnew,ps1);
    - h7 F' i' b( w- ~  ^& @anew=mapminmax('reverse',anewn,ps2)
    1 l: u# b+ e5 V/ E
    ' `% V. `& F' [5 q( A原程序为:/ ?8 T. @! M- m" _% e( E
    %原始数据输入
    ; k& i2 x7 V  a) Wclc
    + h' K: F: i' Z5 a0 T6 b3 Ysqrs=[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, O: `, d! Y3 B- M; m, X
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    % t% c0 y4 \: J) D4 Dsqjdcs=[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 K& i5 Y7 g. s- p6 x8 A8 C6 M    2.5,2.6,2.7,2.85,2.95,3.10];$ O' o# G3 p& _3 [1 q/ P
    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) v- Q$ D) k& Q6 E3 A    0.56,0.59,0.59,0.67,0.69,0.79];
    * j1 x) I) U. t: ~7 Q3 qglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    ! ~3 T$ W3 m' w. H    22598,25107,33442,36836,40548,42927,43462];& b& w2 D9 X* I* y+ X
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ' P5 G  z; `- O* q: w5 s" n% @% a    13320,16762,18673,20724,20803,21804];$ C9 U; U: K. z& J2 E/ T* d2 k
    p=[sqrs;sqjdcs;sqglmj];
    # j4 X  w% D/ I, X' Ot=[glkyl;glhyl];
    : @' j4 Z0 o# n$ H! R9 S$ @) w* o$ |) p$ T5 H
    %数据归一化8 L! r" A9 G4 Z. k2 M. y
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    % Y7 y- n& M0 |4 Rdx=[-1,1;-1,1;-1,1];
    4 g0 D4 B$ i% [: z* l

    $ p! n! I' ^- S( v8 x%BP网络训练- z, C; Z& ?4 _9 s6 C# `2 Z( T
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');1 x& Y3 h0 p5 y: p" n
    net.trainParam.show=1000;
    3 c' `* T1 ^2 |3 F$ I2 \net.trainParam.Lr=0.05;
    & i& v- z) Q, M8 pnet.trainParam.epochs=50000;% f) f3 n4 q( B# m
    net.trainParam.goal=0.65*10^(-3);
    ) @* N3 X8 I! W0 unet=train(net,pn,tn);8 z  O2 R) Y$ ?; r- s
    + a# U' j6 k4 u8 v! x" ~4 S. o
    %利用原数据对BP网络仿真
    0 N* `0 M$ D. [: |: |1 y0 ]an=sim(net,pn);5 D, B7 y1 q* f7 s" R8 F# [
    a=postmnmx(an,mint,maxt);- F6 d# _9 Z8 O  D, r. m4 D4 T' F
    9 @' O5 f. {1 L' q
    %仿真结果与原数据对比测试
    ( B3 E0 m0 B" o* H$ Y2 Hx=1990:2009;
    0 I7 U& [0 G7 X& f0 ]% Unewk=a(1,;
    9 a: w/ ]2 F9 ^! N0 w% Qnewh=a(2,;% d4 m  A* A% }
    figure(2);# _  e" d. J9 n, B' I% Y
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    . \, n" e/ ~: A+ j+ ?7 Ylegend('网络输出客运量','实际客运量');
    ( l) f3 e% o5 T( c. _xlabel('年份');ylabel('货运量、万人');2 T/ z! w. Y* f0 @2 Z8 r( ?/ F
    title('运用工具箱客运量学习和测试对比图');
    - F7 b( p( k) Q% y! hsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');3 `  V# |) `! r; n6 `  B' r: [
    legend('网络输出货运量','实际货运量');/ p* H' J' A: n0 N
    xlabel('年份');ylabel('货运量、万吨');( T' m/ C) V) s8 D: u, n
    title('运用工具箱货运量学习和测试对比图');' w( X& R% E/ }3 Z6 O
    ( |! ?% _8 G, |' ]7 N
    %新数据仿真
    # D( x, s' M3 g9 ~1 Qpnew=[73.39,75.55
    3 r6 F. t, @) Z8 L    3.9635,4.0975
    & |9 w8 u: j9 f. @& R    0.9880,1.0268];
    * v# g& S! _6 h% q# h" f4 Hpnewn=tramnmx(pnew,minp,maxp);, ^5 y' c2 ~# e" G' m
    anewn=sim(net,pnewn);
    8 J& _" C$ @7 ?" D  f$ M1 janew=postmnmx(anewn,mint,maxt)

    # i/ X3 `/ P+ |& }
    5 h6 L% G2 M1 ~6 d4 [% \修改后程序为:8 g% w$ e8 {+ O' C7 l- ^
    %原始数据输入( A3 e9 ]7 o4 f3 j$ i% L
    clc& Q8 }. K* M  w0 ]
    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 r0 o& H/ E) S1 v& A+ A
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    / L; p. ?# m% x1 y; Q; n7 Rsqjdcs=[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,...
    3 ?  e" h1 j0 S    2.5,2.6,2.7,2.85,2.95,3.10];
    6 a. g& [, m* F6 ]7 ]3 G" V1 b6 c$ ^4 Osqglmj=[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,...+ a! ]5 h4 R( \/ e$ f; L3 G
        0.56,0.59,0.59,0.67,0.69,0.79];
    9 B4 k. _- t0 j" r& H" Xglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...9 Z: F" b1 o0 a+ n, Z
        22598,25107,33442,36836,40548,42927,43462];' u9 K7 a) _' i
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...9 v) E. p1 e! g1 m% ]# w
        13320,16762,18673,20724,20803,21804];" y! a1 }2 V' r% A( N  x' ^
    p=[sqrs;sqjdcs;sqglmj];; m8 G& z4 p0 D
    t=[glkyl;glhyl];
    6 }+ ?( }- S. X% T% S. F+ H$ V8 `0 d, w- J2 }$ ]7 E2 J0 y
    %数据归一化
    4 n  p4 a# U' x* c9 @; ~[pn,ps1]=mapminmax(p);
    7 P1 S' a* B& A9 T, Y[tn,ps2]=mapminmax(t);9 M: j; Z/ j8 \/ Z

    % a3 u) Q2 u+ Z8 m1 l4 C" ^%BP网络训练
    - U/ h  ]! a7 U& Y# Xnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');+ V' T0 g/ P; y
    net.trainParam.show=1000;
    3 `, s! T" |8 ]( V. pnet.trainParam.Lr=0.05;
    & Y: v5 P& L( i( {net.trainParam.epochs=50000;
    8 G2 ^1 A9 t3 ^2 T9 G) o( j% Dnet.trainParam.goal=0.65*10^(-3);
    / |( q" O+ L4 ?6 p1 s( e# ]0 |net=train(net,pn,tn);
    6 W5 V2 w* P( r' ?6 x
    6 W$ m; b* e/ T, ^( E%利用原数据对BP网络仿真
    ' S0 g# t* H+ _: @0 x! aan=sim(net,pn);
    0 W% j- z% M% Y& D. _' x0 ^, }& wa=mapminmax('reverse',an,ps2);
    " ?: f1 f6 T6 r- f
    : U: z! t8 V3 N5 j" P2 _" G%仿真结果与原数据对比测试6 _/ F5 p8 W2 p: H
    x=1990:2009;
    4 o1 Q1 `/ `9 R) jnewk=a(1,;6 i3 Z# x& W; M% B
    newh=a(2,;
    + p/ _" E0 X/ |0 n2 _: bfigure(2);
    2 Q' v& H2 F7 A" Z$ g/ d3 U5 P" ssubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    . K- }/ c0 b% H8 e6 alegend('网络输出客运量','实际客运量');
    7 N" D1 F, |7 J$ J$ Uxlabel('年份');ylabel('货运量、万人');
    2 _& H7 Y# {9 T4 }$ Ltitle('运用工具箱客运量学习和测试对比图');7 t; j9 B" u# C/ {* ?
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ; `9 C' _+ o: u4 Q9 N4 klegend('网络输出货运量','实际货运量');8 ~  I8 t( U3 p' p+ g
    xlabel('年份');ylabel('货运量、万吨');* _% y, M: g1 R' J8 A& Z: v; J
    title('运用工具箱货运量学习和测试对比图');
    # b3 e9 G+ a7 P1 I" `* z3 n' t8 P8 |+ G+ W
    %新数据仿真2 o5 @0 I3 x7 _1 y$ i1 [
    pnew=[73.39,75.55
    * ^& M6 b/ S+ e    3.9635,4.0975
    & \7 R5 w! r/ [1 D6 J" G    0.9880,1.0268];3 S; ]  Q' e  Z. ?6 H2 E$ t0 _4 b
    pnewn=mapminmax('apply',pnew,ps1);
    2 g6 y' E7 A* q: m: vanewn=sim(net,pnewn);
    1 p, V3 `) [. _anew=mapminmax('reverse',anewn,ps2)
    8 ]5 I/ W& [2 m- s(修改的地方用颜色标记了)( p5 B3 A  Z3 R& H6 @1 k
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      * [1 q8 L  p. m: Z8 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,...
      0 ^$ e* P; Q/ O) S) ^( b0 d
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      \" h0 t8 @9 v6 m, n
    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* ^; `  ~9 d\" x\" X, |
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      \" T% A+ H/ {1 y2 b
    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,...
      ( [6 ~# X- g5 H& s\" c
    7.     0.56,0.59,0.59,0.67,0.69,0.79];4 d; w5 e; P3 X) s/ ^$ p
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
      : n' A( o. U4 i, }3 G
    9.      22598,25107,33442,36836,40548,42927,43462];) t/ }\" E5 S- y
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...0 o3 E. s7 e5 v8 O
    11.      13320,16762,18673,20724,20803,21804];
      - Q5 f' ~- Z  q, f' h
    12. p=[sqrs;sqjdcs;sqglmj];
      ( c% T% N4 Q+ M/ ~- a
    13. t=[glkyl;glhyl];
      + c- [# X* v$ k6 _* N6 q
    14. %数据归一化
      / e\" `) B+ h8 w\" w' {
    15. [pn,ps1]=mapminmax(p);* [% t% X# _, J9 D: b
    16. [tn,ps2]=mapminmax(t);9 c9 m+ J+ z* u# C
    17. %dx=[-1,1;-1,1;-1,1];& o6 d* d5 T1 I4 ?( u+ V6 n) n
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      , }) y  \- ]3 |* E: r% `8 e
    19. 7 b$ v* x4 O: W
    20. %BP网络训练
      + {9 v6 O9 B0 \7 w1 F4 @
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]0 S( J9 {7 Z9 g
    22. net.trainParam.show=1000;% u- a* o) ]7 U& C; M! _  |+ @
    23. net.trainParam.Lr=0.05;
      ; L\" b% J% |, G$ q8 A
    24. net.trainParam.epochs=50000;3 N( h& H5 }; ~2 N
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]; @: S8 J7 x3 z
    26. net=train(net,pn,tn);2 c, K, W* T6 T5 T/ n
    27. ! A) P5 E  J+ u+ w
    28. %利用原数据对BP网络仿真. P9 T, x% q/ T# Y6 N
    29. an=sim(net,pn);% S% G; y! J( q5 d4 ^& U% w
    30. a=mapminmax('reverse',an,ps2);
      : S) r& s' x: d4 J0 j
    31. 8 Y0 Q+ }! H0 D! G4 I- I7 T
    32. %仿真结果与原数据对比测试
      + `8 s* D1 P* q3 Q7 y$ _5 c
    33. x=1990:2009;
      2 [% W- V9 B) J
    34. newk=a(1,:);3 h7 p/ n' D. \8 \$ f* G. n1 c
    35. newh=a(2,:);, ~$ _* l$ P. A8 o8 p, H9 q
    36. figure(2);
      ) A: Y, P0 |  Q, i! t- \& R
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');4 H* W) N\" @% c1 l5 ]* N& E1 j
    38. legend('网络输出客运量','实际客运量');
      3 @: t. I/ N2 s/ C
    39. xlabel('年份');ylabel('货运量、万人');3 }) h6 B8 {: s; i5 {* k
    40. title('运用工具箱客运量学习和测试对比图');
      6 e! P7 _! ]8 g8 r
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ' F6 @: d6 r4 `. j\" x+ h0 j% o
    42. legend('网络输出货运量','实际货运量');
      : R$ ^7 T# R3 ^& C2 D9 j
    43. xlabel('年份');ylabel('货运量、万吨');
      ' ~4 H9 ~. b4 |$ ~( G8 O; f
    44. title('运用工具箱货运量学习和测试对比图');( O4 s9 U\" [$ K8 M: U

    45. & b6 i; c7 K1 b) b. h3 b
    46. %新数据仿真8 y  n; P' Y+ l+ Z
    47. pnew=[73.39,75.55* `: k9 t! V6 L
    48.      3.9635,4.0975
      4 W8 P6 q% r, p- n. S) M8 D
    49.      0.9880,1.0268];) \$ J$ j9 b5 W: c2 s/ K
    50. pnewn=mapminmax('apply',pnew,ps1);
      ' V2 ]. X$ G\" t7 E% f; _, n9 ]
    51. anewn=sim(net,pnewn);' j( y5 c2 J* b; B! \
    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% ]  M3 J6 f0 d& R8 U
    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,...
      : ?7 J# Q/ Q9 [2 A; P. G( V) l
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];1 b/ p+ i: v8 m8 H/ B5 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,...; d  {2 p! d$ ~) E
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      3 D2 G# d$ 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,...
      3 f9 h5 Y: J% V4 x
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      , E- o+ L5 }8 ^/ B/ F' y
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...& f% k8 t5 [) K\" r) u! S4 H' F
    9.      22598,25107,33442,36836,40548,42927,43462];
      ; c: O! n+ u' h
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      . M, ~& C' d\" R5 y+ l% ^+ z* R
    11.      13320,16762,18673,20724,20803,21804];
        ^+ j: ?( K9 v) f( w, _
    12. p=[sqrs;sqjdcs;sqglmj];
      2 o, T( ^: J; s\" @# E
    13. t=[glkyl;glhyl];
      : C1 f2 X3 |$ \+ z
    14. %数据归一化  t) p0 y1 I) V\" {6 O. ?
    15. [pn,ps1]=mapminmax(p);\" W2 e6 R  b# r5 o2 ~! d
    16. [tn,ps2]=mapminmax(t);! I  l0 P% b\" F
    17. %dx=[-1,1;-1,1;-1,1];/ ^\" E3 n& J, H4 T: e
    18. p0=minmax(pn);t0=minmax(tn);9 z. b) z0 }1 ~\" C6 z3 }3 d

    19. $ w3 f# a( ?\" I. v& x
    20. %BP网络训练# c6 J+ H$ v3 S3 O, r/ H
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); : u: L! Q- [- ?/ V* W- y; a
    22. net.trainParam.show=1000;
      & [% s7 d* S, I, Z& f* P
    23. net.trainParam.Lr=0.05;
      1 |3 t9 d( `$ c
    24. net.trainParam.epochs=50000;1 T$ t7 ?+ x* A% p\" T8 ?
    25. net.trainParam.goal=0.65*10^(-5);
      9 ^4 n3 h$ W\" t* Z
    26. net=train(net,pn,tn);; U2 ~, U- j: C3 C0 O
    27. 0 Q( b6 j& O1 G$ K
    28. %利用原数据对BP网络仿真( K% U- ]3 @# M% R0 p
    29. an=sim(net,pn);\" m, r( L\" B3 X( d# G
    30. a=mapminmax('reverse',an,ps2);
      ' t  d3 C\" s7 w6 U/ u% L

    31. * S' V$ \# N+ k7 P/ ]$ \7 r; |0 M7 V/ E
    32. %仿真结果与原数据对比测试
      ( @4 z8 b: y4 h: j% @* X1 W
    33. x=1990:2009;
      ( E5 |\" N9 Q1 |) K4 `+ \
    34. newk=a(1,:);+ `\" C1 |% U8 d; F
    35. newh=a(2,:);
      * ?$ U. i: ~. s+ n& D; e
    36. figure(2);% z% \% N# L+ |
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      0 g! n7 J, [% j3 t* Q' j  S
    38. legend('网络输出客运量','实际客运量');7 x% d6 I. W) s* p1 W
    39. xlabel('年份');ylabel('货运量、万人');
      $ I- K' U7 q* a- C. {: p, w. N3 |
    40. title('运用工具箱客运量学习和测试对比图');
      1 c7 s1 D/ s; P
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');4 ]5 S+ h% t+ o. U2 Z
    42. legend('网络输出货运量','实际货运量');
      8 L' k4 x8 s6 t8 T& X4 R% b
    43. xlabel('年份');ylabel('货运量、万吨');
      / g# P* K8 m/ h5 p0 G) Z/ c4 u& t
    44. title('运用工具箱货运量学习和测试对比图');2 T2 J\" y9 I  ^( V4 B* u* D2 K
    45. \" ~7 V, g3 [; u6 c* t$ ^: Y9 z8 c  C* Y- k
    46. %新数据仿真
      ! E\" I+ w' N0 Y0 B/ z# n
    47. pnew=[73.39,75.55
      % r! k' E& [1 c, \
    48.      3.9635,4.0975
      5 r; P+ V. ~  x9 a
    49.      0.9880,1.0268];
      % n2 [' U% h; Q( Z' U8 C
    50. pnewn=mapminmax('apply',pnew,ps1);1 M- l$ d7 U3 _. I# B4 R( q! p, o
    51. anewn=sim(net,pnewn);
      , o' d8 U4 Q2 O, _/ i. t
    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
    6 m4 B. D7 G+ ~6 O3 ~# g: K9 q忽略我上面那个,改动的地方在18,21,25行……求批

    8 Z) @' _7 |0 N, h) P- L- M确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

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

    群组: EXCEL

    1. %BP网络训练1 ]8 R- r- l! b2 w# v
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      5 ^- s\" y+ n& Z6 |' N  m
    3. net.trainParam.show=1000;
      9 O6 @) p( i0 V1 K, z. \$ o
    4. net.trainParam.Lr=0.05;0 e  k5 ^\" v\" ?8 n+ a7 J
    5. net.trainParam.epochs=2000;+ o% V) s8 m2 k1 ^  G6 l$ D) `
    6. net.trainParam.goal=0.65*10^(-4);# V! g/ f/ b7 F# e8 q4 c# ^
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,4 A6 _3 Y# l/ _
    一、改成单隐含层的,6个节点
    ) [; D# A/ T5 C+ [: h二、训练函数改成梯度下降BP算法 traingd' X% L  R& c, |0 ?" l3 n
    三、迭代次数改成2000
    9 v* {3 c' J" [/ r' u上面的参数是自己试的,我也不知道为什么。' `  H7 |! ~. s. _
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    7 ^  ~; n- s, Z% c7 F8 b& ^关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组: 学术交流A

    群组: 学术交流B

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

    群组: EXCEL

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-10-31 15:52 , Processed in 0.369174 second(s), 102 queries .

    回顶部