如果你不知道逆交叉函数(AxB => (a,b) &(任何a) => (A,B)),那么就无法找到父母。
通常的单点交叉函数为:
a = A1 + B2
b = B1 + A2
即使您知道a和b,也无法解决系统(具有4个变量的2个方程组)。
如果您知道A或/和B的任何2个部分,则可以解决它(具有2个变量的2个方程组)。对于您的问题,情况就是这样,因为您提供了A和B。
通常交叉函数没有反函数,您只需要逻辑地找到解决方案,或者如果您知道父母,请执行交叉并进行比较。
因此,为您制作通用公式,我们应该知道两件事:
1.交叉功能。
2.反交叉功能。
通常不使用第二个功能,因为GAs不需要它。
现在,我将回答您的问题。
Q1:在遗传算法中,给定带有染色体001110和101101的两个父母A和B,以下哪种后代可能是由单点交叉导致的?
查看a和b,我可以看到交叉点在这里:
1 2
A: 00 | 1110
B: 10 | 1101
通常使用
这个公式来进行交叉处理:
a = A1 + B2
b = B1 + A2
因此可能的子项是:
a: 00 | 1101
b: 10 | 1110
这里需要排除选项b。
所以Q1的答案是:根据给定的交叉函数,结果为001101。
Q2:哪些后代可能是由两点交叉产生的?为什么?
从a和b中可以看出,交叉点可能在这里:
1 2 3
A: 00 | 11 | 10
B: 10 | 11 | 01
常规的2点交叉公式为:
a = A1 + B2 + A3
b = B1 + A2 + B3
那么孩子们就会是:
a = 00 | 11 | 10
b = 10 | 11 | 01
与您提出的选项(小写字母a和b)相比,我们可以得出答案:
问题2. A: 根据给定的交叉函数,
不能通过2点交叉获得
AxB的
a或
b。
再次强调,在不知道交叉函数的情况下无法回答您的问题。
我提供的函数在GA中很常见,但是您可以发明许多其他函数来回答这个问题(请参见下面的评论)。