遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理

 遗传算法的工作原理

一、算法概述

    下面的提纲总结了算法工作的过程

1.算法生成一个初始的、随机的种群。

2.算法生成一系列的新的种群。在算法的每一步中,算法使用当前种群的个体生成下一代的种群。为了生成新的种群,算法将会执行下列的步骤:

     a.通过计算适应度值给每个群体中的个体打分。

     b.标定原始的适应度值到一定的数据范围之内。

     c.依据适应度值选择群体中的成员,称为父代。

     d.在当前群体中一部分个体有更低的适应度值,这一部分被称为“精英”,这些精英们被直接复制到下一代中。

     e.从父代中产生子代个体。产生子代的方法可以有两种:使用“交叉”的方法产生下一代或者使用“变异”的方法产生下一代。

     f.使用产生的子代个体替换群体中的当前群体中的个体,进而产生下一代群体。

3.当算法满足停止标准中的任何一个标准时,算法停止。

二、初始化种群

     算法以建立随机的初始化种群作为算法的开始。初始化的种群用下图表示

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

在这个例子中,初始群体包含20个个体。20是算法Population选项面板中Population size的默认设置。注意:这里的个体位于象限的右上角,范围时[0;1],这是因为在Population面板中的Initial range默认设置为[0;1].

三、生成下一代

      在算法的每一步中,算法使用当前群体来生成子代,进而组成下一代。算法依据适应度值选择父代中的个体来生成子代。你可以通过在Selection面板中的设置Selection function选项来指定一个特定的函数用来选择父代。

     遗传算法使用3种途径来生成子代中的个体。

     3.1在当前群体中具有最优适应度值的个子组成“精英团队”,这些精英分子会直接复制到下一代中,作为下一代群体的组成之一。

     3.2通过一对父个体,交叉,产生交叉子代个体。

     3.3使用一个父代个体,通过随机改变或者变异操作,产生变异子代。

下面的原理图描述了三种产生子代个体的途径

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

 

四、后期算法迭代图形的绘制

60次迭代是个体分布图

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

80次迭代子代分布图

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

95代迭代的分布图

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

100次迭代个体的分布情况

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

随着算法迭代代数的递增,群体中的个体逐渐靠近全局最优值所在的点[0 0].

五、算法停止的条件

算法使用下列的条件来决定算法停止的时机。

Generations —-迭代的代数,当算法运行的次数超过规定的代迭代次数时,算法将停止。

Time limit—–当算法运行的时间超过规定的时间间隔后,算法将停止运行。

Fitness limit ——当算法运行时,适应度值已经小于该选项规定的数值时,算法停止运行

Stall generations—–当算法在Stall generations规定的代数内,适应度函数的加权平均变化小于Function Tolerance时,算法停止运行。

Stall time limit——当算法在Stall time limit 规定的时间间隔内,目标函数值没有任何的改善的话,算法停止。

Function Tolerance ——参看Stall generations。

Nonlinear constraint  tolerance ——这个选项一般不用来作为算法停止的条件,它往往用来衡量非线性约束的可行性。

上述的这些指标你可以在优化工具箱的Stopping criteria面板中找到,进而可以根据具体的实际情况来改变它们。下图是这些选项的默认值

《遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理》

当你运行算法结束时,在 Run solver and view results面板中会列出算法停止运行时的原因。

上图中选项Stall time limit 和 Time limit 是为了防止算法运行的时间太长. 如果算法是因为这两个选项而停止的,那么你可以通过提高Stall time limit 和 Time limit的值来改善算法的运行效果。

附注:本文为转载文章
原文出处:http://blog.csdn.net/niuyongjie/article/details/4880874
原作者:niuyongjie

    原文作者:遗传算法
    原文地址: https://blog.csdn.net/u010480899/article/details/54412103
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