sequential constructive crossover (SCX) 2010
SCX根据父代better edges构造子代,与GNX,ERX不同的是,SCX不仅取决于父代的构造,也能够生成新的,更好的构造,这些构造可能在两个选择的父代中都没有出现。
算法步骤:
- 从第一个节点node 1开始
- 依次搜索两个父代染色体,比较在父代中出现在节点P后面的第一个合法节点(没有被访问过的),如果父代中P节点后面没有合法节点,一次搜索{2,3,4,...n},选择第一个合法的节点,执行3
- 假设节点α和β分别在第一个和第二个父代中,选择下一个节点执行4
- 如果
,选择α,否则选择β作为下一个节点,将其连接到已经选中的节点后面,如果都已经被选择则停止,否则,将当前的节点命名为P,执行2
假设父代分别为 ,对于非对称的TSP有
此时P1和P2的值分别是312和331,下面是SCX的执行步骤:选择第一个节点1,在P1和P2中第一个节点后面的合法节点分别是5,6,C15=35,C16=63,C15<C16,所以选5,O1的染色体为(1,5),在P1和P2中5后面的合法染色体都是7,所以O1的染色体为(1,5,7),在P1中7后面的合法节点是3,P2中没有,因此考虑{2,3,4,...n}中第一个合法的节点,是2,C73=43>31=C72,所以O1的染色体为(1,5,7,2),重复上面的步骤,2后面的合法节点3和4,C23=86 >46=C24,所以O1的染色体为(1,5,7,2,4),4后面的合法节点在P1中没有,P2中是3,对于P1考虑{2,3,4,...n}中第一个合法的节点,也是3,所以O1的染色体为(1,5,7,2,4,3),3后面的合法节点在P1中是6,P2没有,考虑{2,3,4,...n}中第一个合法的节点,也是6,所以O1的染色体为(1,5,7,2,4,3,6),TSP最后的结果是266小于父代两个染色体。