Тип входных данных VehicleRoutingProblem

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

Заказы

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

Name

Имя заказа. Имя должно быть уникальным. Если поле имени оставлено пустым (NULL), оно будет автоматически создано во время расчета.

String

Description

Описательная информация о заказе. Может содержать любую текстовую информацию по заказу и не имеет ограничений на уникальность. В поле Name, к примеру, можно хранить идентификационный номер клиента, а в поле Description – фактическое имя или адрес этого клиента.

String

ServiceTime

Данное свойство определяет время, которое будет проведено в сетевом положении при посещении его на маршруте; это означает, что оно хранит в себе значение импеданса для сетевого положения. Нулевое значение или значение NULL указывают, что сетевое положение не требует времени обслуживания.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

TimeWindowStart1

Время начала и конца первого временного окна для сетевого положения. Это поле может содержать значение NULL; значение NULL показывает отсутствие времени начала.

Временное окно только указывает, когда транспортное средство может прибыть по заказу, но не указывает, когда должно закончиться время обслуживания. Чтобы учесть время обслуживания и уехать до окончания временного окна, вычтите значение ServiceTime из поля TimeWindowEnd1.

Поля временных окон (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 и TimeWindowEnd2) могут содержать значение только времени или даты и времени. Если поле времени, такое как TimeWindowStart1, имеет значение только времени (например, 8:00), дата предполагается равной дате по умолчанию, указанной для анализа. Использование значений даты и времени (например, 11.7.2010, 8:00) позволяет вам задавать временные окна, охватывающие несколько дней.

Значение этого атрибута можно задать с помощью объекта Python datetime, например, datetime.datetime(2019, 5, 11, 8, 30, 0), что представляет Субботу 11 мая 20 19 8:30:00 AM. Если вы хотите указать только значение времени, datetime.time(8, 30, 0) задает время 8:30 AM для даты по умолчанию, заданной с помощью свойства defaultDate.

Часовой пояс значения задается свойством timeZoneForTimeFields объекта анализа.

Date

TimeWindowEnd1

Время окончания первого окна для сетевого положения. Это поле может содержать значение NULL; значение NULL показывает отсутствие времени окончания.

Date

TimeWindowStart2

Время начала и конца второго временного окна для сетевого положения. Это поле может содержать значение NULL; значение NULL показывает отсутствие второго временного окна.

Если первое временное окно содержит NULL, как указано в полях TimeWindowStart1 и TimeWindowEnd1, то второе временное окно также должно иметь значения NULL.

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

Date

TimeWindowEnd2

Время окончания второго временного окна для сетевого положения. Это поле может содержать значение NULL.

Когда оба TimeWindowStart2 и TimeWindowEnd2 имеют значение NULL, то второе временное окно отсутствует.

Когда TimeWindowStart2 не NULL, а TimeWindowEnd2 – NULL, то имеется второе временное окно со временем начала, но без времени окончания. Это корректная ситуация.

Date

MaxViolationTime1

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

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Превышение временного окна может отслеживаться и взвешиваться механизмом расчета. Следовательно, вы можете направить механизм расчета VRP на выполнение одного из следующих действий:

  • Минимизировать общее превышение времени вне зависимости от увеличения стоимости проезда для автопарка.
  • Найти решение, уравновешивающее общее превышение времени и стоимость проезда.
  • Игнорировать общее превышение времени и минимизировать стоимость проезда для автопарка.

Назначая уровень важности для свойства timeWindowFactor объекта анализа, вы выбираете один из этих трех подходов. Однако в любом случае механизм расчета приведет к ошибке, если будет превышено значение, заданное для свойства MaxViolationTime1.

Double

MaxViolationTime2

Максимальное допустимое время нарушения для второго временного окна заказа. Данное поле аналогично полю MaxViolationTime1.

Double

InboundArriveTime

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

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

Это поле поможет смоделировать возможные наплывы заказов доставок. Например, работа над заказом требует специальных материалов, которые отсутствуют на станции. Материалы доставляются из другого местоположения и прибудут на станцию в 11:00. Чтобы убедиться, что ни один маршрут, который начинается до их доставки, не приписан к заказу, входное время заказа устанавливается на 11:00. Специальные материалы будут доставлены в 11:00, загружены в автомобиль, который затем отправится со станции выполнять приписанные ему заказы.

Примечания:

  • Время начала маршрута, включающее время обслуживания, должно наступить после времени прибытия. Если маршрут начинается до входного времени прибытия, заказ не будет приписан к маршруту. Присвоение будет некорректным, даже если маршрут имеет начальное время обслуживания перед выездом, имеющее место до входного времени прибытия.

  • Это поле времени может содержать только значение времени или даты и времени. Если поле времени имеет значение только времени (например, 11:00 AM), дата предполагается равной дате, заданной для анализа по умолчанию. Если же поле времени содержит дату в Станциях, Маршрутах, Заказах или Перерывах, дата по умолчанию игнорируется. В этом случае укажите все такие поля с датой и временем (например, 7/11/2015 11:00 AM).

  • Механизм расчета VRP использует InboundArriveTime независимо от значения DeliveryQuantities.

  • Если указано также исходящее время выезда, этот момент времени должен наступить после входящего времени прибытия.

Date

OutboundDepartTime

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

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

Это поле поможет смоделировать возможные наплывы заказов доставок. Например, судоходная компания посылает грузовики забрать пакеты с заказами, привезти их на станцию, откуда они будут перенаправлены на другие объекты и отправлены по маршруту к месту назначения. Ежедневно в 15:00 полуприцеп останавливается на станции, чтобы забрать приоритетные пакеты и отвезти их непосредственно на центральную станцию обработки. Чтобы избежать задержки приоритетных пакетов до 15:00 вечера следующего дня, судоходная компания старается, чтобы грузовики забирали приоритетные пакеты из заказов и отвозили их на станцию до 15:00. Этого можно достичь путем установки 15:00 в качестве исходящего времени отъезда.

