获取更多资讯,赶快关注上面的公众号吧!
从今天开始,将进入另一类智能优化算法——进化计算(Evolutionary Computation),这些算法更多的是基于达尔文的《进化论》相关理论进行算法的设计。进化算法(Evolutionary Algorithms,EAs)通常包括遗传算法(Genetic Algorithms,GA)、遗传规划(Genetic Programming,GP)、进化策略(Evolution Strategies)和进化规划(Evolutionary Programming)。由于这些算法都是借鉴生物界的进化与遗传的机理,相对容易理解和实现,因此常用于解决复杂的工程技术问题。在介绍进化算法的用途和概念之前,先了解一下生物学中进化与遗传的概念。
地球上的生物都是经过长期进化而形成的,根据达尔文的自然选择学说,地球上的生物具有很强的繁殖能力,在繁殖过程中,大多数生物通过遗传,使物种保持相似的后代;部分生物由于变异,后代会出现明显差别,甚至会形成新的物种。随着生物不断繁殖,数量不断增加,而自然界中生物赖以生存的资源却是有限的,因此生物间存在激烈的竞争以求生存,更能适应环境的个体得以生存,而不适应者就会被淘汰。
进化算法就是借用生物进化的规律,通过繁殖-竞争-再繁殖-再竞争,实现优胜劣汰,一步一步地逼近问题的最优解,进化算法中的“进化”二字就是由此而来。
绝大多数生物的遗传物质是DNA(脱氧核糖核酸),DNA一种高分子化合物,可以传递遗传信息,组成DNA的基本单位是脱氧核苷酸,由于细胞里的DNA大部分在染色体上,因此遗传物质的主要载体就是染色体。
控制生物遗传的物质单元称为基因,它是有遗传效应的DNA片段。每个基因含有成百上千个脱氧核苷酸。它们在染色体上是线性排列的,这种排列顺序就代表了遗传信息。
在进化算法中,为了形成具有遗传物质的染色体,就用不同字符自称的字符串表达所研究的问题,这种字符串就相当于染色体,其上的字符就相当于基因。
生物的主要遗传方式是复制。遗传过程中,父代的遗传物质DNA分子被复制到子代,以此传递遗传信息。
生物在遗传过程中还会发生变异。变异的方式有3种:基因重组、基因突变和染色体变异。基因重组是重新组合控制物种性状的基因、基因突变是指基因分子结构的改变。染色体变异是指染色体在结构或数量上的变化。
进化算法中,仿效生物的遗传方式,主要有复制、交叉、变异这3中遗传操作。
在科学探索自然规律和工程制造实用产品的过程中,往往会遇到许多问题,优化问题便是其中之一。
对于优化问题,希望在变量的定义域内找到最优解,给定笛卡尔三维坐标系下的可微实值函数f(x,y,z),其梯度为 ∇ f = ( ∂ f ∂ x i , ∂ f ∂ y j , ∂ f ∂ z k ) \nabla f=\left(\frac{\partial f}{\partial x} \mathbf{i}, \frac{\partial f}{\partial y} \mathbf{j}, \frac{\partial f}{\partial z} \mathbf{k}\right) ∇f=(∂x∂fi,∂y∂fj,∂z∂fk),其中i,j和k为三个方向上的单位向量。 ∇ f \nabla f ∇f的方向是函数f上升最快的方向,其模衡量上升快慢的程度。因此优化问题看起来很简单,可以从任意初始点开始,通过梯度导引搜索,直到找到梯度接近0的点。
不幸的是,这只适用于某些类型的问题。对于组合优化,没有微分的定义;对于多目标优化,我们面对的是一个向量函数f,通常在定义域中没有一个点的多个目标值都优于其他点;对于约束优化,沿梯度搜索可能收敛于一个违反某些约束的解。即使在可微无约束优化中,梯度也可能不起作用。让我们以Griewank函数为例:
min f ( x 1 , x 2 ) = x 1 2 + x 2 2 4000 − cos ( x 1 ) cos ( x 2 2 ) + 1 (1) \min f({x_1},{x_2}) = \frac{{{x_1}^2 + {x_2}^2}}{{4000}} - \cos ({x_1})\cos \left( {\frac{{{x_2}}}{{\sqrt 2 }}} \right) + 1\tag 1 minf(x1,x2)=4000x12+x22−cos(x1)cos(2x2)+1(1)
很容易发现,该函数的全局最优解是x=y=0。在定义域(-30≤x1,x2≤30)内该函数的图形如图1所示。
该函数存在非常多的局部最优解(即多峰),以至于通过随机生成初始解的梯度方法会很大概率的陷入其中。
约束优化、多峰优化、多目标优化和组合优化这四类问题为优化的核心,也是运筹学领域的热门主题。研究人员提出了许多解决这些问题的方法,其中,进化算法具有独特的性能,受到越来越多的关注。
物种的自然进化可以看作是一个学习如何适应环境和优化物种适应性的过程。所以在设计优化或学习算法时,可以模仿现代遗传学“适者生存”的观点。
EAs是用于任务优化或学习的具有进化能力的算法,主要有三个特点:
遗传算法是进化算法中较为简单且应用最广泛的算法,在生产调度领域也有很多学术研究,下一章内容将以更加生动有趣的图解遗传算法来介绍选择、交叉、变异等遗传算法基本操作,从而帮助不太了解遗传算法的读者快速掌握。