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

Camille ·
更新时间:2024-11-13
· 832 次阅读

概念题:遗传算法的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}Nkeep​是5,那么先自然选择最好的五个。
在这里插入图片描述 然后根据选择出来的五个,计算两种不同weighting的概率。首先是rank weighting selection,其实就是根据排名算概率:
在这里插入图片描述 然后计算cost weighting selection的概率:
在这里插入图片描述
这里如果给出了NkeepN_{keep}Nkeep​那么就用第Nkeep+1N_{keep}+1Nkeep​+1来做标准化,上图中每一个cost都减去了2.775;如果没有给出这个NkeepN_{keep}Nkeep​,那么就用cost最大的那个cost的两倍作为每一个cost要减去的数值。 b

如果采取了精英策略,elitism strategy,那么最好的那一个个体不参与突变。
在这里插入图片描述

第三题:continuous genetic algorithm

在这里插入图片描述

a

在这里插入图片描述
这里就出现了,NkeepN_{keep}Nkeep​为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中的索引


作者:忽逢桃林



遗传 遗传算法 算法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号