QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4749|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!( v3 c7 s. `7 k2 v

    . e5 D" q. \+ l! E$ y%原始数据输入! r: J; ], P, J5 }$ P
    clc+ f3 z4 u; S2 N7 [% Z
    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 C3 P9 p% @- K% S    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    + j5 Z, Z  u! G. b$ vsqjdcs=[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 y! ^' I# v: M  ?  h
        2.5,2.6,2.7,2.85,2.95,3.10];3 k; c8 t: [0 ~9 b3 y4 q1 }  a
    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 t4 d; G4 L4 D  F. Z  I* O    0.56,0.59,0.59,0.67,0.69,0.79];
    ) h7 `5 v6 x% S0 \% o9 W) D. f) Kglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    2 i; ?. {1 k' v# v* ^    22598,25107,33442,36836,40548,42927,43462];
    5 P' j: y+ f1 ?glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...( a, z2 E: f: v% B* V) Q3 w  @
        13320,16762,18673,20724,20803,21804];6 E& K6 }. \; Q9 S, R
    p=[sqrs;sqjdcs;sqglmj];
    & L( s* N* h6 {! Nt=[glkyl;glhyl];
    % d, t9 g) x. L0 J) V& L. [1 X- L4 D- N/ }+ ~6 [% o2 |9 s8 }
    %数据归一化1 y9 ^5 I' q  g: u" v" h& G& x
    [pn,ps1]=mapminmax(p);
    5 M! d. m$ q3 @[tn,ps2]=mapminmax(t);
    $ ~$ T  c! z; P: ~dx=[-1,1;-1,1;-1,1];
    ' X+ b; v/ B0 z, r1 `: {+ T" _3 {4 V& p
    %BP网络训练4 e6 C; [6 H5 p1 Q5 [: o
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');/ m2 c* @, U! ]. g8 E
    net.trainParam.show=1000;
    . {1 Q  O! o: B: h4 [7 t+ Dnet.trainParam.Lr=0.05;
    " x( E3 x, @! s- ]/ o  anet.trainParam.epochs=50000;
    # Q' e/ S2 f, K! M- Dnet.trainParam.goal=0.65*10^(-3);# x" u8 R3 ^0 J# X0 v) x  A
    net=train(net,pn,tn);
    - g$ L" S/ m$ n1 B9 i( ~# i4 [/ \; j2 i6 a
    %利用原数据对BP网络仿真
    ; g+ [9 \) t8 q2 ?+ a8 jan=sim(net,pn);( F  a, P0 j) X( k6 H. A
    a=mapminmax('reverse',an,ps2);
    ) v$ @4 x( N& m( }7 U2 U/ s* l' O) R$ w" }& N4 I7 q" S# S
    %仿真结果与原数据对比测试
      W" K; H5 b9 K" r- N% cx=1990:2009;# }8 _$ P# w- o
    newk=a(1,:);
    % N" o+ H& C/ f3 jnewh=a(2,:);
    ( _5 b! s' f3 x6 |8 w" zfigure(2);
    % j( T% J* f+ x' O8 i  ^- lsubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');2 i3 ]# G% O$ p: y+ b& c
    legend('网络输出客运量','实际客运量');
    6 a% e* {; J0 t. |) yxlabel('年份');ylabel('货运量、万人');- k3 f8 d: ^8 k: w, _
    title('运用工具箱客运量学习和测试对比图');- C0 v: {9 w% Z- U+ P3 x# b1 K& l" ~
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    ! a- _9 ~1 e$ j7 S( ]legend('网络输出货运量','实际货运量');
    ' O" t1 q- r# d# xxlabel('年份');ylabel('货运量、万吨');8 L& e2 S2 x2 l4 i* M( p
    title('运用工具箱货运量学习和测试对比图');% o0 i. a3 I* n, ~1 G
    6 v( ?8 S' j) X  a# l
    %新数据仿真
    # }" ~2 Z, T! z  fpnew=[73.39,75.55+ L* Y( v7 I6 ?
        3.9635,4.09757 G5 s0 v2 U& N8 d/ |1 `  p2 |
        0.9880,1.0268];
    5 z7 l" y. K, @" n3 q2 O! Wpnewn=mapminmax('apply',pnew,ps1);& r( m: e2 t3 i' J' g7 z
    anewn=sim(net,pnewn);4 U" r0 h" _8 j+ ^
    anew=mapminmax('reverse',anewn,ps2)
    0 Q0 q& T- g! F# o0 y- [( F# n5 }* K: I

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

    `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
    & _' h' F, x! c6 q/ o! W) Z看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    / m2 T* L# S' t因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    1 H. r5 s" q8 y9 p+ Anet=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');; c2 j) J$ G6 H+ U3 S7 d3 Q0 ~
    我修改为:
    9 N8 \: R4 t- Snet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
      a* m. j9 k9 h2 ?9 l& o& k然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    % e( ]' Y& f6 A# T[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
    / k# J5 k6 Z+ f! H4 Fa=postmnmx(an,mint,maxt);  L% t, j4 o+ Y& f! f
    pnewn=tramnmx(pnew,minp,maxp);
    * ~. B0 ]. {/ \anew=postmnmx(anewn,mint,maxt)8 _, n  |$ f( v% ^. ]6 n3 T
    我修改为:" L" V, H  i' x0 d0 p
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    3 ^! ~0 y3 x, N0 Ca=mapminmax('reverse',an,ps2);$ F& `* n1 H3 r3 w
    pnewn=mapminmax('apply',pnew,ps1);- I& j# C. C* Y1 {+ _1 w
    anew=mapminmax('reverse',anewn,ps2)
    2 {. ~6 b" T! M+ q, Q
    4 R3 C* ~0 H, F9 S原程序为:
    ( {5 v! P3 b$ ~$ P%原始数据输入
    ) v9 Y( f8 V0 U8 ^. F, {2 mclc7 t. [- e/ \6 I& i6 `7 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,...
    ' B: v1 {; o( c    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];& I- _0 D- F9 O8 ~0 R3 g0 x
    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/ R: i2 l4 J, M- v
        2.5,2.6,2.7,2.85,2.95,3.10];
    6 x5 X4 d! X3 |% K0 m. {( ?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,...8 {/ E  X6 S2 R3 u6 q$ [
        0.56,0.59,0.59,0.67,0.69,0.79];
    3 S, K# H4 a! `. ~7 p: Y) ~glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...+ B/ a7 w& {) m
        22598,25107,33442,36836,40548,42927,43462];4 ^3 r6 m! K# E4 s0 q) D0 W" @' A1 W
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    ! v' S, P4 g- F6 A6 Z9 c    13320,16762,18673,20724,20803,21804];3 o4 X& Z5 _/ o6 ?$ H" A! k# Y
    p=[sqrs;sqjdcs;sqglmj];* b! ^% m  s3 L' y
    t=[glkyl;glhyl];9 T, ]% E/ _, N1 H* q) H; J0 d0 F. U

    - r+ \5 ^9 y- a" W& I" ^%数据归一化
    5 P2 ~3 m8 q0 O; O- c[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);/ {& y. f% @6 Y, n+ @
    dx=[-1,1;-1,1;-1,1];
    ! F. W: X# b- J7 w! D* G

    9 a. E: g& K. X1 n%BP网络训练0 F# V5 n# o3 Q  A4 }. L8 f
    net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    5 n& I/ y4 \9 fnet.trainParam.show=1000;& ~; d; a; U, p
    net.trainParam.Lr=0.05;; h& n- V; L2 U3 |! R* t4 b
    net.trainParam.epochs=50000;
    5 m3 J. V* b1 O5 f: }/ M& r" unet.trainParam.goal=0.65*10^(-3);- a2 F2 b4 t' x2 M7 w! S$ `
    net=train(net,pn,tn);
    7 B; ]5 \/ p' j# @1 e) F# V% g8 b: c7 H$ y& l5 W: R* d/ o
    %利用原数据对BP网络仿真
    % a) [! z* C7 N! wan=sim(net,pn);
    : k4 |3 ?# ^6 b# t* U) W  ]. P' b5 Ua=postmnmx(an,mint,maxt);, D6 j& H3 L; o  ]* B0 I! y6 {
    ( t% E) e& {/ H. S/ K' @. i
    %仿真结果与原数据对比测试6 a9 k' j/ Q" O2 x  M! b
    x=1990:2009;# b1 U0 X5 B: m4 l) ~7 P/ Y
    newk=a(1,;
    , m; I! k! g& E" u# Vnewh=a(2,;) e3 O$ x" K8 O; O
    figure(2);
    ! H2 I3 W) J; S, I4 y2 asubplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    ) J/ F8 C9 m0 j: O0 r; Olegend('网络输出客运量','实际客运量');
    + {4 s1 K' r5 {5 w$ M  W4 R- Txlabel('年份');ylabel('货运量、万人');4 y$ R4 K5 ~( `& T+ j( {
    title('运用工具箱客运量学习和测试对比图');5 ~9 e% f8 O6 r# ~7 p8 u
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    % a6 A: H& K' y# V/ o: i" klegend('网络输出货运量','实际货运量');- x% n( L3 M+ A4 r8 M" W) x
    xlabel('年份');ylabel('货运量、万吨');
    $ k8 g0 g- [  O. ?3 A1 Q2 Atitle('运用工具箱货运量学习和测试对比图');5 V* W( d) Q" p
    0 R0 |, [+ Y$ G1 m2 U8 h
    %新数据仿真
    : S7 g2 b( m: l3 F0 c/ opnew=[73.39,75.554 w/ d9 q! Z# x* _1 p4 e
        3.9635,4.09752 J& O2 \3 p1 s. G; O9 y2 F/ P6 ]
        0.9880,1.0268];
    8 I3 W) I: ]9 {/ `pnewn=tramnmx(pnew,minp,maxp);
    : g6 Q! v$ ?& i9 v# m* ianewn=sim(net,pnewn);
    2 R! y$ D  a3 j2 Wanew=postmnmx(anewn,mint,maxt)

    8 Z( V1 v5 A' A3 I; A' ?' D) c
    % [  D- i) e* e" J8 ?1 h# H/ x) b修改后程序为:, V9 e) W$ Y) y
    %原始数据输入- F6 ?; f6 Z& @) p2 j' r
    clc
    1 j9 [! L6 B" h" ]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,...$ M0 S1 v5 T) g& p
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    3 f# }2 L2 i- K. [; U' E9 Ksqjdcs=[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,...
    5 c: O* k- G: N6 @5 j$ |# \/ u    2.5,2.6,2.7,2.85,2.95,3.10];
    , ~  @5 I/ Z5 k( D/ x2 P( [7 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,...- R- R3 a3 O% f
        0.56,0.59,0.59,0.67,0.69,0.79];
    / h; m( p8 P) r# nglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    1 R3 S! z( S5 ^6 G    22598,25107,33442,36836,40548,42927,43462];& N" E+ N" J; a3 ?0 H4 W
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    . O, t: s4 K1 n    13320,16762,18673,20724,20803,21804];
    4 ^9 l" X& q4 h) k# E! jp=[sqrs;sqjdcs;sqglmj];
    8 D# L( t9 ~: k0 D. Zt=[glkyl;glhyl];/ A8 p" n8 O( @) v& L" R, L: d
    9 k' @) e5 v0 W( j; ?: q8 I
    %数据归一化4 i+ L! W5 Z' B
    [pn,ps1]=mapminmax(p);+ D8 y1 K+ x2 M
    [tn,ps2]=mapminmax(t);
    ; D' N( B6 v  W/ ~* i5 `' U6 Q4 B7 W  Z8 K
    %BP网络训练
    ) P" w# C, o# s8 q3 hnet=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');4 a. y- Y8 X4 D* W
    net.trainParam.show=1000;5 i$ A3 P% T* t3 L7 [2 m! `7 m5 z+ S
    net.trainParam.Lr=0.05;* g- t+ q- I9 T6 ?, b3 r6 u* e* D
    net.trainParam.epochs=50000;+ v; J- O6 d4 A+ {
    net.trainParam.goal=0.65*10^(-3);# U5 R6 g- H. s! ?* h9 l( h$ a
    net=train(net,pn,tn);' _5 f- M$ j* V$ \5 Q
    1 W' l% d% |. x8 R# N5 k% L9 g
    %利用原数据对BP网络仿真, e: ^- l; M! B
    an=sim(net,pn);
    & \, {6 ?7 }: N2 o% n( F0 Ma=mapminmax('reverse',an,ps2);" s5 m, m5 ^# Q9 D1 E
    0 p/ Y+ W6 Y! i  _& B+ O
    %仿真结果与原数据对比测试* e6 {  r+ Q! s. o9 _' j
    x=1990:2009;
    ; k* H4 ~0 _8 Z+ u6 Q4 H4 d, Unewk=a(1,;& L+ l4 K  b; N# ~
    newh=a(2,;
    ) I6 L$ c7 j% \1 ]+ F* i) |figure(2);) Q/ a, V+ S- @( H5 d3 d( @3 q3 v
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    + l5 \7 c, D9 P1 t+ U9 V1 L! hlegend('网络输出客运量','实际客运量');
    - y  c) G- W2 [xlabel('年份');ylabel('货运量、万人');' N' w. ]# ~2 y$ G9 a7 M) z4 }: _
    title('运用工具箱客运量学习和测试对比图');. w! G6 k0 x, d' R+ I% q# J
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    5 w4 p9 g, d+ Z1 ~8 Slegend('网络输出货运量','实际货运量');
    : y& R% s6 F1 M. Qxlabel('年份');ylabel('货运量、万吨');5 ?* ?( W0 N' D3 p5 ~* N( R1 ~1 r
    title('运用工具箱货运量学习和测试对比图');! ?& |: z% t6 i2 j- ?. h: M
    - k- z5 I/ F" N2 V
    %新数据仿真( q" Z' O$ p, i
    pnew=[73.39,75.55: j6 m5 J: s1 t8 |4 M' {+ G& V; l8 y% |
        3.9635,4.09754 l7 v# C7 t9 L$ |
        0.9880,1.0268];' Q1 R3 S. L/ q# q- x1 R+ ]
    pnewn=mapminmax('apply',pnew,ps1);
    5 i+ ~; T- ~0 C% Zanewn=sim(net,pnewn);
    0 F7 M  T* E" k' B8 U1 ianew=mapminmax('reverse',anewn,ps2)
    6 v' x# O. e+ c: T- S: x(修改的地方用颜色标记了)& k7 P5 D% c% S$ }/ R" W# `; k' n
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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$ S! c: \+ J4 [  ]
    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,...
      2 F5 z4 j( q9 Z7 b) e$ o
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      * v2 C) v$ h) Q8 v8 J) {
    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,...
      4 ~( ?; ?4 l3 k) B5 O! L1 w
    5.     2.5,2.6,2.7,2.85,2.95,3.10];9 j* G4 z5 @( u- A  k
    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,...
      $ W. c, p. q) {) g
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      $ [8 Q, n2 k& A9 b0 s. |7 }
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...) N2 O4 z6 d- A! m+ f9 c+ m0 T
    9.      22598,25107,33442,36836,40548,42927,43462];4 f7 y- {% O* G& J* `' H
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      & t5 ^* |4 P\" e( v% Z* k4 F# z7 C
    11.      13320,16762,18673,20724,20803,21804];
      ) f1 |2 ]% Z. f% a& s3 ]
    12. p=[sqrs;sqjdcs;sqglmj];; K9 p7 z1 n+ j+ H2 C( y
    13. t=[glkyl;glhyl];2 H  v7 Q  s; Y: Y
    14. %数据归一化
      * B+ k( M+ L) v1 p5 \4 \
    15. [pn,ps1]=mapminmax(p);0 q3 E' y, F1 x) g\" }3 N3 d
    16. [tn,ps2]=mapminmax(t);3 ^' r5 v& B& o5 D7 l6 @
    17. %dx=[-1,1;-1,1;-1,1];
      , O& x- [) D# Z) ]% s. i6 {
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
        z- W7 x4 u7 Q3 X  G\" q* G; i; ^\" E

    19. 8 F6 I1 J1 \2 {5 P8 \
    20. %BP网络训练
      % p% g2 W5 p! F) R* c0 Y
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]% w& Z\" L& M; T  f5 [% j1 ?
    22. net.trainParam.show=1000;: z2 a0 l  Z. P
    23. net.trainParam.Lr=0.05;5 i6 P3 l- @% y. ]+ K* K0 z- u
    24. net.trainParam.epochs=50000;) l' X) i. }8 \6 Z6 a9 d- _* j
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]4 U( z0 Y6 J& Y. Y' O0 J3 U5 T
    26. net=train(net,pn,tn);$ }7 s5 H$ d6 ?9 M

    27. $ }7 j$ f\" V* x8 Y$ T0 {
    28. %利用原数据对BP网络仿真: o7 ~! `1 Z1 Q/ f( s
    29. an=sim(net,pn);
      % P- _\" ?* N( r$ A+ K3 S
    30. a=mapminmax('reverse',an,ps2);% z$ d0 w  J, Y4 d) B

    31. / h& h6 n5 j$ C4 a& D
    32. %仿真结果与原数据对比测试 1 W. ~/ \0 l' _
    33. x=1990:2009;
      & c+ p7 w4 b: t: a+ i6 d; S
    34. newk=a(1,:);
      3 A9 W, w9 K' k& }6 ]  u
    35. newh=a(2,:);9 x3 n9 I. U+ P8 V
    36. figure(2);
      3 C& w! }; [; m% m1 O
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      0 t$ y2 N) Z. f/ K
    38. legend('网络输出客运量','实际客运量');
      % X6 c9 V\" b- I# g
    39. xlabel('年份');ylabel('货运量、万人');( G0 u2 T9 U; Z
    40. title('运用工具箱客运量学习和测试对比图');
      4 V  a3 s6 L7 m% L
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      0 N- V; g  n( w6 m* `1 Z: B
    42. legend('网络输出货运量','实际货运量');
      0 Y, f: ]' m\" Z$ v' o1 {. r% ?' p
    43. xlabel('年份');ylabel('货运量、万吨');6 s  c* l1 A5 d5 u% }$ v4 W0 F; B% t* k
    44. title('运用工具箱货运量学习和测试对比图');- X6 K4 O9 `* y' @: \  R, M
    45. ; Y' ]0 |$ E2 @7 \% r, A\" s
    46. %新数据仿真* }/ v5 ~9 d# ^
    47. pnew=[73.39,75.552 A\" ~\" l, p; H8 C
    48.      3.9635,4.0975
      - q$ P6 W& J) }3 A; E1 R/ D
    49.      0.9880,1.0268];
      3 q0 }! h7 [, Q4 r0 C
    50. pnewn=mapminmax('apply',pnew,ps1);0 z/ L- r, U, M# {. E1 C- H$ N3 E' t
    51. anewn=sim(net,pnewn);
      % H2 I& g0 G' m& K4 i
    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
      7 b\" {6 _& q4 k! \) H  Z
    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,...( W/ ?\" ?: o8 F( o- [# z6 h
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];6 ^9 M4 `. U  j1 _9 z$ l, 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,...0 i+ c9 a# g! w! o8 Q& Y
    5.     2.5,2.6,2.7,2.85,2.95,3.10];2 C  l- _\" P3 Q' x
    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,...
      - e; J  _8 R+ n2 E: c2 q( A
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      8 {( E( {( |% U. k. J* v8 p
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...% ^( J. H8 B3 J$ M% h7 ]. H% F6 w+ o+ _
    9.      22598,25107,33442,36836,40548,42927,43462];* w+ W' `* u$ ^4 D1 [
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
        z\" g8 f, R7 J5 n9 ?! i; q$ G
    11.      13320,16762,18673,20724,20803,21804];
      - V2 Q% d6 j3 D
    12. p=[sqrs;sqjdcs;sqglmj];; }8 D! I) h9 g* l9 @
    13. t=[glkyl;glhyl];2 C1 J* a0 h) R9 {8 L) c# i& G
    14. %数据归一化6 j/ A! i+ s' T
    15. [pn,ps1]=mapminmax(p);  H% y1 K7 r6 @  R1 k. h
    16. [tn,ps2]=mapminmax(t);, E: f! y4 }% W$ u; }4 |
    17. %dx=[-1,1;-1,1;-1,1];
      - j( ?' P# E\" O; @. q' x2 p% U
    18. p0=minmax(pn);t0=minmax(tn);5 N3 X$ q3 F# W+ G5 r7 M
    19. $ Y; t3 m, o; Q# m$ W; z9 S# V/ P
    20. %BP网络训练6 V2 e0 C4 e( k6 o# H7 N
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); 3 |6 f+ ^$ t3 }, F; C/ e7 r
    22. net.trainParam.show=1000;
      ! z9 _! C2 }# B3 Z! g( Y
    23. net.trainParam.Lr=0.05;+ w, u; o) X0 H) o
    24. net.trainParam.epochs=50000;/ B) L+ a; `9 @: N
    25. net.trainParam.goal=0.65*10^(-5);
      : y' \5 B1 I- p( v
    26. net=train(net,pn,tn);
      5 a$ u/ b& X8 }5 K6 ^
    27. / o# i\" r( W# f! P$ w
    28. %利用原数据对BP网络仿真9 s& X6 y- Q9 G
    29. an=sim(net,pn);
        ?\" A! S& c5 I+ t+ R& X
    30. a=mapminmax('reverse',an,ps2);
      ( ~4 a# n) ]0 ~. h) v  X
    31. 9 a: S- u* M- j
    32. %仿真结果与原数据对比测试 # F\" L7 u# l/ h) `
    33. x=1990:2009;; u8 M. m2 K) ]% N7 a
    34. newk=a(1,:);
      / D6 w+ [2 A* X$ n
    35. newh=a(2,:);
      7 q# o, _9 j! b2 s1 L+ V9 n$ Y
    36. figure(2);0 T. |( X6 N  a9 B
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');, M. |' a& m& c6 Y3 k
    38. legend('网络输出客运量','实际客运量');2 M4 ?' p# X4 N: Q
    39. xlabel('年份');ylabel('货运量、万人');5 e1 q* [0 z  h8 U
    40. title('运用工具箱客运量学习和测试对比图');
      6 }4 n/ {7 D- c
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');. ~! A0 R: T( }( m  n8 G
    42. legend('网络输出货运量','实际货运量');
      8 S$ \; o7 p+ K  u( g0 ?* O0 p
    43. xlabel('年份');ylabel('货运量、万吨');4 X' F+ D- J! p$ o. p
    44. title('运用工具箱货运量学习和测试对比图');
        S\" Z4 B/ R2 L

    45. - Z. o! v8 a, S. @8 E1 ^
    46. %新数据仿真
      & [+ `' o# l: a4 s, E, Y
    47. pnew=[73.39,75.556 m* G, r7 Z0 L9 X7 m8 a
    48.      3.9635,4.0975\" v7 r/ m6 c# c1 O, V# h; E
    49.      0.9880,1.0268];
      ; Q) n* S8 F6 r
    50. pnewn=mapminmax('apply',pnew,ps1);
      \" P& f1 w, J! b5 u
    51. anewn=sim(net,pnewn);: M, u8 h# W4 l. ^4 w) D
    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 + P. ?% W! s1 W8 O* R: N
    忽略我上面那个,改动的地方在18,21,25行……求批

    : b: A+ w3 M2 o3 c$ R; }确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

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

    p1.jpg

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

    p2.jpg

    回复

    使用道具 举报

    且生        

    29

    主题

    9

    听众

    1500

    积分

    升级  50%

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

    [LV.9]以坛为家II

    社区QQ达人

    群组学术交流A

    群组学术交流B

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

    群组EXCEL

    1. %BP网络训练
      # @5 d  x: H. B: `6 i
    2. net=newff(p0,t0,6,{'tansig'},'traingd'); ) O, o) l: g' D( ?
    3. net.trainParam.show=1000;5 z: L* @\" {\" U+ M. T
    4. net.trainParam.Lr=0.05;' R( L( o! n\" s' T2 Z. p- E
    5. net.trainParam.epochs=2000;1 a, Q0 [7 k, N) p! b+ G+ c8 i
    6. net.trainParam.goal=0.65*10^(-4);
      - j+ t* d4 {% Z% v( d
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    , t* v5 u4 E  F8 `% R一、改成单隐含层的,6个节点8 V- ^9 L, K3 l6 E
    二、训练函数改成梯度下降BP算法 traingd" Z8 L* h' n. D
    三、迭代次数改成2000; _# B# {0 e2 Y; q' t! T
    上面的参数是自己试的,我也不知道为什么。
    8 r# t9 X. H  X. y) T' U" h" H由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。
    5 I, m* Z5 O" E! y% L关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-4-14 15:24 , Processed in 0.564923 second(s), 103 queries .

    回顶部