遗传算法(二 )——通用框架

目录

1.2遗传算法简介

1.2.1遗传算法概要

1.2.2遗传算法的运算过程

1.2.3遗传算法的手工模拟计算示例

1.3遗传算法应用

1.3.1各种求解方法

1.3.2遗传算法特点

遗传算法应用

参考资料


1.2遗传算法简介

遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。最早由Holland教授提出,起源于60年代对自然和人工自适应系统的研究。

1.2.1遗传算法概要

对于一个求函数最大值的优化问题(求函数最小值也类同),一般可描述为下述数学规划模型:

式中,X=[x_{1},x_{2},...,x_{n} ]^T为决策变量,f(X)为目标函数,式(1-2)、(1-3)为约束条件,U是基本空间,R是U的一个子集。满足约束条件的解X称为可行解集合R表示由所有满足约束条件的解所组成的一个集合,叫做可行解集合。它们之间的关系如下:

对于上述最优化问题,目标函数和约束条件种类繁多,有的是线性的,有的是非线性的;有的是连续的,有的是离散的等。随着研究的深入,人们逐渐认识到在很多复杂情况下,要想完全精确地求出其最优解即不可能,也不现实,因而求出其近似最优解或满意解是人们的主要着眼点之一。

随着问题种类的不同,以及问题规模的扩大,要寻找到一种能以有限的代价来解决上述最优化问题的通用方法仍然是一个难题。而遗传算法却为我们解决这类问题提供了一个有效的途径和通用框架,开创了一种全局优化搜索算法。

遗传算法中,将n维决策向量X=[x_{1},x_{2},...,x_{n} ]^T用n个符号Xi(i=1,2,...,n)所组成的符号串X来表示:X=X_{1}X_{2}...X_{n}  ==> X=[x_{1},x_{2},...,x_{n} ]^T

把每个Xi看做一个遗传基因,它的所有可能取值称为等位基因,这样,X就可以看做是由n个遗传基因所组成的一个染色体。一般情况下,染色体的长度n是固定的,但对一些问题n也可以是变化的。根据不同的情况,这里的等位基因可以是一组整数,也可以是某一范围内的实数值,或者纯粹的一个记号。最简单的等位基因是由0和1这两个整数组成的,相应的染色体就可以表示成为一个二进制符号串。这种编码所形成的排列形式X是个体的基因型,与它对应的X值是个体的表现型。通常个体的表现型和其基因型是一一对应的,但有时也允许基因型和表现型是多对一的关系。

染色体X也称为个体X,对于每个个体X,要按照一定的规则确定其适应度。个体的适应度与其对应的个体表现型X的目标函数值相关联,X越接近目标函数的最优点,其适应度越大;反之,其适应度越小。

遗传算法中,决策变量X组成了问题的解空间。对问题最优解的搜索是通过对染色体X的搜索过程来进行的,从而由所有的染色体X就组成了问题的搜索空间

生物的进化是以群体的方式进行的。与此相对应,遗传算法的运算对象是由M个个体组成的集合,称为群体。与生物一代代的自然进化过程相类似,遗传算法的运算过程也是一个反复迭代过程,第t代群体记做P(t),经过一代遗传和进化后,得到第t+1代群体,它们也是由多个个体组成的集合,记做P(t+1)。这个群体不断经过遗传和进化操作,并且每次都按照优胜劣汰的规则将适应度较高的个体更多地遗传到下一代,这样最终在群体中将会得到一个优良的个体X,它所对应的表现型X将达到或接近问题的最优解X*。

生物的进化过程主要是通过染色体之间的交叉和染色体的变异来完成的。与此相对应,遗传算法中最优解的搜索过程也模仿生物的这个进化过程,使用所谓的遗传算子(genetic operators)作用于群体P(t)中,进行下述遗传操作,从而得到新一代群体P(t+1)。

选择(selection):根据各个个体的适应度,按照一定的规则或方法,从第t代群体P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)中。

交叉(crossover):将群体P(t)内的各个个体随机搭配成对,对每一对个体,以某个概率(称为交叉概率,crossover rate)交换它们之间的部分染色体。

变异(mutation):对群体P(t)中的每一个个体,以某一概率(称为变异概率,mutation rate)改变某一个或某一些基因座上的基因值为其他的等位基因。

1.2.2遗传算法的运算过程

由上图可以看出,使用上述三种遗传算子(选择算子、交叉算子、变异算子)的遗传算法的主要运算过程如下所述:

步骤一:初始化。设置进化代数计数器t←0;设置最大进化代数T;随机生成M个个体作为初始群体P(0)。

步骤二:个体评价。计算群体P(t)中各个个体的适应度。

步骤三:选择运算。将选择算子作用于群体。

步骤四:交叉运算。将交叉算子作用于群体。

