10.5.1遗传算法进阶

  • Crossover I(One Point Crossover一点杂交)

    • 选一个点,从这个点之后,所有的遗传物质进行交换
  • Crossover I(One Point Crossover两点杂交)

    • 选两个点,将这两个点之间的遗传物质进行交换
    • 注意:如果杂交的需要交换的基因一样时,杂交后基因没变化
  • Crossover III(Uniform Crossover各个点都可以杂交)

    • 注意:本身具有随机性,此时是“两个生一个”
  • Is it always easy?

    • 问题:结果不合法
      • TSP问题中,每个城市都不许被访问,且只访问一次,但有城市出现了两次(有城市没有出现)
    • 解决:
      • 修复:将重复的数字(4)改为未出现的数字(8)
      • 使用新杂交算法,每次使得杂交结果都合法,无需修复
  • Mutation

    • 离散的:0变1,1变0
    • 连续的:加高斯,0变“-0.1到0.2”之类的,在此范围内取值
    • mutation & Crossover
      • mutation主要用于保持种群基因的多样性
  • Population Diversity

    • 算法总是要converge的(收敛),但是若算法的genetic diversity损失的太早太快,会导致premature converge(过早收敛、不成熟收敛),可能会收敛到错误位置
  • Selection & Crossover & Mutation

    • exploration & exploitation(勘探开发)
      • Selection:
        • 给最有希望的个体更多的资源
        • 可能会导致基因多样性的损失
      • Crossover
        • 杂交、交换,希望好的父代、母代杂交出更好的子代
        • 对基因多样性没有影响
      • Mutation
        • 生成新的基因(不要100个人集中在一个房间找,可能钱包丢在其他房间,也去找一找)
        • 可以保持种群基因多样性
  • The Complete Picture

  • GA Framework
    • 形成初始种群(例如100个个体的种群)
    • evaluate每个个体的适应度
    • 外循环为一代一代的循环(从父代到子代的迭代循环)
      • 内层循环为生成population中的每一个个体
        • 选择两个个体
        • 杂交
        • 变异
        • 评价(到此为止生成了两个新个体)
      • 重复直到100个个体都生成完毕(一代内部循环结束)
    • 外层循环(根据新生成的个体和原有个体组合出一个下一代的population,返回最优的个体,结束)
  • Parameters(参数设置)

    • 种群个体数量
      • 太大:很慢,每个个体都要evaluate(管理一个十几亿人的国家是很麻烦的事情)
      • 太少:派人去挖金子(很难说很快就能找到)
    • 杂交比例
      • 推荐比例:0.8
        • 每次挑选的两个个体有80%的概率杂交
        • 20%的概率直接copy到子代
    • 变异推荐值
      • 每个个体的基因1%变异(100个基因变异1个)
      • 太大:搜索在整个空间“跳来跳去”,类似随机搜索
      • 太小:收敛得快,收敛到错误的地方后,因变异率太小,很难在将它再拉回到其他区域中去
    • 选择策略
      • 重要的是选择压力(selection pressure)
        • 如果开始就给相对较好的个体太多优先权,他的基因就会很快过度繁殖,占据种群的支配地位(dominant population),会导致快收敛到某点
      • 方法
        • Tournament Selection:两两PK,三三PK
        • Truncation Selection(截断选择):类似于高考,划一个分数线,超过的留下
  • A few more words

    • No free lunch
      • 对于不同的问题,有不同的最优参数值,没有一个固定的参数值可以在任何问题上得到最优解
    • Randomness
      • 遗传算法本身内部就是随机的,每一次运行,结果都不完全一样,需要多运行几次寻找相对较好的结果
    • Why doesn't it work?
      • 很好理解,好实现(几十行代码就可以实现)
      • 但为什么这样做可以工作,难以解释
      • 机理很难用数学方式精准刻画和描述
  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值