遗传算法中利用两点交叉,交叉点设置为第三点和第六点,已知父串A和B,求解生成的子串A和B,然后利用部分匹配交叉PMX,求解修正的交叉得到的最终子串A和B A=984567132 B=871239546
时间: 2024-04-06 16:32:03 浏览: 9
根据题意,利用两点交叉,交叉点设置为第三点和第六点,可以得到如下的子串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。
相关问题
4.遗传算法中利用两点交叉,交叉点设置为第3点和第6点已知父串A和B,求解生成的子串A'和B’然后利用部分匹配交叉PMX,求解修正的交叉得到的最终子串A"和B" A=984567132 B=871239546.
首先利用两点交叉,将父串A和B在第3点和第6点进行交叉,得到子串A'和B':
A' = 98412**32
B' = 87123**46
然后进行部分匹配交叉PMX,将A'和B'进行修正得到最终子串A"和B"。PMX的步骤如下:
1. 随机选择两个交叉点,例如选择第2位和第5位。
A' = 98**2*32
B' = 87**3*46
2. 将A'中的第2位和第5位的值复制到B'中对应的位置上,B'中的第2位和第5位的值复制到A'中对应的位置上。
A' = 98**3*32
B' = 87**2*46
3. 找到A'中第2位和第5位的值在B'中出现的位置,然后将这些位置上的值进行交换。
A' = 9823*346
B' = 8712*954
4. 找到B'中第2位和第5位的值在A'中出现的位置,然后将这些位置上的值进行交换。
A" = 98273146
B" = 87156932
因此最终得到的子串A"为98273146,子串B"为87156932。
已知a b两点经纬度 和a b分别相对于c点的正北方向角 求c点经纬度
要求已知点A和点B的经纬度,以及点A和点B相对于点C的正北方向角度,求点C的经纬度。
首先,需了解经纬度的定义。经度是指地球表面上点与地球质心的连线与一个参考面的交角,通常以子午线为标准。纬度是指垂直于地球旋转轴的平面与地球表面交线与地平面的夹角,通常以赤道面为标准。而正北方向角度是指从某一点指向正北方向的角度。
给定点A和点B的经纬度以及它们相对于点C的正北方向角度,可以通过以下步骤计算点C的经纬度:
1. 计算A点相对于C点的距离LAC,使用大圆距离公式计算,即LAC = 地球半径 × 弧度(AC),其中AC是点A和点C之间的弧度距离。
2. 根据点A的纬度、LAC、以及A相对于C的正北方向角度,可计算C点的纬度,使用以下公式:纬度C = 纬度A + 弧度(正北方向角度) × LAC经度对应圈长。
3. 使用三角函数计算点C的地理经度:
- 首先,计算经线圈长(度/纬度),即经线圈长 = 地球半径 × 2 × π × cos(纬度C)。
- 其次,计算斜角sinθ = sin(正北方向角度) × LAC / 经线圈长。
- 然后,计算点C的经度经角度 = 经度A + 弧度(正北方向角度) × LAC / 经线圈长 / sinθ。
通过以上计算步骤,即可求得点C的经纬度。
请注意,这只是一个简单的推导过程,实际应用中可能还需考虑其他因素,如地球椭球度、基准面等。