Примечания:

  • Время окончания маршрута, включая время обслуживания, должно наступить раньше, чем исходящее время отъезда. Если маршрут доходит до станции, но не завершает свое обслуживание до исходящего времени отъезда, заказ не будет присвоен маршруту.

  • Это поле времени может содержать только значение времени или даты и времени. Если поле времени имеет значение только времени (например, 11:00 AM), дата предполагается равной дате, заданной для анализа по умолчанию. Если же поле времени содержит дату в Станциях, Маршрутах, Заказах или Перерывах, дата по умолчанию игнорируется. В этом случае укажите все такие поля с датой и временем (например, 7/11/2015 11:00 AM).

  • Механизм расчета VRP использует OutboundDepartTime независимо от значения PickupQuantities.

  • Если указано также входящее время прибытия, этот момент времени должен наступить до исходящего времени отъезда.

Date

DeliveryQuantities

Размер доставки. Размер можно указать в любом измерении, например вес, объем или количество. Вы можете даже указать несколько различных измерений, например, вес и объем.

Введите число объектов поставки без указания единиц. Например, если необходимо выполнить доставку объекта массой 300 фунтов по заказу, введите 300. Вам необходимо запомнить, что данное значение приведено в фунтах.

Если при составлении маршрута учитываются несколько измерений, разделяйте их числовые значения пробелами. Например, если вы записываете массу и объем поставки в 2 000 фунтов и 100 кубических футов, введите 2000 100. В этом случае вам необходимо запомнить, что данные значения приведены в фунтах и кубических футах. Вам также необходимо запомнить последовательность введения значений и соответствующие им единицы измерения.

Убедитесь, что Capacities для Routes и DeliveryQuantities и PickupQuantities для Orders указаны таким же образом, а это значит, что значения должны быть в таких же единицах измерения. При использовании нескольких измерений они должны быть перечислены в одной последовательности для всех параметров. Например, если вы указываете вес в фунтах, а затем объем в кубических футах для DeliveryQuantities, то емкость для ваших маршрутов и количество сборов для ваших заказов необходимо указать таким же образом: вес в фунтах, затем объем в кубических футах. При объединении единиц измерения или изменении их последовательности вы получите нежелательные результаты без предварительного уведомления об этом.

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

String

PickupQuantities

Размер загрузки. Размер можно указать в любом измерении, например вес, объем или количество. Вы можете даже указать несколько различных измерений, например, вес и объем. При этом вы не можете использовать отрицательные значения. Данное поле аналогично полю DeliveryQuantities для Заказов.

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

String

Revenue

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

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

Double

SpecialtyNames

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

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

Для иллюстрации того, что такое специальные требования, и как они работают, предположим, что у компании по уходу за газонами и подрезанию деревьев имеется часть заказов, которые требуют применения автоподъемника с люлькой для обрезки высоких деревьев. Для этих заказов компания вводит BucketTruck в поле SpecialtyNames, чтобы указать их особые потребности. Для остальных заказов SpecialtyNames остается пустым. Аналогичным образом, компания вводит BucketTruck в поле SpecialtyNames для маршрутов, выполняемых грузовиками со гидравлическими стрелами-манипуляторами. Для остальных маршрутов данное поле останется пустым. Во время расчета механизм расчета задачи VRP назначит заказы без специального требования любому маршруту, но при этом он назначит заказы с требованием к подъемнику с люлькой тем маршрутам, на которых оно имеется.

String

AssignmentRule

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

  • 0 (Исключить) – Заказ будет исключен из последующего решения.
  • 1 (Сохранить маршрут и соответствующий порядок следования) – Механизм расчета должен всегда назначать заказ для предварительно назначенного маршрута в предварительно назначенной относительной последовательности во время операции решения. Если правило назначения нельзя учесть, то это приведет к нарушению заказа. При помощи данной настройки поддерживается только относительная последовательность, а не абсолютная. Для иллюстрации данного утверждения представим два заказа: A и B. Они имеют последовательные значения 2 и 3, соответственно. Если вы установите значения поля AssignmentRule и соответствующий порядок следования, значения последовательностей заказов A и B могут измениться после расчета, поскольку другие заказы, остановки и посещения станции могут произойти до, между или после A и B. Однако B не может быть обслужен раньше, чем A.
  • 2 (Сохранить маршрут) – механизм расчета должен всегда назначать заказ для предварительно назначенного маршрута во время расчета. Действительная последовательность также должна быть задана, даже несмотря на то, что последовательность может сохраняться или нет. Если заказы не могут быть назначены для указанного маршрута, то это приведет к нарушению заказа.
  • 3 (Заместить) – механизм расчета пытается сохранить маршрут и предварительно назначенную последовательность для заказа во время расчета. Однако новый маршрут или последовательность заказа может быть назначена, если это поможет сократить общее значение объективной функции. Это значение используется по умолчанию.
  • 4 (Первый якорь) – механизм расчета игнорирует маршрут и предварительно назначенную последовательность (если есть) для заказа во время расчета. Он присваивает заказу маршрут и делает этот заказ первым, чтобы сократить общую стоимость функции достижения цели.
  • 5 (Последний якорь) – механизм расчета игнорирует маршрут и предварительно назначенную последовательность (если есть) для заказа во время расчета. Он присваивает заказу маршрут и делает этот заказ последним, чтобы сократить общую стоимость функции достижения цели.

Это поле не может содержать значение NULL.

Integer

RouteName

Имя маршрута, для которого назначен заказ.

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

После вычисления, если заказ присвоен маршруту, то поле RouteName будет содержать имя маршрута, которому был назначен заказ.

String

Sequence

Обозначает последовательность заказа на маршруте.

Данное поле используется для указания относительной последовательности заказа на маршруте. Данное поле может содержать значение NULL, показывающие, что заказ может быть размещен в любой точке маршрута. Значение NULL может иметь место только при значении NULL в RouteName.

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

Integer

CurbApproach

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

  • 0 (С любой стороны) – Транспортное средство может подъезжать и отъезжать от точки заказа в любом направлении, поэтому в месте инцидента разрешен разворот. Данный параметр можно выбрать, если для вашего транспортного средства возможно и допустимо развернуться в ходе выполнения заказа. Решение может зависеть от ширины дороги и интенсивности движения или от наличия в заказе парковочной площадки, где транспортное средство сможет выполнить разворот.
  • 1 (Справа по направлению движения) – когда транспортное средство подъезжает или отъезжает от точки заказа, она должна находиться по правую сторону транспортного средства. Разворот запрещен. Эта опция обычно используется для таких транспортных средств, как автобусы, которые должны подъезжать к автобусной остановке так, чтобы она находилась справа.
  • 2 (Слева по направлению движения) – когда транспортное средство подъезжает и отъезжает от точки заказа, бордюр должен находиться с левой стороны транспортного средства. Разворот запрещен. Эта опция обычно используется для таких транспортных средств, как автобусы, которые должны подъезжать к автобусной остановке так, чтобы она находилась слева.
  • 3 (Нет разворота) – при подъезде транспортного средства к точке заказа бордюр может располагаться с любой стороны транспортного средства. Но при отправлении транспортное средство не должно выполнять разворот.

