import copyimport random# 일점 교차 함수 정의def crossover_one_point(p1, p2): # 교차 지점을 무작위로 선택 (1부터 부모의 길이-1까지) point = random.randint(1, len(p1) - 1) # 부모 개체들을 깊은 복사하여 자식 개체를 생성 c1, c2 = copy.deepcopy(p1), copy.deepcopy(p2) # 부모의 유전자 순서를 교환하여 자식 개체 생성 c1[point:], c2[point:] = p2[point:], p1[point:] # 자식 개체 두 개 반환 return [c1, c2] # 랜덤 시드를 고정하여 재현성 있는 결과를 얻음 random.seed(2) # 부모 개체 1과 부모 개체 2를 무작위로 생성 (길이 5) p1 = [random.randint(0, 9) for _ in range(5)] p2 = [random.randint(0, 9) for _ in range(5)] # 교차 연산을 통해 자식 개체 생성 offspring = crossover_one_point(p1, p2) # 부모와 자식 개체 출력 print(f'Parent 1: {p1}') print(f'Parent 2: {p2}') print(f'Child 1: {offspring[0]}') print(f'Child 2: {offspring[1]}')