Beispiel #1
0
    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())
Beispiel #2
0
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)

Beispiel #3
0
        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)