trok_2005 发表于 2005-1-22 22:42

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

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

retin 发表于 2005-1-23 11:03

<P>不好意思,我所知道的还没有这些!</P><P>遗传算法只是略微懂点!</P>

ilikenba 发表于 2005-1-23 12:26

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

trok_2005 发表于 2005-1-23 22:22

<DIV class=quote><B>以下是引用<I>ilikenba</I>在2005-1-23 12:26:35的发言:</B>

<P>希望你能将如何用神经网络做的仿真说清楚,既然已经仿真成功了,那所说的寻优又是指的对什么寻优呀?神经网络又作了怎样的仿真?问题不清楚,这个很难回答!</P></DIV>
<P>谢谢您的关注,是这样,比如说我利用正交设计获得18组实验数据,我用BP神经网络建立了网络模型,我还希望能利用这个模型求解最优,即寻找合适的网络输入,以使网络输出值达到最大。但由于神经网络模型的建立是通过神经元间的连接权值和阈值来实现的,很难用简单的函数形式表达,因此我希望采用遗传算法来寻找最优的实验条件。但我不知道怎样将神经网络的输出转化为遗传算法所需要的适应度函数。
<P>我是用NET=NEWFF(MINMAX(P),,{'TANSIG','PURELIN'},'TRAINLM');进行建立网络,用NET=TRAIN(NET,P,T)对网络进行训练,用ANEW=SIM(NET,P)对网络进行仿真。
<P>不知我的问题说清楚了没有,希望您或其他大侠帮忙看一下,小妹这里谢过了!</P>

ilikenba 发表于 2005-1-23 23:14

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

trok_2005 发表于 2005-1-24 00:09

<P>谢谢 <FONT color=#000066><B>ilikenba</B></FONT> 的回复,我是新手,不太明白,研究了半天,编了一点东西,可运行出了问题,帮忙看看是怎么回事,如何修改,谢谢!</P><P><FONT color=#000066><B> p=[ 40 21 2.5 6.   5  
    40 25 3.  6.5  10
    40 30 3.5 7.   20
    45 21 2.5 6.5  10
    45 25 3.  7.   20
    45 30 3.5 6.   5  
    50 21 3.  6.   20
    50 25 3.5 6.5  5  
    50 30 2.5 7.   10
    40 21 3.5 7.   10
    40 25 2.5 6.   20
    40 30 3.  6.5  5  
    45 21 3.  7.   5  
    45 25 3.5 6.   10
    45 30 2.5 6.5  20
    50 21 3.5 6.5  20
    50 25 2.5 7.   5  
    50 30 3.  6.   10];</B></FONT></P><P><FONT color=#000066><B>t=;
T=t';
P=p';
net=newff(minmax(P),,{'tansig','purelin'},'trainlm');
%训练网络</B></FONT></P><P><FONT color=#000066><B>net.trainParam.show=10;
%net.trainParam.lr=0.05;
%net.trainParam.lr_inc=1.05;
net.trainParam.epochs=10000;
net.trainParam.goal=1e-5;
% randn('seed',192736547);
%  net=init(net);
=train(net,P,T);
minmax_var=minmax(P);
minmax_target=minmax(T);
save('result','net','minmax_var','minmax_target');</B></FONT></P><P><FONT color=#000066><B>  % 将网络输 转换成
  
  load('result');
  =ga(minmax(P),'fitness');
  
      %性能跟踪
   plot(trace(:,1),trace(:,3),'y-');
   hold on
   plot(trace(:,1),trace(:,2),'r-');
   xlabel('Generation');
   ylabel('Fitness');
   legend('change of solution','average change of population');
TRAINLM, Epoch 0/10000, MSE 12.2801/1e-005, Gradient 1739.63/1e-010
TRAINLM, Epoch 10/10000, MSE 0.694955/1e-005, Gradient 93.6508/1e-010
TRAINLM, Epoch 20/10000, MSE 0.0242391/1e-005, Gradient 2.89095/1e-010
TRAINLM, Epoch 30/10000, MSE 0.0206875/1e-005, Gradient 4.2655/1e-010
TRAINLM, Epoch 40/10000, MSE 0.0185878/1e-005, Gradient 18.249/1e-010
TRAINLM, Epoch 50/10000, MSE 0.00947447/1e-005, Gradient 55.0854/1e-010
TRAINLM, Epoch 53/10000, MSE 1.24279e-006/1e-005, Gradient 0.504667/1e-010
TRAINLM, Performance goal met.</B></FONT></P><P><FONT color=#000066><B>??? Undefined function or variable 'minmax_target'.</B></FONT></P><P><FONT color=#000066><B>Error in ==&gt; D:\MATLAB6p5p1\work\fitness.m
On line 2  ==&gt;   min_target=minmax_target(1);</B></FONT></P><P><FONT color=#000066><B>Error in ==&gt; D:\MATLAB6p5p1\work\initializega.m
On line 41  ==&gt;   eval(estr);</B></FONT></P><P><FONT color=#000066><B>Error in ==&gt; D:\MATLAB6p5p1\work\ga.m
On line 148  ==&gt;   startPop=initializega(80,bounds,evalFN,evalOps,opts(1:2));
所使用的适应度函数是</B></FONT></P><P>function =fitness(P,options)
  min_target=minmax_target(1);
  max_target=minmax_target(2);
  eval=sim(net,P)
  if isformax
      eval=eval-min_target+(max_target-min_target);
  else
      eval=-eval+max_target+(max_target-min_target);
  end</P>

cdqxc 发表于 2008-2-26 22:37

<p>有没有一种数据处理方法可以改进BP神经网络的预测精度的?</p>

lzh0601 发表于 2008-4-19 23:15

找本专著看吧

dsh1001 发表于 2008-10-28 16:27

我也是你这种问题,就是通过实验获得数据,然后建立模型进行训练、仿真和预测,这些都可以
就是最后如何实现参数的优化,就是给定了输出如何确定最优的输入
好像是用模拟退火算法之类的可以实现,目前还没有解决,期待你解决以后多交流

chang_bo321 发表于 2009-2-22 16:25

是个比较麻烦的问题啊
页: [1] 2
查看完整版本: 在MATLAB中如何将神经网络和遗传算法联系起来