cut_num_sum_left = cut_num_sum.copy() del cut_num_sum_left[-1] #删除列表尾部最后一个元素 cut_num_sum_left.insert(0, 0) #头部追加0 cut_sum_index = list(zip(cut_num_sum_left, cut_num_sum)) #切片的索引组合值 # print(cut_sum_index) var_w_cut = [] for i in cut_sum_index: var_w_cut.append(var_w[i[0]:i[1]]) routes = [chainsort(i) for i in var_w_cut] route_tem = [i[:-1] for i in routes] route = [] for i in route_tem: route += i route.append(0) return route #查看程序运行时间 print("CVRPDV_Gurobi used time:", time() - st_time) #绘制路径图 from Routing_plot import plot var_w = getvar_w() route = getroute(var_w) var_a = getvar_a() # print(var_w) # print("route:",route) # print("route_num:",dict(Counter(route))[0]-2) plot(route, url, num) # print(getvar_a())
print(C_d) #f,c_d,c2,c3,c4分别为为单位派车成本、单位行驶成本、超载惩罚、时间窗惩罚、单线惩罚因子 timeArrangement = timeTable(distributionPlan) # 对给定路线,计算到达每个客户的时间 ODtime=[i[-2]*10 for i in decodeInd(timeArrangement)] #计算每条线路最后一个订单交付时间 # 索引给定的最迟到达时间 desiredTime = [dataDict['Timewindow'][bestInd[i]][1] for i in range(len(bestInd))] # 如果最迟到达时间大于实际到达客户的时间,则延迟为0,否则延迟设为实际到达时间与最迟到达时间之差 timeDelay = [max(timeArrangement[i]-desiredTime[i],0) for i in range(len(bestInd))] print('Delay time:') print(timeDelay) print("CVRPDV_GA time used:",time()-start_tiem) # 画出迭代图 Draw=0# 0-不绘制;1-绘制 if Draw==1: minFit = logbook.select('min') avgFit = logbook.select('avg') plt.figure() # plt.plot(minFit, 'b-', label='Minimum Function Value') plt.plot(avgFit, 'r-', label='Average Function Value') plt.xlabel('Generation') plt.ylabel('Value') plt.legend(loc='best') plt.show() #画出路径优化图 Draw_route=0 if Draw_route==1: plot(bestInd,url,num)
routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC) # Solve the problem. assignment = routing.SolveWithParameters(search_parameters) if assignment: vehicle_routing, plan_delivery_time, batch_delivery_time, batch_route_delivery_time, batch_route_dis = print_solution( data, routing, assignment) return vehicle_routing, plan_delivery_time, batch_delivery_time, batch_route_delivery_time, batch_route_dis # if __name__ == '__main__': # start_time=time.time() # vehicle_routing=main() # print("vehicle_routing:",vehicle_routing) # end_time=time.time() # used_time = end_time - start_time # print("CPU Time used:", used_time) start_time = time.time() vehicle_routing, plan_delivery_time, batch_delivery_time, batch_route_delivery_time, batch_route_dis = main( num, url) # print("ind:",vehicle_routing) # print("plan_delivery_time:",plan_delivery_time) # print("The last node delivery_time in the vehicle route",batch_delivery_time) # print("The vehicle route delivery_time",batch_route_delivery_time) # print("Dis_Bat:",batch_route_dis,sum(batch_route_dis)) # print("C_d:",round(c_d*sum(batch_route_dis),2)) # print("cvrpdv_ortools time used:", time.time()-start_time) Draw = 0 if Draw == 1: plot(vehicle_routing, url, num)