步骤五:变异运算。将变异算子作用于群体。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。

步骤六:终止条件判断。若t≤T,则:t←t+1,转到步骤二;若t>T,则以进化过程中得到的具有最大适应度的个体作为最优解输出,终止计算。

1.2.3遗传算法的手工模拟计算示例

为更好地理解遗传算法的运算过程,下面用手工计算来简单地模拟遗传算法的各个主要执行步骤。
【例】求下述二元函数的最大值:

进行遗传算法的手工模拟计算如下表:

现对其主要运算过程作如下解释:

(1)个体编码。遗传算法的运算对象是表示个体的符号串,所以必须把变量x1、x2编码为一种符号串。该例题中,如表中3栏和4栏,x1和x2取0~7之间的整数,可分别用3位无符号二进制整数来表示,将它们连接在一起所组成的6位无符号二进制整数就形成了个体的基因型,表示一个可行解。例如,基因型X=101110所对应的表现型是:X=[5,6]^{T}。个体的表现型x和基因型X之间可通过编码和解码程序相互转换。

(2)初始群体的产生。遗传算法是对群体进行的进化操作,需要给其准备一些表示起始搜索点的初始群体数据。本例中,群体规模的大小取为4,即群体由4个个体组成,每个个体可通过随机方法产生。一个随机产生的初始群体如上表第2栏所示。

(3)适应度计算。遗传算法中以个体适应度的大小来评定各个个体的优劣程度,从而决定其遗传机会的大小。本例中,目标函数总取非负值,并且是以求函数最大值为优化目标,故可直接利用目标函数值作为个体的适应度。为计算函数的目标值,需现对个体基因型X进行解码。表中第3列和4列所示为初始群体中各个个体的解码结果,第5栏所示为各个个体所对应的目标函数值,它也是个体的适应度,第5栏中还给出了群体中适应度的最大值和平均值。

(4)选择运算。选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体中一般要求适应度较高的个体将有更多的机会遗传到下一代群体中。本例中,我们采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程是:先计算出群体中所有个体的适应度的总和\sum f_{i};其次计算出每个个体的相对适应度的大小f_{i}/\sum f_{i},如表第6栏所示,它即为每个个体被遗传到下一代群体中的概率,每个概率值组成一个区域,全部概率值之和为1;最后再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域来确定各个个体被选中的次数。如表第7栏和第8栏为一随机产生的选择结果。

(5)交叉运算。交叉运算是遗传算法中产生新个体的主要操作过程,它以某种概率相互交换某两个个体之间的部分染色体(即多个基因位)。本例采用单点交叉的方法,其具体操作过程是:先对群体进行随机配对,如第9栏所示为一种随机配对情况;其次随机设置交叉点位置,如表中第10栏所示为一随机产生的交叉点位置,其中的数字表示交叉点设置在该基因座之后;最后再相互交换配对染色体之间的部分基因。表中第11栏所示为交叉运算的结果。

(6)变异运算。变异运算是对个体的某一个或某一些基因座上的基因值按某一较小的概率进行改变,它也是产生新个体的一种操作方法。本例中,我们采用基因位变异的方法来进行变异运算,其具体操作过程是:首先确定出各个个体的基因变异位置,如表中第12栏所示为随机产生的变异点位置,其中的数字表示变异点设置在该基因座处;然后依照某一概率将变异点的原有基因值取反。表中第13栏为变异运算结果。

        对群体P(t)进行一轮选择、交叉、变异运算之后可得到新一代的群体P(t+1),如表中14栏所示。表中第15、16、17、18栏还分别表示出了新群体的解码值、适应度和相对适应度,并给出了适应度的最大值和平均值等。从表中可以看出,群体经过一代进化后,其适应度的最大值、平均值都得到了明显的改进。事实上,这里已经找到了最佳个体“111111”。

        需要说明的是,表中第2、7、9、10、12栏的数据是需要随机产生的这里为了更好地说明问题,我们特意选择了一些较好的数值以便能够得到较好的结果,而在实际运算过程中有可能需要一定的循环次数才能达到这个最优结果。2栏指的是初始种群;7栏指的是根据适应度设置每个个体被复制的次数;9栏指的是选择运算完成之后,进行的随机配对;10栏指的是交叉运算的交叉点;12栏指的是变异运算的随机变异点。

1.3遗传算法应用

1.3.1各种求解方法

在很多复杂的情况下,要想完全精确地求出其最优解既不可能,也不现实,因而求出其近似最优解或满意解是人们的主要着眼点之一。总的来说,求最优解或近似最优解的方法主要有三种:

(1)枚举法。枚举出可行解集合内的所有可行解,以求出精确最优解。对于连续函数,该方法要求先对其进行离散化处理,这样就有可能产生离散误差而永远达不到最优解。另外,在枚举空间较大时,该方法求解效率比较低,有时甚至在目前最先进的计算工具上都无法求解。

