第一章 遗传算法概述2.1 遗传算法的原理遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种概率搜索算法。
遗传算法是通过模拟生物在自然界中的进化过程而形成的一种优化算法。
它的基本过程是:先随机生成规模为m 的初始群体,对连续优化问题即为n R 中的m 个点},,,{,},,,,{21112111m n m m m n x x x x x x x x ==的集合,},,,{21k sn k s k s x x x 称为个体或者染色体,通过对该群体使用遗传操作(包括选择、交叉、变异遗传算子),得到m 个新的个体,这称作是群体的一代进化,相当于通常优化算法的一次迭代。
不断重复这一过程,可看作是群体的逐代演化,直到得到满足给出条件的问题解。
可以看出,遗传算法的关键是进化过程中使用的遗传操作即选择、交叉和变异等算子,这些算子决定了下一代个体的具体位置。
选择策略对算法性能的影响有举足轻重的作用。
常用的是轮盘选择和精英选择。
a. 轮盘选择(roulette wheel selection )选择的基本依据是个体的适应值,对于最小化问题,个体适应值取为)()(x f K x f -=',其中K 为一足够大的正数。
定义第i 个体的选择概率为 ∑=''=n i ii i x f x f p 1)()( (3)其意义是个体适应值在群体总适应值中所占的比例。
生成一个[0,1]内的随机数r ,若i i p p p r p p p +++≤<+++- 21110,假设00=p ,则选择个体i 。
b. 精英选择(elitist selection )当下一代群体的最佳个体适应值小于当前群体最佳个体的适应值,则将当前群体最佳个体或者适应值大于下一代最佳个体适应值的多个个体直接复制到下一代,随机替代或替代最差的下一代群体中的相应数量的个体。
交叉与变异算子的选取与编码方式有关,最初Holland[5] 提出的遗传算法是采用二进制编码来表现个体,后来发现对连续优化问题采用浮点编码可以达到更好的效果,因此越来越多地使用浮点编码,下述的交叉、变异算子针对浮点编码。
(2) 交叉算子按照概率c p 随机选择两个个体},,,{112111n x x x x =,},,,{222212n x x x x =,随机选一个交叉位置}1,,2,1{-∈n p ,则交叉后的新个体为},,,,,,{2)1(2112111n p p x x x x x x +=', },,,,,,{1)1(1222212n p p x x x x x x +='(3) 变异算子有多种不同的变异算子,效果较好的是自适应变异[6]。
若个体},,,{21n x x x x =的元素k x 被选择变异,],[max min k k k x x x ∈,则变异结果为},,,,,{21n k x x x x x '=',其中1)1,0(0)1,0()1()()1()(min max ==⎪⎩⎪⎨⎧-⋅---⋅-+='rand if rand if r x x x r x x x x T k k k T k k k k λλ (4)此处取2=λ,max )(1f x f T k -=(定义为变异的温度),max f 取所解问题的到当前代的最大适应值,r 是[0,1]之间的随机数。
这个变异算子使得适应值较好的个体在较小范围内搜索,适应值较差的个体,搜索范围相对较大。
即根据个体的质量自适应的调整搜索范围,从而提高其搜索能力[7]。
以上所出现的术语及其解释如下:个体(individuals):GA 所处理的基本对象、结构。
群体(population):个体的集合。
群体规模(population size):群体中个体的数目称为群体大小,也叫群体规模。
位串(bit string):个体的表示形式。
对应于遗传学中的染色体。
基因(gene):位串中的元素,表示不同的特征。
对应于生物学中的遗传物质单位,以 DNA 序列形式把遗传信息译成编码。
基因位(locus):某一基因的染色体中的位置。
等位基因(allele):表示基因的特征值,即相同基因位的基因取值。
位串结构空间(bit strings space):等位基因任意组合构成的位串集合,基因操作在位串结构空间进行,对应于遗传学中的基因型的集合。
参数空间(parameters space):是位串空间在物理系统中的映射。
对应于遗传学中的表现型的集合。
编码(coding)、译码(decoding)操作:遗传算法必须包含两个必须的资料转换操作,即把搜索空间中的参数或解转换成遗传空间中的染色体或个体,称为编码操作;反之,称为译码操作。
适应值(fitness):某一个体对于环境的适应程度,或者在环境压力下的生存能力,取决于遗传特征。
适应度函数(fitness function):各个个体对环境的适应程度叫做适应度。
对于优化问题,适应度函数就是目标函数。
复制、选择(reproduction or selection):在有限资源空间上的排他性竞争。
交叉、交换、交配、重组(crossover or recombination):一组位串或者染色体上对应基因段的交换。
变异(mutation):位串或染色体水平上的基因变化,可以遗传给子代个体。
遗传算法在整个进化过程中的遗传操作是随机性的,但它所呈现出的特性并不是完全随机搜索,它能有效地利用历史信息来推测下一代期望性能提高的寻优点集。
这样一代代地不断进化,最后收敛到一个最适应环境的个体上,求得问题的最优解。
遗传算法涉及五大要素:参数编码、初始群体的设定、适应度函数的设计、遗传操作的设计和控制参数的设定。
2.2 遗传算法的实现2.2.1 基本操作方法(1)参数编码编码机制是遗传算法的基础。
通常遗传算法不直接处理问题空间的资料,而是将各种实际问题变换为与问题无关的串个体。
对染色体串的遗传操作只与遗传算法的理论、技术有关,而与具体实际问题无关。
这一特性增大了遗传算法的适用性。
基本遗传算法使用固定长度的二进制符号串来表示群体中的个体,其等位基因是由二值符号集{0,1}所组成的。
初始群体中各个个体的基因值可用均匀分部的随机数来生成。
如:X=100111001000101101 就可以表示一个个体,该个体的染色体长度是n=18。
(2)初始化群体设定遗传算法处理流程中,编码设计之后的任务是初始种群的设定,并以此为起点一代一代的进化直到按照某种进化终止准则终止。
产生初始群体的方法通常有两种:一种是完全随机的方法产生的,它适合于对问题的解无任何先验指示的情况;另一种是某些先验指示可转变为必须满足的一组要求,然后在满足这些要求的解中再随机地选取样本。
这样选择初始群体可使群体遗传算法更快地到达最优解。
(3)个体适应度评价遗传算法中使用适应度这个概念来度量群体中各个个体在优化计算中有可能达到或接近于有助于找到最优解的优良程度。
遗传算法在搜索过程中基本不采用外部信息,仅以适应度函数为依据引导搜索。
它不受连续可微的约束且定义域可为任意集合。
基本遗传算法按与个体适应度成正的概率来决定当前群体中每个个体遗传到下一代群体中的机会多少。
根据不同种类的问题,必须预先确定好由目标函数值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时的处理方法。
(4)遗传操作遗传操作主要包括:选择(selection)、交叉(crossover)、变异(mutation)三种遗传算子。
1)选择选择过程是模仿自然选择现象,从父代种群中选出优良个体。
个体的适应度值越大,在子代中将有更多的机会作为父代产生一个或多个子代个体。
通常选用适应度比例法(轮盘赌方式roulette wheel)确定选择次数,该法中的各个体选择概率和其适应度值成比例。
设种群大小为 n,其中个体 i 的适应度值为 f i,则i 被选择的概率。
反映了个体i 的适应度在整个种群适应度总和中所占的比例。
个体适应度越大,其被选择的概率就越高;反之亦然。
按式(2.1)计算出种群中每一个体的选择概率后,就可以决定哪些个体被选出。
2)交叉最简单的交叉操作为单点交叉:首先,对父代个体进行随机配对;然后,配对个体随机设定交叉位置;最后,交换配对个体的部分信息。
当染色体长度为 k 时,有 k-1 个交叉位置,单点交叉可实现 k-1 种不同的交叉结果。
3)变异变异操作随机选择变异基因序号,根据一定的变异概率对该序号基因进行变异。
对于二进制编码个体通常采用 0 变为 1,l 变为 0。
(5)控制参数控制参数主要有:群体规模、叠代次数、交叉概率、变异概率等。
对此标准遗传算法都设为固定值,基本遗传算法有下述 4 个运行参数需要提前设定:M:群体大小,即群体中所含个体的数量,一般取为 20~200。
T:遗传运算的终止进化代数,一般取为 100~500。
pc:交叉概率,一般取为 0.4~0.99。
pm:变异概率,一般取为 0.0001~0.1。
需要说明的是,这4 个运行参数对遗传算法的求解结果和求解效率都有一定的影响,但目前尚无合理选择它们的理论依据。
在遗传算法的实际应用中,往往需要经过多次试算后才能确定出这些参数合理的取值大小或取值范围。
3.2.2 应用情况(1)在组合优化中的应用组合优化问题是遗传算法最基本也是最重要的应用领域。
所谓组合优化问题是指在离散的、有限的数学结构上,寻找一个满足给定约束条件并使其目标函数达到最大或最小的解。
在日常生活中,特别是在工程设计中,有许多这样的问题。
最典型的是巡回旅行商问题和背包问题。
(2)在生产调度问题中的应用在很多情况下,生产调度问题建立起来的数学模型难以精确求解,即使经过一些简化之后可以进行求解,也会因简化得太多而使得求解结果与实际相差甚远。
目前,在现实生产中,主要是靠一些经验来进行调度。
现在遗传算法已成为解决复杂调度问题的有效工具,在单件生产车间调度、在流水线生产调度、任务分配等方面遗传算法都得到了有效的应用。
(3)在自动控制中的应用在自动控制领域中,有很多与优化相关的问题需要求解。
例如,遗传算法进行航空控制系统的优化、设计空间交会控制器等都显示出在这些领域中应用的可能性。
(4)在图象处理中的应用图象处理是计算机视觉中的一个重要研究领域,如目前已在模式识别(包括汉字识别)、图像恢复、图像边缘特征提取等方面得到了应用。
(5)在机器学习领域中的应用基于遗传算法的机器学习是当前遗传算法应用研究的热点,特别是分类器系统,在很多领域中得到了应用。
Holland的分类器系统是基于遗传算法及其学习的一个典型例子,遗传算法部分的主要任务是产生新的分类器,如获取规则集合以预测公司的利润。