Я пытаюсь оптимизировать общие затраты на распространение продукта через Google OR-tools.Таким образом, я рассчитываю стоимость дуги в виде сумм в долларах США для конкретного транспортного средства, рассчитываемых как управляемая КМ * стоимость транспортного средства на километр:
for n, vehicle_cost in enumerate(vehicle_costs):
def vehicle_distance_cost_evaluator(source, destination):
return distance_evaluator(source, destination) * vehicle_cost
routing.SetArcCostEvaluatorOfVehicle(vehicle_distance_cost_evaluator, n)
Это работает просто замечательно, но есть ловушка: в дополнение к стоимости за км каждый автомобиль имеет минимальную стоимость аренды.Например, стоимость транспортного средства может составлять 1 доллар за километр, а минимальная стоимость проката - 100 долларов.Это означает, что любое расстояние, пройденное ниже 100 км, все равно будет стоить 100 $.После этого 101 км будет стоить 101 $ и т. Д.
Как я могу реализовать это?Измените vehicle_distance_cost_evaluator
, сделайте так, чтобы оно возвращало 100 $ за выезд из депо, а затем каким-то образом осуществляло доступ и пересчитывало реальный предыдущий путь транспортного средства, возвращая 0 $, пока мы не проехали 100 км.
Может быть, есть лучший способ сделать это с помощью ограничения маршрутизации?Я использую Python-версию OR-tools, если это что-то меняет.