遗传算法 练习题 整理与巩固(一)

概念题:遗传算法的5个部分

encoding,natural selection,selection,crossover,mutation

第一题:binary genetic algorithm

遗传算法 练习题 整理与巩固(一)

a

遗传算法 练习题 整理与巩固(一)

b

简单的做一个单点交叉就好了。
遗传算法 练习题 整理与巩固(一)

c

这个题就是很简单的突变,
遗传算法 练习题 整理与巩固(一)

第二题:binary genetic algorithm

遗传算法 练习题 整理与巩固(一)

a

  • 用rank weighting selection和cost weighting selection
  • 题目给出NkeepN_{keep}是5,那么先自然选择最好的五个。
    遗传算法 练习题 整理与巩固(一)
  • 然后根据选择出来的五个,计算两种不同weighting的概率。首先是rank weighting selection,其实就是根据排名算概率:
    遗传算法 练习题 整理与巩固(一)
  • 然后计算cost weighting selection的概率:
    遗传算法 练习题 整理与巩固(一)
    这里如果给出了NkeepN_{keep}那么就用第Nkeep+1N_{keep}+1来做标准化,上图中每一个cost都减去了2.775;如果没有给出这个NkeepN_{keep},那么就用cost最大的那个cost的两倍作为每一个cost要减去的数值。

b

如果采取了精英策略,elitism strategy,那么最好的那一个个体不参与突变。
遗传算法 练习题 整理与巩固(一)

第三题:continuous genetic algorithm

遗传算法 练习题 整理与巩固(一)

a

遗传算法 练习题 整理与巩固(一)
这里就出现了,NkeepN_{keep}为0的情况,所以:
遗传算法 练习题 整理与巩固(一)

b

遗传算法 练习题 整理与巩固(一)
很简单,根据题目a得到的概率,可以得到答案:
遗传算法 练习题 整理与巩固(一)

c

遗传算法 练习题 整理与巩固(一)
遗传算法 练习题 整理与巩固(一)

第四题

遗传算法 练习题 整理与巩固(一)

a

这里不考虑y中存在相同的元素的情况。
遗传算法 练习题 整理与巩固(一)

b

遗传算法 练习题 整理与巩固(一)

c

遗传算法 练习题 整理与巩固(一)

第五题:格雷码gray code

格雷编码方式比二进制的遗传算法的编码好在哪里呢?先来看二进制传统编码的缺点:
遗传算法 练习题 整理与巩固(一)
其实就是这个骤变,127和128的十进制只是差1,但是二进制其实8个比特每一个数字都变化了,而这样会导致基因交叉的时候造成巨大的差异。

如何在binary genetic algorithm中使用格雷码呢?先用把原来的问题用二进制来表示,然后再把二进制的表示转换成格雷码的表示,然后后面迭代的过程相同,最后再吧格雷码转换成二进制,再转换成真是的连续数字即可。

整个过程其实就多了一个从二进制编码与格雷码的相互转换。

格雷码与二进制编码的转换

遗传算法 练习题 整理与巩固(一)
第一位格雷码和二进制码相同,然后第二个格雷码就是上一个二进制码和这个二进制码的异或,就是不相同取1,相同取0;
遗传算法 练习题 整理与巩固(一)
从格雷码转换回去的话,第一位是相同的,然后第二个二进制码使用上一位的二进制码和这一位的格雷码的异或。

第六题:PMX,OX,CX

遗传算法 练习题 整理与巩固(一)

partially matched crossover(PMX)

遗传算法 练习题 整理与巩固(一)

ordered crossover(OX)

遗传算法 练习题 整理与巩固(一)
就是先交换,然后在父母中去掉重复的基因,然后再随机把剩下的不重复的基因给对应的孩子。
或者这样做:
遗传算法 练习题 整理与巩固(一)

cycle crossover(CX)

这个就是寻找重复的基因,然后交换重复的基因,然后找下一个重复的基因。
遗传算法 练习题 整理与巩固(一)

其他的答案

遗传算法 练习题 整理与巩固(一)
遗传算法 练习题 整理与巩固(一)

第七题:code with refence list

遗传算法 练习题 整理与巩固(一)
对parent编码,查找每一个基因在refence list中的索引