Атрибут CurbApproach был разработан для работы с обоими типами национальных стандартов дорожного движения: правостороннего (США) и левостороннего (Великобритания). Сначала рассмотрим случай, когда точка заказа находится с левой стороны транспортного средства. Это условие должно обязательно выполняться в независимости от того движется транспорт по левой или по правой полосе дороги. Вы можете выбрать, с какой из двух сторон подъехать к точке заказа, независимо от национального стандарта дорожного движения, т.е. где будет находится точка заказа – справа или слева от транспортного средства. Например, если необходимо подъехать к точке заказа так, чтобы она не была отделена от транспортного средства полосой движения, необходимо выбрать правую сторону транспортного средства (1) в США, и левую сторону транспортного средства (2) в Великобритании.

Short Integer

Bearing

Направление, в котором движется точка. Единицами измерения являются градусы, отсчитываются по часовой стрелке от истинного севера. Данное поле используется совместно с полем BearingTol.

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

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

Более подробно о направлении и допуске направления

Double

BearingTol

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

Единицами измерения являются градусы; в качестве значения по умолчанию используется 30. Значения должны быть больше 0 и меньше 180. Значение, равное 30, означает, что когда Network Analyst предпринимает попытку добавить сетевое положение на ребро, диапазон допустимых значений направления создается в пределах 15 градусов с каждой стороны ребра (слева и справа) и в обоих направлениях оцифровки ребра.

Более подробно о направлении и допуске направления

Double

NavLatency

Данное поле используется при расчете только, если для Bearing и BearingTol также введены значения; при этом ввод значения NavLatency является необязательным, даже если для Bearing и BearingTol заданы значения. NavLatency показывает, сколько, предположительно, проходит времени между отправкой данных GPS от движущегося транспортного средства на сервер и моментом, когда обработанный маршрут поступает на навигационное устройство транспортного средства.

Единицы измерения NavLatency используются те же, что и единицы, которые задаются свойством timeUnits анализируемого объекта.

Единицы измерения NavLatency используются те же, что и единицы, которые задаются свойством timeUnits анализируемого объекта.

Double

Поля сетевого местоположения

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Вместе эти четыре свойства описывают точку в сети, где расположен объект.

Станции

Задает одну или несколько станций для задачи нахождения маршрута транспорта. Станция – это место, откуда отправляется транспортное средство в начале рабочего дня, и куда оно возвращается в конце рабочего дня. Транспортные средства загружаются (при доставке) или разгружаются (при сборе) на станциях в начале маршрута. В некоторых случаях станция может также служить местом пополнения загрузки, в котором транспортное средство может разгружаться или догружаться и продолжать выполнять доставку и сбор. У станции есть значения времени открытия и закрытия, указываемые жестким временным окном. Транспортные средства не могут прибывать на станцию за пределами этого временного окна.

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

Name

Имя станции. Поля StartDepotName и EndDepotName маршрутов ссылаются на указанные здесь имена. На них также ссылаются обновления маршрута при их использовании.

Имена депо нечувствительны к регистру и должны быть не пустыми и уникальными.

String

Description

Описательная информация о местоположении склада. Может содержать любую текстовую информацию и не имеет ограничений на уникальность.

Возможно, необходимо будет записать регион, в котором находится станция, или ее адрес и номер телефона; эту информацию можно ввести здесь, а не в поле Name.

String

TimeWindowStart1

TimeWindowStart1

Время начала и конца первого временного окна для сетевого положения. Это поле может содержать значение NULL; значение NULL показывает отсутствие времени начала.

Поля временных окон (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 и TimeWindowEnd2) могут содержать значение только времени или даты и времени. Если поле времени, такое как TimeWindowStart1, имеет значение только времени (например, 8:00), дата предполагается равной дате по умолчанию, указанной для анализа. Использование значений даты и времени (например, 11.7.2010, 8:00) позволяет вам задавать временные окна, охватывающие несколько дней.

Значение этого атрибута можно задать с помощью объекта Python datetime, например, datetime.datetime(2019, 5, 11, 8, 30, 0), что представляет Субботу 11 мая 20 19 8:30:00 AM. Если вы хотите указать только значение времени, datetime.time(8, 30, 0) задает время 8:30 AM для даты по умолчанию, заданной с помощью свойства defaultDate.

Часовой пояс значения задается свойством timeZoneForTimeFields объекта анализа.

Date

TimeWindowEnd1

Время окончания первого окна для сетевого положения. Это поле может содержать значение NULL; значение NULL показывает отсутствие времени окончания.

Date

TimeWindowStart2

Время начала и конца второго временного окна для сетевого положения. Это поле может содержать значение NULL; значение NULL показывает отсутствие второго временного окна.

Если первое временное окно содержит NULL, как указано в полях TimeWindowStart1 и TimeWindowEnd1, то второе временное окно также должно иметь значения NULL.

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

Date

TimeWindowEnd2

Время окончания второго временного окна для сетевого положения. Это поле может содержать значение NULL.

Когда оба TimeWindowStart2 и TimeWindowEnd2 имеют значение NULL, то второе временное окно отсутствует.

Когда TimeWindowStart2 не NULL, а TimeWindowEnd2 – NULL, то имеется второе временное окно со временем начала, но без времени окончания. Это корректная ситуация.

Date

