遗传算法中的变异和交叉

遗传算法中的变异和交叉

一、交叉方法

1.部分匹配交叉(PMX)
由于一次只能去一个城市,所以一条染色体中的编码是不能重复的
比如我们随机产生两个父代:A=762150483,B=416307582,
遗传算法中的变异和交叉_第1张图片
我们假设选中的交叉位为第四位和第七位,我们如果让交叉位里面的编码直接换,那对A来说,交叉位里面的3、7和交叉位外面的3、7重复了,则让交叉位外面的3和4去换,让交叉位外面的7和5去换,则成功产生两个子代A’=562307841,B’=436150782,可以看出,第一个子代的交叉位基因来自于第二个父代,第二个子代的交叉位基因来自于第一个父代。
2.顺序交叉(OX)
假设两个父代:A=764235801,B=073684152
查找交换基因,(交叉位同样选第四位和第七位)比如A当中235要用684去换,B中的684要用235换,那么将A中的684和B中的235都换成,得到A’=7HH235H01,B’=07H6841HH,然后将H都移到交叉位里面,将原来交叉位里面的数字都左移到最左边。再将H替换,上面的H用684换,下面的H用235换。最后顺序交叉的结果为A’’’=135|684|017,B’’’=684|235|107
遗传算法中的变异和交叉_第2张图片

二、变异方法

1.两点互换
假设染色体为:02134567,随机选择两个变异位,这里假设为第二位和第三位
这里将2和3互换一下,针对TSP(旅行商)问题互换以后城市的访问次序就变了,即旅行商问题的解就发生了变化
遗传算法中的变异和交叉_第3张图片
2.相邻互换:选择相邻的两个基因进行互换
初始染色体01234576
这里将12换成21
遗传算法中的变异和交叉_第4张图片

3.区间逆转
初始染色体:01234576
这里假设区间开始位为0,结束位为7,那么逆转之后得到
75432106(其实就是将区间翻一下)。
在这里插入图片描述
4.单点移动
初始染色体:02316745
选择移动的基因和移动的目的地,这里选择移动的基因为3,移动到第四位,移动之后为23416750
在这里插入图片描述

你可能感兴趣的:(机器学习,算法,数据结构,ai,遗传算法,人工智能)