Маршрутизация транспортных средств Google OR-Tools: минимальная стоимость дуги на транспортное средство? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь оптимизировать общие затраты на распространение продукта через 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, если это что-то меняет.

...