Содержание
RouteOptimization(интерфейс)AggregatedMetrics(сообщение)BatchOptimizeToursMetadata(сообщение)BatchOptimizeToursRequest(сообщение)BatchOptimizeToursRequest.AsyncModelConfig(сообщение)BatchOptimizeToursResponse(сообщение)BreakRule(сообщение)BreakRule.BreakRequest(сообщение)BreakRule.FrequencyConstraint(сообщение)DataFormat(перечисление)DistanceLimit(сообщение)GcsDestination(сообщение)GcsSource(сообщение)InjectedSolutionConstraint(сообщение)InjectedSolutionConstraint.ConstraintRelaxation(сообщение)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(сообщение)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(перечисление)InputConfig(сообщение)Location(сообщение)OptimizeToursLongRunningMetadata(сообщение)OptimizeToursRequest(сообщение)OptimizeToursRequest.SearchMode(перечисление)OptimizeToursRequest.SolvingMode(перечисление)OptimizeToursResponse(сообщение)OptimizeToursResponse.Metrics(сообщение)OptimizeToursUriMetadata(сообщение)OptimizeToursUriRequest(сообщение)OptimizeToursUriResponse(сообщение)OptimizeToursValidationError(сообщение)OptimizeToursValidationError.FieldReference(сообщение)OutputConfig(сообщение)RouteModifiers(сообщение)Shipment(сообщение)Shipment.Load(сообщение)Shipment.VisitRequest(сообщение)ShipmentModel(сообщение)ShipmentModel.DurationDistanceMatrix(сообщение)ShipmentModel.DurationDistanceMatrix.Row(сообщение)ShipmentModel.Objective(сообщение)ShipmentModel.Objective.Type(перечисление)ShipmentModel.PrecedenceRule(сообщение)ShipmentRoute(сообщение)ShipmentRoute.Break(сообщение)ShipmentRoute.EncodedPolyline(сообщение)ShipmentRoute.Transition(сообщение)ShipmentRoute.VehicleLoad(сообщение)ShipmentRoute.Visit(сообщение)ShipmentRoute.Visit.VisitType(перечисление)ShipmentTypeIncompatibility(сообщение)ShipmentTypeIncompatibility.IncompatibilityMode(перечисление)ShipmentTypeRequirement(сообщение)ShipmentTypeRequirement.RequirementMode(перечисление)SkippedShipment(сообщение)SkippedShipment.Reason(сообщение)SkippedShipment.Reason.Code(перечисление)TimeWindow(сообщение)TransitionAttributes(сообщение)Uri(сообщение)Vehicle(сообщение)Vehicle.DurationLimit(сообщение)Vehicle.LoadLimit(сообщение)Vehicle.LoadLimit.Interval(сообщение)Vehicle.LoadLimit.LoadCost(сообщение)Vehicle.TravelMode(перечисление)Vehicle.UnloadingPolicy(перечисление)VehicleFullness(сообщение)Waypoint(сообщение)
RouteOptimization
Сервис для оптимизации маршрутов транспортных средств.
Проверка определенных типов полей:
google.protobuf.Timestamp- Время указывается в формате Unix-времени: количество секунд, прошедших с 1 января 1970 г. 00:00:00+00:00.
- Значение seconds должно находиться в диапазоне [0, 253402300799], то есть в диапазоне [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- Значение nanos должно быть не задано или равно 0.
google.protobuf.Duration- Значение seconds должно находиться в диапазоне [0, 253402300799], то есть в диапазоне [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- Значение nanos должно быть не задано или равно 0.
google.type.LatLng- Широта должна быть в диапазоне [-90,0, 90,0].
- Долгота должна быть в диапазоне [-180.0, 180.0].
- По крайней мере одно из значений широты и долготы должно быть ненулевым.
| BatchOptimizeTours |
|---|
|
Оптимизирует маршруты транспортных средств для одного или нескольких сообщений Этот метод представляет собой продолжительную операцию. Входные данные для оптимизации (сообщения Пользователь может запрашивать Если поле LRO Если поле
|
| OptimizeTours |
|---|
|
Отправляет Модель Цель состоит в том, чтобы назначить
|
| OptimizeToursLongRunning |
|---|
|
Это вариант метода Возвращенный объект
|
| OptimizeToursUri |
|---|
|
Это вариант метода Клиент указывает URI Этот метод предпочтительнее, чем Возвращенный объект
|
AggregatedMetrics
Агрегированные показатели для ShipmentRoute (или OptimizeToursResponse) по всем элементам Transition и/или Visit (или по всем элементам ShipmentRoute).
| Поля | |
|---|---|
performed_shipment_count |
Количество выполненных отправок. Обратите внимание, что пара "забор – доставка" учитывается только один раз. |
travel_duration |
Общая продолжительность поездки по маршруту или решению. |
wait_duration |
Общая продолжительность ожидания для маршрута или решения. |
delay_duration |
Общая продолжительность задержки для маршрута или решения. |
break_duration |
Общая продолжительность перерывов для маршрута или решения. |
visit_duration |
Общая продолжительность посещений для маршрута или решения. |
total_duration |
Общая продолжительность должна быть равна сумме всех указанных выше значений. Для маршрутов это также соответствует: |
travel_distance_meters |
Общее расстояние для маршрута или решения. |
max_loads |
Максимальная нагрузка, достигнутая на всем маршруте (или решении), для каждого из количеств на этом маршруте (или решении), рассчитанная как максимум по всем |
performed_mandatory_shipment_count |
Количество выполненных обязательных поставок. Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
performed_shipment_penalty_cost_sum |
Сумма Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
BatchOptimizeToursMetadata
У этого типа нет полей.
Метаданные операции для вызовов BatchOptimizeToursRequest.
BatchOptimizeToursRequest
Запрос на пакетную оптимизацию маршрутов в качестве асинхронной операции. Каждый входной файл должен содержать один объект OptimizeToursRequest, а каждый выходной файл – один объект OptimizeToursResponse. Запрос содержит информацию для чтения, записи и анализа файлов. Все входные и выходные файлы должны находиться в одном проекте.
| Поля | |
|---|---|
parent |
Обязательно. Целевой проект и местоположение для вызова. Формат:
Региональные значения |
model_configs[] |
Обязательно. Входные и выходные данные для каждой модели покупок, например пути к файлам и форматы данных. |
AsyncModelConfig
Информация для асинхронного решения одной модели оптимизации.
| Поля | |
|---|---|
display_name |
Необязательное поле. Название модели, заданное пользователем. Может использоваться как псевдоним для отслеживания моделей. |
input_config |
Обязательно. Информация о входной модели. |
output_config |
Обязательно. Информация о желаемом местоположении выходных данных. |
BatchOptimizeToursResponse
У этого типа нет полей.
Ответ на BatchOptimizeToursRequest. Возвращается в продолжительной операции после ее завершения.
BreakRule
Правила создания перерывов для транспортного средства (например, обеденных перерывов). Перерыв – это непрерывный период времени, в течение которого транспортное средство остается без движения в текущем положении и не может выполнять никаких посещений. Перерыв может произойти:
- во время поездки между двумя посещениями (включая время непосредственно до или после посещения, но не в середине посещения), и в этом случае оно продлевает соответствующее время транспортировки между посещениями;
- или до начала движения транспортного средства (транспортное средство не может начать движение в середине перерыва), и в этом случае это не влияет на время начала движения транспортного средства.
- или после окончания поездки (то же самое, но со временем окончания поездки).
| Поля | |
|---|---|
break_requests[] |
Последовательность рекламных пауз. Посмотрите сообщение |
frequency_constraints[] |
Может применяться несколько |
BreakRequest
Последовательность перерывов (их количество и порядок), которые применяются к каждому транспортному средству, должна быть известна заранее. Повторяющиеся поля BreakRequest определяют последовательность и порядок, в котором должны происходить события. Их временные окна (earliest_start_time / latest_start_time) могут перекрываться, но они должны быть совместимы с заказом (это проверяется).
| Поля | |
|---|---|
earliest_start_time |
Обязательно. Нижняя граница (включительно) начала перерыва. |
latest_start_time |
Обязательно. Верхняя граница (включительно) начала перерыва. |
min_duration |
Обязательно. Минимальная длительность рекламной паузы. Значение должно быть положительным. |
FrequencyConstraint
Вы можете дополнительно ограничить частоту и продолжительность перерывов, указанных выше, установив минимальную частоту перерывов, например "Каждые 12 часов должен быть перерыв не менее 1 часа". Если это можно интерпретировать как "В течение любого скользящего временного окна продолжительностью 12 часов должен быть хотя бы один перерыв продолжительностью не менее одного часа", то этот пример будет преобразован в следующий FrequencyConstraint:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Время и продолжительность перерывов в решении будут учитывать все такие ограничения, в дополнение к временным окнам и минимальной продолжительности, уже указанным в BreakRequest.
На практике FrequencyConstraint может применяться к непоследовательным перерывам. Например, следующее расписание соответствует примеру "1 час каждые 12 часов":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| Поля | |
|---|---|
min_break_duration |
Обязательно. Минимальная длительность рекламной паузы для этого ограничения. Неотрицательное число. Посмотреть описание комнаты " |
max_inter_break_duration |
Обязательно. Максимально допустимая продолжительность любого интервала времени на маршруте, который не включает хотя бы частично перерыв |
DataFormat
Форматы данных для входных и выходных файлов.
| Перечисления | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
Недопустимое значение. Формат не должен быть UNSPECIFIED. |
JSON |
JavaScript Object Notation. |
PROTO_TEXT |
Текстовый формат буферов протокола. Подробнее: https://protobuf.dev/reference/protobuf/textformat-spec/. |
DistanceLimit
Ограничение, определяющее максимальное расстояние, которое можно преодолеть. Она может быть жесткой или мягкой.
Если задано мягкое ограничение, то должны быть определены и soft_max_meters, и cost_per_kilometer_above_soft_max, причем их значения должны быть неотрицательными.
| Поля | |
|---|---|
max_meters |
Строгое ограничение, согласно которому расстояние не должно превышать max_meters. Лимит должен быть неотрицательным. |
soft_max_meters |
Мягкое ограничение не устанавливает максимальное расстояние, но при его нарушении к другим расходам, определенным в модели, добавляются дополнительные расходы в той же единице измерения. Если задано, значение soft_max_meters должно быть меньше max_meters и быть неотрицательным. |
cost_per_kilometer_below_soft_max |
Цена за километр увеличивается до Эта цена не поддерживается в |
cost_per_kilometer_above_soft_max |
Цена за километр, если расстояние превышает Стоимость не может быть отрицательной. |
GcsDestination
Местоположение в Google Cloud Storage, куда будут записываться выходные файлы.
| Поля | |
|---|---|
uri |
Обязательно. URI Google Cloud Storage. |
GcsSource
Местоположение в Google Cloud Storage, откуда будет считываться входной файл.
| Поля | |
|---|---|
uri |
Обязательно. URI объекта Google Cloud Storage в формате |
InjectedSolutionConstraint
Решение, добавленное в запрос, включая информацию о том, какие посещения должны быть ограничены и как.
| Поля | |
|---|---|
routes[] |
Маршруты решения, которые нужно добавить. Некоторые маршруты могут быть исключены из исходного решения. Маршруты и пропущенные отправления должны соответствовать базовым предположениям о допустимости, перечисленным для |
skipped_shipments[] |
Пропущенные отправления решения, которые нужно добавить. Некоторые из них могут быть опущены в исходном решении. См. поле |
constraint_relaxations[] |
Для нуля или более групп транспортных средств указывает, когда и насколько ослабить ограничения. Если это поле пустое, все непустые маршруты транспортных средств полностью ограничены. |
ConstraintRelaxation
Для группы транспортных средств указывает, при каких пороговых значениях ограничения на посещения будут смягчены и до какого уровня. Перевозки, указанные в поле skipped_shipment, пропускаются, то есть не выполняются.
| Поля | |
|---|---|
relaxations[] |
Все ослабления ограничений на посещения, которые будут применяться к посещениям на маршрутах с транспортными средствами в |
vehicle_indices[] |
Указывает индексы транспортных средств, к которым применяется ограничение посещения Индекс транспортного средства сопоставляется так же, как |
Релаксация
Если relaxations пуст, время начала и последовательность всех посещений на routes полностью ограничены, и в эти маршруты нельзя вставить или добавить новые посещения. Кроме того, время начала и окончания работы транспортного средства в routes полностью ограничено, если только транспортное средство не пустое (то есть не имеет посещений и в модели для used_if_route_is_empty установлено значение false).
relaxations(i).level указывает уровень ослабления ограничений, применяемый к посещению #j, которое удовлетворяет следующим условиям:
route.visits(j).start_time >= relaxations(i).threshold_timeИj + 1 >= relaxations(i).threshold_visit_count
Аналогично, время начала маршрута транспортного средства может быть изменено на relaxations(i).level, если выполняются следующие условия:
vehicle_start_time >= relaxations(i).threshold_timeИrelaxations(i).threshold_visit_count == 0, а время окончания работы транспортного средства – доrelaxations(i).level, если выполняется следующее условие:vehicle_end_time >= relaxations(i).threshold_timeИroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Чтобы применить уровень смягчения, если посещение соответствует threshold_visit_count ИЛИ threshold_time, добавьте два relaxations с одинаковым level: один с заданным threshold_visit_count, а другой – с заданным threshold_time. Если посещение соответствует условиям нескольких relaxations, применяется наименее строгий уровень. В результате от начала транспортного средства до посещений маршрута в порядке до конца транспортного средства уровень релаксации становится более расслабленным: то есть уровень релаксации не снижается по мере продвижения маршрута.
Время и последовательность посещений маршрута, которые не соответствуют пороговым условиям любого relaxations, полностью ограничены, и в эти последовательности нельзя вставлять посещения. Кроме того, если начало или конец маршрута транспортного средства не удовлетворяет условиям какого-либо послабления, время фиксируется, если только транспортное средство не пустое.
| Поля | |
|---|---|
level |
Уровень смягчения ограничений, который применяется, когда выполняются условия в |
threshold_time |
Время, в которое или после которого может быть применено смягчение |
threshold_visit_count |
Количество посещений, после которого может быть применено смягчение Если это |
Уровень
Выражает различные уровни ослабления ограничений, которые применяются к посещению и последующим посещениям, когда оно удовлетворяет пороговым условиям.
Ниже они перечислены в порядке убывания строгости.
| Перечисления | |
|---|---|
LEVEL_UNSPECIFIED |
Неявный уровень ослабления по умолчанию: ограничения не ослабляются, то есть все посещения полностью ограничены. Это значение не должно явно использоваться в |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Время начала посещения и время начала/окончания работы транспортного средства будут смягчены, но каждое посещение останется привязанным к одному и тому же транспортному средству, и необходимо соблюдать последовательность посещений: между ними или перед ними нельзя вставлять другие посещения. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
То же, что и RELAX_VISIT_TIMES_AFTER_THRESHOLD, но последовательность посещений также нестрогая: посещения могут выполняться только этим транспортным средством, но могут и не выполняться. |
RELAX_ALL_AFTER_THRESHOLD |
То же, что и RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, но транспортное средство также не ограничено: посещения полностью бесплатны в пороговое время или после него и потенциально могут не выполняться. |
InputConfig
Укажите входные данные для [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Поля | |
|---|---|
data_format |
Обязательно. Формат входных данных. |
Объединенное поле source. Обязательно. source может иметь одно из следующих значений: |
|
gcs_source |
Местоположение в Google Cloud Storage. Это должен быть один объект (файл). |
Местоположение
Инкапсулирует местоположение (географическую точку и необязательный заголовок).
| Поля | |
|---|---|
lat_lng |
Географические координаты путевой точки. |
heading |
Направление движения по компасу. Это значение используется, чтобы указать сторону дороги, на которой нужно забрать или высадить пассажира. Значения направления могут быть от 0 до 360, где 0 – это север, 90 – восток и т. д. |
OptimizeToursLongRunningMetadata
У этого типа нет полей.
Метаданные операции для вызовов OptimizeToursLongRunning.
OptimizeToursRequest
Запрос, который нужно передать решателю оптимизации поездок. Он определяет модель доставки, которую нужно решить, а также параметры оптимизации.
| Поля | |
|---|---|
parent |
Обязательно. Выберите проект или местоположение, чтобы позвонить. Формат:
Региональные значения |
timeout |
Если задано время ожидания, сервер возвращает ответ до истечения этого времени или до достижения крайнего срока для синхронных запросов (в зависимости от того, что наступит раньше). Для асинхронных запросов сервер генерирует решение (если возможно) до истечения времени ожидания. |
model |
Модель доставки, которую нужно решить. |
solving_mode |
По умолчанию используется режим |
search_mode |
Режим поиска, использованный для выполнения запроса. |
injected_first_solution_routes[] |
Направьте алгоритм оптимизации на поиск первого решения, похожего на предыдущее. Модель ограничивается при построении первого решения. Все доставки, не выполненные по маршруту, неявно пропускаются в первом решении, но могут быть выполнены в последующих решениях. Решение должно соответствовать некоторым базовым предположениям о валидности:
Если внедренное решение невыполнимо, ошибка проверки не обязательно возвращается, вместо нее может быть возвращена ошибка, указывающая на невыполнимость. |
injected_solution_constraint |
Ограничить алгоритм оптимизации, чтобы найти окончательное решение, похожее на предыдущее. Например, это может быть полезно, чтобы зафиксировать части маршрутов, которые уже пройдены или которые должны быть пройдены, но не должны изменяться. Если внедренное решение невыполнимо, ошибка проверки не обязательно возвращается, вместо нее может быть возвращена ошибка, указывающая на невыполнимость. |
refresh_details_routes[] |
Если поле не пустое, указанные маршруты будут обновлены без изменения последовательности посещений или времени в пути. Будут обновлены только другие сведения. Это не решает модель. По состоянию на ноябрь 2020 года это поле заполняет только ломаные линии непустых маршрутов и требует, чтобы для Поля Это поле нельзя использовать вместе с Правила |
interpret_injected_solutions_using_labels |
Если значение true:
Такая интерпретация применяется к полям Если задано значение true, ярлыки из следующих категорий должны появляться в своей категории не более одного раза:
Если Удаление посещений или целых маршрутов из внедренного решения может повлиять на подразумеваемые ограничения, что может привести к изменению решения, ошибкам проверки или невыполнимости. ПРИМЕЧАНИЕ. Вызывающий абонент должен убедиться, что каждый |
consider_road_traffic |
Учитывайте оценку трафика при расчете полей |
populate_polylines |
Если задано значение true, в ответе |
populate_transition_polylines |
Если задано значение true, в ответе |
allow_large_deadline_despite_interruption_risk |
Если это значение задано, то у запроса может быть крайний срок (см. https://grpc.io/blog/deadlines) до 60 минут. В противном случае максимальный срок составляет 30 минут. Обратите внимание, что у долгосрочных запросов риск прерывания значительно выше, хотя и остается небольшим. |
use_geodesic_distances |
Если задано значение true, расстояния будут рассчитываться по геодезическим линиям, а не по Google Картам, а время в пути – по геодезическим линиям со скоростью, заданной в поле |
label |
Ярлык, который можно использовать для идентификации этого запроса, возвращаемый в |
geodesic_meters_per_second |
Если для параметра |
max_validation_errors |
Ограничивает количество возвращаемых ошибок проверки. Обычно эти ошибки прикрепляются к полезной нагрузке ошибки INVALID_ARGUMENT как сведения об ошибке BadRequest (https://cloud.google.com/apis/design/errors#error_details)), если только solving_mode=VALIDATE_ONLY: см. поле |
SearchMode
Режим, определяющий поведение поиска, компромисс между задержкой и качеством решения. Во всех режимах применяется глобальный срок выполнения запроса.
| Перечисления | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
Режим поиска не указан. Эквивалентно RETURN_FAST. |
RETURN_FAST |
Остановить поиск после нахождения первого хорошего решения. |
CONSUME_ALL_AVAILABLE_TIME |
Потратить все доступное время на поиск лучших решений |
SolvingMode
Определяет, как решатель должен обрабатывать запрос. Во всех режимах, кроме VALIDATE_ONLY, если запрос недействителен, вы получите ошибку INVALID_REQUEST. Чтобы ограничить количество возвращаемых ошибок, используйте параметр max_validation_errors.
| Перечисления | |
|---|---|
DEFAULT_SOLVE |
Решите модель. Предупреждения могут быть выданы в [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Только проверяет модель, не решая ее: заполняет как можно больше OptimizeToursResponse.validation_errors. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Заполняет только Важно! Здесь возвращаются не все невыполнимые доставки, а только те, которые были обнаружены во время предварительной обработки. |
TRANSFORM_AND_RETURN_REQUEST |
Этот режим работает, только если поле Экспериментальная функция. Подробнее: https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
OptimizeToursResponse
Ответ после решения задачи оптимизации тура, содержащий маршруты, по которым следует каждое транспортное средство, пропущенные поставки и общую стоимость решения.
| Поля | |
|---|---|
routes[] |
Маршруты, рассчитанные для каждого транспортного средства; i-й маршрут соответствует i-му транспортному средству в модели. |
request_label |
Копия |
skipped_shipments[] |
Список всех пропущенных отправлений. |
validation_errors[] |
Список всех ошибок проверки, которые мы смогли обнаружить самостоятельно. Ознакомьтесь с объяснением сообщения |
processed_request |
В некоторых случаях мы изменяем входящий запрос, прежде чем решить его, например добавляем расходы. Если solving_mode == TRANSFORM_AND_RETURN_REQUEST, здесь возвращается измененный запрос. Экспериментальная функция. Подробнее: https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
metrics |
Показатели продолжительности, расстояния и использования для этого решения. |
Показатели
Общие показатели, агрегированные по всем маршрутам.
| Поля | |
|---|---|
aggregated_route_metrics |
Агрегированные данные по маршрутам. Каждый показатель представляет собой сумму (или максимальное значение для загрузок) по всем полям |
skipped_mandatory_shipment_count |
Количество пропущенных обязательных поставок. |
used_vehicle_count |
Количество используемых транспортных средств. Примечание. Если маршрут транспортного средства пуст и для параметра |
earliest_vehicle_start_time |
Самое раннее время начала для используемого транспортного средства, вычисляемое как минимальное значение по всем используемым транспортным средствам |
latest_vehicle_end_time |
Последнее время окончания для используемого транспортного средства, вычисляемое как максимальное значение по всем используемым транспортным средствам |
costs |
Стоимость решения с разбивкой по полям запроса, связанным со стоимостью. Ключи – это пути прототипа, относящиеся к входному OptimizeToursRequest, например model.shipments.pickups.cost, а значения – это общая стоимость, сгенерированная соответствующим полем стоимости, агрегированная по всему решению. Другими словами, costs["model.shipments.pickups.cost"] – это сумма всех стоимостей самовывоза в решении. Все расходы, определенные в модели, подробно описаны здесь, за исключением расходов, связанных с TransitionAttributes, которые по состоянию на январь 2022 года представлены только в агрегированном виде. |
total_cost |
Общая стоимость решения. Сумма всех значений на карте расходов. |
OptimizeToursUriMetadata
У этого типа нет полей.
Метаданные операции для вызовов OptimizeToursUri.
OptimizeToursUriRequest
Запрос, используемый методом OptimizeToursUri.
| Поля | |
|---|---|
parent |
Обязательно. Выберите проект или местоположение, чтобы позвонить. Формат:
Региональные значения |
input |
Обязательно. URI объекта Cloud Storage, содержащего |
output |
Обязательно. URI объекта Cloud Storage, который будет содержать |
OptimizeToursUriResponse
Ответ, возвращенный методом OptimizeToursUri.
| Поля | |
|---|---|
output |
Необязательное поле. URI объекта Cloud Storage, содержащего
|
OptimizeToursValidationError
Описывает ошибку или предупреждение, возникшие при проверке OptimizeToursRequest.
| Поля | |
|---|---|
code |
Ошибка проверки определяется парой ( Поля после этого раздела содержат дополнительную информацию об ошибке. Несколько ошибок. Если ошибок несколько, в процессе проверки система пытается вывести несколько из них. Как и в случае с компилятором, этот процесс не идеален. Некоторые ошибки проверки являются критическими, то есть останавливают весь процесс. Это относится, в частности, к ошибкам Стабильность. |
display_name |
Отображаемое название ошибки. |
fields[] |
Контекст ошибки может включать 0, 1 (в большинстве случаев) или более полей. Например, сослаться на транспортное средство № 4 и первую погрузку отправления № 2 можно следующим образом: Однако обратите внимание, что количество элементов |
error_message |
Человекочитаемая строка, описывающая ошибку. Между СТАБИЛЬНОСТЬ. Нестабильно. Сообщение об ошибке, связанное с определенным значением |
offending_values |
Может содержать значения полей. Эта функция доступна не всегда. Не полагайтесь на него и используйте только для отладки модели вручную. |
FieldReference
Указывает контекст ошибки проверки. FieldReference всегда относится к определенному полю в этом файле и имеет ту же иерархическую структуру. Например, чтобы указать элемент № 2 атрибута start_time_windows для автомобиля № 5, используйте следующий код:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Однако мы опускаем объекты верхнего уровня, такие как OptimizeToursRequest или ShipmentModel, чтобы не перегружать сообщение.
| Поля | |
|---|---|
name |
Название поля, например "vehicles". |
sub_field |
Рекурсивно вложенное подполе (при необходимости). |
Объединенное поле Поле |
|
index |
Индекс поля, если оно повторяется. |
key |
Ключ, если поле является картой. |
OutputConfig
Укажите пункт назначения для результатов [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Поля | |
|---|---|
data_format |
Обязательно. Формат выходных данных. |
Объединенное поле destination. Обязательно. destination может иметь одно из следующих значений: |
|
gcs_destination |
Местоположение в Google Cloud Storage, куда будут записываться выходные данные. |
RouteModifiers
Инкапсулирует набор необязательных условий, которые должны выполняться при расчете маршрутов транспортных средств. Это похоже на RouteModifiers в Routes Preferred API платформы Google Карт. Подробнее: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Поля | |
|---|---|
avoid_tolls |
Указывает, следует ли избегать платных дорог, если это возможно. Предпочтение будет отдаваться маршрутам без платных дорог. Применяется только к моторизованным видам транспорта. |
avoid_highways |
Указывает, следует ли по возможности избегать скоростных шоссе. Предпочтение будет отдаваться маршрутам без шоссе. Применяется только к моторизованным видам транспорта. |
avoid_ferries |
Указывает, следует ли по возможности избегать паромных переправ. Предпочтение будет отдаваться маршрутам без паромных переправ. Применяется только к моторизованным видам транспорта. |
avoid_indoor |
Необязательное поле. Указывает, следует ли по возможности избегать маршрутов внутри помещений. Предпочтение будет отдаваться маршрутам, не содержащим навигацию внутри помещений. Применяется только к способу передвижения |
Доставка
Перевозка одного товара от места получения до места доставки. Чтобы доставка считалась выполненной, уникальное транспортное средство должно посетить одно из мест погрузки (и соответствующим образом уменьшить свою свободную вместимость), а затем посетить одно из мест доставки (и соответствующим образом увеличить свою свободную вместимость).
| Поля | |
|---|---|
display_name |
Отображаемое название отправления, заданное пользователем. Длина названия не должна превышать 63 символа. Можно использовать символы UTF-8. |
pickups[] |
Набор альтернативных вариантов самовывоза, связанных с доставкой. Если не указано, транспортному средству нужно только посетить местоположение, соответствующее доставкам. |
deliveries[] |
Набор альтернативных вариантов доставки, связанных с отправлением. Если не указано, транспортному средству нужно посетить только местоположение, соответствующее местам получения. |
load_demands |
Требования к загрузке груза (например, вес, объем, количество поддонов и т. д.). Ключи в карте должны быть идентификаторами, описывающими тип соответствующей нагрузки, в идеале также включая единицы измерения. Например, weight_kg, volume_gallons, pallet_count и т. д. Если заданный ключ не появляется на карте, соответствующая нагрузка считается нулевой. |
allowed_vehicle_indices[] |
Набор транспортных средств, которые могут выполнить эту доставку. Если оставить поле пустым, то все транспортные средства смогут выполнять эту задачу. Транспортные средства указываются по их индексу в списке |
costs_per_vehicle[] |
Указывает стоимость, которая возникает, когда эта поставка доставляется каждым транспортным средством. Если оно указано, то должно содержать ОДНО из следующих значений:
Эти расходы должны быть указаны в той же валюте, что и |
costs_per_vehicle_indices[] |
Индексы транспортных средств, к которым применяется |
pickup_to_delivery_absolute_detour_limit |
Указывает максимальное абсолютное время объезда по сравнению с кратчайшим путем от места посадки до места высадки. Если указано, оно должно быть неотрицательным, а отправка должна содержать как минимум самовывоз и доставку. Например, пусть t – это кратчайшее время, необходимое для перехода от выбранной альтернативы самовывоза непосредственно к выбранной альтернативе доставки. Тогда параметр Если для одной и той же перевозки указаны и относительные, и абсолютные ограничения, для каждой возможной пары "забор – доставка" используется более строгое ограничение. По состоянию на октябрь 2017 г. объезды поддерживаются, только если продолжительность поездки не зависит от транспортных средств. |
pickup_to_delivery_time_limit |
Указывает максимальную продолжительность от начала самовывоза до начала доставки отправления. Если указано, оно должно быть неотрицательным, а отправка должна содержать как минимум самовывоз и доставку. Это не зависит от того, какие альтернативы выбраны для получения и доставки, а также от скорости транспортного средства. Это ограничение можно использовать вместе с ограничением на максимальное отклонение от маршрута. В решении будут учтены оба ограничения. |
shipment_type |
Непустая строка, указывающая тип отправления. С помощью этой функции можно задавать несовместимости или требования между Отличается от |
label |
Указывает ярлык для этой отправки. Этот ярлык указывается в ответе в поле |
ignore |
Если true, пропустить эту доставку, но не применять Если в модели есть Игнорирование отправки, выполняемой в |
penalty_cost |
Если доставка не завершена, этот штраф добавляется к общей стоимости маршрутов. Отправка считается завершенной, если посещен один из вариантов получения и доставки. Стоимость может быть выражена в той же единице, что и все остальные поля, связанные со стоимостью, в модели, и должна быть положительной. ВАЖНО! Если штраф не указан, он считается бесконечным, то есть доставка должна быть выполнена. |
pickup_to_delivery_relative_detour_limit |
Указывает максимальное относительное время объезда по сравнению с кратчайшим путем от места посадки до места высадки. Если указано, оно должно быть неотрицательным, а отправка должна содержать как минимум самовывоз и доставку. Например, пусть t – это кратчайшее время, необходимое для перехода от выбранной альтернативы самовывоза непосредственно к выбранной альтернативе доставки. Тогда параметр Если для одной и той же перевозки указаны и относительные, и абсолютные ограничения, для каждой возможной пары "забор – доставка" используется более строгое ограничение. По состоянию на октябрь 2017 г. объезды поддерживаются, только если продолжительность поездки не зависит от транспортных средств. |
Загрузка
При посещении к загрузке транспортного средства может быть добавлено заранее определенное количество, если это погрузка, или вычтено, если это доставка. В этом сообщении указана такая сумма. Посмотрите load_demands.
| Поля | |
|---|---|
amount |
Величина, на которую будет варьироваться нагрузка транспортного средства, выполняющего соответствующее посещение. Поскольку это целое число, пользователям рекомендуется выбрать подходящую единицу измерения, чтобы избежать потери точности. Значение должно быть больше или равно 0. |
VisitRequest
Запрос на посещение, которое может быть выполнено транспортным средством. У него есть одно или два местоположения (см. ниже), время открытия и закрытия, представленное временными окнами, и продолжительность обслуживания (время, которое транспортное средство проводит на месте после прибытия для погрузки или разгрузки товаров).
| Поля | |
|---|---|
arrival_location |
Географическое местоположение, куда прибывает транспортное средство при выполнении этого действия ( |
arrival_waypoint |
Путевая точка, в которую прибывает транспортное средство при выполнении этого действия ( |
departure_location |
Географическое местоположение, из которого транспортное средство отправляется после завершения этого |
departure_waypoint |
Путевая точка, от которой транспортное средство отправляется после завершения этого |
tags[] |
Указывает теги, прикрепленные к запросу на посещение. Пустые или повторяющиеся строки не допускаются. |
time_windows[] |
Временные окна, ограничивающие время прибытия в пункт посещения. Обратите внимание, что транспортное средство может уехать за пределы временного окна прибытия, т.е. время прибытия + продолжительность не обязательно должны находиться внутри временного окна. Если транспортное средство прибудет раньше Если Временные окна не должны пересекаться или примыкать друг к другу. Их следует указывать в порядке возрастания. Поля |
duration |
Продолжительность посещения, то есть время, проведенное транспортным средством между прибытием и отправлением (добавляется к возможному времени ожидания; см. |
cost |
Стоимость обслуживания этого запроса на посещение на маршруте транспортного средства. Это позволяет задавать разные цены для разных вариантов самовывоза или доставки. Единица измерения должна совпадать с единицей измерения |
load_demands |
Загрузить требования этого запроса на посещение. Это поле аналогично полю |
visit_types[] |
Указывает типы посещения. Это значение можно использовать, чтобы выделить дополнительное время, необходимое транспортному средству для завершения посещения (см. Каждый тип может быть указан только один раз. |
label |
Указывает ярлык для этого |
avoid_u_turns |
Указывает, следует ли избегать разворотов на автомобильных маршрутах в этом месте. Мы стараемся избегать разворотов, но не можем гарантировать, что их не будет. Это экспериментальная функция, и ее поведение может измениться. Экспериментальная функция. Подробнее: https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request. |
ShipmentModel
Модель доставки содержит набор поставок, которые должны быть выполнены набором транспортных средств, при этом минимизируется общая стоимость, которая представляет собой сумму:
- стоимость маршрутизации транспортных средств (сумма стоимости за общее время, стоимости за время в пути и фиксированной стоимости для всех транспортных средств).
- штрафы за невыполненную отгрузку.
- стоимость доставки за весь период;
| Поля | |
|---|---|
shipments[] |
Набор отправлений, которые должны быть выполнены в модели. |
vehicles[] |
Набор транспортных средств, которые можно использовать для посещений. |
objectives[] |
Набор целей для этой модели, которые будут преобразованы в затраты. Если он не пустой, входная модель должна быть бесплатной. Чтобы получить измененный запрос, используйте Экспериментальная функция. Подробную информацию можно найти на странице https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
global_start_time |
Глобальное время начала и окончания модели. Время за пределами этого диапазона не считается действительным. Временной диапазон модели должен быть меньше года, то есть разница между При использовании полей |
global_end_time |
Если значение не задано, по умолчанию используется 00:00:00 UTC, 1 января 1971 г. (т. е. seconds: 31536000, nanos: 0). |
global_duration_cost_per_hour |
"Общая продолжительность" плана – это разница между самым ранним временем начала и самым поздним временем окончания для всех транспортных средств. Пользователи могут назначить стоимость за час для этого количества, чтобы попытаться оптимизировать выполнение задания в кратчайшие сроки. Единицы измерения должны совпадать с теми, которые используются в файле |
duration_distance_matrices[] |
Указывает матрицы длительности и расстояния, используемые в модели. Если это поле пустое, то вместо него будут использоваться расстояния, рассчитанные с помощью Google Карт или геодезических методов, в зависимости от значения поля Примеры использования
|
duration_distance_matrix_src_tags[] |
Теги, определяющие источники матриц длительности и расстояния. Теги соответствуют |
duration_distance_matrix_dst_tags[] |
Теги, определяющие пункты назначения матриц продолжительности и расстояния; Теги соответствуют |
transition_attributes[] |
В модель добавлены атрибуты перехода. |
shipment_type_incompatibilities[] |
Наборы несовместимых типов доставки (см. |
shipment_type_requirements[] |
Наборы требований |
precedence_rules[] |
Набор правил приоритета, которые должны соблюдаться в модели. ВАЖНО! Использование правил приоритета ограничивает размер задачи, которую можно оптимизировать. Запросы, в которых используются правила приоритета, включающие много отправлений, могут быть отклонены. |
max_active_vehicles |
Ограничивает максимальное количество активных транспортных средств. Транспортное средство активно, если его маршрут выполняет хотя бы одну перевозку. Это может быть полезно, если водителей меньше, чем транспортных средств, и автопарк неоднороден. Затем оптимизация выберет лучший набор транспортных средств. Значение должно быть строго положительным. |
DurationDistanceMatrix
Указывает матрицу продолжительности и расстояния от начальных местоположений посещений и транспортных средств до конечных местоположений посещений и транспортных средств.
| Поля | |
|---|---|
rows[] |
Определяет строки матрицы продолжительности и расстояния. Количество элементов должно совпадать с количеством элементов в поле |
vehicle_start_tag |
Тег, определяющий, к каким транспортным средствам применяется эта матрица продолжительности и расстояния. Если оставить значение пустым, оно будет применяться ко всем транспортным средствам, и матрица может быть только одна. Каждое начало маршрута должно соответствовать ровно одной матрице, то есть ровно одно поле У всех матриц должны быть разные значения |
Строка
Указывает строку матрицы продолжительности и расстояния.
| Поля | |
|---|---|
durations[] |
Значения продолжительности для заданной строки. Количество элементов должно совпадать с количеством элементов в поле |
meters[] |
Значения расстояния для заданной строки. Если в модели нет расходов или ограничений, связанных с расстояниями, это поле можно оставить пустым. В противном случае в нем должно быть столько же элементов, сколько в поле |
Цель
Цели полностью заменяют модель расходов и поэтому несовместимы с существующими расходами. Каждая цель сопоставляется с рядом предопределенных затрат, например для транспортных средств, отправлений или атрибутов перехода.
Экспериментальная функция. Подробнее: https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.
| Поля | |
|---|---|
type |
Тип цели. |
weight |
Насколько эта цель должна учитываться по сравнению с другими. Это может быть любое неотрицательное число. Сумма весов не обязательно должна быть равна 1. По умолчанию вес равен 1.0. |
Тип
Тип цели, который будет сопоставлен с набором расходов.
| Перечисления | |
|---|---|
DEFAULT |
Чтобы обеспечить приемлемое решение, будет использоваться набор затрат по умолчанию. Примечание.Эту цель можно использовать отдельно, но она также всегда будет добавляться с весом 1, 0 в качестве базовой к целям, указанным пользователем, если она ещё не присутствует. |
MIN_DISTANCE |
"MIN". Минимизировать общее пройденное расстояние. |
MIN_WORKING_TIME |
Минимизируйте общее рабочее время, суммированное по всем транспортным средствам. |
MIN_TRAVEL_TIME |
То же, что и выше, но с акцентом только на время в пути. |
MIN_NUM_VEHICLES |
Минимизировать количество используемых транспортных средств. |
PrecedenceRule
Правило приоритета между двумя событиями (каждое событие – это получение или доставка груза): "второе" событие должно начаться не ранее чем через offset_duration после начала "первого".
Несколько приоритетов могут относиться к одним и тем же (или связанным) событиям, например "забор B происходит после доставки A" и "забор C происходит после забора B".
Кроме того, приоритеты применяются, только если выполняются обе перевозки, и игнорируются в противном случае.
| Поля | |
|---|---|
first_is_delivery |
Указывает, является ли "первое" событие доставкой. |
second_is_delivery |
Указывает, является ли "второе" событие доставкой. |
offset_duration |
Смещение между первым и вторым событием. Значение может быть отрицательным. |
first_index |
Индекс отправления "первого" события. Это поле должно быть заполнено. |
second_index |
Индекс отправления для второго события. Это поле должно быть заполнено. |
ShipmentRoute
Маршрут транспортного средства можно разбить по временной оси следующим образом (предполагается, что посещений n):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Обратите внимание, что мы различаем:
- "точечные события", такие как начало и конец движения транспортного средства, а также начало и конец каждого посещения (прибытие и отправление). Они происходят в определенную секунду.
- "временные интервалы", например сами посещения и переходы между ними. Хотя интервалы времени иногда могут иметь нулевую продолжительность, то есть начинаться и заканчиваться в одну и ту же секунду, часто они имеют положительную продолжительность.
Инварианты:
- Если посещений n, то переходов n+1.
- Посещение всегда окружено переходом до него (тот же индекс) и переходом после него (индекс + 1).
- За запуском автомобиля всегда следует переход № 0.
- Окончанию маршрута всегда предшествует переход #n.
Давайте подробнее рассмотрим, что происходит во время Transition и Visit.
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Наконец, вот как можно организовать ПУТЕШЕСТВИЕ, ПЕРЕРЫВЫ, ЗАДЕРЖКУ и ОЖИДАНИЕ во время перехода.
- Они не перекрывают друг друга.
- Задержка DELAY уникальна и должна быть непрерывным периодом времени непосредственно перед следующим посещением (или окончанием работы транспортного средства). Таким образом, чтобы узнать время начала и окончания задержки, достаточно знать ее продолжительность.
- BREAKS – это смежные, неперекрывающиеся периоды времени. В ответе указано время начала и продолжительность каждого перерыва.
- TRAVEL и WAIT – это прерываемые действия. Они могут прерываться несколько раз во время перехода. Клиенты могут предположить, что поездка происходит "как можно скорее" и что "ожидание" заполняет оставшееся время.
Пример сложного запроса:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| Поля | |
|---|---|
vehicle_index |
Транспортное средство, выполняющее маршрут, идентифицируется по его индексу в источнике |
vehicle_label |
Ярлык транспортного средства, выполняющего этот маршрут, равный |
vehicle_start_time |
Время, когда транспортное средство начинает движение по маршруту. |
vehicle_end_time |
Время, когда транспортное средство завершает маршрут. |
visits[] |
Упорядоченная последовательность посещений, представляющая маршрут. visits[i] – это i-е посещение на маршруте. Если это поле пустое, транспортное средство считается неиспользуемым. |
transitions[] |
Упорядоченный список переходов для маршрута. |
has_traffic_infeasibilities |
Если для поля Прибытие в пункт next_visit, скорее всего, произойдет позже текущего временного окна из-за увеличения расчетного времени в пути ( |
route_polyline |
Представление маршрута в виде закодированной ломаной линии. Это поле заполняется, только если для |
breaks[] |
Перерывы, запланированные для транспортного средства, выполняющего этот маршрут. Последовательность |
metrics |
Продолжительность, расстояние и нагрузка для этого маршрута. Поля |
vehicle_fullness |
Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
route_costs |
Стоимость маршрута с разбивкой по полям запроса, связанным со стоимостью. Ключи – это пути прототипа, относящиеся к входному OptimizeToursRequest, например model.shipments.pickups.cost, а значения – это общая стоимость, сгенерированная соответствующим полем стоимости, агрегированная по всему маршруту. Другими словами, costs["model.shipments.pickups.cost"] – это сумма всех стоимостей самовывоза на маршруте. Все расходы, определенные в модели, подробно описаны здесь, за исключением расходов, связанных с TransitionAttributes, которые по состоянию на январь 2022 года представлены только в агрегированном виде. |
route_total_cost |
Общая стоимость маршрута. Сумма всех расходов на карте расходов. |
Перерыв
Данные о выполнении рекламной паузы.
| Поля | |
|---|---|
start_time |
Время начала рекламной паузы. |
duration |
Продолжительность перерыва. |
EncodedPolyline
Закодированное представление ломаной линии. Дополнительную информацию о кодировании ломаных линий можно найти на страницах https://developers.google.com/maps/documentation/utilities/polylinealgorithm и https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
| Поля | |
|---|---|
points |
Строка, представляющая закодированные точки ломаной линии. |
Переходы
Переход между двумя событиями на маршруте. Ознакомьтесь с описанием ShipmentRoute.
Если у транспортного средства нет start_location и/или end_location, соответствующие показатели поездки равны 0.
| Поля | |
|---|---|
travel_duration |
Продолжительность поездки во время этого перехода. |
travel_distance_meters |
Расстояние, пройденное во время перехода. |
traffic_info_unavailable |
Если информация о трафике запрашивается через |
delay_duration |
Сумма задержек, примененных к этому переходу. Если задержка есть, она начинается ровно за |
break_duration |
Суммарная продолжительность пауз, которые произошли во время этого перехода (если они были). Сведения о времени начала и продолжительности каждой рекламной паузы хранятся в |
wait_duration |
Время ожидания во время этого перехода. Время ожидания соответствует времени простоя и не включает время перерыва. Обратите внимание, что время ожидания может быть разделено на несколько не связанных между собой интервалов. |
total_duration |
Общая продолжительность перехода, указанная для удобства. Она рассчитывается по следующей формуле:
|
start_time |
Время начала перехода. |
route_polyline |
Закодированное представление ломаной линии маршрута, по которому двигался пользователь во время перехода. Это поле заполняется, только если для |
route_token |
Только для вывода. Непрозрачный токен, который можно передать в Navigation SDK, чтобы восстановить маршрут во время навигации и, в случае изменения маршрута, соблюсти исходное намерение при создании маршрута. Этот токен следует рассматривать как непрозрачный объект. Не сравнивайте его значение в разных запросах, так как оно может измениться, даже если сервис возвращает один и тот же маршрут. Это поле заполняется, только если для |
vehicle_loads |
Загрузка транспортного средства во время этого перехода для каждого типа, который либо указан в Нагрузки во время первого перехода – это начальные нагрузки на маршруте транспортного средства. Затем после каждого посещения |
VehicleLoad
Сообщает фактическую загрузку транспортного средства в определенной точке маршрута для заданного типа (см. Transition.vehicle_loads).
| Поля | |
|---|---|
amount |
Степень загруженности транспортного средства указанного типа. Единица измерения нагрузки обычно указывается в типе. Посмотрите |
Перейти
Посещение, выполненное во время маршрута. Это посещение соответствует получению или доставке Shipment.
| Поля | |
|---|---|
shipment_index |
Индекс поля |
is_pickup |
Если значение равно true, посещение соответствует получению |
visit_request_index |
Индекс |
start_time |
Время начала посещения. Обратите внимание, что транспортное средство может прибыть в место посещения раньше этого времени. Время указано в соответствии с |
load_demands |
Общая нагрузка на посещение как сумма отправления и запроса на посещение |
detour |
Дополнительное время объезда из-за посещения пунктов доставки на маршруте до посещения и потенциального времени ожидания, вызванного временными окнами. Если посещение является доставкой, отклонение рассчитывается на основе соответствующего посещения для получения и равно: В противном случае оно вычисляется на основе |
shipment_label |
Копия соответствующего |
visit_label |
Копия соответствующего |
visit_type |
Необязательное поле. Указывает тип посещения. Переопределяет поле |
injected_solution_location_token |
Непрозрачный токен, представляющий информацию о месте посещения. Это поле может быть заполнено в посещениях маршрутов результатов, если для этого посещения для Экспериментальная функция. Подробнее: https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request. |
VisitType
Указывает, является ли посещение самовывозом, доставкой или посещением Stop. Посещения остановок используются, только если включена мультимодальная оптимизация.
| Перечисления | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
Тип посещения не указан. |
PICKUP_SHIPMENT |
Посещение соответствует получению отправления. |
DELIVER_SHIPMENT |
Посещение соответствует доставке груза. |
ShipmentTypeIncompatibility
Указывает на несовместимость между отправлениями в зависимости от их shipment_type. Появление несовместимых отправлений на одном маршруте ограничивается в зависимости от режима несовместимости.
| Поля | |
|---|---|
types[] |
Список несовместимых типов. Две поставки с разными значениями |
incompatibility_mode |
Режим, примененный к несовместимости. |
IncompatibilityMode
Режимы, определяющие, как ограничивается появление несовместимых отправлений на одном маршруте.
| Перечисления | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Неуказанный режим несовместимости. Это значение не должно использоваться. |
NOT_PERFORMED_BY_SAME_VEHICLE |
В этом режиме две доставки несовместимых типов не могут выполняться одним транспортным средством. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
В этом режиме две доставки несовместимых типов не могут находиться в одном транспортном средстве одновременно.
|
ShipmentTypeRequirement
Задает требования к перевозкам на основе их shipment_type. Особенности требования определяются режимом требования.
| Поля | |
|---|---|
required_shipment_type_alternatives[] |
Список альтернативных типов доставки, необходимых для |
dependent_shipment_types[] |
Для всех отправлений с типом в поле ПРИМЕЧАНИЕ. Цепочки требований, в которых |
requirement_mode |
Режим, примененный к требованию. |
RequirementMode
Режимы, определяющие внешний вид зависимых отправлений на маршруте.
| Перечисления | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Режим требования не указан. Это значение не должно использоваться. |
PERFORMED_BY_SAME_VEHICLE |
В этом режиме все "зависимые" отправления должны использовать то же транспортное средство, что и хотя бы одно из их "обязательных" отправлений. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
В режиме Поэтому у зависимого самовывоза должно быть одно из следующих значений:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
То же, что и в предыдущем случае, но зависимые отправления должны находиться в транспортном средстве в момент доставки обязательного отправления. |
SkippedShipment
Указывает сведения о невыполненных доставках в решении. В простых случаях и/или если мы можем определить причину пропуска, мы указываем ее здесь.
| Поля | |
|---|---|
index |
Индекс соответствует индексу отправления в источнике |
label |
Копия соответствующего |
reasons[] |
Список причин, по которым отправка была пропущена. См. комментарий выше |
penalty_cost |
Это копия Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
estimated_incompatible_vehicle_ratio |
Примерное соотношение транспортных средств, которые не могут выполнить эту перевозку по одной или нескольким причинам, указанным ниже. Примечание. Это поле заполняется, только если причина связана с транспортным средством. Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
Причина
Если мы можем объяснить, почему отправка была пропущена, причины будут перечислены здесь. Если причины разные, то в массиве reason будет больше одного элемента. Для пропущенной доставки нельзя указать несколько одинаковых причин, то есть таких, у которых совпадают все поля, кроме example_vehicle_index. Пример:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
Пропущенная доставка несовместима со всеми транспортными средствами. Причины могут быть разными для всех транспортных средств, но по крайней мере у одного транспортного средства будет превышена вместимость "Яблок" (включая транспортное средство 1), по крайней мере у одного транспортного средства будет превышена вместимость "Груш" (включая транспортное средство 3) и по крайней мере у одного транспортного средства будет превышен лимит расстояния (включая транспортное средство 1).
| Поля | |
|---|---|
code |
См. комментарии к коду. |
example_vehicle_indices[] |
То же, что и Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
example_exceeded_capacity_type |
Если код причины – |
example_vehicle_index |
Если причина связана с несовместимостью груза и транспортного средства, в этом поле указывается индекс одного подходящего транспортного средства. |
Код
Код, определяющий тип причины. Порядок здесь не имеет значения. В частности, он не указывает, какая из причин будет показана первой, если применимы обе.
| Перечисления | |
|---|---|
CODE_UNSPECIFIED |
Его не следует использовать. |
NO_VEHICLE |
В модели нет транспортного средства, поэтому все перевозки невыполнимы. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
Требования к доставке превышают вместимость транспортного средства для некоторых типов вместимости, один из которых – example_exceeded_capacity_type. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
Минимальное расстояние, необходимое для выполнения этой перевозки, то есть от Обратите внимание, что для этого вычисления мы используем геодезические расстояния. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
Минимальное время, необходимое для выполнения этой перевозки, включая время в пути, время ожидания и время обслуживания, превышает Примечание. Время в пути рассчитывается для наилучшего сценария, а именно как геодезическое расстояние, умноженное на 36 м/с (примерно 130 км/ч). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
То же, что и выше, но сравнивается только минимальное время в пути и travel_duration_limit транспортного средства. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Транспортное средство не может выполнить эту доставку даже при наилучшем сценарии (см. CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT для расчета времени), если оно начнет движение в самое раннее время начала: общее время приведет к тому, что транспортное средство закончит движение после самого позднего времени окончания. |
VEHICLE_NOT_ALLOWED |
Поле allowed_vehicle_indices отправления не пустое, и это транспортное средство не относится к нему. |
VEHICLE_IGNORED |
Поле Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
SHIPMENT_IGNORED |
Поле Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
Доставка пропущена в Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
Ослабление ограничений для маршрута транспортного средства, указанное в поле Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
ZERO_PENALTY_COST |
У отправления нулевая стоимость штрафа. Это может быть полезно для расширенного моделирования, а также для объяснения того, почему отправка была пропущена. Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
TimeWindow
Временные окна ограничивают время события, например время прибытия при посещении или время начала и окончания движения транспортного средства.
Жесткие границы временного окна, start_time и end_time, определяют самое раннее и самое позднее время события, так что start_time <= event_time <=
end_time. Нижняя граница мягкого временного окна soft_start_time выражает предпочтение, чтобы событие произошло в момент soft_start_time или после него. Если событие происходит до soft_start_time, то начисляется стоимость, пропорциональная времени до soft_start_time. Верхняя граница мягкого временного окна soft_end_time означает, что событие должно произойти не позднее soft_end_time. Если оно произойдет позже soft_end_time, то будет начислена стоимость, пропорциональная времени задержки. start_time, end_time, soft_start_time и soft_end_time должны находиться в пределах глобальных ограничений по времени (см. ShipmentModel.global_start_time и ShipmentModel.global_end_time) и соответствовать следующим требованиям:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| Поля | |
|---|---|
start_time |
Время начала жесткого временного окна. Если значение не указано, будет задано |
end_time |
Время окончания жесткого временного окна. Если значение не указано, будет задано |
soft_start_time |
Время начала интервала. |
soft_end_time |
Мягкое время окончания временного окна. |
cost_per_hour_before_soft_start_time |
Цена за час, которая добавляется к другим расходам в модели, если событие происходит до soft_start_time. Рассчитывается следующим образом: Значение должно быть положительным. Поле можно заполнить, только если задано значение soft_start_time. |
cost_per_hour_after_soft_end_time |
Цена за час, которая добавляется к другим расходам в модели, если событие происходит после Значение должно быть положительным. Поле можно заполнить, только если задано значение |
TransitionAttributes
Задает атрибуты переходов между двумя последовательными посещениями на маршруте. К одному переходу может применяться несколько TransitionAttributes. В этом случае все дополнительные расходы суммируются и применяется самое строгое ограничение или лимит (в соответствии с естественной семантикой "И").
| Поля | |
|---|---|
src_tag |
Теги, определяющие набор переходов (src->dst), к которым применяются эти атрибуты. Исходное посещение или начало маршрута транспортного средства совпадает, если его |
excluded_src_tag |
Посмотрите |
dst_tag |
Посещение пункта назначения или окончание маршрута транспортного средства соответствует условию, если его |
excluded_dst_tag |
Посмотрите |
cost |
Указывает стоимость выполнения этого перехода. Единица измерения должна быть такой же, как и для других расходов в модели. Значение не может быть отрицательным. Она применяется поверх всех остальных существующих расходов. |
cost_per_kilometer |
Указывает стоимость за километр, применяемую к расстоянию, пройденному при выполнении этого перехода. Она добавляется к значению атрибута |
distance_limit |
Ограничивает расстояние, которое можно преодолеть при выполнении этого перехода. По состоянию на июнь 2021 г. поддерживаются только мягкие ограничения. |
delay |
Указывает задержку, возникающую при выполнении этого перехода. Эта задержка всегда происходит после завершения посещения исходной страницы и перед началом посещения целевой страницы. |
Ури
Универсальный идентификатор ресурса, указывающий на ресурс, который может быть прочитан и записан Route Optimization API.
| Поля | |
|---|---|
uri |
URI ресурса. Возможно, ресурс ещё не существует. Содержимое ресурса закодировано в формате JSON или textproto. Поддерживаются только ресурсы Google Cloud Storage. Если ресурс закодирован в формате JSON, его название должно заканчиваться на |
Транспортное средство
Моделирует транспортное средство в задаче доставки. При решении задачи доставки для этого транспортного средства будет построен маршрут, начинающийся в точке start_location и заканчивающийся в точке end_location. Маршрут – это последовательность посещений (см. ShipmentRoute).
| Поля | |
|---|---|
display_name |
Отображаемое название транспортного средства, заданное пользователем. Длина названия не должна превышать 63 символа. Можно использовать символы UTF-8. |
travel_mode |
Способ передвижения, от которого зависит, какие дороги может использовать транспортное средство и с какой скоростью оно может двигаться. Дополнительные сведения: |
route_modifiers |
Набор условий, которые необходимо выполнить и которые влияют на расчет маршрутов для данного транспортного средства. |
start_location |
Географическое местоположение, из которого транспортное средство начинает движение, прежде чем забрать груз. Если не указано, транспортное средство начинает движение с первого места посадки. Если в модели доставки есть матрицы длительности и расстояния, то |
start_waypoint |
Путевая точка, представляющая географическое местоположение, в котором транспортное средство начинает движение до того, как заберет груз. Если не указаны ни |
end_location |
Географическое местоположение, в котором транспортное средство заканчивает последний |
end_waypoint |
Путевая точка, представляющая географическое местоположение, в котором транспортное средство останавливается после завершения последнего |
start_tags[] |
Указывает теги, прикрепленные к началу маршрута транспортного средства. Пустые или повторяющиеся строки не допускаются. |
end_tags[] |
Указывает теги, прикрепленные к концу маршрута транспортного средства. Пустые или повторяющиеся строки не допускаются. |
start_time_windows[] |
Временные окна, в течение которых транспортное средство может покинуть начальное местоположение. Они должны находиться в пределах глобальных временных ограничений (см. поля Временные окна, относящиеся к одному повторяющемуся полю, не должны пересекаться или примыкать друг к другу. Они должны быть указаны в хронологическом порядке. Поля |
end_time_windows[] |
Временные интервалы, в течение которых транспортное средство может прибыть в конечный пункт назначения. Они должны находиться в пределах глобальных временных ограничений (см. поля Временные окна, относящиеся к одному повторяющемуся полю, не должны пересекаться или примыкать друг к другу. Они должны быть указаны в хронологическом порядке. Поля |
unloading_policy |
Правила разгрузки, применяемые к транспортному средству. |
load_limits |
Вместимость транспортного средства (например, вес, объем, количество поддонов). Ключи в карте – это идентификаторы типа нагрузки, соответствующие ключам поля |
cost_per_hour |
Расходы на транспортное средство: все расходы суммируются и должны быть указаны в той же единице измерения, что и Стоимость часа маршрута транспортного средства. Эта стоимость применяется к общему времени, затраченному на маршрут, и включает время в пути, время ожидания и время посещения. Использование |
cost_per_traveled_hour |
Стоимость часа в пути на маршруте транспортного средства. Эта стоимость применяется только к времени в пути по маршруту (то есть к значению, указанному в поле |
cost_per_kilometer |
Стоимость километра маршрута транспортного средства. Эта стоимость применяется к расстоянию, указанному в |
fixed_cost |
Фиксированная стоимость, которая применяется, если это транспортное средство используется для доставки. |
used_if_route_is_empty |
Это поле применяется только к транспортным средствам, маршрут которых не включает доставку грузов. Указывает, следует ли считать транспортное средство подержанным. Если задано значение true, транспортное средство перемещается из начального местоположения в конечное, даже если оно не обслуживает никакие отправления, а временные и финансовые затраты на перемещение из начального местоположения в конечное учитываются. В противном случае транспортное средство не перемещается из начальной точки в конечную, а для |
route_duration_limit |
Ограничение, применяемое к общей продолжительности маршрута транспортного средства. В заданном |
travel_duration_limit |
Ограничение, применяемое к продолжительности поездки по маршруту транспортного средства. В заданном |
route_distance_limit |
Ограничение, применяемое к общей протяженности маршрута транспортного средства. В заданном объекте |
extra_visit_duration_for_visit_type |
Указывает сопоставление строк visit_types с длительностью. Продолжительность – это время, которое добавляется к Если у запроса на посещение несколько типов, на карте будет добавлена продолжительность для каждого типа. |
break_rule |
Описывает расписание перерывов, которое должно соблюдаться для этого транспортного средства. Если поле не заполнено, перерывы для этого транспортного средства не планируются. |
label |
Указывает ярлык для этого транспортного средства. Этот ярлык возвращается в ответе как |
ignore |
Если задано значение true, то для Если доставка выполняется игнорируемым транспортным средством в Если перевозка выполняется игнорируемым транспортным средством в |
travel_duration_multiple |
Указывает мультипликативный коэффициент, который можно использовать для увеличения или уменьшения времени в пути этого транспортного средства. Например, если указать значение 2,0, то время в пути для этого транспортного средства будет в два раза больше, чем для стандартного. Этот коэффициент не влияет на продолжительность посещений. Если заданы ВНИМАНИЕ! Время в пути будет округлено до ближайшей секунды после применения этого множителя, но до выполнения любых числовых операций, поэтому небольшой множитель может привести к потере точности. См. также раздел |
DurationLimit
Ограничение, определяющее максимальную продолжительность маршрута транспортного средства. Она может быть жесткой или мягкой.
Если задано поле мягкого ограничения, необходимо указать как мягкий максимальный порог, так и связанную с ним стоимость.
| Поля | |
|---|---|
max_duration |
Строгое ограничение, согласно которому продолжительность не должна превышать max_duration. |
soft_max_duration |
Мягкое ограничение, которое не устанавливает максимальную продолжительность, но при нарушении которого маршрут становится платным. Эта стоимость добавляется к другим расходам, определенным в модели, в той же единице измерения. Если задано свойство |
quadratic_soft_max_duration |
Мягкое ограничение, не устанавливающее максимальную продолжительность, но при нарушении которого маршрут несет затраты, квадратичные по продолжительности. Эта стоимость добавляется к другим расходам, определенным в модели, в той же единице измерения. Если задано значение
|
cost_per_hour_after_soft_max |
Стоимость за час, если нарушено пороговое значение Стоимость не может быть отрицательной. |
cost_per_square_hour_after_quadratic_soft_max |
Стоимость за квадратный час, которая взимается при нарушении порогового значения Если продолжительность меньше порогового значения, дополнительная плата не взимается. В противном случае она зависит от продолжительности следующим образом: Стоимость не может быть отрицательной. |
LoadLimit
Определяет ограничение по весу груза, которое применяется к транспортному средству, например "этот грузовик может перевозить не более 3500 кг". Посмотрите load_limits.
| Поля | |
|---|---|
soft_max_load |
Регулируемое ограничение нагрузки. Посмотрите |
cost_per_unit_above_soft_max |
Если нагрузка на маршруте этого транспортного средства превысит |
start_load_interval |
Допустимый интервал загрузки транспортного средства в начале маршрута. |
end_load_interval |
Допустимый интервал загрузки транспортного средства в конце маршрута. |
max_load |
Максимально допустимая нагрузка. |
cost_per_kilometer |
Стоимость перемещения одной единицы груза на один километр для этого транспортного средства. Этот показатель можно использовать как косвенный показатель расхода топлива: если нагрузка – это вес (в ньютонах), то нагрузка*километр имеет размерность энергии. Экспериментальная функция. Подробную информацию можно найти на странице https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
cost_per_traveled_hour |
Стоимость перевозки единицы груза в течение одного часа для этого транспортного средства. Экспериментальная функция. Подробную информацию можно найти на странице https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
Интервал
Интервал допустимых объемов загрузки.
| Поля | |
|---|---|
min |
Минимально допустимая нагрузка. Значение должно быть больше или равно 0. Если указаны оба, то |
max |
Максимально допустимая нагрузка. Значение должно быть больше или равно 0. Если значение не указано, максимальная нагрузка не ограничивается этим сообщением. Если указаны оба, то |
LoadCost
Стоимость перемещения одной единицы груза в течение Transition. Для заданной нагрузки стоимость состоит из двух частей:
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
При такой стоимости решения предпочитают сначала доставлять высокие требования или, что эквивалентно, забирать высокие требования в последнюю очередь. Например, если у автомобиля
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
и его маршрут: старт,самовывоз,самовывоз,доставка,доставка,конец с переходами:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
тогда стоимость, понесенная этим LoadCost, равна (cost_below * load_below * kilometers + cost_above * load_above * kms)
- переход 0: 0.0
- переход 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0;
- Переход 2: 2,0 * 15 * 1,0 + 10,0 * (20 - 15) * 1,0 = 80,0
- переход 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0;
- переход 4: 0.0
Таким образом, LoadCost на маршруте составляет 120,0.
Однако если маршрут состоит из следующих точек: начало, получение,доставка,получение,доставка,конец,то переходы будут такими:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
тогда расходы, связанные с этим LoadCost, составят
- переход 0: 0.0
- переход 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0;
- переход 2: 0.0
- переход 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0;
- переход 4: 0,0
В данном случае LoadCost по маршруту составляет 40,0.
LoadCost увеличивает стоимость решений с переходами, в которых перевозится много груза.
Экспериментальная функция. Подробную информацию можно найти на странице https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.
| Поля | |
|---|---|
load_threshold |
Объем груза, выше которого стоимость перемещения единицы груза меняется с cost_per_unit_below_threshold на cost_per_unit_above_threshold. Значение должно быть больше или равно 0. |
cost_per_unit_below_threshold |
Стоимость перемещения единицы груза для каждой единицы от 0 до порогового значения. Значение должно быть конечным и не меньше 0. |
cost_per_unit_above_threshold |
Стоимость перемещения единицы груза для каждой единицы сверх порогового значения. Если пороговое значение равно нулю, то это фиксированная стоимость за единицу. Значение должно быть конечным и не меньше 0. |
TravelMode
Способы передвижения, которые могут использоваться транспортными средствами.
Это должно быть подмножество способов передвижения Routes API платформы Google Карт. См. https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode.
Примечание. Маршруты для WALKING находятся на этапе бета-тестирования. Иногда на них могут отсутствовать тротуары или пешеходные дорожки. Вы должны показывать это предупреждение пользователю для всех пешеходных маршрутов, которые вы показываете в своем приложении.
| Перечисления | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Способ передвижения не указан, эквивалентно DRIVING. |
DRIVING |
Режим передвижения, соответствующий маршруту (автомобиль и т. д.). |
WALKING |
Способ передвижения, соответствующий пешеходному маршруту. |
UnloadingPolicy
Правила разгрузки транспортного средства. Применяется только к отправлениям, для которых указаны и самовывоз, и доставка.
Другие перевозки могут выполняться в любой точке маршрута независимо от unloading_policy.
| Перечисления | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Правила разгрузки не указаны. Доставка должна выполняться после соответствующего забора. |
LAST_IN_FIRST_OUT |
Доставка должна выполняться в порядке, обратном порядку получения. |
FIRST_IN_FIRST_OUT |
Доставка должна выполняться в том же порядке, что и самовывоз. |
VehicleFullness
VehicleFullness – это показатель, который вычисляет, насколько заполнено транспортное средство. Каждое поле VehicleFullness находится в диапазоне от 0 до 1 и вычисляется как отношение между полем ограниченного показателя (например, AggregatedMetrics.travel_distance_meters) и связанным с ним ограничением транспортного средства (например, Vehicle.route_distance_limit), если оно существует. В противном случае коэффициент заполненности не задается. Если лимит равен 0, в поле устанавливается значение 1. Примечание. Если маршрут невыполним из-за трафика, некоторые необработанные коэффициенты заполнения могут превышать 1,0, например транспортное средство может превысить ограничение по расстоянию. В таких случаях мы ограничиваем значение заполненности до 1, 0.
| Поля | |
|---|---|
max_fullness |
Максимальное значение всех остальных полей в этом сообщении. |
distance |
Соотношение между |
travel_duration |
Соотношение между [AggregatedMetrics.travel_duration_seconds][] и |
active_duration |
Отношение [AggregatedMetrics.total_duration_seconds][] к |
max_load |
Максимальное соотношение между всеми типами [AggregatedMetrics.max_load][] и их соответствующими |
active_span |
Отношение (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) для заданного транспортного средства. Если знаменатель отсутствует, используется ( |
Путевая точка
Инкапсулирует путевую точку. Путевые точки обозначают места прибытия и отправления для VisitRequests, а также начальные и конечные местоположения для Vehicles.
| Поля | |
|---|---|
side_of_road |
Необязательное поле. Указывает, что местоположение этой путевой точки должно иметь предпочтение для остановки транспортного средства на определенной стороне дороги. Если вы зададите это значение, маршрут будет проходить через местоположение, чтобы транспортное средство могло остановиться на той стороне дороги, к которой смещено местоположение относительно центра дороги. Этот вариант не подходит для пеших маршрутов. |
vehicle_stopover |
Указывает, что путевая точка предназначена для остановки транспортных средств с целью посадки или высадки пассажиров. Этот параметр работает только для режима движения DRIVING и когда для location_type задано значение location. Экспериментальное поле. Его поведение или наличие может измениться в будущем. |
Объединенное поле location_type. Различные способы представления местоположения. location_type может иметь одно из следующих значений: |
|
location |
Точка, заданная с помощью географических координат, включая необязательный заголовок. |
place_id |
Идентификатор места POI, связанный с путевой точкой. Если вы используете идентификатор места, чтобы указать место прибытия или отправления в VisitRequest, он должен быть достаточно точным, чтобы определить местоположение LatLng для навигации к месту. Например, идентификатор места, представляющий здание, подходит, а идентификатор места, представляющий дорогу, не рекомендуется. |