遗传算法:交叉操作 Inver-over 算子

Inver-over 算子 1998:Inver-over 算子可以看作是GA中交叉和变异的混合方法

     Inver-over步骤:

  1. 随机初始化种群P
  2. 如果没达到temination,对每一个个体,随机从 中选择一个city c
  3. 执行下面的循环,生成随机数,如果rand()<=p,从 剩余的city中随机选择一个;如果rand()>p,从P中随机选择一个个体,然后选择c下一个位置的city。执行上面的循环,直到选择的 是c的下一个city则停止
  4. 计算eval(si)>eval(),更优则替换

举个例子:如果 如果选择的city c=3,产生的随机数小于p,则从中选择另一个city =8,将c下一个位置与 之间的数字全部逆序,则;;另一种情况,如果产生的随机数大于p,则从种群P中随机选择一个个体,假设选择的个体是 ,则选择c的下一个city,这里是5,作为,然后将中c下一个位置与 之间的数字全部逆序,上面的过程执行多次,直到是c的下一个city。比如当前个体是 ,当前选中的city是6,不管随机数与p比较后选择那种方案生成,如果是8的话,循环结束。

实验部分:种群P=100,random inversion 概率p=0.02,结束条件是如果最后10次迭代最好的solution都没有得到改善。测试数据是TSPLIB。实验比较了simple inversion(p=1.0)和Lin-Kerninghan算法,前者时间和效果相差比较大,后者时间更短但是结果没有达到最优值。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值