CurbApproach

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

  • 0 (С любой стороны) – транспортное средство может подъезжать и отъезжать от станции в любом направлении, поэтому в месте инцидента разрешен разворот. Данный параметр можно выбрать, если для вашего транспортного средства возможно и допустимо развернуться на станции. Решение может зависеть от ширины дороги и интенсивности движения или от наличия на станции парковочной площадки, где транспортное средство сможет выполнить разворот.
  • 1 (Справа по направлению движения) – когда транспортное средство подъезжает или отъезжает от станции, она должна находиться по правую сторону транспортного средства. Разворот запрещен. Эта опция обычно используется для таких транспортных средств, как автобусы, которые должны подъезжать к автобусной остановке так, чтобы она находилась справа.
  • 2 (Слева по направлению движения) – когда транспортное средство подъезжает и отъезжает от станции, бордюр должен находиться с левой стороны транспортного средства. Разворот запрещен. Эта опция обычно используется для таких транспортных средств, как автобусы, которые должны подъезжать к автобусной остановке так, чтобы она находилась слева.
  • 3 (Нет разворота) – при подъезде транспортного средства к станции бордюр может располагаться с любой стороны транспортного средства. Но при отправлении транспортное средство не должно выполнять разворот.

Атрибут CurbApproach был разработан для работы с обоими типами национальных стандартов дорожного движения: правостороннего (США) и левостороннего (Великобритания). Сначала рассмотрим случай, когда станция находится с левой стороны транспортного средства. Это условие должно обязательно выполняться в независимости от того движется транспорт по левой или по правой полосе дороги. Вы можете выбрать, с какой из двух сторон подъехать к станции, независимо от национального стандарта дорожного движения, т.е. где будет находится точка заказа – справа или слева от транспортного средства. Например, если необходимо подъехать к станции так, чтобы она не была отделена от транспортного средства полосой движения, необходимо выбрать правую сторону транспортного средства (1) в США, и левую сторону транспортного средства (2) в Великобритании.

Integer

Bearing

Направление, в котором движется точка. Единицами измерения являются градусы, отсчитываются по часовой стрелке от истинного севера. Данное поле используется совместно с полем BearingTol.

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

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

Более подробно о направлении и допуске направления

Double

BearingTol

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

Единицами измерения являются градусы; в качестве значения по умолчанию используется 30. Значения должны быть больше 0 и меньше 180. Значение, равное 30, означает, что когда Network Analyst предпринимает попытку добавить сетевое положение на ребро, диапазон допустимых значений направления создается в пределах 15 градусов с каждой стороны ребра (слева и справа) и в обоих направлениях оцифровки ребра.

Более подробно о направлении и допуске направления

Double

NavLatency

Данное поле используется при расчете только, если для Bearing и BearingTol также введены значения; при этом ввод значения NavLatency является необязательным, даже если для Bearing и BearingTol заданы значения. NavLatency показывает, сколько, предположительно, проходит времени между отправкой данных GPS от движущегося транспортного средства на сервер и моментом, когда обработанный маршрут поступает на навигационное устройство транспортного средства.

Единицы измерения NavLatency используются те же, что и единицы, которые задаются свойством timeUnits анализируемого объекта.

Единицы измерения NavLatency используются те же, что и единицы, которые задаются свойством timeUnits анализируемого объекта.

Double

Поля сетевого местоположения

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Вместе эти четыре свойства описывают точку в сети, где расположен объект.

Маршруты

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

Примечание:

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

Name

Название маршрута. Имя должно быть уникальным.

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

String

Description

Описательная информация о маршруте. Может содержать любую текстовую информацию и не должно быть уникальным.

String

StartDepotName

Имя начальной станции маршрута. Это поле является внешним ключом для поля Name в классе Depots.

Если значение StartDepotName пустое, то маршрут начинается с первого назначенного заказа. Исключение начальной станции полезно в том случае, если начальное положение транспортного средства неизвестно или неважно для вашей задачи. При этом, если значение StartDepotName равно нулю, то EndDepotName не может быть равно нулю.

Виртуальные начальные станции не допускаются, если заказы или станции находятся в нескольких часовых поясах.

Если маршрут выполняет доставку и StartDepotName пустое, то предполагается, что груз загружен в транспортное средство на виртуальной станции перед началом маршрута. Для маршрута без обновления заказы маршрутов (с ненулевыми значениями DeliveryQuantities в классе Заказы) загружаются на начальной станции или виртуальной станции. Для маршрута с обновлениями, на начальной или виртуальной станции выполняется загрузка только тех заказов маршрутов, которые выполняются до первого обновления.

String

EndDepotName

Имя конечной станции маршрута. Это поле является внешним ключом для поля Name в классе Depots.

String

StartDepotServiceTime

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

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Время обслуживания на начальной и конечной станции является фиксированным (определяется значениями полей StartDepotServiceTime и EndDepotServiceTime ) и не учитывает фактическую загрузку для маршрута. Например, время, затраченное на загрузку транспортного средства на начальной станции, может зависеть от размера заказов. Время обслуживания станции может соответствовать времени, затрачиваемому на полную или среднюю загрузку грузовика, или любому времени на ваш выбор.

Double

EndDepotServiceTime

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

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Время обслуживания на начальной и конечной станции является фиксированным (определяется значениями полей StartDepotServiceTime и EndDepotServiceTime ) и не учитывает фактическую загрузку для маршрута. Например, время, затраченное на загрузку транспортного средства на начальной станции, может зависеть от размера заказов. Время обслуживания станции может соответствовать времени, затрачиваемому на полную или среднюю загрузку грузовика, или любому времени на ваш выбор.

Double

EarliestStartTime

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

Это поле не может содержать значения NULL и имеет значение по умолчанию только времени, равное 8:00 AM. Значение по умолчанию интерпретируется как 8:00 утра в наборе дат по умолчанию для анализа.

Значение этого атрибута можно задать с помощью объекта Python datetime, например, datetime.datetime(2019, 5, 11, 8, 30, 0), что представляет Субботу 11 мая 20 19 8:30:00 AM. Если вы хотите указать только значение времени, datetime.time(8, 30, 0) задает время 8:30 AM для даты по умолчанию, заданной с помощью свойства defaultDate.

Часовой пояс значения задается свойством timeZoneForTimeFields объекта анализа.

Date

LatestStartTime

Наиболее позднее допустимое время начала маршрута.

Это поле не может содержать значения NULL и имеет значение по умолчанию только времени, равное 10:00 AM. Значение по умолчанию интерпретируется как 10:00 утра в наборе дат по умолчанию для анализа.

Значение этого атрибута можно задать с помощью объекта Python datetime, например, datetime.datetime(2019, 5, 11, 8, 30, 0), что представляет Субботу 11 мая 20 19 8:30:00 AM. Если вы хотите указать только значение времени, datetime.time(8, 30, 0) задает время 8:30 AM для даты по умолчанию, заданной с помощью свойства defaultDate.

