QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4757|回复: 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的版本,所以我修改了部分程序,但运行出来有问题。请哪位高手帮忙指教和修正一下。谢谢!!
    " r$ z+ x1 z4 r/ `
    ! D5 u" ?' M& N) G6 {+ o, e: ^%原始数据输入' C  p% i5 Z& @& Y( i1 F+ |6 C" a
    clc
    8 I) N% j$ r7 d# c/ 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,...6 R2 P- h8 q$ M5 t
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];3 J* m7 p# s; s/ W. G) @; v' e. 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,..., L) M/ Q) O6 W$ `( u: y3 X0 V
        2.5,2.6,2.7,2.85,2.95,3.10];
    5 n: ^$ ?+ J7 asqglmj=[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,...
    - y8 X9 ~1 ]( E8 l- [    0.56,0.59,0.59,0.67,0.69,0.79];
    5 }, W( r- y+ z! F$ [glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...4 ^( m; \  t! n! O
        22598,25107,33442,36836,40548,42927,43462];  p# i" Q* U) p  d
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    7 c8 x# `! \% g6 O( W1 J3 [    13320,16762,18673,20724,20803,21804];
    , h) ]9 Z+ g/ }1 ]; q- h6 W$ z/ Lp=[sqrs;sqjdcs;sqglmj];3 B5 ~) C( j* S! ^
    t=[glkyl;glhyl];4 d; @( L" E# @1 \: @

    + d( h4 w* W9 R%数据归一化" o$ }, S* v/ m) \' \
    [pn,ps1]=mapminmax(p);9 ~) L1 X+ V. l0 s) v
    [tn,ps2]=mapminmax(t);
    * [* r0 }2 o; {* n8 m- O1 ydx=[-1,1;-1,1;-1,1];5 [" j) J+ U. O: W: v
    " g4 _! \" L  G2 z6 r$ C
    %BP网络训练3 I1 o( G1 E7 s; a3 i+ y4 C' x
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');9 ]0 C" |' b# D
    net.trainParam.show=1000;
    1 u' Q' Z, e/ F4 p; nnet.trainParam.Lr=0.05;+ h! C, a2 T7 T0 h
    net.trainParam.epochs=50000;- q+ D9 R1 h5 n
    net.trainParam.goal=0.65*10^(-3);# a( y+ {5 ]* O* X, H) z) o% N4 ~* I
    net=train(net,pn,tn);
    3 U  P1 G) t) x' ~$ w
    1 t$ v: D5 t# ^3 u%利用原数据对BP网络仿真
    3 e# u3 N8 X2 t  Uan=sim(net,pn);
    4 P7 }. H$ p2 g  F! f5 b9 ia=mapminmax('reverse',an,ps2);
    / K- u# m  d2 m0 E! k4 C' b; K1 w5 \/ t. ^/ ]& U6 j, @
    %仿真结果与原数据对比测试
    6 A2 D6 {; e6 u) p5 ]x=1990:2009;8 m4 ^* `  l1 M& ?
    newk=a(1,:);* _7 l1 Z/ I" _7 w& |
    newh=a(2,:);
    ; w* x* s; _0 L; [! j, ufigure(2);  W0 r: P8 _0 {& \* Y2 q; r
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');- W3 k2 F) H; |; T( K" f8 O. a
    legend('网络输出客运量','实际客运量');0 X8 T, E9 x  q: ]* X* o* Y  k
    xlabel('年份');ylabel('货运量、万人');6 g' N; O5 a9 t1 n
    title('运用工具箱客运量学习和测试对比图');
    , e% Z' b, x1 V. l8 zsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');0 @( V7 d. b. K5 s6 O; E
    legend('网络输出货运量','实际货运量');# Q! I( }7 n, p' f" i
    xlabel('年份');ylabel('货运量、万吨');
    3 |6 O' [: x+ m: }8 _9 a; ftitle('运用工具箱货运量学习和测试对比图');( K) W0 f$ P" ?+ t# N% @- W
    8 [, c/ M' r3 Q# r  |  o+ l4 D- V
    %新数据仿真, g( k: G9 P, ?  S( G8 r* y
    pnew=[73.39,75.55+ F$ `9 w* w; o8 ^3 _
        3.9635,4.0975: ~4 s7 i7 X  M: M( U6 Y. ^4 I
        0.9880,1.0268];
    + d: s" q  x# o) K! S" ypnewn=mapminmax('apply',pnew,ps1);
    % X) [# n$ ~/ Eanewn=sim(net,pnewn);4 C; E5 K9 }, x4 K  Q1 w& X
    anew=mapminmax('reverse',anewn,ps2)
    ( t0 P9 W" {9 P! A" O( e9 C: h& T: Q' Z* }3 E

    `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
    ! ^+ d% S% `: w, V9 L/ ~  h看了图我感觉是网络输出后面那几个值太大了,前面基本都是一条水平线了,具体哪里还看不出问题。你把修改的 ...

    * o$ v2 j& S1 g, R$ I% i& N. [因为版本更新,Matlab中的Newff命令用法有所改变,原命令为:
    / ^2 c/ _/ _) X. \# s& _net=newff(dx,[3,7,2]{'tansig','tansig','purelin'},'traingdx');
    % X" _/ V2 X" D' [, ^" L我修改为:9 Y' Q& H1 ]; K6 E& l
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');. A9 ~0 K: ?' F0 V7 e8 B
    然后有些命令被其他命令替代了,其中有premnmx,postmnmx,tramnmx命令好像被替换了,使用了一个强大的命令mapminmax。原命令为:
    ' u3 m" t, E* r4 _/ b+ ?[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);9 U7 n& N, r% }: R/ D
    a=postmnmx(an,mint,maxt);
    / v! b3 G; T5 o2 I7 D: D+ ]pnewn=tramnmx(pnew,minp,maxp);  R! n$ B3 ~! X# `0 K: B) r% W
    anew=postmnmx(anewn,mint,maxt)" r0 W& N) L3 y; ~! J
    我修改为:4 Y5 m8 p* ~2 Z8 R3 x
    [pn,ps1]=mapminmax(p);[tn,ps2]=mapminmax(t);
    # l/ a, N* w- O0 ]8 o& T! x4 xa=mapminmax('reverse',an,ps2);
    9 {0 |* J! z" P! u3 ]( spnewn=mapminmax('apply',pnew,ps1);
    $ X8 q' T9 j5 J5 E4 M4 ranew=mapminmax('reverse',anewn,ps2)4 S  X7 S6 i3 h# S7 @- i; B+ N
    2 C6 t1 ^8 ~( Y  c$ B
    原程序为:- t4 B6 e1 ~9 Z. O; |
    %原始数据输入7 t; @: S: I1 N" h) K
    clc
    7 K$ o4 |1 y! B. h$ ?, v; ^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 w0 [" S5 Z# E- ~& Y- u    41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];9 v2 y" T; {6 O. F3 [2 b2 M3 R
    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( F- ^7 W' ?& `    2.5,2.6,2.7,2.85,2.95,3.10];0 y- n% D  v) X5 ~4 K8 m! 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,...& s: l% m' w4 T; p/ B$ E; Z
        0.56,0.59,0.59,0.67,0.69,0.79];0 z. p, a- h1 p' A& S0 v
    glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    9 g/ Q2 b* h: p( S4 x" f    22598,25107,33442,36836,40548,42927,43462];, y5 H7 j# h* e3 n
    glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...; `6 [" v* u+ O" T5 ]0 o
        13320,16762,18673,20724,20803,21804];+ W( n/ f; _8 Y! N6 C
    p=[sqrs;sqjdcs;sqglmj];
    , m; h* A) w8 Wt=[glkyl;glhyl];' f( Z  R+ ~1 @$ ?3 H- E" m
    0 F% e. i" q0 m# b
    %数据归一化- r' |: [1 i* J6 g3 @6 p* D( Z, H
    [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);' }  p) b4 }# F/ Y
    dx=[-1,1;-1,1;-1,1];6 V# w. k) o3 `* s
    " Q* }# |; d) t0 [1 \
    %BP网络训练
    + @1 D0 m( e! L! e, jnet=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingdx');& P8 K& b* L- z" |9 u9 @
    net.trainParam.show=1000;
    + b- w7 E& S3 d+ inet.trainParam.Lr=0.05;
    ) u& j2 ^8 e- ?+ Mnet.trainParam.epochs=50000;' q' H: G4 u! d. w* l% |6 y
    net.trainParam.goal=0.65*10^(-3);' p9 b+ S1 j: _7 G+ q, I
    net=train(net,pn,tn);+ k1 @: d* b; T* _0 z
    $ O' o" E2 B" Q: g0 ?
    %利用原数据对BP网络仿真
    & v: _, B9 T. X4 Van=sim(net,pn);$ o3 C& ~* y; r6 p
    a=postmnmx(an,mint,maxt);) U% X2 M, c3 ], f9 C" T

    & o1 K# I( `( K  V' B$ J%仿真结果与原数据对比测试
    " X3 \- `* o# }# bx=1990:2009;  a! e- s  b6 w" B
    newk=a(1,;  d2 o/ {, c4 C9 M' F% a
    newh=a(2,;
    $ {/ P, p- [1 d6 W" n# bfigure(2);1 C9 K" H$ w7 O0 H) j& j
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');" S# S" U" ?% @( F" A* H$ D
    legend('网络输出客运量','实际客运量');0 d0 a( b) Q( \/ J) x* a0 P& Y
    xlabel('年份');ylabel('货运量、万人');  E* |9 {7 X$ D1 z
    title('运用工具箱客运量学习和测试对比图');
    ; C+ ]1 Q/ G! R  hsubplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    . V  A1 ?6 b3 o0 blegend('网络输出货运量','实际货运量');
    9 q2 s* I) W" rxlabel('年份');ylabel('货运量、万吨');9 a% X8 M2 x. i
    title('运用工具箱货运量学习和测试对比图');
    8 ]" u" |; ]" j
    1 @) _% M" U$ r; D* J%新数据仿真
    9 y$ r! U% P% e% cpnew=[73.39,75.557 P# o, @3 l3 @
        3.9635,4.0975
    * q7 }# f# c" ?& k5 s4 I. W    0.9880,1.0268];' ]. Z0 \5 U5 u9 N0 u
    pnewn=tramnmx(pnew,minp,maxp);+ x& j' F$ z: O# d8 w
    anewn=sim(net,pnewn);
    4 f: R; ~, d, p5 p& ?5 r% g9 S9 U$ ianew=postmnmx(anewn,mint,maxt)

    6 J: f7 u7 n7 s0 J/ O4 c
    $ k' _! _: h) j# {  u9 P: u修改后程序为:! ]3 E# N7 j. `* G' c( A% D
    %原始数据输入& P  f- a- {, G/ V  u% x8 F
    clc1 }0 N1 x: P! ?9 ]/ A& R) W
    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 o7 _3 q) u5 v# Y$ x% J
        41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
    ! N- Z' R3 h4 y6 {" a: Q) csqjdcs=[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,...6 M% \4 s4 _; r% C" `! C$ @
        2.5,2.6,2.7,2.85,2.95,3.10];: N, T; V$ \; \5 B
    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 |4 s% y. U1 w) t" F- U9 I( K
        0.56,0.59,0.59,0.67,0.69,0.79];
    , R% J7 X* D. ~- V0 zglkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...
    ) C- K% \8 ~, X$ Y: _    22598,25107,33442,36836,40548,42927,43462];
    1 `5 K3 K0 T3 d. j  ~6 Q, C3 Pglhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
    1 g5 T% K5 H" j! l! b    13320,16762,18673,20724,20803,21804];
    7 K/ Q6 _# G- H: k- [5 Ip=[sqrs;sqjdcs;sqglmj];* [% D+ B& [: G: S; w& Z
    t=[glkyl;glhyl];
    8 X$ C) E' u; T$ F4 U  b( z: S- ]5 Z2 F6 A! z
    %数据归一化
    . N9 S/ f5 L* _4 e/ m+ C/ s2 F[pn,ps1]=mapminmax(p);9 Q' B* ^1 y: {* O6 u' @
    [tn,ps2]=mapminmax(t);
    ! A5 Y+ C% h5 V0 V* a0 u& H" c
    ( ?/ [8 |* ~1 v* x) `; K; ?- H%BP网络训练2 p: v1 ]+ i: O: n! X! o
    net=newff(p,t,[3,7,2],{'tansig','tansig','purelin'},'traingdx');
    9 _2 {9 |; T9 {. P9 Cnet.trainParam.show=1000;
      l% q9 i  R: R# P! N' c8 xnet.trainParam.Lr=0.05;8 v1 H* D& M* v. C1 ]
    net.trainParam.epochs=50000;
    ' \7 f9 O! Z$ z! l* o4 R3 dnet.trainParam.goal=0.65*10^(-3);" _  I% h. S" X3 l
    net=train(net,pn,tn);. }2 x9 N8 [# J
    4 k4 v4 Y  d- @* Z# z1 D" R- A
    %利用原数据对BP网络仿真
    # z# i2 w! A5 t/ C" V' S4 uan=sim(net,pn);; D7 W: O7 b, z3 L% V) n  G
    a=mapminmax('reverse',an,ps2);0 f/ h* `, u% p

    0 Q7 x' X8 e/ U4 l%仿真结果与原数据对比测试/ |2 Y3 G+ h; |* b/ _& ?2 Z
    x=1990:2009;
      `: ^) ~: F2 i1 C! }7 Qnewk=a(1,;
    0 V- s# I" K  ~! onewh=a(2,;
    - w% e) f2 k1 E6 i5 f& Ofigure(2);. J8 w9 A3 r! Y1 H& b  a
    subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
    9 i& N4 ^1 Z: t; X- ?5 `legend('网络输出客运量','实际客运量');/ F& O2 F( C  O1 D0 N* l7 f7 l: u- X" n
    xlabel('年份');ylabel('货运量、万人');
    ! o; Z% z6 _) c. a5 X; T8 n3 etitle('运用工具箱客运量学习和测试对比图');+ ]* T/ l. o" A* y
    subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
    1 Y* ]7 F1 [4 ^2 M9 xlegend('网络输出货运量','实际货运量');
    0 c: c& ^& I( c' V, ^$ \* ^xlabel('年份');ylabel('货运量、万吨');* j! t/ F6 h% S) G
    title('运用工具箱货运量学习和测试对比图');
    5 @7 w" W" r6 }5 [1 X" d9 P( k
    * O4 \9 S" e2 a3 S2 [  c  s, K%新数据仿真
    ) P& L8 A* ^" `! p7 a! ~0 cpnew=[73.39,75.55
    8 h5 S  X+ F& q    3.9635,4.09754 A3 p1 t% L6 ~/ A5 u
        0.9880,1.0268];
    8 d8 e, S( a0 [2 W1 p! H, zpnewn=mapminmax('apply',pnew,ps1);
    1 d0 f. j8 @- |. H* |anewn=sim(net,pnewn);
    8 p0 J  e4 V- Y+ u5 A5 Danew=mapminmax('reverse',anewn,ps2)9 n$ l) B0 W/ V5 u" t8 y- O- a
    (修改的地方用颜色标记了)" i* Z" Z9 e9 r
    麻烦您帮忙指出其中的问题,万分感谢!
    回复

    使用道具 举报

    且生        

    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
      % j; I; X& s8 b# V  h
    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 v' Y8 a  ^8 F1 L: x) Z4 S; Q
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];
      * r( G1 }: M% `
    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,...9 O/ Y/ T. ^0 R/ ?( i4 F6 c% n: A
    5.     2.5,2.6,2.7,2.85,2.95,3.10];* i. j% ~) F7 N/ N$ W% @! t
    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,...+ H# h: y. B  k) i. J# ~
    7.     0.56,0.59,0.59,0.67,0.69,0.79];9 f1 l1 Q' U' p6 ]
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...9 S$ d8 H3 R4 b2 R\" `
    9.      22598,25107,33442,36836,40548,42927,43462];1 C! H$ x! K) n9 r; }
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...
      : K\" |1 D! x\" V$ u/ ~. e, v) |
    11.      13320,16762,18673,20724,20803,21804];
      1 T. A5 U9 [0 G( u& r& o
    12. p=[sqrs;sqjdcs;sqglmj];% Y\" |\" E) y0 f
    13. t=[glkyl;glhyl];) C& X* ~. [8 ^3 v
    14. %数据归一化
      1 H0 g2 \; X# M\" {  v7 {
    15. [pn,ps1]=mapminmax(p);
      + P  d; N5 Y% U7 d( D. r
    16. [tn,ps2]=mapminmax(t);
      8 {4 B4 \+ A, h
    17. %dx=[-1,1;-1,1;-1,1];- D* D- g# t2 m\" J4 A! {, C: _
    18. [color=Red] p0=minmax(pn);t0=minmax(tn);[/color]
      7 v% k% T/ p) H5 @- ~( S/ _
    19. 0 U) X6 V7 t# ]( n
    20. %BP网络训练
      & t+ Y6 [$ B; E# V1 c- S
    21. [color=Red] net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); [/color]
      5 d8 h* @- X- k
    22. net.trainParam.show=1000;) N. x, D' [9 O$ c5 N# l' Z
    23. net.trainParam.Lr=0.05;: J- g0 z% y9 R
    24. net.trainParam.epochs=50000;% J( b8 z! ~& G' j
    25. [color=Red] net.trainParam.goal=0.65*10^(-5);[/color]
      ) R) b$ W/ L0 ~
    26. net=train(net,pn,tn);
      7 T) ]+ v# s! _

    27. 1 A4 _* s1 o5 t
    28. %利用原数据对BP网络仿真
      . P/ r: g9 C8 R7 ?
    29. an=sim(net,pn);8 R0 S# T' u& `5 I8 g3 T
    30. a=mapminmax('reverse',an,ps2);
      - _4 }& A% g\" U7 W3 V

    31. 8 B8 O8 B& ?# U. ~6 w* ]* P; P
    32. %仿真结果与原数据对比测试 2 ^6 t) Q5 w9 c6 S/ X# o7 K
    33. x=1990:2009;2 G. W+ U- `) ]
    34. newk=a(1,:);7 V) Q; h: R9 _5 Q
    35. newh=a(2,:);
      ' [0 C7 C1 m- E4 I5 B5 i
    36. figure(2);
      ! r1 ~$ `) G\" u9 i& k
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');
      : v! @  g2 o7 D9 P
    38. legend('网络输出客运量','实际客运量');' ]2 L4 h: L3 w, F; K6 F9 L
    39. xlabel('年份');ylabel('货运量、万人');
      2 I, `2 ^# `; e! N' ?1 y
    40. title('运用工具箱客运量学习和测试对比图');* x1 R$ s/ x5 E9 z9 Q
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');2 M) T! M. A* Z$ O1 Q/ T
    42. legend('网络输出货运量','实际货运量');
      \" X+ A. d; {7 c# ^2 L, T) i
    43. xlabel('年份');ylabel('货运量、万吨');
      & I9 }$ q( v# v$ c# z' A: R
    44. title('运用工具箱货运量学习和测试对比图');' l. q; v6 E! z
    45. 8 m8 ]  ~' U/ ~7 P) z- }4 N+ t) H
    46. %新数据仿真, D0 {( k; E/ A( Q
    47. pnew=[73.39,75.555 ^\" I5 [$ A) d0 ]& x/ s, [9 }0 [
    48.      3.9635,4.0975$ z/ k1 A% E# x3 w+ E: g. i7 O
    49.      0.9880,1.0268];% q6 @\" U2 u; Q6 f
    50. pnewn=mapminmax('apply',pnew,ps1);5 N8 q$ T' f, I9 x. T& g
    51. anewn=sim(net,pnewn);
      - I2 K+ n! k\" q9 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. clc8 K! v9 C6 J. p& u  G. B
    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,...
        u) N* b0 b7 \
    3.     41.93,44.59,47.30,52.89,55.73,56.76,59.17,60.63];1 I9 S$ S8 J& H. s4 u# 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,...
      6 s$ U\" M! J1 k, e, W  Y6 f
    5.     2.5,2.6,2.7,2.85,2.95,3.10];
      8 l# J  y9 Y& O/ L\" i
    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,...
      & z  ~5 u5 T; Y5 j9 w9 L% W
    7.     0.56,0.59,0.59,0.67,0.69,0.79];
      ! a; U8 S) s' D
    8. glkyl=[5126,6217,7730,9145,10460,11387,12353,15750,18304,19836,21024,19490,20433,...6 ?* C' H9 X, E) a8 v% G+ ]. P5 \
    9.      22598,25107,33442,36836,40548,42927,43462];  i% y! G+ @, o* B% l
    10. glhyl=[1237,1379,1385,1399,1663,1714,1834,4322,8132,8936,11099,11203,10524,11115,...- j$ y; O7 \9 C% h# y# V
    11.      13320,16762,18673,20724,20803,21804];
      7 K6 C- d0 p8 Z6 A8 _9 y
    12. p=[sqrs;sqjdcs;sqglmj];* n( N) |+ N8 f9 s) b. P$ Y
    13. t=[glkyl;glhyl];8 |+ r8 L; L5 l4 I, T+ p
    14. %数据归一化8 T# U+ t+ p4 z: B7 s, D2 U0 \( i
    15. [pn,ps1]=mapminmax(p);
      / q3 {7 a9 Q- p9 W
    16. [tn,ps2]=mapminmax(t);
      9 w) I3 f' [# Y. F/ z
    17. %dx=[-1,1;-1,1;-1,1];) R) X\" _\" c5 ]5 ?
    18. p0=minmax(pn);t0=minmax(tn);; |, _) m; p# C

    19. ! y$ F) R. V& }* f' p9 h
    20. %BP网络训练# ^/ F( C  C4 B! {# O$ T8 w5 Y4 Q
    21. net=newff(p0,t0,[3,7,2],{'tansig','tansig','purelin'},'traingdx'); 0 ?9 _) K. \1 v& Y/ b
    22. net.trainParam.show=1000;& L1 c. e- K  p& X$ P, N. P9 f+ i
    23. net.trainParam.Lr=0.05;
      9 r; _3 Z1 \* G! i- z  u& e
    24. net.trainParam.epochs=50000;
      ; C+ n6 f/ u3 m# G8 T; m
    25. net.trainParam.goal=0.65*10^(-5);
      / Q: {& w$ q) C5 F! K( f
    26. net=train(net,pn,tn);9 d7 e+ U- u6 z\" F; L# w
    27. , H# H0 E/ l: V) G1 e
    28. %利用原数据对BP网络仿真6 L% o& v/ t! q+ `
    29. an=sim(net,pn);
      : V% _! M2 j+ X
    30. a=mapminmax('reverse',an,ps2);' }3 o4 E\" {& t4 o* p% ~' v
    31. 0 r( O, ~$ v; N) X/ V
    32. %仿真结果与原数据对比测试 * B* @4 V* R# F! M- W6 P0 m/ U
    33. x=1990:2009;
      : Q# I. e( G* l/ Y
    34. newk=a(1,:);9 h8 M: c8 N9 W- ~6 N
    35. newh=a(2,:);8 N  N9 Y& e( n: C* q# z+ ~
    36. figure(2);
        y' I1 X, p$ e5 h  c2 \! |0 z\" q
    37. subplot(2,1,1);plot(x,newk,'r-o',x,glkyl,'b--+');( \$ J\" U! t$ Y; b
    38. legend('网络输出客运量','实际客运量');8 z5 o4 W, R5 H4 \6 {2 q  |
    39. xlabel('年份');ylabel('货运量、万人');% T6 `9 z) P7 L\" i; t
    40. title('运用工具箱客运量学习和测试对比图');' Z& _0 l1 q6 I# w\" m% e' t\" ^  n
    41. subplot(2,1,2);plot(x,newh,'r-o',x,glhyl,'b--+');
      ( F' T4 A' d4 P, Z% u& c
    42. legend('网络输出货运量','实际货运量');8 V( G9 Y, y; X0 n8 h8 \, ?
    43. xlabel('年份');ylabel('货运量、万吨');- ^% k/ S# \: |1 @5 D& s5 Z) }
    44. title('运用工具箱货运量学习和测试对比图');
      9 |0 \* V; }4 Y; v6 o( @( D  N
    45. 5 W5 U6 X/ c3 W6 d
    46. %新数据仿真
      . }3 B+ H! @\" U0 k
    47. pnew=[73.39,75.551 ?( I2 Y. F$ e/ F: b- m, m  O
    48.      3.9635,4.09752 S' ]* c3 Q+ Q' G4 n4 _! o
    49.      0.9880,1.0268];
      1 n, R3 Q- Y: Q8 e6 I+ P) V& R
    50. pnewn=mapminmax('apply',pnew,ps1);
      \" O2 C4 r9 H\" _
    51. anewn=sim(net,pnewn);
      6 Q- s  R$ K! X) Z
    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 * K+ F" O- I4 n. \" i9 y6 Z& d# B+ s! _
    忽略我上面那个,改动的地方在18,21,25行……求批

    ' {6 w, k  z3 t' a确实改善了很多,很是感谢。但效果还是不太理想,而且为何只学习了几十次就停了呢?即使我修改了目标精度。

    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网络训练
      \" _& v9 Q' `! ?3 K5 d6 {
    2. net=newff(p0,t0,6,{'tansig'},'traingd');
      7 c4 [1 t. ^/ U
    3. net.trainParam.show=1000;* Q8 w- i7 h0 k# Q& U\" X
    4. net.trainParam.Lr=0.05;9 n) [$ A( w2 C
    5. net.trainParam.epochs=2000;3 @( E( T; _\" z0 Y8 J
    6. net.trainParam.goal=0.65*10^(-4);
      3 m- W* l0 N& Z% Q) p
    7. net=train(net,pn,tn);
    复制代码
    我只改了这里面的,
    + n9 {) H7 O1 X& t4 S8 y" `一、改成单隐含层的,6个节点. M' R+ S# p4 h9 Q- T, E2 ]: e
    二、训练函数改成梯度下降BP算法 traingd- [3 j1 |( r: z. Y5 v1 s5 N. Y
    三、迭代次数改成2000& E/ N  L0 ?4 j; L
    上面的参数是自己试的,我也不知道为什么。9 S, g0 J* t2 [3 R' r- _# p
    由于这玩意儿比较不靠谱,楼主多运行几次就能找到拟合的比较好的网络。. u; F+ S) w* C5 C3 c3 D2 u
    关键问题是有没有过拟合我也不知道,等大神来解答吧
    唉,无心学习啊,堕落了堕落了 ...
    回复

    使用道具 举报

    且生        

    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-15 05:47 , Processed in 0.534199 second(s), 103 queries .

    回顶部