def fitness(individual, start, goal, vertexs_list):
    """
    Determine the fitness of an individual. Lower is better.

    individual: the individual to evaluate
    start: start point 
    goal: goal point
    vertexs_list: a list of vertexs of obstacles
    """
    #TODO
    previous_point = (start[0], start[1])
    sum = 0.0
    for point in individual:
        sum += sqrt((point[0] - previous_point[0])**2 +
                    (point[1] - previous_point[1])**2)
        for vertexs in vertexs_list:
            if collision_detect(vertexs, previous_point, point):
                sum += 100  # depends on the scale of problem
        previous_point = point

    sum += sqrt((goal[0] - previous_point[0])**2 +
                (goal[1] - previous_point[1])**2)
    for vertexs in vertexs_list:
        if collision_detect(vertexs, previous_point, goal):
            sum += 100
    return sum
def optimal_operation(individual, vertexs_list, start, goal):
    """
    genetic optimal operation

    individual: the individual which need to be optimalize 
    vertexs_list: a list of vertexes of obstacles
    start: start point
    goal: end point
    """
    # check whether start point can reach goal directly
    cnt = 0
    point_cnt = 0
    best_individual = individual
    for vertexs in vertexs_list:
        if collision_detect(vertexs, start, goal):
            point_cnt += 1
    if point_cnt == 0:
        best_individual = []
        print best_individual
        return best_individual

    point_cnt = 0
    for point in best_individual:
        for vertexs in vertexs_list:
            if collision_detect(vertexs, point, goal):
                point_cnt += 1
        if point_cnt == 0:
            best_individual = best_individual[0:cnt + 1]
            print best_individual
            break
        cnt += 1
    return best_individual
def optimal_operation(individual, vertexs_list, start, goal):
    """
    genetic optimal operation

    individual: the individual which need to be optimalize 
    vertexs_list: a list of vertexes of obstacles
    start: start point
    goal: end point
    """
    # check whether start point can reach goal directly
    cnt = 0
    point_cnt = 0
    best_individual = individual
    for vertexs in vertexs_list:
        if collision_detect(vertexs, start, goal):
            point_cnt += 1    
    if point_cnt == 0:
        best_individual = []
        print best_individual
        return best_individual
        
    point_cnt = 0
    for point in best_individual:
        for vertexs in vertexs_list:
            if collision_detect(vertexs, point, goal):
                point_cnt += 1
        if point_cnt == 0:
            best_individual = best_individual[0:cnt + 1]
            print best_individual
            break
        cnt += 1
    return best_individual
def fitness(individual,start, goal, vertexs_list):
    """
    Determine the fitness of an individual. Lower is better.

    individual: the individual to evaluate
    target: the sum of numbers that individuals are aiming for
    """
    #TODO
    previous_point = (start[0], start[1])
    sum = 0.0
    for point in individual:
        sum += sqrt((point[0] - previous_point[0])**2 +(point[1] - previous_point[1])**2 )
        for vertexs in vertexs_list:
            if collision_detect(vertexs, previous_point, point):
                sum += 100 # depends on the scale of problem
        previous_point = point
    
    sum += sqrt((goal[0] - previous_point[0])**2 + (goal[1] - previous_point[1])**2)
    for vertexs in vertexs_list:
        if collision_detect(vertexs, previous_point, goal):
            sum += 100
    return sum
Example #5
0
def fitness(individual, start, goal, vertexs_list):
    """
    Determine the fitness of an individual. Lower is better.

    individual: the individual to evaluate
    target: the sum of numbers that individuals are aiming for
    """
    #TODO
    previous_point = (start[0], start[1])
    sum = 0.0
    for point in individual:
        sum += sqrt((point[0] - previous_point[0])**2 +
                    (point[1] - previous_point[1])**2)
        for vertexs in vertexs_list:
            if collision_detect(vertexs, previous_point, point):
                sum += 100  # depends on the scale of problem
        previous_point = point

    sum += sqrt((goal[0] - previous_point[0])**2 +
                (goal[1] - previous_point[1])**2)
    for vertexs in vertexs_list:
        if collision_detect(vertexs, previous_point, goal):
            sum += 100
    return sum
def fitness(individual,start, goal, vertexs_list):
    """
    Determine the fitness of an individual. Lower is better.

    individual: the individual to evaluate
    start: start point 
    goal: goal point
    vertexs_list: a list of vertexs of obstacles
    """
    #TODO
    previous_point = (start[0], start[1])
    sum = 0.0
    for point in individual:
        sum += sqrt((point[0] - previous_point[0])**2 +(point[1] - previous_point[1])**2 )
        for vertexs in vertexs_list:
            if collision_detect(vertexs, previous_point, point):
                sum += 100 # depends on the scale of problem
        previous_point = point
    
    sum += sqrt((goal[0] - previous_point[0])**2 + (goal[1] - previous_point[1])**2)
    for vertexs in vertexs_list:
        if collision_detect(vertexs, previous_point, goal):
            sum += 100
    return sum