遗传算法中利用两点交叉,交叉点设置为第三点和第六点,已知父串A和B,求解生成的子串A和B,然后利用部分匹配交叉PMX,求解修正的交叉得到的最终子串A和B A=984567132 B=871239546
时间: 2024-04-06 11:32:03 浏览: 47
遗传算法PMX部分匹配交叉matlab代码
5星 · 资源好评率100%
根据题意,利用两点交叉,交叉点设置为第三点和第六点,可以得到如下的子串A和B:
A: 984**7**31**2**
B: 871**2**3**9**546
其中**表示交叉部分。接下来,利用部分匹配交叉PMX进行修正。
首先,选择一个随机的交叉点。假设选择的点为第4个位置,即8处。然后,从父串A中取出交叉段,得到子串1: 5671;从父串B中取出交叉段,得到子串2: 2395。
接下来,将子串1中的每个数字在子串2中进行查找,找到对应的位置。例如,5在子串2中的位置为第6个位置,7在子串2中的位置为第8个位置,1在子串2中的位置为第3个位置。然后,将子串2中对应位置的数字放到交叉段中对应的位置上,得到新的子串1和子串2:
子串1: 2395
子串2: 5671
最后,将修正后的子串1和子串2分别放回到原来的父串A和B中,得到最终的子串A和B:
A: 9842**3**95**2**
B: 871**5**67**1**546
至此,利用两点交叉和部分匹配交叉PMX,得到了最终的子串A和B。
阅读全文