Модель ценообразования

Свойства стоимости определяются в ShipmentModel.shipments.Shipment и ShipmentModel.vehicles.Vehicle.

Основная цель Route Optimization API – находить маршруты с наименьшей стоимостью. Таким образом, модель затрат является основным фактором оптимизации маршрута.

Модель стоимости – это набор свойств, определяющих глобальные расходы, а также расходы на транспортные средства и перевозки.

Свойства модели затрат поддерживают следующие цели оптимизации:

  • Эффективное назначение транспортных средств и маршрутов
  • экономичные варианты самовывоза и доставки;
  • Приоритет для критически важных отправлений

Структура

Как показано на диаграмме, свойства модели стоимости имеют следующую структуру:

В этом документе рассматриваются только основные параметры модели ценообразования. Полный список параметров стоимости приведен в справочной документации.

Контрольный список Essentials

В приведенном ниже контрольном списке описаны основные знания, которые помогут избежать потенциальных ошибок, связанных с расходами. Этот список поможет вам проверить запрос и устранить неполадки с ответом.

Свойства

В таблице ниже перечислены и описаны свойства модели затрат.

Родитель Название свойства Тип объекта Цена за Описание объекта
Shipment penaltyCost число Пропущенная доставка Расходы, связанные с пропуском доставки.
API пропускает доставку, если стоимость ее выполнения превышает стоимость штрафа.
  • Если задать значение penaltyCost, приоритет будет у более дорогих отправлений.
  • Если не указать атрибут "тип доставки" penaltyCost, доставка будет считаться обязательной.
  • Если явно задать для penaltyCost значение, равное нулю, API будет всегда пропускать доставку, если только другие ограничения не требуют иного.
Vehicle fixedCost число Доставка Фиксированная стоимость, применяемая, если транспортное средство используется для перевозки груза.
costPerHour число Час Стоимость эксплуатации транспортного средства в час, включая время в пути, ожидания, посещения и перерывов.
По мере увеличения этой стоимости оптимизатор пытается найти более быстрые маршруты, которые могут быть не самыми короткими.
Это свойство может быть эффективным отдельным показателем стоимости автомобиля, поскольку оно простое и полное.
costPerKilometer число Километр Стоимость за километр, пройденный транспортным средством. Это могут быть расходы на топливо или амортизированные расходы на обслуживание транспортного средства.
costPerTraveledHour число Час Стоимость эксплуатации транспортного средства в час только во время движения, за исключением времени ожидания, посещения и перерывов. В этом случае более быстрые маршруты будут показываться выше, чем более короткие.

Примеры

В этом разделе рассматриваются три типа примеров:

  • Примеры кода, иллюстрирующие структуру свойств модели затрат.
  • Пример сценария, в котором показано, как использовать свойства модели стоимости для достижения бизнес-цели.
  • Пример запроса, который включает значения, заданные в примере сценария.

Примеры кода

В приведенном ниже фрагменте кода показана структура свойств модели цены в объекте Shipment:

{
  "model": {
    "shipments": [ ...
      {
        "penaltyCost": PENALTY_COST
      }
    ],
    "vehicles": [ ...
    ]
  }
}

В приведенном ниже фрагменте кода показана структура свойств модели цены в объекте Vehicle:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "fixedCost": FIXED_COST,
        "costPerKilometer": KILOMETER_COST,
        "costPerHour": HOUR_COST,
        "costPerTraveledHour": TRAVELED_HOUR_COST
      }
    ]
  }
}

Пример

В этом разделе описывается сценарий, в котором у вас есть бизнес по уходу за собаками. Вы оптимизируете маршрут для грузовика, на котором забираете собак из домов. В этом сценарии вы хотите, чтобы оптимизатор учитывал расходы, связанные с забором собак и эксплуатацией транспортных средств, при предоставлении маршрута.

В этом примере одна единица стоимости равна одному доллару. Это означает, что значения свойств модели расчета стоимости в вашем запросе следующие:

Свойство Значение Сценарий
penaltyCost 10 Штраф, который вы предлагаете клиентам за то, что они не забрали собаку в назначенный день. Если вы не забираете собаку в запланированный день, клиент получает скидку в размере 40 долларов от общей стоимости услуги.
fixedCost 30 Представляет собой ежедневную стоимость платежей по кредиту на автомобиль, которая составляет 30 долларов в день.
costPerKilometer 0,08 Показывает, сколько бензина тратит ваш автомобиль на километр. Вашему автомобилю требуется 0,04 галлона на километр, а стоимость галлона в вашем регионе составляет 2 доллара.
costPerHour 27 Сумма, которую вы платите водителю за управление вашим транспортным средством. Вы платите водителю 27 долларов в час.
costPerTraveledHour 2.5 Сумма, которую вам придется платить за кондиционер в автомобиле в час, пока вы едете с собаками. Когда автомобиль не движется, водитель может открыть задние двери и выключить кондиционер.

Основываясь на параметрах стоимости, оптимизатор может находить компромиссные решения, которые не очевидны для пользователя, но могут быть найдены в процессе оптимизации.

На следующей диаграмме показан пример, когда оптимизатор может выбрать более длинный, но более быстрый маршрут (зеленая пунктирная линия), чтобы объехать пробки (красная пунктирная линия).

У автомобиля есть два возможных маршрута: один, представленный зеленой пунктирной линией, длиннее, но на нем нет никаких инцидентов, а другой, представленный красной пунктирной линией, короче, но в его середине произошла автомобильная авария.

В этом случае баланс расходов на двух маршрутах будет следующим:

  • Зеленая пунктирная линия имеет низкие значения costPerHour и costPerTraveledHour, поскольку это быстрый маршрут в объезд пробок, который более экономичен, даже если costPerKilometer высок.

  • Красная пунктирная линия имеет низкий показатель costPerKilometer, поскольку это прямой маршрут, но costPerHour и costPerTraveledHour слишком высоки из-за времени ожидания в пробках, что делает его самым дорогим маршрутом.

Помимо экономически эффективных маршрутов, оптимизатор также предоставляет сумму общих затрат на маршруты доставки в свойствах ответа.

Пример запроса

В примере ниже показана структура простого запроса optimizeTours с учетом значений, заданных в примере сценария:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
        "penaltyCost": 40
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "fixedCost": 30,
        "costPerKilometer": 0.08,
        "costPerHour": 27,
        "costPerTraveledHour": 2.5
      }
    ]
  }
}

Свойства ответа

В сообщении OptimizeToursResponse есть свойства стоимости, которые описывают затраты, понесенные в процессе прохождения маршрута:

  • metrics.costs – общая стоимость всех маршрутов с разбивкой по полям запроса, связанным со стоимостью.
  • metrics.totalCost – общая стоимость всех маршрутов.