Маршрутизация транспортных средств 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, если это что-то меняет.

0 ответов

Другие вопросы по тегам