• 遗传算法的几种改进


    《Matlab》

    【毕设】
    防止优良基因因为变异而遭到破坏

    【毕设】
    放弃赌轮选择:
    将种群中的个体按适应度大小排列
    排在前面的个体复制两份;中间的一份;后面的不复制;

    【毕设】早熟
    早熟的原因P36
    早熟表象:
    1,群体中所有的个体都陷于同一极值而停止进化。
    2,接近最优解的个体总是被淘汰,进化过程不收敛。


    解决:
    1,动态确定变异概率,防止优良基因因变异而遭破坏,又可在陷入局部最优解的时候引入新的基因。
    2,改进选择方式,放弃赌轮选择,以避免早期的高适应度个体迅速占据种群 和 后期的种群中因个体的适应度相差不大而导致种群停止进化。
    将种群中的个体按适应度大小排列
    排在前面的个体复制两份;中间的一份;后面的不复制;
    3,择优交叉
    4,由于种群的基因多样性可以减小陷入局优解的可能(多个原点,多条线去搜索,可以避免局部最优解。???)。而加快种群进化速度又可以提高算法的整体性能。(一对矛盾)       (是不是可以一直保持6个适应度值,其他的不要???)

    【毕设】遗传算法 改进一
    1,在初始种群中,对所有的个体按其适应度大小进行排序,然后计算个体的支持度和置信度。
    2,按一定的比例复制(即将当前种群中适应度最高的两个个体结构完整地复制到待配种群中)
    3,安个体所处的位置确定其变异概率并变异;按优良个体复制4份,劣质个体不复制的原则复制个体
    4,从复制组中随机选择两个个体,对这两个个体进行多次交叉,从所得的结果中选择一个最优个体存入新种群;
    5,若满足结束条件,则停止,不然,跳转第(1)步,直至找到所有符合条件的规则。

    该算法的优点是在各代的每一次演化过程中,子代总是保留了父代中最好的个体,以在“高适应度模式为祖先的家族方向”搜索出更好的样本,从而保证最终可以搜索到全局最优解。

    【毕设】遗传算法 改进二
    没读明白

    【毕设】遗传算法 改进三
    早熟,后期搜索迟钝
    :解决方案:
    有条件的最佳保留机制;采用遗传-灾变算法;采用适应度比例机制和个体浓度选择机制的加权和;引入主群和属群的概念;适应度函数动态定标;多种群并行进化及自适应调整控制参数相结合的自适应并行遗传算法,对重要参数的选择采用自适应变化而非固定不变。
    采用的具体方法如下:
    1,交叉和变异算子的改进和协调采用。
         11将进化过程划分为渐进和突进两个不同阶段
         22采用动态变异
         33运用正交设计或均匀设计方法设计新的交叉和变异算子
    2,采用与局部搜索算法相结合的混合遗传算法,解决局部搜索能力差的问题
    3,采用有条件的替代父代的方法,解决单一的群体更新方式难以兼顾多样性和收敛性的问题
    4,收敛速度慢的解决方法:
          11产生好的初始群体;
          22利用小生境技术;
          33使用移民技术;
          44采用自适应算子;
          55采用与局部搜索算法相结合的混合遗传算法;
          66对算法的参数编码采用动态模糊控制;

         77进行未成熟收敛判

         【接上】    
           77进行未成熟收敛判

    1,初始群体的产生:
    要求:在解空间中分布均匀、
    均匀设计和正交设计
    广义 海明距离
    2,选择算子
    “賭轮选择”是很差的:早熟收敛和搜索迟钝。
    应采用有条件的最佳保留策略,即有条件地将最佳个体直接传递到下一代或至少等同于前一代,这样能有效防止“早熟收敛”

    采用 遗传-灾变算法,当判断连续数代最佳染色体没有任何进化,或者各个染色体已过于近似时,即可实施灾变。灾变的方法很多。
    可以突然增大变异概率或对不同个体实施不同规模的突变,以产生不同数目的大量后代等。用灾变的方法可以打破原有的基因的垄断优势,
    增加基因的多样性,创造有生命力的新个体。(万一这种垄断是迭代到终点的结果呢???)
    3,遗传算法重要参数的选择
    4,适应度函数设计
    5,进化过程中动态调整子代个体(防止早熟)
        11移民算子(淘汰差的个体,淘汰率15%~20%,用新个体代替)
        22过滤相似个体 (减小适应度差值小于门限,广义海明距离小于门限)
        33动态补充子代新个体

    【接上】
    6,小范围竞争择优的交叉、变异操作

  • 相关阅读:
    回滚事件只是让原数据看起来不变,但是id还是会自增吗?
    什么是Java中的原子操作( atomic operations)
    Java并发编程:volatile关键字解析
    对Java CAS的一些了解(正在整理学习中)
    问号和冒号----条件运算符, 问号冒号表达式
    对Java ConcurrentHashMap的一些了解
    Java HashMap的工作原理
    Java hashCode() 和 equals()
    Java 对比Hashtable、Hashmap、Treemap有什么不同?
    Java TreeMap详细介绍和使用示例
  • 原文地址:https://www.cnblogs.com/chulin/p/9923562.html
Copyright © 2020-2023  润新知