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 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 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