遗传算法求解y=x2

初始遗传算法及一个简单的例子

遗传算法(Genetic Algorithms, GA)是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。它模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。

下面我以一个实例来详细表述遗传算法的过程

例:求下述二元函数的最大值:

1、编码:

用遗传算法求解问题时,不是对所求解问题的实际决策变量直接进行操作,而是对表示可行解的个体编码的操作,不断搜索出适应度较高的个体,并在群体中增加其数量,最终寻找到问题的最优解或近似最优解。因此,必须建立问题的可行解的实际表示和遗传算法的染色体位串结构之间的联系。在遗传算法中,把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法称之为编码。反之,个体从搜索空间的基因型变换到解空间的表现型的方法称之为解码方法。?

编码是应用遗传算法是需要解决的首要问题,也是一个关键步骤。迄今为止人们已经设计出了许多种不同的编码方法。基本遗传算法使用的是二进制符号0和1所组成的二进制符号集{0,1},也就是说,把问题空间的参数表示为基于字符集{0,1}构成的染色体位串。每个个体的染色体中所包含的数字的个数L称为染色体的长度或称为符号串的长度。一般染色体的长度L为一固定的数,如本例的编码为

s1 = 1 0 0 1 0 (17)
s2 = 1 1 1 1 0 (30)
s3 = 1 0 1 0 1 (21)
s4 = 0 0 1 0 0 (4)

表示四个个体,该个体的染色体长度L=5。?

2、个体适应度函数?

在遗传算法中,根据个体适应度的大小来确定该个体在选择操作中被选定的概率。个体的适应度越大,该个体被遗传到下一代的概率也越大;反之,个体的适应度越小,该个体被遗传到下一代的概率也越小。基本遗传算法使用比例选择操作方法来确定群体中各个个体是否有可能遗传到下一代群体中。为了正确计算不同情况下各个个体的选择概率,要求所有个体的适应度必须为正数或为零,不能是负数。这样,根据不同种类的问题,必须预先确定好由目标函数值到个体适应度之间的转换规则,特别是要预先确定好目标函数值为负数时的处理方法。?

如所求解的问题为:直接设定个体的适应度函数值就等于相应的目标函数值,即?.?

3、遗传算子 ?

比例选择:选择或称复制,建立在对个体适应度进行评价的基础之上。其作用是从当前群体中选择出一些比较优良的个体,并将其复制到下一代群体中。基本遗传算法采用比例选择的方法,所谓比例选择,是指个体在选择操作中被选中的概率与该个体的适应度大小成正比。本例选择概率的计算公式为:

其中f为适度函数;为个体的适应值,显然,适应值最高的个体被随机选定的概率就越大,被选择的次数就越多,从而被繁殖的次数也就越多。

单点交叉。单点交叉又称简单交叉,是遗传算法所使用的交叉操作方法。

选择一个交叉点,子代在交叉点前面的基因从一个父代基因那里得到,后面的部分从另外一个父代基因那里得到。

如:

交叉前:

100|10
101|01交叉后:
100|01
101|10
?

基本位变异。基本位变异石最简单和最基本的变异操作,也是基本遗传算法中所使用的变异操作方法。对于基本遗传算法中用二进制编码符号串所表示的个体,对需要进行变异操作的某一基因,若原有基因值为0,则变异操作将该基因值变为1;反之,若原有基因值为1,则变异操作将其变为0.?

基本位变异算子是指对个体编码串随机指定的某一位或某几位基因作变异运算。对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作的某一基因座上的原有基因值为0,则变异操作将其变为1;反之,若原有基因值为1,则变异操作将其变为0。

如:

变异前:

1001|0变异后:

1001|1

(4)基本遗传算法的运行参数

本例中指定四个基本参数

种群大小:popsize

最大世代数 maxgeneration

交叉率pc

变异率pm

至于遗传算法的终止条件,还可以利用某种判定准则,当判定出群体已经进化成熟且不再有进化趋势时就可终止算法的运行过程。如连续几代个体平均适应度的差异小于某一个极小的值;或者群体中所有个体适应度的方差小于某一个极小的值。这4个参数对遗传算法的搜索结果及搜索效率都有一定的影响,目前尚无合理选择它们的理论根据在遗传算法的实际应用中,往往需要经过多次的试算后才能确定出这些参数合理的取值范围或取值大小

4、遗传算法的应用步骤如下:

遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的领域和种类。对一个