代码:
import numpy as np
import copy
def pmx(parent1, parent2, length, r_a_b=None, ):
child1 = copy.deepcopy(parent1)
child2 = copy.deepcopy(parent2)
if r_a_b is None:
a, b = np.random.choice(length, 2, replace=False)
min_a_b, max_a_b = min([a, b]), max([a, b])
r_a_b = range(min_a_b, max_a_b)
r_left = np.delete(range(length), r_a_b)
left_1, left_2 = child1[r_left], child2[r_left]
middle_1, middle_2 = child1[r_a_b], child2[r_a_b]
child1[r_a_b], child2[r_a_b