一、简介
遗传算法(Genetic Algorithm,GA)借鉴了生物学遗传进化的思想,模拟了种群进化过程中经历的繁殖、杂交、基因变异的自然选择和自然变异的过程。遗传算法是一种高效的进行全局搜索和优化的方法,能在 ‘ 进化 ’ 过程中自适应获得适应度最大个体,该个体即为最优化问题最优解。
遗传算法首先需要把待解决的问题进行编码,相当于生物学当中的原始染色体。不同人的染色体是不同的,因此在遗传算法中,不同的编码相当于不同的染色体,即不同的个体,这些不同的编码个体构成了一个种群。遗传算法开始时,总是随机地产生一些个体(即初始解),根据预定的目标函数对每个个体进行评价,给出了一个适应度值。 根据生物学的适者生存原理,基于此适应度值,选择个体用来复制下一代。如此循环繁衍进化,直至满足目标为止。
二、基本概念
遗传算法的基本思想是从初始种群出发,采用优胜劣汰、适者生存的自然法则选择个体,并通过杂交、变异来产生新一代种群,如此逐代进化,直到满足目标为止。遗传算法所涉及到的基本概念主要有以下几个:
种群(Population):种群是指用遗传算法求解问题时,初始给定的多个解的集合。遗传算法的求解过程是从这个子集开始的。
个体(Individual):个体是指种群中的单个元素,它通常由一个用于描述其基本遗传结构的数据结构来表示。
染色体(Chromos):染色体是指对个体进行编码后所得到的编码串。其中的每1位称为基因,若干个基因构成的一个有效信息段称为基因组。
适应度(Fitness)函数:适应度函数是一种用来对种群中各个个体的环境适应性进行度量的函数。
遗传操作(Genetic Operator):遗传操作是指作用于种群而产生新的种群的操作。标准的遗传操作包括以下3种基本形式:
选择(Selection) :根据概率从种群中选择若干个个体。一般,选择过程是一种基于适应度的适者生存的过程。
交叉(Crosssover):两个编码的某一相同位置处编码被切断,前后两串分别交叉组合形成两个新的染编码。也称基因重组或杂交;
变异(Mutation)复制时可能(很小的概率)产生某些复制差错,变异产生新的编码,表现出新的适应度。
三、遗传算法结构
四、编码方式
(1)二进制编码(Binary encoding)
二进制编码是将原问题的结构变换为染色体的位串结构。(缺点:汉明悬崖,位数突变)
(2) 格雷编码(Gray encoding)
格雷编码是对二进制编码进行变换后所得到的一种编码方法。
(3) 实数编码(Real encoding)
实数编码是将每个个体的染色体都用某一范围的一个实数(浮点数)来表示,其编码长度等于该问题变量的个数。
五、适应度函数
根据目标不同适应度函数往往不同,但总结起来最优化问题最后需要达到的目标一般有两个分类,即极大化问题和极小化问题。
极大化标准的适应度函数如下:
极小化标准的适应度函数如下:
依照适应度函数计算适应度。
六、选择操作
选择(Selection)操作是指根据选择概率按某种策略从当前种群中挑选出一定数目的个体,使它们能够有更多的机会被遗传到下一代中常用的选择方法分类是比例选择和竞技选择。
1.比例选择之轮盘赌算法
轮盘赌选择法又被称为转盘赌选择法或轮盘选择法。在这种方法中,个体被选中的概率取决于该个体的相对适应度。而相对适应度的定义为:
其中,P(xi)是个体xi的相对适应度,即个体xi被选中的概率;f(xi)是个体xi的原始适应度。 轮盘赌选择算法的基本思想是:根据每个个体的选择概率P(xi)将一个圆盘分成N个扇区,其中第i个扇区的中心角为:
再设立一个移动指针,将圆盘的转动等价为指针的移动。选择时,假想转动圆盘,若静止时指针指向哪个扇区,则选择哪个扇区。
2.竞技选择之锦标赛选择
每次从种群中取出一定数量个体(放回抽样),然后选择其中最好的一个进入子代种群。重复该操作,直到新的种群规模达到原来的种群规模。
1、确定每次选择的个体数量N。(二元锦标赛选择即选择2个个体)
2、 从种群中随机选择N个个体(每个个体被选择的概率相同) ,根据每个个体的适应度值,选择
其中适应度值最好的个体进入下一代种群。
3、 重复步骤(2)多次(重复次数为种群的大小),直到新的种群规模达到原来的种群规模。
七、交叉操作
交叉(Crossover)操作是指按照某种方式对选择的父代个体的染色体的部分基因进行交配重组,从而形成新的个体。交叉主要分为二进制交叉和实值交叉。
1.二进制交叉
二进制交叉(Binary Valued Crossover)是指二进制编码情况下所采用的交叉操作,它主要包括单点交叉、两点交叉、多点交叉和均匀交叉等方法。
(1)单点交叉随机选择第k位为交叉点,若采用对交叉点后面的基因进行交换的方法,但点交叉是将X中的xk+1到xn部分与Y中的yk+1到yn部分进行交叉
单点交叉例子如下:
设有两个父代的个体串A=0 0 1 1 0 1 和B=1 1 0 0 1 0 ,若随机交叉点为4,则交叉后生成的两个新的个体是A’= 0 0 1 1 1 0 和B’= 1 1 0 0 0 1
(2)两点交叉随机设定第i、j位为两个交叉点(其中i<j<n),两点交叉是将X中的xi+1到xj部分与Y中的yi+1到yj部分进行交换
两点交叉例子如下:
设有两个父代的个体串A= 0 0 1 1 0 1 和B= 1 1 0 0 1 0 ,若随机交叉点为3和5,则交叉后的两个新的个体是 A’= 0 0 1 0 1 1 和B’= 1 1 0 1 0 0
(3)多点交是指先随机生成多个交叉点,然后再按这些交叉点分段地进行部分基因交换,生成子代中的两个新的个体。
多点交叉例子如下:
设有两个父代的个体串A= 0 0 1 1 0 1 和B= 1 1 0 0 1 0 ,若随机交叉点为1、3和5,则交叉后的两个新的个体是A’= 0 1 0 1 0 0 B’= 1 0 1 0 1 1
2.实值交叉
实值交叉是在实数编码情况下所采用的交叉操作,主要包括离散交叉和算术交叉,下面主要讨论离散交叉(部分离散交叉和整体离散交叉)。
八、变异操作
变异(Mutation)是指对选中个体的染色体中的某些基因进行变动,以形成新的个体。根据个体编码方式的不同,变异操作可分为二进制变异和实值变异两种类型。
1. 二进制变异
二进制变异是先随机地产生一个变异位,然后将该变异位置上的基因值由“0”变为“1”,或由“1”变为“0”,产生一个新的个体。
设变异前的个体为A=0 0 1 1 0 1,若随机产生的变异位置是2,则该个体的第2位由“0”变为“1”。 变异后的新的个体是A’= 0 1 1 1 0 1 。
2.实值变异
当个体的染色体采用实数编码表示时,其变异操作应采用实值变异方法。
设选中的个体向量C=20 16 19 12 21 30,若随机产生的两个变异位置分别时2和4,则变异后的新的个体向量是C’= 20 12 16 19 21 30
到此遗传算法所有步骤都已阐述简介完毕按照三中算法步骤进行即可,接下来介绍一下遗传算法的一些特点。
1. 遗传算法具有自适应,自学习,自组织的特性。
2.遗传算法是采用概率的变迁来学习适应,寻找进化的方向。
3.遗传算法对结果的覆盖面大,利于全局择优。
个人学习笔记,如有错漏恳请指正!