def gen_for_start_end(): workflow = [] for i in [1-n for n in range(0,2)]: #10 tasks service_list = [] for j in [9-n for n in range(0,10)]: #each task have 10 services QoS = [uniform(0,1) for k in range(10)] if i >= 1: service_list = [service(str(j),QoS,[],[])] + service_list else: selected = sorted(random_choice(range(10))) next_service_list = [] for pp in selected: next_service_list.append(workflow[0][pp]) service_list = [service(str(j),QoS,next_service_list,selected)] + service_list workflow = [service_list] + workflow return workflow
sers.sort(key = lambda service: service.sum) #按照Qsum从小到大排列 ser = sers[-1] #选择Qsum大的当代表 ser_task_down = [] for pp in fin: #pp is node if issub(ser.next_number , pp.next_number):#计算从属关系 ser_task_down.append(pp) fin = fin + [node(sers,ser_task_down,str(len(fin)))] return fin if __name__ == "__main__": workflow = gen() #-----------add------------- node_map = map(lambda x: gen_node_list(x),workflow) #--------------------------- start = sorted(random_choice(range(10))) end = sorted(random_choice(range(10))) print start,end for index in start: start_service = workflow[0][index] test = route([start_service],start_service.sum) test.adapt_dfs_search(end,node_map) print count print best if best_route != None: best_route.printf()