您当前的位置:首页 > 计算机论文>计算机应用论文

遗传算法的Matlab实现及应用

2015-09-02 09:04 来源:学术参考网 作者:未知

摘 要:摘要:本文简要阐述了遗传算法的基本原理,利用Matalab编程实现了遗传算法,通过仿真示例验证了该实现方法的有效性,实现了遗传算法在函数全局寻优中的应用。

关键词:关键词:Matlab;遗传算法


中图分类号:TP312    文献标识码:A    文章编号:

    1. 遗传算法概述
    遗传算法最初是由美国的J.Holland教授于1975年提出的 。遗传算法(Genetic Algorithm)是模拟自然界生物遗传进化过程中“物竞天泽、适者生存”的原理而开发出的一种全局优化随机搜索算法,具有非线性求解、隐含的并行性,且易与其他模型相结合等特点。它借鉴了生物遗传学的观点,通过自然选择、交叉、变异等机制,实现各个体适应性的提高,适合解决大搜索空间的优化问题。目前,已经在工业工程和设计、经济管理、交通运输等领域得到了广泛应用。
    遗传算法的基本过程是:首先用某种编码方式将解空间映射到编码空间,每个编码对应问题的一个解。然后随机生成一个初始种群,通过迭代优化评价函数以解决给定的问题。在算法的每次迭代中,评价函数对每个个体进行度量,计算适应度,根据适应度或某种竞争机制保留某些个体,放弃其他个体,利用交叉概率和变异概率对保留的个体进行交叉和变异等,产生下一代种群,再开始进行下一次迭代。如此进化下去,直到满足期望的终止条件。算法的终止条件是达到一定的迭代次数,或者最优个体的适应度达到某个阈值,或者种群的适应度没有显著提高等。以下是遗传算法的过程描述。
    输入:种群大小N,评价函数F,交叉概率 ,变异概率 ,最大迭代次数T。
    输出:最优解。
    1)初始化群体P(1),初始迭代次数t=1;
    2)根据F计算个体适应度;
    3)选择适应度高的个体复制;
    4)利用交叉和变异算子,从P(t)生成新群体P(t+1),令t=t+1;
    5)如未满足终止条件,则返回第2)步,否则终止。
    2. 遗传算法的Matlab编程实现
    Matlab是一个高性能和功能十分强大的计算与仿真软件。利用Matlab实现遗传算法简单且易操作。
    (1) 初始化
    初始化的函数是init (N,chromlength),N表示种群大小,chromlength表示染色体的长度,长度取决于变量的二进制编码长度。
    (2)根据评价函数计算个体适应度
    由评价函数F,计算种群中个体的适应度。F作为求解问题的目标函数,求解的目标是该函数的最大或最小值。本文是以f(x)=cos(5*x)-sin(3*x)为例进行计算。
    (3)选择
    选择哪些个体可以进入下一代。个体在下一代种群中出现的可能性由个体的适应度决定,适应度越高,产生后代的概率越高,反之,被淘汰的概率越高。本文采用赌轮盘法进行选择。根据方程  ,选择步骤如下:
    1)在第t代,根据上式计算和  ;
    2)产生{0,1}的随机数 rand( ),求 s=rand( )* ;
    3)求  s 中最小的 k,则第 k 个个体被选中;
    4)进行 N 次2)、3)操作,得到N个个体,成为第t+1代种群。
    选择的函数是selection(P,fitvalue),代码略。
   (4)交叉
    把两个串的部分基因进行交换,产生两个新串作为下一代个体,例如,10101和11011是两个个体,从第三个基因开始交叉,产生新个体10011和11101。个体进行交叉的可能性由交叉概率决定,交叉概率太小难以向前搜索,太大容易破坏适应度高的个体。
    交叉的函数是crossover(P,  ),其中 是交叉概率,代码略。
   (5)变异
    变异是随机地改变染色体的部分基因,把0变为1,或者把1变为0。例如,个体10111的第二个基因变异,产生新个体11111。个体变异的可能性由变异概率决定。若变异概率太小,则难以产生新的基因结构,太大会使遗传算法变成单纯的随机搜索。
    变异的函数是mutation(P, ),其中 是变异概率,代码略。
    (6)求出群体中最大的适应度及其个体
    3.示例仿真
    本文以单变量函数为例验证遗传算法的全局寻优能力,例如求函数f(x)的最大值,f(x)=cos(5*x)-sin(3*x),x∈[0,6],函数特性如图1所示。
    取种群大小N =20,交叉概率=0.6,变异概率 =0.001。图2是在迭代过程中,最佳个体的适应度变化情况,x轴表示遗传代数,y轴表示最佳个体的适应度。图3是最佳个体的变化情况,x轴表示遗传代数,y轴表示最佳个体的解码值。
 
                 图1 f(x)函数示意图
         
图2 最佳个体的适应度变化情况                图3 最佳个体变化情况
  从图中可以看出,全局最大的极值点是当x=3.7423时,此时f(x)=1.9638。

参考文献:
[1] 周明,孙树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999
[2] John H.Holland.Adaptation in natural and artificial systems[M]. University
of Michigan Press,1975
[3]李敏强,寇纪淞等.遗传算法的基本理论及应用[M].北京:科学出版社,2002

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页