我在研究路径优化的交叉技术,并已经查看了以下几种方法
1 - 单点交叉2 - 双点交叉3 - 均匀交叉
在单点交叉中,我们通常从每个父本中交换一个变量来得到子代。双点交叉也是如此,我们从两个父本中交换两个变量。
在我的问题中,父本的长度不相同,例如 p1: ['a','b','c'] 和 p2:['v','n','m','h','k']
。由于两个父本的长度不同,我能够使用基于奇偶技术的单点交叉方法。
现在我想使用带掩码的均匀交叉,但发现很难在不同长度的情况下使用。有没有建议?
回答:
如果后代的长度要与父本相同,那么你可以进行普通的均匀顺序操作。例如
[a,b,c] = p1 [v,n,m,h,k] = p2 [0,0,1,0,1] = mask(这应该是随机的) [v,n,c] = o1 [a,b,m,h,k] = o2
你甚至可以随机放置较小的那个在掩码上的位置,例如:
[-,-,v,n,c] [a,b,m,h,k]
那么后代将是
[v,h,c] [a,b,m,n,k]