1、算法简介

   遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局概率搜索算法。它最早是由美国密执安大学的Holland教授提出,起源于60年代对自然和人工自适应系统的研究, 70年代De Jong基于遗传算法的思想在计算机上进行了大量的纯数值函数优化计算实验。在一系列研究工作的基础上, 80年代由Goldberg进行归纳总结,形成了遗传算法的基本框架。

  1. 算法起源

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

max   fx                 (1-1)

r语言遗传算法优化 r 遗传算法_算法

s.t.    X∈R                (1-2) 

r语言遗传算法优化 r 遗传算法_机器学习_02

           R⊆U               (1-3)

r语言遗传算法优化 r 遗传算法_算法_03

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

r语言遗传算法优化 r 遗传算法_r语言遗传算法优化_04

         图1-1 最优化问题的可行解及可行解集合

 

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

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

  1. 算法内容

遗传算法中,将n维决策向量X=[x1,x2,…xn]T 用n个记号Xi(i=1,2,…,n)所组成的符号串X来表示:X=X1X2…Xn=[x1,x2,…xn]T 把每一个Xi看作一个遗传基因,它的所有可能取值称等位基因,这样,X就可看做是由n个遗传基因所组成的一个染色体。

2、算法运算过程

图1-2所示为遗传算法的运算过程示意图

 

r语言遗传算法优化 r 遗传算法_r语言遗传算法优化_05

                              图1-2遗传算法的运算过程示意图

 

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

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

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

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

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

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

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

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

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

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

 

3、算法特点

(1)遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接利用决策变量的实际值本身来进行优化计算,但遗传算法不是直接以决策变量的值,而是以决策变量的某种形式的编码为运算对象。这种决策变量的编码处理方式,使得我们可以方便地应用遗传操作算子。

(2)遗传算法直接以目标函数值作为搜索信息。传统的优化算法不仅需要利用目标函数值,而且往往需要目标函数的倒数值等其他一些辅助信息才能确定搜索方向。而遗传算法仅使用由目标函数值变换来地适应度函数值,就可确定进一步地搜索方向和搜索范围,无需目标函数地导数值等其他一些辅助信息。也可以提高搜索的效率。

(3)遗传算法同时使用多个搜索点的搜索信息。从由很多个体所组成的一个初始群体开始最优解的搜索过程,而不是从一个单一的个体开始搜索。对这个群体所进行的选择、交史、变异等运算,产生出的乃是新一代的群体,在这之中包括了很多群体信息。这些信息可以避免搜索一些不必搜索的点,所以实际上相当于搜索了更多的点,这是遗传算法所特有的一种隐含并行性。

(4)遗传算法使用概率搜索技术。很多传统的优化算法往往使用的是确定性的搜索方法,一个搜索点到另一个搜索点的转移有确定的搜索方法。这种确定型限制了算法的应用范围。遗传算法属于一种自适应概率搜索技术,其选择、交叉、变异等运算都是以一种概率的方式来进行的,从而增加了其搜索过程的灵活性。