目录

1 遗传算法

2实数编码的遗传算法与神经网络的结合

3 Matlab代码及详细文章

4 运行结果

5 参考文献

6 写在最后


1 遗传算法

(1)遗传算法(Genetic Algorithms, GA)是一种全局寻优搜索算法,它通过将问题编码为由基因组成的染色体,然后通过模拟自然界的进化过程,对染色体的适应性进行选择、交叉、变异操作,经过不断的循环处理从而产生代表问题解的染色体。GA具有很强的鲁棒性,由于GA针对问题编码的染色体进行操作,隔离了问题本身的特性,所以具有广泛的适应性。同时由于算法从多初始点开始并行操作,可防止搜索过程收敛于局部极值。另一方面,交叉算子的使用是GA不同于盲目搜索与完全随机搜索、它是一种在当前最优的基础上构造更优解的过程,因此具有一定的启发式搜索和梯度搜索效率高的优点。GA通过群体实现搜索过程,使它不同于单点搜索,且易于并行化,从而提高算法的效率。
(2)遗传算法的一般描述。首先确定染色体(即个体)的编码形式,确定计算染色体适应值的函数,确定群体规模N,杂交率Pc,变异率Pm 等参数。然后可进行编程计算。
更详细总结见:

智能优化算法——遗传算法(Python&Matlab实现)

2实数编码的遗传算法与神经网络的结合

用遗传算法训练神经网络可以采用二进制编码或实数编码。考虑到本文的神经网络规模较大,本文采用实数编码,步骤如下:

(6)重复(3). (4) . (5)直到下一代群体满为止。使用GA反复优化神经网络的权值,计算当前群体中个体的适应值,得到适应值最大的个体 bestpop.
(7)对 bestpop进行解码,此时得到的参数组合已经充分接近最佳参数组合、在此基础上用BP算法进行学习,得到网络的最优权值。
(8)用得到的最优权值进行模拟(预测)。

3 Matlab代码及详细文章

本文仅展现部分代码,全部代码及文章见:

基于遗传算法的BP神经网络在汇率预测中的应用研究(Matlab代码实现)

function error = objfun_BP(x,inputnum,hiddennum,outputnum,net,inputn,outputn)%该函数用来计算适应度值%x          input     个体%inputnum   input     输入层节点数%outputnum  input     隐含层节点数%net        input     网络%inputn     input     训练输入数据%outputn    input     训练输出数据%error      output    个体适应度值%提取w1=x(1:inputnum*hiddennum);B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);%网络进化参数net.trainParam.epochs=20;net.trainParam.lr=0.1;net.trainParam.mc = 0.8;%动量系数,[0 1]之间net.trainParam.goal=0.01;net.trainParam.show=100;net.trainParam.showWindow=0; %网络权值赋值net.iw{1,1}=reshape(w1,hiddennum,inputnum);net.lw{2,1}=reshape(w2,outputnum,hiddennum);net.b{1}=reshape(B1,hiddennum,1);net.b{2}=B2;%网络训练net=train(net,inputn,outputn);an=sim(net,inputn);error=sum(abs(an-outputn));

4 运行结果

5 参考文献

[1]惠晓峰,胡运权,胡伟.基于遗传算法的BP神经网络在汇率预测中的应用研究[J].数量经济技术经济研究,2002(02):80-83.

6 写在最后

部分理论引用网络文献,如有侵权请联系删除。