Часовой пояс значения задается свойством timeZoneForTimeFields объекта анализа.

Date

ArriveDepartDelay

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

Стоимость для этого свойства выводится между визитами по несовпадающим заказам, станциям и обновлениям маршрута. Например, если маршрут начинается со станции и посещает первый заказ, ко времени пути добавляется общая задержка прибытия/отправления. То же касается пути от первого заказа ко второму. Если второй и третий заказы совпадают, значение ArriveDepartDelay между ними не добавляется, поскольку транспортному средству не нужно перемещаться. Если маршрут следует к пункту обновления загрузки, значение снова добавляется ко времени в пути.

Хотя транспортному средству необходимо замедляться и останавливаться на перерыв, а после него ускоряться, механизм расчета задачи выбора маршрута транспорта не может добавлять значение ArriveDepartDelay для перерывов. Это значит, что при выезде с заказа, остановке на перерыв и продолжении движения к следующему заказу, задержка прибытия/отправления добавляется только один раз, а не два.

Например, предположим, что имеются пять совпадающих заказов в одном многоэтажном доме, которые обслуживаются тремя разными маршрутами. Это значит, что будет три задержки прибытия/отправления; то есть трем водителям необходимо раздельно найти места для парковки и войти в одно и то же здание. Однако если заказы могут быть обслужены одним маршрутом, парковаться и входить в здание необходимо только одному водителю – и возникает только одна задержка прибытия/отправления. Поскольку механизм расчета задачи выбора маршрута транспорта пытается минимизировать затраты, он попробует ограничить задержки прибытия/отправления и поэтому определит вариант с одним маршрутом. (Обратите внимание, что при наличии других ограничений – специальных требований, временных окон или емкостей – могут понадобиться несколько маршрутов.)

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

Capacities

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

Введите вместимости без указания единиц. Например, для транспортного средства, способного перевезти не более 40 000 фунтов, введите 40000. Необходимо помнить, что данное значение задано в фунтах.

Если при составлении маршрута учитываются несколько измерений, разделяйте их числовые значения пробелами. Например, для записи максимального веса и максимального объема транспортного средства, равных 40 000 фунтов и 2 000 кубических футов, для параметра Capacities введите значение 40000 2000. Вам будет необходимо запомнить единицы измерения. Вам также нужно помнить последовательность введенных значений и соответствующие им единицы измерения (в данном случае фунты, а затем кубические футы).

Запомнить единицы измерения и их последовательность важно по нескольким причинам: во-первых, для возможности интерпретации информации в будущем, во-вторых для правильного ввода значений полей DeliveryQuantities и PickupQuantities для заказов. Имейте в виду, что механизм расчёта VRP одновременно ссылается на Capacities, DeliveryQuantities и PickupQuantities, чтобы убедиться в том, что маршрут не станет перегруженным. Единицы измерения не могут быть введены в поле, и инструмент VRP не может проводить преобразование единиц измерения. Вы должны ввести значения для трех полей, используя те же единицы измерения и ту же последовательность единиц измерения, чтобы убедиться, что значения будут правильно интерпретированы. При комбинировании единиц измерения или изменении последовательности этих трех полей вы получите нежелательные результаты без уведомления об этом. Рекомендуется заранее определить стандарт ввода единиц измерения и последовательность их ввода и постоянно использовать ее при вводе значений для этих трех полей.

Пустая строка или значение NULL соответствует нулю для всех значений. Значения емкости не могут быть отрицательными.

Если в поле Capacities содержится недостаточное число значений относительно полей DeliveryQuantities или PickupQuantities в заказах, то оставшиеся значения интерпретируются как равные нулю.

Механизм расчета VRP только выполняет простой двоичный тест для определения превышения емкостей. Если значение емкости маршрута выше или равно общей вместимости, то механизм расчета VRP предположит, что груз помещается в транспортное средство. Это может быть неверно, в зависимости от фактической формы груза и транспортного средства. Например, механизм расчета VRP позволяет вам загрузить сферу объемом 1 000-кубических футов в грузовик вместимостью 1 000 кубических футов и шириной 8 футов. В действительности, сфера имеет диаметр 12,6 фута, и ее нельзя поместить в грузовик шириной 8 футов.

String

FixedCost

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

Double

CostPerUnitTime

Примененная денежная стоимость – на единицу времени работы – для общей продолжительности маршрута, включая значения времени в пути, а также времени обслуживания и ожидания на заказах, станциях и в перерывах. Это поле не может содержать значение NULL и имеет значение по умолчанию, равное 1,0.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

CostPerUnitDistance

Примененная денежная стоимость – на единицу пройденного расстояния – для длины маршрута (общее пройденное расстояние). Это поле может содержать значения NULL; значение NULL соответствует нулевой стоимости.

Единицы измерения для значения данного поля задается свойством distanceUnits для слоя анализа.

Double

OvertimeStartTime

Продолжительность регулярного времени работы перед началом вычисления сверхурочных. Это поле может содержать значения NULL; значение NULL соответствует отсутствию сверхурочных.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Например, сверхурочные должны выплачиваться водителю, когда общая продолжительность поездки превышает 8 часов; в этом случае параметр OvertimeStartTime задается как 480 (8 часов * 60 минут/час), что указывает время в минутах.

Double

CostPerUnitOvertime

Денежная стоимость для единицы времени сверхурочной работы. Это поле может содержать значения NULL; значение NULL соответствует равенству значений CostPerUnitOvertime и CostPerUnitTime .

Double

MaxOrderCount

Максимальное допустимое число заказов на маршруте. Это поле не может содержать значения NULL и имеет значение по умолчанию, равное 30.

Integer

MaxTotalTime

Максимально допустимая продолжительность маршрута. Продолжительность (длительность) маршрута включает в себя значения времени в пути, а также времени обслуживания и ожидания на заказах, на станциях и в перерывах. Это поле может содержать значения NULL; значение NULL соответствует отсутствию ограничений по продолжительности маршрута.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

MaxTotalTravelTime

Максимально допустимое время в пути для маршрута. Данное время в пути содержит только время, затраченное на движение по сети, и не включает в себя время обслуживания или ожидания.

