Маршрутизация транспортных средств Google OR-Tools: минимальная стоимость дуги на транспортное средство?
Я пытаюсь оптимизировать общую стоимость операции по распространению продукта через Google OR-инструменты. Таким образом, я рассчитываю стоимость дуги в виде сумм в долларах США для конкретного транспортного средства, рассчитываемых как управляемая КМ * стоимость транспортного средства на километр:
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, если это что-то меняет.