Оформить заявку со стоимостью загрузки

Запросите стоимость загрузки, чтобы оптимизатор учитывал загрузку ваших транспортных средств между поездками. Стоимость зависит как от объёма перевозимого груза ShipmentRoute.VehicleLoad , так и от расстояния или длительности поездки (с использованием cost_per_kilometer или cost_per_traveled_hour соответственно).

Минимальный пример запроса с учетом стоимости загрузки

Вот частичный пример запроса со стоимостью загрузки. В этом примере одно транспортное средство может перевозить не более 1000 кг груза weightKg , что влечет за собой 1 единицу стоимости за километр, если перевозимый weightKg груза превышает 500 кг.

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightKg": {
            "maxLoad": "1000",
            "costPerKilometer": {
              "loadThreshold": "500",
              "costPerUnitAboveThreshold": 1
            }
          }
        }
      }]
    }
  }
  

Расчет стоимости загрузки для этого примера выглядит следующим образом:

cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold

Таким образом, если транспортное средство перевозит груз weightKg 600 кг на расстояние в 10 километров, расчет будет следующим:

(600 - 500) * 10 * 1 = 1000 cost units

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

Еще один пример запроса с учетом стоимости загрузки

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

  {
    "model": {
      "vehicles": [{
        "loadLimits": {
          "weightLbs": {
            "maxLoad": "1000",
            "costPerTraveledHour": {
              "loadThreshold": "900",
              "costPerUnitAboveThreshold": 10,
              "costPerUnitBelowThreshold": 1
            },
          },
        }
      }]
    }
  }
  

Расчет стоимости загрузки для этого примера выглядит следующим образом:

cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
  + min(carried load, load threshold) * time * cost per unit below threshold

Таким образом, если транспортное средство перевозит груз weightLbs 950 фунтов в течение 5 часов, расчет будет следующим:

max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000

В этом примере значение load_threshold для стоимости груза weightLbs близко к max_load . Значение cost_per_unit_above_threshold устанавливает высокую стоимость за час пути, когда транспортное средство движется с особенно большой нагрузкой, что негативно сказывается на маршрутах, которые могут привести к повышенному износу транспортного средства или перерасходу топлива. cost_per_unit_below_threshold добавляет стоимость за единицу веса, перевозимого транспортным средством, к пороговому значению, что соответствует увеличению расхода топлива при увеличении нагрузки.

Часто задаваемые вопросы

Вот некоторые часто задаваемые вопросы о стоимости погрузки:

Вопрос Отвечать
Где указать стоимость погрузки? Укажите стоимость загрузки в Vehicle.LoadLimit .
Как соотносятся затраты на погрузку и отгрузки? Стоимость загрузки применяется к грузам, тип загрузки которых соответствует типу ограничения загрузки транспортного средства, например, весу или объёму. Типы загрузки представляют собой произвольные строки, как описано в разделе «Требования и ограничения загрузки» .
Как выражаются затраты на погрузку? Стоимость груза выражается в единицах расстояния или продолжительности перевозки. Для указания стоимости в единицах расстояния используйте cost_per_kilometer , а для указания стоимости в единицах продолжительности — cost_per_traveled_hour .
Когда применяются затраты на погрузку? Загрузка транспортного средства сравнивается со значением load_threshold стоимости загрузки. Если указано cost_per_unit_above_threshold , стоимость добавляется пропорционально загрузке транспортного средства выше load_threshold по формуле max(0, load - load_threshold) . Если указано значение cost_per_unit_below_threshold , стоимость добавляется пропорционально загрузке транспортного средства ниже load_threshold по формуле min(load, load_threshold) .
Каковы значения по умолчанию для параметров стоимости загрузки? load_threshold , cost_per_unit_above_threshold и cost_per_unit_below_threshold по умолчанию равны нулю.
В каких единицах выражается стоимость груза? Стоимость загрузки выражается в тех же безразмерных единицах, что и все остальные параметры стоимости, такие как global_duration_cost_per_hour или Shipment.penalty_cost .
Где я могу найти стоимость загрузки в ответе? Понесенные затраты на погрузку отображаются в свойствах metrics и route_metrics ответных сообщений. Например, понесенные cost_per_kilometer будут отображаться как model.vehicles.load_limits.cost_per_kilometer .

Подробное объяснение стоимости загрузки см. в справочной документации ( REST , gRPC ).

Пример: сделайте запрос OptimizeTours

Запросы OptimizeTours также можно делать с использованием REST или gRPC .

Перед созданием запроса замените следующие параметры на значения, соответствующие вашей среде:

  • Убедитесь, что у вас настроены учетные данные приложения по умолчанию , как описано в разделе Использование OAuth .
  • Задайте PROJECT_NUMBER_OR_ID в качестве номера или идентификатора вашего облачного проекта.

    Следующая команда отправляет запрос OptimizeTours в API оптимизации маршрутов и синхронно получает ответ.

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- << EOM
    {
      "model": {
        "shipments": [
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789456,
                  "longitude": -122.390192
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 100.0,
            "loadDemands": {
              "weightKg": {
                "amount": 50
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.789116,
                  "longitude": -122.395080
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 30.0,
            "loadDemands": {
              "weightKg": {
                "amount": 10
              }
            }
          },
          {
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.795242,
                  "longitude": -122.399347
                },
                "duration": "250s"
              }
            ],
            "penaltyCost": 50.0,
            "loadDemands": {
              "weightKg": {
                "amount": 80
              }
            }
          }
        ],
        "vehicles": [
          {
            "endLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "startLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "costPerHour": 40.0,
            "costPerKilometer": 10.0,
            "loadLimits": {
              "weightKg": {
                "maxLoad": "100",
                "costPerKilometer": {
                  "loadThreshold": "15",
                  "costPerUnitAboveThreshold": 1
                }
              }
            }
          }
        ]
      }
    }
    EOM

После завершения запроса вы получите ответное сообщение.