概念题:遗传算法的5个部分
encoding,natural selection,selection,crossover,mutation
第一题:binary genetic algorithm
a
b
简单的做一个单点交叉就好了。
c
这个题就是很简单的突变,
第二题:binary genetic algorithm
a
- 用rank weighting selection和cost weighting selection
- 题目给出
是5,那么先自然选择最好的五个。
- 然后根据选择出来的五个,计算两种不同weighting的概率。首先是rank weighting selection,其实就是根据排名算概率:
- 然后计算cost weighting selection的概率:
这里如果给出了 那么就用第 来做标准化,上图中每一个cost都减去了2.775;如果没有给出这个 ,那么就用cost最大的那个cost的两倍作为每一个cost要减去的数值。
b
如果采取了精英策略,elitism strategy,那么最好的那一个个体不参与突变。
第三题:continuous genetic algorithm
a
这里就出现了,
为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中的索引