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

Свойства стоимости определяются в 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 – общая стоимость всех маршрутов.