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

来源:互联网 发布:淘宝御泥坊怎么样 编辑:程序博客网 时间:2024/06/02 19:38

 遗传算法的工作原理

一、算法概述

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

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

0 0
原创粉丝点击