zoukankan      html  css  js  c++  java
  • 智控——遗传算法

       一、概述

       遗传算法是基于自然选择和基因遗传学原理的搜索算法,利用“优胜劣汰,适者生存”的概念应用到算法中,遗传算法是实现全局优化及搜索的算法,对其离散函数以及函数形式不明确的算法应用性较广。按照一定的适应度函数及一系列遗传操作对各个个体进行筛选,从而使适应度较高的个体存活下来,组成新的群体,同时新的群体中会包含上一代大量的信息(理解为先验知识)并且这一代适应性概率更高。这样周而复始,各个群体适应性不断提高,直至满足一定的极限条件。此时,存活下来的群体可以视为待优化参数的最优解。

    二、特点

        本身遗传算法的特点可以理解为,(1)首先它是对编码个体进行操作,所以首先是建立模型初始化群体,所以不是对参变量本身进行操作。(2)自然现象是一种群体现象,遗传算法是针对群体进行研究,所以不像一般传统的算法从一个解空间的初始点开始迭代运算,这样容易导致陷入局部最优解而停滞不前。遗传算法就是从群体开始计算,通过对群体进行选择、交叉、变异等运算产生由许多个体组成的群体,可以理解为具有很多局部最优解。(3)传统的优化算法不仅需要知道目标函数值,同时在知道导数后才能确定搜索方向,以为计算量较大,同时数学模型不一定好建立。遗传算法仅用从目标函数转化而来的适应度函数,就可以进一步确定搜索方向和搜索范围。(4)遗传算法核心是一种自适应随机搜索算法,是以概率原则指导搜索,适应值高的个体在进化过程中被赋予更高的选择概率,即利用已有的信息来搜寻那些希望改善质量的串。总体上讲遗传算法使用简单、鲁棒性强、易于并行化。

    三、基本操作

                   众所周知,遗传算法在理论上操作包括复制、交叉还有变异。首先复制为最基本的操作,意味着从上一群体中根据一定概率选择最优化的结果,赋予新一代群体。即先进行初始化确定群体数目,编码,根据目标函数计算值,然后把计算值按照适应度函数进行比较,淘汰最差的,同时将最优的复制两次或者多次。然后,前面讲过为了避免陷入局部最优解,所以有个交叉运算,就是将“染色体”(二进制码串)交叉,产生新的码串,之后再进行比较。最后就是只是交换不一定产生新的基因,比如在二进制0010、0110,0111,三个串中,不管怎么交叉,首位不会变为1,所以变异,就可能产生1,一般变异率为0.001,以为有串有1000位,才会变异。进行之后,最后向最优解逼近。

    四、理论基础

          遗传算法在计算过程中我们可以理解为是一种随机过程,但是为了提高算法快速性,提出了模式的概念。1、模式表示为基因串中某些特征位相同的结构模式阶用来反映不同模式间确定性大小,模式阶越高,确定性越高,匹配样本个数越少。在复制、交叉、变异的操作下具有低阶、短定义距以及适应度较高的模式(模式比较稳定),在子代中以指数形式增长(模式个数的指数),有了模式概念才有指数影响。2、积木块假设,我们将具有低阶、短定义距、以及高适应度的模式定义为“积木块”模式让其有了指数级增长,为了描述积木块之间产生交叉,所以应用积木块概念,模式是寻找最优解的必要条件。积木块假设的提出能生成高阶、长定义距、高适应度的模式、最终生成全局最优解。3、内在并行性,体现快速性。4、编码,把一个问题的解从其解空间转换到遗传算法能处理的搜索空间的转换方法叫编码,这也为遗传算法的首要问题,也是其关键一步,额他在很大程度上决定着遗传算法方法以及效率。编码分为二进制编码和浮点数编码,前者操作简单,但是当数目巨大或者问题复杂时,计算较复杂。5、适应度函数,遗传算法基本不利用外部信息,很大程度上依赖适应度函数,所以函数的选取很重要影响到遗传算法的收敛速度以及能否寻找到最优解。一般情况下适应度函数是由目标函数转换而来。

    五、遗传算法的综合应用

        遗传算法的寻找最优解的快速性,得到工业界的重视,其中在与模糊控制和神经网络结合应用比较广泛。在模糊控制中,隶属度函数的确定往往是人工确定,所以在隶属度函数的选取,决定利用遗传算法寻找最适合的隶属度函数,生成其模糊规则。遗传算法应用到神经网络主要使用遗传算法学习神经网络的权重和学习神经网络的拓扑结构,利用GA的寻优能力获取最佳权重。

     

     

  • 相关阅读:
    Swift中枚举的总结以及使用
    CapsLock Enhancement via AutoHotKey
    计算思维
    计算几何-凸包算法 Python实现与Matlab动画演示
    CapsLock魔改大法——变废为宝实现高效编辑
    Python调用Matlab2014b引擎
    VC++如何利用Matlab2014b的图形引擎进行绘图
    Window中C++进行精确计时的方法
    十四。算法小知识点
    十三。宫水三叶公众号总结
  • 原文地址:https://www.cnblogs.com/polly333/p/4498417.html
Copyright © 2011-2022 走看看