VehicleRoutingProblemSolverProperties (arcpy.na)

Резюме

Предоставляет доступ к свойствам из слоя задачи выбора маршрута транспорта Network Analyst. Функция GetSolverProperties используется для получения объекта VehicleRoutingProblemSolverProperties из слоя задачи выбора маршрута транспорта Network Analyst.

Обсуждение

Объект VehicleRoutingProblemSolverProperties предоставляет доступ для чтения и записи ко всем свойствам слоя задачи выбора маршрута транспорта Network Analyst. Этот объект можно использовать для изменения нужных свойств анализа слоя задачи выбора маршрута транспорта, а соответствующий слой можно повторно рассчитать для получения необходимых результатов. Новый слой задачи выбора маршрута транспорта можно создать с помощью инструмента геообработки Создать слой задачи выбора маршрута транспорта (Make Vehicle Routing Problem Layer). Получение объекта VehicleRoutingProblemSolverProperties из нового слоя задачи выбора маршрута транспорта позволяет повторно использовать существующий слой для последующего анализа, а не создавать новый слой для каждого анализа, что может замедлять работу.

После изменения свойства объекта VehicleRoutingProblemSolverProperties соответствующий слой можно использовать с другими функциями и инструментами геообработки. Обновлять слой для внесения изменения не требуется.

Свойства

СвойствоОбъяснениеТип данных
attributeParameters
(чтение и запись)

Дает возможность получать или задавать параметризованные атрибуты для использования их в анализе. Это свойство возвращает словарь Python. Ключом в словаре является кортеж двух значений – имени атрибута и имени параметра. Значение каждого элемента в словаре является значением параметра.

Параметризованные сетевые атрибуты используются для моделирования некоторого динамического аспекта значения атрибута. Например, туннель с ограничением высоты 12 футов может быть смоделирован с использованием параметра. В данном случае в качестве значения параметра следует указать высоту транспортного средства в футах. Если транспортное средство выше, чем 12 футов (3,7 м), ограничение будет оценено как верное (true), таким образом, проезд по туннелю будет запрещен. Подобным образом у моста может быть параметр, указывающий ограничение по весу.

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

#Don't attempt to modify the attributeParameters property in place.
#This coding method won't work.