Это поле может содержать значения NULL; значение NULL соответствует отсутствию ограничений по максимально допустимому времени маршрута. Значение данного поля не может быть больше значения поля MaxTotalTime.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

MaxTotalDistance

Максимально допустимое расстояние движения для маршрута.

Единицы измерения для значения данного поля задается свойством distanceUnits для слоя анализа.

Это поле может содержать значения NULL; значение NULL соответствует отсутствию ограничений по максимально допустимому расстоянию для маршрута.

Double

SpecialtyNames

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

Это поле является внешним ключом для поля SpecialtyNames в классе Orders.

Для иллюстрации того, что такое специальные требования, и как они работают, предположим, что у компании по уходу за газонами и подрезанию деревьев имеется часть заказов, которые требуют применения автоподъемника с люлькой для обрезки высоких деревьев. Для этих заказов компания вводит BucketTruck в поле SpecialtyNames, чтобы указать их особые потребности. Для остальных заказов SpecialtyNames остается пустым. Аналогичным образом, компания вводит BucketTruck в поле SpecialtyNames для маршрутов, выполняемых грузовиками со гидравлическими стрелами-манипуляторами. Для остальных маршрутов данное поле останется пустым. Во время расчета механизм расчета задачи VRP назначит заказы без специального требования любому маршруту, но при этом он назначит заказы с требованием к подъемнику с люлькой тем маршрутам, на которых оно имеется.

String

AssignmentRule

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

  • 1 (Include) – маршрут включен в решение. Это значение используется по умолчанию.
  • 2 (Exclude) – маршрут исключен из решения.

Integer

Locations

Информация в этом поле определяет, какие ребра и соединения сети покрыты линией или полигоном и долю покрытия для каждого покрытого элемента ребра. Вы не можете напрямую читать или редактировать информацию, содержащуюся в этом поле, но Network Analyst использует ее при выполнении анализа.

Blob

Перерывы

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

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

RouteName

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

Данное поле является внешним ключом для поля маршрута Name, поэтому оно не может содержать пустое значение.

String

Precedence

Значения приоритета определяют последовательность перерывов для заданного маршрута. Перерывы со значением приоритета 1 происходят до перерывов со значением 2 и т. д.

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

Integer

ServiceTime

Продолжительность перерыва. Это поле не может содержать значения NULL. Значение по умолчанию – 60.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

TimeWindowStart

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

Если данное поле содержит значение, то значения полей MaxTravelTimeBetweenBreaks и MaxCumulWorkTime должны быть пустыми, а все остальные перерывы в анализе должны иметь пустые значения для MaxTravelTimeBetweenBreaks и MaxCumulWorkTime.

Если маршрут имеет множество перерывов с перекрывающимися временными окнами, то во время решения будет возникать ошибка.

Поля временных окон в перерывах могут содержать значение только времени или даты и времени. Если поле времени, такое как TimeWindowStart, имеет значение только времени (например, 12:00 утра), дата предполагается равной дате, указанной в параметре default_date. Использование значений даты и времени (например, 11.07.2012 12:00) позволяет указывать временные окна, охватывающие два дня и более. Это удобно, если перерыв следует сделать в районе полуночи.

Значение этого атрибута можно задать с помощью объекта Python datetime, например, datetime.datetime(2019, 5, 11, 8, 30, 0), что представляет Субботу 11 мая 20 19 8:30:00 AM. Если вы хотите указать только значение времени, datetime.time(8, 30, 0) задает время 8:30 AM для даты по умолчанию, заданной с помощью свойства defaultDate.

Часовой пояс значения задается свойством timeZoneForTimeFields объекта анализа.

Date

TimeWindowEnd

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

Если данное поле содержит значение, то MaxTravelTimeBetweenBreaks и MaxCumulWorkTime должны быть пустыми (null), все остальные перерывы в анализе должны иметь значения NULL для параметров MaxTravelTimeBetweenBreaks и MaxCumulWorkTime.

Значение этого атрибута можно задать с помощью объекта Python datetime, например, datetime.datetime(2019, 5, 11, 8, 30, 0), что представляет Субботу 11 мая 20 19 8:30:00 AM. Если вы хотите указать только значение времени, datetime.time(8, 30, 0) задает время 8:30 AM для даты по умолчанию, заданной с помощью свойства defaultDate.

Часовой пояс значения задается свойством timeZoneForTimeFields объекта анализа.

Date

MaxViolationTime

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

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

Данное свойство может содержать пустые (null) значения. С другой стороны, значение NULL в TimeWindowStart и TimeWindowEnd показывает, что для допустимого превышения времени предел отсутствует. Если для параметров MaxTravelTimeBetweenBreaks или MaxCumulWorkTime задано значение, то MaxViolationTime должен быть пустым (null).

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

MaxTravelTimeBetweenBreaks

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

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

Это поле предназначено для ограничения длительности вождения транспортного средства человеком, прежде чем потребуется перерыв. Например, если в качестве единиц времени для анализа установлены минуты и MaxTravelTimeBetweenBreaks имеет значение 120, то у водителя будет перерыв через два часа вождения. Чтобы назначить второй перерыв еще через два часа вождения, для параметра MaxTravelTimeBetweenBreaks второго перерыва нужно указать значение 120.

Если данное поле содержит значение, то TimeWindowStart, TimeWindowEnd, MaxViolationTime и MaxCumulWorkTime должны быть пустыми (NULL) для успешного выполнения анализа.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

MaxCumulWorkTime

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

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

Это поле ограничивает продолжительность работы человека, прежде чем потребуется перерыв. Например, если в качестве единиц времени для анализа указаны минуты, поле MaxCumulWorkTime имеет значение 120, а поле ServiceTime имеет значение 15, то водитель получит 15-минутный перерыв после двух часов работы.

Продолжая рассматривать последний пример, предположим, что второй перерыв должен начаться через три часа работы. Для указания данного перерыва введите значение 315 (пять часов и 15 минут) для MaxCumulWorkTime второго перерыва. Данное значение включает в себя MaxCumulWorkTime и ServiceTime предыдущего перерыва, а также три дополнительных часа работы до второго перерыва. Чтобы избежать преждевременных перерывов с максимальным временем работы, помните, что они суммируют время работы от начала маршрута, а также, что время работы включает в себя время обслуживания на предварительно посещенных станциях, заказах и в перерывах.