(2)启发式算法。寻求一种最可能产生可行解的启发式规则,以找到一个最优解或近似最优解。该方法的求解效率虽然比较高,但对每一个需要求解的问题都必须找出其特有的启发式规则,不具有通用性。

(3)搜索算法。寻求一种搜索算法,该算法在可行解集合的一个子集内进行搜索,以找到问题的最优解或近似最优解。该方法虽保证不了一定能找到问题的最优解,但若适当地利用一些启发知识,就可在近似解的质量和求解效率上达到一种较好的平衡。

1.3.2遗传算法特点

为解决各种优化计算问题,人们提出了各种各样的优化算法,如单纯形法、梯度法、动态规划法、分支定界法等。遗传算法是一类可用于复杂系统优化计算的鲁棒搜索算法,与其他一些优化算法相比,它有下述几个特点:

(1)遗传算法以决策变量的编码作为运算对象。而传统的优化算法直接利用决策变量的本身来进行优化计算。这种对决策变量的编码处理方式,使得我们在优化计算过程中可以借鉴生物学中的染色体和基因等概念,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地应用遗传操作算子。特别是对一些无数值概念或很难有数值的概念,而只有代码概念的优化问题。

(2)遗传算法直接利用目标函数值或个体适应度,也使得我们可以把搜索范围集中到适应度较高的部分搜索空间中,从而提高了搜索效率。

(3)遗传算法同时使用多个搜索点的搜索信息。传统的优化算法往往是从解空间的一个初始点开始搜索解的迭代搜索过程。单个搜索点所提供的搜索信息毕竟不多,所以搜索效率不高,有时甚至使搜索过程限于局部最优解而停滞不前。遗传算法从由很多个个体组成的一个初始群体开始优化解的搜索过程,而不是从一个单一的个体开始搜索。对这个群体所进行的选择、交叉、变异等运算,产生出的乃是新一代的群体,在这之中包括了很多群体信息。这些信息可以避免搜索一些不必要的点,所以实际上相当于搜索了更多的点,这是遗传算法所特有的一种隐含并行性。

(4)遗传算法使用概率搜索技术。很多传统的优化算法往往使用的是确定性的搜索算法,一个搜索点到另一个搜索点的转移有确定的转移方法和转移关系,这种确定也有可能使得搜索永远达不到最优点,因而也限制了算法的应用范围。而遗传算法属于一种自适应概率搜索技术,其选择、交叉、变异等运算都是以一种概率的方式来进行的,从而增加了其搜索过程中的灵活性。虽然这种概率特性也会使群体中产生一些适应度不高的个体,但随着进化过程的进行,新的群体总会更多地产生出许多优良的个体,实践和理论证明在一定条件下遗传算总是以概率1收敛于最优解当然,交叉概率和变异概率等参数也会影响算法的搜索效果和搜索效率。所以如何选择遗传算法的参数在其应用中是一个比较重要的问题。而另一方面,与其他一些算法相比,遗传算法的鲁棒性又会使得参数对其搜索效果的影响尽可能地低。

遗传算法应用

1.函数优化

函数优化是遗传算法的经典应用领域, 也是对遗传算法进行性能评价的常用算例。 很多人构造出了各种各样的复杂形式的测试函数, 有连续函数也有离散函数, 有凸函数也有凹函数,有低维函数也有高维函数等, 用这些几何特性各具特色的函数来评价遗传算法的性能, 更能反映算法的本质效果。 而对于一些非线性、多模型、多目标的函数优化问题, 用其他优化方法较难求解,而遗传算法却可以方便地得到较好的结果。

2.组合优化
随着问题规模的增大, 组合优化问题的搜索空间也急剧扩大,有时在目前的计算机上用枚举法很难或甚至不可能求出其精确最优解。 对这类复杂问题, 人们已意识到应把主要精力放在寻求其满意解上,而遗传算法是寻求这种满意解的最佳工具之一。 实践证明,遗传算法已经在求解旅行商问题、背包问题、装箱问题、布局优化、图形划分问题等各种具有NP难度的问题得到成功的应用。
3.生产调度问题

生产调度问题在很多情况下建立起来的数学模型难以精确求解,即使经过一些简化之后可以进行求解,也会因简化得太多而使得求解结果与实际相差甚远。 目前在现实生产中主要是靠一些经验来进行调度。 现在遗传算法已成为解决复杂调度问题的有效工具, 在单件生产车间调度、流水线生产间调度、生产规划、任务分配等方面遗传算法都得到了有效的应用。
4.自动控制、机器人学、图像处理、数据挖掘等等。

参考资料

《遗传算法原理及应用》周明、孙树栋编著

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值