solverProps.attributeParameters[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
#Modify the attributeParameters property using a new dictionary object.
#This coding method works. 

params = solverProps.attributeParameters
params[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
solverProps.attributeParameters = params
Если слой сетевого анализа не имеет параметризованных атрибутов, это свойство вернет значение None (Нет).

Dictionary
capacityCount
(чтение и запись)

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

Integer
defaultDate
(чтение и запись)

Дает возможность получать или задавать дату, принимаемую для тех полей временных значений, в которых указано только время. Если поле времени для какого-либо объекта заказов, например поле TimeWindowStart1, имеет значение времени без даты, принимается дата по умолчанию из свойства defaultDate. Например, если для какого-либо заказа свойство TimeWindowStart1 имеет значение 9:00 AM, а дата по умолчанию (defaultDate) – datetime.date(2012, 3, 6), то всё значение времени для этого поля будет равно: 6 марта 2012 г., 9:00. Дата по умолчанию не влияет на значения в тех полях времени, для которых уже указана дата.

Также в качестве даты по умолчанию можно указать день недели, при помощи следующих условных дат:

  • Сегодня – 12/30/1899
  • Воскресенье – 12/31/1899
  • Понедельник – 1/1/1900
  • Вторник – 1/2/1900
  • Среда – 1/3/1900
  • Четверг – 1/4/1900
  • Пятница – 1/5/1900
  • Суббота – 1/6/1900

Например, если в качестве неявной даты для полей времени должен выступать день недели – вторник, следует указать для этого свойства значение 1/2/1900.

DateTime
distanceAttribute
(чтение и запись)

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

String
distanceFieldUnits
(чтение и запись)

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

  • Сантиметры
  • Дециметры
  • Футы
  • Дюймы
  • Километры
  • Метры
  • Мили
  • Миллиметры
  • Морские мили
  • Ярды

String
excessTransitTimeImportance
(чтение и запись)

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

  • Высокий (High)Решатель пытается найти решение с минимальным лишним временем между вызовами за счет увеличения общего времени в пути. Имеет смысл использовать этот параметр при необходимости перевозки людей между парами заказов и вы хотите сократить их время в пути. Эта опция подходит для такси.
  • Medium (средний)Программа расчета будет стремиться найти компромиссное решение с одновременным сокращением избыточного времени и обеспечением минимальных общих затрат.
  • Низкий (Low)Программа расчета пытается найти решение, минимизирующее общие затраты, независимо от избыточного времени в пути. Этот параметр обычно используется курьерской службой. Поскольку курьерская служба перевозит грузы, а не людей, ей не нужно особенно заботиться о времени в пути. Значение Low (Низкий) позволяет курьерской службе обрабатывать два вызова в должной очередности с минимальными общими затратами.
String
outputPathShape
(чтение и запись)

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

  • TRUE_LINES_WITH_MEASURESПолученные маршруты будут иметь точную форму лежащих ниже источников сети. Более того, в состав результатов будут входить также измерения маршрута в системе линейных координат. Эти измерения отсчитываются от первой остановки и записывают накапливаемый импеданс для достижения данного положения.
  • TRUE_LINES_WITHOUT_MEASURESПолученные маршруты будут иметь точную форму лежащих ниже источников сети.
  • STRAIGHT_LINESНа выходе будут прямые линии формы маршрута, соединяющие вызовы и гараж с учетом последовательности маршрута.
  • NO_LINESДля выходных маршрутов форма не создается. Вы также не сможете создавать направления движения.
String
restrictions
(чтение и запись)

Дает возможность получать или задавать список атрибутов ограничения, применяемых в ходе данного анализа. Пустой список ([]) означает, что в ходе анализа не применяются никакие атрибуты ограничения.

String
solverName
(только чтение)

Возвращает название механизма расчета, на который ссылается слой Инструменты Network Analyst, использующийся для получения объекта свойств механизма расчета. Это свойство всегда возвращает строковое значение Vehicle Routing Problem Solver (Механизм решения задачи выбора маршрута транспорта), если доступ к нему осуществляется из объекта VehicleRoutingProblemSolverProperties.

String
timeAttribute
(чтение и запись)

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

String
timeFieldUnits
(чтение и запись)

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

  • Дни (Days)
  • Часы (Hours)
  • Минуты (Minutes)
  • Секунды (Seconds)

String
timeWindowViolationImportance
(чтение и запись)

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

  • Высокий (High)Решатель пытается найти решений с минимальным нарушением временных окон путем увеличения общего времени в пути. Выберите этот вариант, если прибытие на заказы вовремя важнее, чем сокращение общей стоимости в анализе. Это может быть необходимо, если вы встречаетесь с клиентами по вашей просьбе и не хотите создавать им неудобства в случае опоздания (альтернативным вариантом является использование жесткого временного окна, которое нельзя нарушить).При наличии других ограничений задачи выбора маршрута транспорта может быть невозможно посетить все заказы в пределах выделенных для них временных окон. В этом случае могут возникнуть превышения временных окон даже с использованием этого варианта.
  • Medium (средний)Механизм расчета будет стремиться найти компромиссное решение с одновременным соблюдением временных окон и обеспечением минимальной общей стоимости решения.
  • Низкий (Low)Решатель пытается найти решений с минимальным временем в пути независимо от временных окон. Выберите этот вариант, если соблюдение временных окон не столь важно, как сокращение общей стоимости в анализе. Этот параметр также можно использовать при накоплении отставания в обработке заказов. Для обработки как можно большего количества заказов в день и сокращения невыполненных заказов можно выбрать этот вариант, несмотря на то, что клиенты будут испытывать неудобства из-за позднего прибытия транспортных средств.
String
useHierarchy
(чтение и запись)

Отвечает за использование атрибута иерархии при проведении анализа. Список возможных значений следующий:

  • USE_HIERARCHY Для анализа используется атрибут иерархии. Применение иерархии приводит к предпочтению при расчете ребер высшего порядка по сравнению с ребрами низшего порядка. Расчеты с иерархией выполняются быстрее, и они могут использоваться для моделирования предпочтений водителя, который скорее выберет для проезда автостраду, нежели местную дорогу – даже если это приведет к увеличению длины пути. Эта опция применима только в том случае, если в наборе сетевых данных, на который ссылается слой сетевых данных ArcGIS Network Analyst, имеется атрибут иерархии. Для выбора этого варианта также служит значение True.
  • NO_HIERARCHYДля анализа атрибут иерархии не используется. Расчет без применения иерархии дает точный маршрут для набора сетевых данных. Для выбора этого варианта также служит значение False.
String
uTurns
(чтение и запись)

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

  • ALLOW_UTURNSРазвороты разрешены в соединениях с любым количеством смежных ребер.
  • NO_UTURNSРазвороты запрещены во всех соединениях, вне зависимости от их валентности. Обратите внимание, что, даже при выборе этого параметра, развороты все же разрешены в сетевых положениях. Чтобы запретить развороты и в положениях сети, можно задать индивидуальное свойство положения CurbApproach.
  • ALLOW_DEAD_ENDS_ONLYРазвороты запрещены во всех соединениях, кроме тех, у которых имеется только одно смежное ребро (тупик).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYРазвороты запрещены в соединениях с ровно двумя смежными ребрами, но разрешены на перекрестках (в соединениях с тремя смежными ребрами или более) и в тупиках (соединениях с ровно одним смежным ребром). Зачастую сети имеют избыточные соединения в середине сегмента дороги. Этот вариант позволяет предотвратить развороты транспортных средств в подобных точках.
String

Пример кода

Пример VehicleRoutingProblemSolverProperties

Скрипт демонстрирует, как обновить следующие свойства существующего слоя задачи выбора маршрута транспорта в таблице содержания ArcMap: Атрибут расстояния (Distance Attribute), Дата по умолчанию (Default Date), Развороты в соединениях (U-Turns at Junctions) и Тип выходной геометрии (Output Shape Type). Предполагается, что слой выбора маршрута транспорта Store Delivery Routes был создан в новом документе карты на основе учебного набора сетевых данных на территорию города Сан-Франциско.

#Get the vehicle routing problem layer object from a layer named
#"Store Delivery Routes" in the table of contents
vrpLayer = arcpy.mapping.Layer("Store Delivery Routes")

#Get the solver properties object from the vehicle routing problem layer
solverProps = arcpy.na.GetSolverProperties(vrpLayer)

#Update the properties for the vehicle routing problem layer using the 
#solver properties object
solverProps.distanceAttribute = "Meters"
#Set the default date to be Monday
solverProps.defaultDate = datetime.date(1900,1,1)
solverProps.uTurns = "NO_UTURNS"
solverProps.outputPathShape = "STRAIGHT_LINES"

Связанные темы

9/11/2013