1 / 12
文档名称:

深入浅出遗传算法.doc

格式:doc   大小:934KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

深入浅出遗传算法.doc

上传人:260933426 2022/3/15 文件大小:934 KB

下载得到文件列表

深入浅出遗传算法.doc

相关文档

文档介绍

文档介绍:一、初探遗传算法
维基百科对遗传算法所给的解释:
遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。
 遗传算法通常实现初始种群:基本遗传算法(SGA)采用随机方法生成若干个个体的集合,该集合称为初始种群。初始种群中个体的数量称为种群规模。
 
2、适应度函数 
遗传算法对一个个体(解)的好坏用适应度函数值来评价,适应度函数值越大,解的质量越好。
适应度函数是遗传算法进化过程的驱动力,也是进行自然选择的唯一标准,
它的设计应结合求解问题本身的要求而定。 
 
、选择算子
遗传算法使用选择运算对个体进行优胜劣汰操作。
适应度高的个体被遗传到下一代群体中的概率大;适应度低的个体,被遗传到下一代群体中的概率小。
选择操作的任务就是从父代群体中选取一些个体,遗传到下一代群体。
 
基本遗传算法(SGA)中选择算子采用***赌选择方法。
 
***赌选择又称比例选择算子,其基本思想是:各个个体被选中的概率与其适应度函数值大小成正比。
设群体大小为N,个体xi 的适应度为 f(xi),则个体xi的选择概率为:
 
 ***赌选择法可用如下过程模拟来实现:
(1)在[0, 1]内产生一个均匀分布的随机数r。
(2)若r≤q1,则染色体x1被选中。
(3)若qk-1<r≤qk(2≤k≤N), 则染色体xk被选中。 
其中的qi称为染色体xi (i=1, 2, …, n)的积累概率, 其计算公式为:
  
***赌选择方法的实现步骤:
(1)计算群体中所有个体的适应度值;
(2)计算每个个体的选择概率;
(3)计算积累概率;
(4)采用模拟赌盘操作(即生成0到1之间的随机数与每个个体遗传到下一代群体的概率进行匹配)
来确定各个个体是否遗传到下一代群体中。
例如,有染色体
s1= 13 (01101)
s2= 24 (11000) s3= 8 (01000)
s4= 19 (10011)
假定适应度为f(s)=s^2 ,则
f (s1) = f(13) = 13^2 = 169
f (s2) = f(24) = 24^2 = 576
f (s3) = f(8) = 8^2 = 64
f (s4) = f(19) = 19^2 = 361
 
 根据上面的式子,可得到:
 
 例如设从区间[0, 1]中产生4个随机数: 
    r1 = ,    r2 =  
   r3 = ,    r4 =  
 
 、交叉算子
交叉运算,是指对两个相互配对的染色体依据交叉概率 Pc 按某种方式相互交换其部分基因,从而形成两个新的个体。
交叉运算是遗传算法区别于其他进化算法的重要特征,它在遗传算法中起关键作用,是产生新个体的主要方法。基本遗传算法(SGA)中交叉算子采用单点交叉算子。
单点交叉运算
、变异算子 
变异运算,是指改变个体编码串中的某些基因值,从而形成新的个体。
变异运算是产生新个体的辅助方法,决定遗传算法的局部搜索能力,保持种群多样性。
交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索。
基本遗传算法(SGA)中变异算子采用基本位变异算子。
基本位变异算子是指对个体编码串随机指定的某一位或某几位基因作变异运算。
对于二进制编码符号串所表示的个体,若需要进行变异操作的某一基因座上的原有基因值为0,
则将其变为1;反之,若原有基因值为1,则将其变为0 。
基本位变异算子的执行过程:
4、运行参数
(1)M  :种群规模 
(2)T  : 遗传运算的终止进化代数 
(3)Pc  :交叉概率 
(4)Pm :变异概率
 
三、浅出遗传算法
遗传算法的本质
遗传算法本质上是对染色体模式所进行的一系列运算,即通过选择算子将当前种群中的优良模式遗传
到下一代种群中,利用交叉算子进行模式重组,利用变异算子进行模式突变。
通过这些遗传操作,模式逐步向较好的方向进化,最终得到问题的最优解。
遗传算法的主要有以下八方面的应用:
(1)组合优化      (2)函数优化 (3)自动控制      (4)生产调度 
(5)图像处理      (6)机器学****7)人工生命      (8)数据挖掘
 
四、遗传算法的应用
遗传算法的应用举例、透析本质(这个例子简明、但很重要)
已知x为整数,利用遗传算法求解区间[0, 31]上的二次函数y=x2的最大值。
 
[分析]
原问题可转化为在区间