Если данное поле содержит значение, то TimeWindowStart, TimeWindowEnd, MaxViolationTime и MaxTravelTimeBetweenBreaks должны быть пустыми (NULL) для успешного выполнения анализа.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Double

IsPaid

Булево значение, указывающее, будет ли перерыв оплачиваемым или нет. Установка значения данного поля равным 1 означает, что время, затраченное на перерыв, включается в расчет стоимости маршрута и определение сверхурочных. Значение 0 указывает на обратное. Значение по умолчанию равно 1.

Integer

Sequence

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

Integer

OrderPairs

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

Иногда необходимо, чтобы сбор и доставка заказов производились совместно. Например, курьерской компании может потребоваться маршрут для сбора посылки с высоким приоритетом от одного заказчика и доставки ее другому без возврата на станцию или сортировочную станцию с целью сокращения времени доставки. Эти связанные заказы могут назначаться одному и тому же маршруту с соответствующей последовательностью при помощи спаренных заказов. Также могут быть установлены ограничения продолжительности хранения посылки в транспортном средстве; например, посылка может содержать образец крови, который должен быть перевезен из офиса врача в лабораторию в течение двух часов.

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

FirstOrderName

Имя первого заказа в паре. Это поле является внешним ключом для поля Name в заказах.

String

SecondOrderName

Имя второго заказа в паре. Это поле является внешним ключом для поля Name в заказах.

Первый заказ в паре должен быть заказом сбора, это означает, что значение поля DeliveryQuantities для него пустое (NULL). Второй заказ в паре должен быть заказом доставки, это означает, что значение поля PickupQuantities для него пустое (NULL). Количество, которое собирается в первом заказе, должно соответствовать количеству, поставляемому во втором заказе. В отдельном случае оба заказа могут иметь нулевые количества для сценариев, в которых емкости не используются.

Заказы не загружаются и не разгружаются в станциях.

String

MaxTransitTime

Максимальное время нахождения в пути для пары. Время нахождения в пути представляет собой продолжительность от времени отправления для первого заказа до времени прибытия на точку второго заказа. Это ограничение влияет на время в транспортном средстве, или время поездки, между двумя заказами. Если транспортное средство перевозит людей или скоропортящиеся товары, то его время поездки обычно короче, чем для транспортного средства, перевозящего коробки или непортящиеся товары. Это поле может содержать значения NULL; значение NULL соответствует отсутствию ограничений по времени поездки.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

Механизмом расчета может отслеживаться и учитываться лишнее время в пути (измеряемое с учетом непосредственного времени в пути между парами заказов). По этой причине вы можете указать механизму расчета VRP следующие подходы:

  • Минимизировать общее избыточное время нахождения в пути, вне зависимости от увеличения стоимости проезда для автопарка.
  • Найти решение, уравновешивающее общее превышение времени и стоимость проезда.
  • Игнорировать общее избыточное время нахождения в пути; вместо этого минимизировать стоимость проезда для автопарка.

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

Double

RouteRenewals

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

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

Вот некоторые правила и опции, которые следует иметь в виду:

  • Пункт догрузки/выгрузки (место пополнения загрузки) может отличаться от начальной и конечной станций.
  • На каждом маршруте может быть одно или несколько предустановленных мест пополнения загрузки.
  • Место пополнения загрузки может использоваться на одном маршруте несколько раз.
  • В некоторых случаях при наличии нескольких потенциальных мест пополнения загрузки на маршруте механизм расчета определяет ближайшее доступное из них.

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

RouteName

Название маршрута, к которому применяется данное обновление. Это поле не может содержать пустые значения и является внешним ключом для поля Name маршрутов.

String

DepotName

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

String

ServiceTime

Время обслуживания для обновления. Это поле может содержать значение NULL; значение NULL соответствует нулевому времени обслуживания.

Единицы измерения для значения данного поля задается свойством timeUnits для слоя анализа.

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

Double

Sequences

Укажите разделенную пробелами строку значений последовательности посещений станции пополнения загрузки. Это поле может содержать нулевое значение и используется для предварительного назначения посещений станции пополнения загрузки.

String

RouteZones

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

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

RouteName

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

String

IsHardZone

Двоичное значение, определяющее гибкую или жесткую зону маршрута. Значение 1 определяет жесткую зону; это означает, что заказ, выходящий за пределы полигона зоны маршрута, не может быть назначен этому маршруту. Значение по умолчанию 1. Значение 0 определяет, что такие заказы все еще могут быть назначены, но стоимость обслуживания заказа взвешена на основании функции евклидова расстояния от зоны маршрута. Обычно это означает что, по мере увеличения расстояния по прямой от гибкой зоны до заказа вероятность того, что заказ будет присвоен маршруту, уменьшается.

Short Integer

Locations

Информация в этом поле определяет, какие ребра и соединения сети покрыты линией или полигоном и долю покрытия для каждого покрытого элемента ребра. Вы не можете напрямую читать или редактировать информацию, содержащуюся в этом поле, но Network Analyst использует ее при выполнении анализа.

Blob

Точечный барьер

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

Name

Имя барьера.

String

BarrierType

Указывает, ограничивает ли точечный барьер перемещение полностью или добавляет время или расстояние при его пересечении. Значение этого атрибута указывается одним из следующих целых чисел (используйте числовой код, а не имя в скобках):

  • 0 (Запрет) – Запрещает прохождение через барьер. Барьер, действующий как запрещающий, рассматривается как ограничительный точечный барьер.

  • 2 (добавленная стоимость) – прохождение через барьер увеличивает время в пути или расстояние на значение, указанное в полях Additional_Time, Additional_Distance и Additional_Cost. Этот тип барьера называется барьером дополнительной стоимости.

Short

Additional_Time

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

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

Double

Additional_Distance

Расстояние, которое добавляется при прохождении барьера. Это поле действительно только для барьеров с дополнительной стоимостью, и только если режим передвижения, применяемый для анализа использует атрибут импеданса на основе расстояния.

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

Double

Additional_Cost

Стоимость поездки, которая добавляется при прохождении барьера. Это поле действительно только для барьеров с дополнительной стоимостью, и только если режим передвижения, применяемый для анализа использует атрибут импеданса ни на основе времени, ни на основе расстояния.

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

Double

FullEdge

