def mutate_angle(individual: Component) -> Component: """ Modify angle of both segments of an individual :param individual: Individual to be modified :return: Individual with modified angles of two segments """ individual.right_angle += random.randint(-10, 10) individual.right_angle = max(individual.angle_limit_min, individual.right_angle) individual.right_angle = min(individual.angle_limit_max, individual.right_angle) individual.left_angle += random.randint(-10, 10) individual.left_angle = max(individual.angle_limit_min - 90, individual.left_angle) individual.left_angle = min(individual.angle_limit_max - 90, individual.left_angle) return individual