xdyong
2010-07-19, 00:36
(1)部分匹配交叉
随机选取两个交叉点,以确定一个匹配段,根据两个父体中两个交叉点之间
的中间段给出的映射关系生成两个子个体。例如在两个父体中随机选择两个交叉
点,以“|”表示。
A=984|567|1320
B=871|230|9546
则由交换段确定的部分映射为:
2-5,3-6,0-7,
首先, 两个交叉点之间的中间段交换,得到:
A’ =984|230|1320
B’=871|567|9546
然后对于 A’, B’两子个体中交换区域以外出现的遍历重复,依据交换区域内
的位置映射关系,逐一交换,最后得到:
A’’=984|230|1657
B’’=801|567|9243
假设两个父体为:
X:1 |3 4 2| 5 6
Y:1 |2 3 6 |5 4
则由交换段确定的部分映射为:
3-2,4-3,2-6,
首先, 两个交叉点之间的中间段交换,得到:
X:1 |2 3 6| 5 6
Y:1 |3 4 2 |5 4
然后对于 X, Y两子个体中交换区域以外出现的遍历重复,依据交换区域内
的位置映射关系,逐一交换,最后得到:
X:1 |2 3 6| 5 2
Y:1 |3 4 2 |5 3
为什么出现错误?
随机选取两个交叉点,以确定一个匹配段,根据两个父体中两个交叉点之间
的中间段给出的映射关系生成两个子个体。例如在两个父体中随机选择两个交叉
点,以“|”表示。
A=984|567|1320
B=871|230|9546
则由交换段确定的部分映射为:
2-5,3-6,0-7,
首先, 两个交叉点之间的中间段交换,得到:
A’ =984|230|1320
B’=871|567|9546
然后对于 A’, B’两子个体中交换区域以外出现的遍历重复,依据交换区域内
的位置映射关系,逐一交换,最后得到:
A’’=984|230|1657
B’’=801|567|9243
假设两个父体为:
X:1 |3 4 2| 5 6
Y:1 |2 3 6 |5 4
则由交换段确定的部分映射为:
3-2,4-3,2-6,
首先, 两个交叉点之间的中间段交换,得到:
X:1 |2 3 6| 5 6
Y:1 |3 4 2 |5 4
然后对于 X, Y两子个体中交换区域以外出现的遍历重复,依据交换区域内
的位置映射关系,逐一交换,最后得到:
X:1 |2 3 6| 5 2
Y:1 |3 4 2 |5 3
为什么出现错误?