Esempio n. 1
0
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