Указывает, как ограничительные точечные барьеры применяются к элементам ребер во время анализа. Значение поля указывается одним из следующих целых чисел (используйте числовой код, а не имя в скобках):

  • (0) False – разрешает путь по ребру до барьера, но не через него. Это значение используется по умолчанию.
  • 1 (True) – Запрещает путь повсюду в связанном ребре.

Short

CurbApproach

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

  • 0 (Любая сторона транспортного средства) – Барьер влияет на перемещение по ребру в обоих направлениях.
  • 1 (Правая сторона транспортного средства) – Распространяется только на те транспортные средства, для которых барьер находится с правой стороны по ходу движения. Барьер не влияет на автомобили, которые передвигаются по этому же ребру, но при этом барьер находится слева от них.
  • 2 (Левая сторона транспортного средства) – Распространяется только на те транспортные средства, для которых барьер находится с левой стороны по ходу движения. Барьер не распространяется на автомобили, которые передвигаются по этому же ребру, но при этом барьер находится справа от них.

Так как соединения являются точками и не имеют сторон, барьеры на соединениях влияют на все транспортные средства независимо от стороны подъезда.

Свойство CurbApproach было разработано для работы с обоими типами национальных стандартов дорожного движения: правостороннего (США) и левостороннего (Великобритания). Сначала рассмотрим случай, когда пункт обслуживания располагается с левой стороны транспортного средства. Это условие должно обязательно выполняться в независимости от того движется транспорт по левой или по правой полосе дороги. От национального стандарта дорожного движения будет зависеть ваше решение, с какой из двух сторон подъехать к пункту обслуживания, т.е. должен ли он находиться с правой или левой стороны транспортного средства. Например, если необходимо подъехать к пункту обслуживания так, чтобы он не был отделен от транспортного средства полосой движения, необходимо выбрать правую сторону транспортного средства (1) в США, и левую сторону транспортного средства (2) в Великобритании.

Short

Bearing

Направление, в котором движется точка. Единицами измерения являются градусы, отсчитываются по часовой стрелке от истинного севера. Данное поле используется совместно с полем BearingTol.

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

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

Более подробно о направлении и допуске направления

Double

BearingTol

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

Единицами измерения являются градусы; в качестве значения по умолчанию используется 30. Значения должны быть больше 0 и меньше 180. Значение, равное 30, означает, что когда Network Analyst предпринимает попытку добавить сетевое положение на ребро, диапазон допустимых значений направления создается в пределах 15 градусов с каждой стороны ребра (слева и справа) и в обоих направлениях оцифровки ребра.

Более подробно о направлении и допуске направления

Double

NavLatency

Данное поле используется при расчете только, если для Bearing и BearingTol также введены значения; при этом ввод значения NavLatency является необязательным, даже если для Bearing и BearingTol заданы значения. NavLatency показывает, сколько, предположительно, проходит времени между отправкой данных GPS от движущегося транспортного средства на сервер и моментом, когда обработанный маршрут поступает на навигационное устройство транспортного средства.

Единицы измерения NavLatency используются те же, что и единицы, которые задаются свойством timeUnits анализируемого объекта.

Единицы измерения NavLatency используются те же, что и единицы, которые задаются свойством timeUnits анализируемого объекта.

Double

Поля сетевого местоположения

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Вместе эти четыре свойства описывают точку в сети, где расположен объект.

Линейный барьер

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

Name

Имя барьера.

String

BarrierType

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

  • 0 (Ограничение) — запрещает перемещение везде, где барьер пересекает вашу транспортную сеть. Барьер рассматривается как ограничивающий линейный барьер.

  • 1 (Масштабированная стоимость) – масштабирует стоимость перемещения (время в пути или расстояние) по соответствующим улицам на коэффициент, указанный в поле ScaledTimeFactor или ScaledDistanceFactor. Если улицы частично покрыты барьером, время в пути или расстояние будет соответственно разделены, а затем масштабированы. Например, коэффициент 0,25 означает, что ожидаемое время перемещения по соответствующим улицам в четыре раза меньше обычного. Коэффициент 3,0 означает, что ожидаемое время перемещения будет в три раза дольше обычного. Этот тип барьера рассматривается как линейный барьер масштабируемой стоимости. Его можно использовать для моделирования снижения скорости движения из-за перекрытия полос во время проведения дорожных работ.

Short

ScaledTimeFactor

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

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

Double

ScaledDistanceFactor

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

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

Double

ScaledCostFactor

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

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

Double

Locations

Информация в этом поле определяет, какие ребра и соединения сети покрыты линией или полигоном и долю покрытия для каждого покрытого элемента ребра. Вы не можете напрямую читать или редактировать информацию, содержащуюся в этом поле, но Network Analyst использует ее при выполнении анализа.

Blob

Полигональный барьер

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

Этот тип данных поддерживает следующее поля:

ПолеОписаниеТип данных

Name

Имя барьера.

String

BarrierType

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

  • 0 (Ограничение) – запрещает прохождение через любую часть барьера. Этот барьер называется запрещающим полигональным барьером, поскольку он запрещает перемещение по пересекаемым улицам. Одним из применений этого типа барьеров является моделирование наводнений, покрывающих улицы, и перемещение по ним становится невозможным.

  • 1 (Масштабированная стоимость) – масштабирует стоимость перемещения (время в пути или расстояние) по соответствующим улицам на коэффициент, указанный в поле ScaledTimeFactor или ScaledDistanceFactor. Если улицы частично покрыты барьером, время в пути или расстояние будет соответственно разделены, а затем масштабированы. Например, коэффициент 0,25 означает, что ожидаемое время перемещения по соответствующим улицам в четыре раза меньше обычного. Коэффициент 3,0 означает, что ожидаемое время перемещения будет в три раза дольше обычного. Этот тип барьера называется полигональным барьером масштабируемой стоимости. Он может использоваться для моделирования погодных условий, из-за которых скорость перемещения в указанных регионах снижается.

Short

ScaledTimeFactor

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

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

Double

ScaledDistanceFactor

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

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

Double

ScaledCostFactor

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

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

Double

Locations

Информация в этом поле определяет, какие ребра и соединения сети покрыты линией или полигоном и долю покрытия для каждого покрытого элемента ребра. Вы не можете напрямую читать или редактировать информацию, содержащуюся в этом поле, но Network Analyst использует ее при выполнении анализа.

Blob