Can you help me, pls, to choose the most optimal routing options for my model (on Python)
I have 1 depot and 3000+ customers.
Each customer has his own time windows.
We haven't got customer demands constraint (vehicle need to process 1 unit per each customer).
We haven't got vehicle capacity constraint, so, in ideal world, i'll accept the solution, where 1 vehicle could process all of 3000+ customers on 1 route.
On each customer we have fix service time, which sets by demands matrix.
At last we have max route duration per each vehicle constraint = 12h = 43200sec
So i have:
1. CreateDistanceCallback - by haversine formula
2. CreateServiceTimeCallback - from demands matrix
3. CreateTravelTimeCallback - from CreateDistanceCallback and fix speed
4. CreateTotalTimeCallback - from CreateServiceTimeCallback and CreateTravelTimeCallback, like in standart example
5. routing = pywrapcp.RoutingModel(num_locations, num_vehicles, depot - all vehicles start and end their routes in depot
6. routing.AddDimension(total_time_callback, null_capacity_slack_time, vehicle_capacity_time, fix_start_cumul_to_zero_time, name_time) - for close time of depot and fix_start_cumul_to_zero_time = False, so vehicles can start later then open time (0) of depot
7. time_dimension = routing.GetMutableDimension("Time")
for locations in xrange(1, num_locations):
start = start_times[locations]
end = end_times[locations]
time_dimension.CumulVar(locations).SetRange(start, end)
for vehicle_limit in xrange(num_vehicles):
time_dimension.SetSpanUpperBoundForVehicle(43200, vehicle_limit)
This is for customers time windows constraint and max route duration per each vehicle constraint
8. assignment = routing.SolveWithParameters(search_parameters)
9. And 4 initial data matrix - locations, demands (equal service times per each customer), start and end times time windows per each customer
So the model is almost the same of the standart example, except max route duration per each vehicle constraint.
My target function is to minimize vehicle count. Max - 80 vehicles, ideal - 50 vehicles.
This is a really hardware and time hard model, so i have 2 questions:
1. Which first_solution_strategy and local_search_metaheuristic will be the best for my task? Maybe it is nessesary to customize additional parameters from this Search limits, Search control, First solution heuristics, Local search options or Propagation control?
2. Is it correct to use routing.SetArcCostEvaluatorOfAllVehicles(dist_callback) (same as standart example) in my situation where my target function is to minimize vehicle count?
I would be very grateful for any help. I hope, that anyone have experience in solving such big models, task and problems.
Thanks.