QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10587|回复: 15
打印 上一主题 下一主题

在MATLAB中如何将神经网络和遗传算法联系起来

[复制链接]
字体大小: 正常 放大
trok_2005        

3

主题

2

听众

61

积分

升级  58.95%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-1-22 22:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

我因科研需要刚开始接触MATLAB,发现确实如各位大侠所说是个好东西,目前我在处理一组实验数据,希望用神经网络对其进行训练,可以实现仿真,另外我还希望采用遗传算法寻优,如何将神经网络的输出转化成遗传算法需要适应度函数呢?请各位大侠多多指点,先这里谢过了。

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
retin        

25

主题

5

听众

679

积分

升级  19.75%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组: 万里江山

    群组: sas讨论小组

    群组: 长盛证券理财有限公司

    群组: C 语言讨论组

    群组: Matlab讨论组

    希望你能将如何用神经网络做的仿真说清楚,既然已经仿真成功了,那所说的寻优又是指的对什么寻优呀?神经网络又作了怎样的仿真?问题不清楚,这个很难回答!

    回复

    使用道具 举报

    trok_2005        

    3

    主题

    2

    听众

    61

    积分

    升级  58.95%

    该用户从未签到

    新人进步奖

    以下是引用ilikenba在2005-1-23 12:26:35的发言:/ }7 \7 W/ M( H y6 E) w 6 Y) e3 o8 x) W

    希望你能将如何用神经网络做的仿真说清楚,既然已经仿真成功了,那所说的寻优又是指的对什么寻优呀?神经网络又作了怎样的仿真?问题不清楚,这个很难回答!

    : g; q; A' Z1 W: S) _+ _2 l

    谢谢您的关注,是这样,比如说我利用正交设计获得18组实验数据,我用BP神经网络建立了网络模型,我还希望能利用这个模型求解最优,即寻找合适的网络输入,以使网络输出值达到最大。但由于神经网络模型的建立是通过神经元间的连接权值和阈值来实现的,很难用简单的函数形式表达,因此我希望采用遗传算法来寻找最优的实验条件。但我不知道怎样将神经网络的输出转化为遗传算法所需要的适应度函数。 e* @/ V& [3 `6 K! u! m# v; g

    我是用NET=NEWFF(MINMAX(P),[20,1],{'TANSIG','PURELIN'},'TRAINLM');进行建立网络,用NET=TRAIN(NET,P,T)对网络进行训练,用ANEW=SIM(NET,P)对网络进行仿真。 2 r2 n# V3 \6 T( U1 Y5 \8 b

    不知我的问题说清楚了没有,希望您或其他大侠帮忙看一下,小妹这里谢过了!

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组: 万里江山

    群组: sas讨论小组

    群组: 长盛证券理财有限公司

    群组: C 语言讨论组

    群组: Matlab讨论组

    按照你的说法,你可以完全利用遗传算法寻优,并不一定要和神经网络结合的,这里只要找到一种合适的编码规则就行。对于遗传算法你完全可以随意地利用一种选择、交叉、变异规则,因为它是按照概率1收敛的,所以这些规则的选择好坏只影响收敛速度,我想你所说的适应度函数就是表示每个种群的概率密度函数吧!你完全可以按照网络输出值的数值大小计算每个种群所占的概率!
    回复

    使用道具 举报

    trok_2005        

    3

    主题

    2

    听众

    61

    积分

    升级  58.95%

    该用户从未签到

    新人进步奖

    谢谢 ilikenba 的回复,我是新手,不太明白,研究了半天,编了一点东西,可运行出了问题,帮忙看看是怎么回事,如何修改,谢谢!

    p=[ 40 21 2.5 6. 5 ' C4 B1 l/ Q) _) ?- Y- o 40 25 3. 6.5 10 : x$ M. R- k, }. Y% P 40 30 3.5 7. 20 , y6 X, U( k) m. _0 F 45 21 2.5 6.5 10 9 e E! g: F$ y 45 25 3. 7. 20 ; J5 L) |3 K7 z" n' H 45 30 3.5 6. 5 # V, _) F8 C* p E$ r 50 21 3. 6. 20 % @; i2 V+ o: @$ [- ]' U' Y$ x 50 25 3.5 6.5 5 2 R- D( [( T0 I6 K) g 50 30 2.5 7. 10 5 s. x; m8 p1 x i0 p' z8 k& R8 t 40 21 3.5 7. 10 5 R7 r. ^/ {# I' J! X 40 25 2.5 6. 20 2 ^4 r% |( B. K4 y6 L% Q) b2 Z 40 30 3. 6.5 5 " z: C% Q2 s2 q7 P 45 21 3. 7. 5 ; l# C; K- F, q4 Q/ e0 r 45 25 3.5 6. 10 * E" i# k% \/ \6 L& T8 A 45 30 2.5 6.5 20 % R0 g5 x0 i2 x 50 21 3.5 6.5 20 : E( v: B; K+ m! { 50 25 2.5 7. 5 ^# P+ r; F( N3 J" z8 E! S 50 30 3. 6. 10];

    t=[2.673;3.412;1.315;2.019;1.996;0.885;9.317;4.484;1.768;5.720;2.316;0.678;1.042;1.492;0.765;8.812;1.204;3.130];1 Z2 l9 }; I/ U T=t'; $ p& E& u4 n8 |$ z4 ~1 Q) |P=p';% ~; D: L2 r# q4 I net=newff(minmax(P),[12,1],{'tansig','purelin'},'trainlm'); # q* j* ^2 o3 F( m) q%训练网络

    net.trainParam.show=10;* R5 [1 @4 x! h d9 w) U0 V7 F %net.trainParam.lr=0.05;) n3 d( G: Y n) k& i) t3 ~ %net.trainParam.lr_inc=1.05;+ {1 @2 G. A1 q% w) [2 g* H net.trainParam.epochs=10000;+ d! H r5 R- o net.trainParam.goal=1e-5; 8 b- n$ g( y+ _, I % randn('seed',192736547);) m, h' d/ M" K. b % net=init(net);" y3 H, Z; ]# k [net,tr]=train(net,P,T);& B. d9 K5 n, K" v minmax_var=minmax(P);' P: @, h3 Z2 Q- Y minmax_target=minmax(T); ! G7 F# z0 @$ f( Csave('result','net','minmax_var','minmax_target');

    % 将网络输 转换成$ F3 j, _* y8 N0 i. t8 e2 f3 N1 N 6 P& L' Q8 ^4 s, X- h6 a4 }8 f load('result');9 U* ~8 @6 ] R+ P) S _+ s i$ { [Pnew,endPop,bestSols,trace]=ga(minmax(P),'fitness'); : U0 k, q' @# ? / z& b& s5 @ ? \# Z %性能跟踪/ G9 c9 w4 q M plot(trace(:,1),trace(:,3),'y-'); / \7 z& J$ a" p; K hold on 7 `; ]! k! Q/ N# q+ z plot(trace(:,1),trace(:,2),'r-');8 ^) A6 H" b5 v5 ]8 Q8 J2 Z xlabel('Generation');% Y7 ~1 f+ Z6 i; l; C- p ylabel('Fitness'); ! g+ O3 V* N: E legend('change of solution','average change of population');2 E3 K$ S5 T9 Q- b: F' U! \4 ~ w TRAINLM, Epoch 0/10000, MSE 12.2801/1e-005, Gradient 1739.63/1e-010 : s D) L4 X( s" u: Q' X1 KTRAINLM, Epoch 10/10000, MSE 0.694955/1e-005, Gradient 93.6508/1e-010% Q# @: a! F4 j) m% B TRAINLM, Epoch 20/10000, MSE 0.0242391/1e-005, Gradient 2.89095/1e-010$ I8 B: n3 w6 C* Z1 }' X& k: b1 { TRAINLM, Epoch 30/10000, MSE 0.0206875/1e-005, Gradient 4.2655/1e-010 5 J3 E; V9 S; v9 K& i+ W# f0 `TRAINLM, Epoch 40/10000, MSE 0.0185878/1e-005, Gradient 18.249/1e-0106 u0 [, a( J- Z0 X- `; s( L g6 P TRAINLM, Epoch 50/10000, MSE 0.00947447/1e-005, Gradient 55.0854/1e-010. }. h! ?; U+ a4 `" J A( J TRAINLM, Epoch 53/10000, MSE 1.24279e-006/1e-005, Gradient 0.504667/1e-010 * \' K7 A& {2 ~( K+ uTRAINLM, Performance goal met.

    ??? Undefined function or variable 'minmax_target'.

    Error in ==> D:\MATLAB6p5p1\work\fitness.m* l B7 L- u* y1 F" T9 d# M' l' _ On line 2 ==> min_target=minmax_target(1);

    Error in ==> D:\MATLAB6p5p1\work\initializega.m - X& T) A; J K; sOn line 41 ==> eval(estr);

    Error in ==> D:\MATLAB6p5p1\work\ga.m " Q0 m6 P' q* D- C& `! ?$ kOn line 148 ==> startPop=initializega(80,bounds,evalFN,evalOps,opts(1:2)); 3 X$ t) p! Q, q: m+ Q所使用的适应度函数是

    function [sol,eval]=fitness(P,options) 8 s4 x( n4 g/ m( x min_target=minmax_target(1); 1 r# a( a( S0 Y S max_target=minmax_target(2); 2 R: K5 C. K9 V$ G8 N6 T eval=sim(net,P); u8 l% u4 T1 k; j if isformax # |- U. O) J9 O5 Q2 @: C2 Y eval=eval-min_target+(max_target-min_target);. Z0 t) R; r) p# r# a% ] else 5 R A0 h j0 K% D eval=-eval+max_target+(max_target-min_target); 2 s4 T" d1 f: N2 L/ k( H end

    回复

    使用道具 举报

    cdqxc        

    0

    主题

    0

    听众

    4

    积分

    升级  80%

    该用户从未签到

    回复

    使用道具 举报

    lzh0601        

    2

    主题

    3

    听众

    89

    积分

    升级  88.42%

    该用户从未签到

    回复

    使用道具 举报

    dsh1001        

    0

    主题

    1

    听众

    2

    积分

    升级  40%

    该用户从未签到

    我也是你这种问题,就是通过实验获得数据,然后建立模型进行训练、仿真和预测,这些都可以
    & i8 o( K# O/ {就是最后如何实现参数的优化,就是给定了输出如何确定最优的输入
    6 M# ]8 V- ]# Y$ a% I9 I6 Q好像是用模拟退火算法之类的可以实现,目前还没有解决,期待你解决以后多交流
    回复

    使用道具 举报

    0

    主题

    4

    听众

    5

    积分

    升级  0%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-10 04:41 , Processed in 0.524624 second(s), 105 queries .

    回顶部