Упражнение 8. Поиск оптимальных маршрутов для выполнения парных заказов
Цель этого упражнения – найти наиболее оптимальные маршруты для автопарка, чтобы перевозить людей, у которых нет другого доступа к транспорту, из дома до больницы для прохождения лечения. Упражнение будет выполнено путем решения задачи нахождения транспортного маршрута (VRP) с учетом парных заказов, которая связывает два последовательных заказа (остановки) так, что транспорт будет подбирать людей и доставлять их в нужную больницу. Также будут соблюдены дополнительные требования с помощью других характеристик слоя анализа задачи VRP. Например, будет введено максимальное время в пути для парных заказов так, чтобы люди не проводили слишком много времени в пути. Будут использованы временные ограничения, так как люди не должны опаздывать в больницу. Некоторым людям требуются кресла-коляски, поэтому для них нужно будет отправить транспорт со специальными подъемниками для кресел-колясок. После определения маршрутов будут созданы пошаговые указания результирующих маршрутов, которые можно отправить электронным способом или распечатать и передать водителям.
Данные для этого и других учебных упражнений Network Analyst доступны на сайте ArcGIS.com. После загрузки данных их можно извлечь в любое место. Однако удобнее извлечь их в папку C:\arcgis\ArcTutor, поскольку эта папка указана в упражнениях как местоположение учебных данных по умолчанию.
Подготовка отображения
- Если файл Exercise08.mxd открыт в ArcMap, переходите к шагу 6.
- Чтобы запустить ArcMap, выберите Пуск > Все программы > ArcGIS > ArcMap 10.1.
-
В диалоговом окне ArcMap - Начало работы (ArcMap - Getting Started), щелкните Существующие карты (Existing Maps) > Найти... (Browse for more).
Появится диалоговое окно Открыть документ ArcMap (Open ArcMap Document).
-
Перейдите к папке C:\ArcGIS\ArcTutor\ArcGIS Network Analyst\Tutorial.
Это местоположение по умолчанию для установки учебных материалов.
-
Дважды щёлкните на файле Exercise08.mxd.
Документ карты откроется в ArcMap.
-
Активируйте дополнительный модуль ArcGIS Network Analyst.
-
Щелкните Настройка (Customize) > Дополнительные модули (Extensions).
Откроется диалоговое окно Дополнительные модули (Extensions).
- Отметьте ArcGIS Network Analyst.
- Щелкните Закрыть (Close).
-
Щелкните Настройка (Customize) > Дополнительные модули (Extensions).
-
Щелкните Настройка (Customize) > Панели инструментов (Toolbars) > Network Analyst.
Панель инструментов Network Analyst будет добавлена в ArcMap.
-
На панели инструментов Network Analyst щелкните на кнопке Окно Network Analyst (Network Analyst window) .
Откроется прикрепляемое окно Network Analyst.
Если панель инструментов Network Analyst еще не отображается, необходимо ее добавить.
Если окно Network Analyst еще не отображается, необходимо его добавить.
Окно Network Analyst можно закреплять и откреплять.
Создание слоя анализа для выбора маршрута транспорта
-
Щёлкните на пункте Network Analyst на панели инструментов Network Analyst и щёлкните на Новая задача выбора маршрута транспорта (New Vehicle Routing Problem).
Слой анализа задачи выбора маршрута транспорта добавлен в окно Network Analyst. Классы сетевого анализа: Вызовы (Orders), Гаражи (Depots), Маршруты (Routes), Возвращения в гараж (Depot Visits), Границы (Breaks), Зоны маршрутов (Route Zones), Исходные точки маршрутов (Route Seed Points), Обновления маршрутов (Route Renewals), Специальные требования (Specialties), Пары заказов (Order Pairs), Точечные барьеры (Point Barriers), Линейные барьеры (Line Barriers) и Полигональные барьеры (Polygon Barriers) — пусты.
Также в окно Таблица содержания (Table Of Contents) добавлен новый слой анализа.
Добавление специальных условий
У логистической компании есть три машины. Одна из машин, работающих в центре, оборудована для погрузки кресел-колясок. Вы добавите Инвалидное кресло в качестве специального требования так, чтобы заказы, которые нуждаются в этом требовании, были назначены маршруту с лифтом для инвалидных кресел.
-
В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Специальные условия (Specialites (0)) и выберите команду Добавить элемент (Add Item).
Новое специальное условие Item 1 появится на закладке класса Специальные условия (Specialties) в окне Network Analyst. Откроется окно Свойства (Properties) для нового специального условия.
-
В окне Свойства (Properties) введите Кресло-коляска (Wheelchair) в качестве значения свойства Название (Name).
- Нажмите ОК.
Добавление заказов
Откройте электронную таблицу с данными учебника. Таблица содержит сведения о каждом пациенте, включая имена и домашние адреса, название и адрес больницы, в которую они должны быть доставлены, время, когда пациента нужно подобрать и т.д. В следующей таблице приводится описание полей электронной таблицы:
Attribute – Атрибут |
Описание |
---|---|
OrderName1 |
Имя пациента, которого нужно перевезти |
PatientAddress |
Адрес, по которому нужно забрать пациента |
OrderName2 |
Уникальное имя адреса назначения |
HospitalAddress |
Адрес, по которому нужно доставить пациента |
PickFrom |
Самое раннее время, когда пациента можно забрать по адресу PatientAddress |
PickTo |
Самое позднее время, когда пациента можно забрать по адресу PatientAddress |
TotalPassengers |
Общее число пассажиров, которых нужно забрать |
MaxTransitTime |
Максимальное время, которое пациент может провести в машине |
SpecialtyNames |
Указывает особые потребности пассажира, например, кресло-коляску |
В данном случае пассажиры и больницы связаны, поскольку каждый пациент должен попасть в определенную больницу. Эту ситуацию можно моделировать с помощью парных заказов, загрузив обоих пациентов и адреса больниц в классы анализа сети Заказы (Orders) и связав их с новыми объектами парных заказов.
В следующих шагах адресам пациентов и больниц будут присвоены геокоды, и результирующие местоположения будут загружены как заказы.
-
Щёлкните на кнопке Файл (File) > Добавить данные (Add Data) > Геокодирование (Geocoding) > Присвоить геокод адресу (Geocode Addresses).
Откроется диалоговое окно Выбрать локатор адресов к применению (Choose an Address Locator to use).
- Щёлкните на кнопке SanFranciscoLocator.
Локатор SanFranciscoLocator включен в файл Exercise08.mxd.
-
Нажмите ОК.
Откроется диалоговое окно Присвоение геокода адресу: SanFranciscoLocator.
-
Щёлкните на кнопке Обзор (Browse) раскрывающемуся списку Таблица адресов (Address table).
Откроется диалоговое окно Выбор таблицы с адресами (Choose a table containing addresses).
-
В раскрывающемся списке Искать в (Look in) выберите Главная – учебник (Home – Tutorial).
Таблица, которую вы добавите, хранится в файле Excel, который входит в состав демонстрационных данных Network Analyst.
- Дважды щёлкните на файле OrderPairs.xls.
-
Дважды щёлкните на элементе Patients$.
Электронная таблица Пациенты (Patients) будет добавлена в раскрывающийся список Таблица адресов (Address table).
- В раскрывающемся списке Улица или пересечение (Street or Intersection) выберите Адрес пациента (PatientAddress).
-
Щёлкните на кнопке Обзор (Browse) к текстовому полю Выходной шейп-файл или класс пространственных объектов (Output shapefile or feature class).
Откроется диалоговое окно Сохранение данных (Saving Data) из главного расположения для файла Exercise08.mxd.
- В раскрывающемся списке Искать в (Look in) выберите Главная – учебник (Home – Tutorial).
-
В раскрывающемся списке Сохранить как тип (Save as type) выберите Файл и персональные классы пространственных объектов базы геоданных (File and Personal Geodatabase feature classes).
Список файлов и рабочих областей обновится.
- Дважды щёлкните на файле SanFrancisco.gdb.
-
Удалите имя в текстовом поле Имя (Name) и введите Пациенты (Patients).
«Пациенты» – это имя выходного класса пространственных объектов.
-
Нажмите Сохранить (Save).
Текстовое поле Выходного шейп-файла или класса пространственных объектов (Output shapefile or feature class) в диалоговом окне Геокодирование адресов: SanFranciscoLocator обновится с учетом нового выходного пути.
-
Нажмите ОК.
Откроется диалоговое окно Геокодирование адресов (Geocoding Addresses) и покажет, что все 15 адресов были найдены.
-
Щелкните Закрыть (Close).
Геокодированные адреса будут добавлены в документ карты в качестве слоя пространственных объектов Результат геокодирования: пациенты (Geocoding Result: Patients).
-
Повторите шаги 1 – 16, чтобы загрузить больницы назначения пациентов, но внесите следующие изменения:
- В шаге 8 задайте свойству Улица или пересечение (Street or Intersection) значение Адрес больницы (HospitalAddress).
-
В шаге 13 введите Больницы назначения (DestinationHospitals) в текстовом поле Название (Name).
В окне Содержимое (Table of Contents) должно быть два слоя пространственных объектов Результаты геокодирования: больницы назначения (Geocoding Results: DestinationHospitals) и Результаты геокодирования: пациенты (Geocoding Results: Patients).
- В окне Содержимое (Table Of Contents) снимите выделение для двух слоев результатов геокодирования, чтобы они стали невидимыми на карте.
-
В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Заказы (Orders (0)) и выберите команду Загрузить расположения (Load Locations).
Откроется диалоговое окно Загрузка расположений (Load Locations).
- Выберите Результаты геокодирования: пациенты (Geocoding Results: Patients) в раскрывающемся списке Загрузить из (Load from).
-
Настройте свойства, перечисленные в разделе Свойства анализа расположений (Location Analysis Properties) так, чтобы они соответствовали значениям полей слоя Результаты геокодирования: пациенты (Geocoding Results: Patients), как указано в дополнительных шагах ниже. (Следующее изображение содержит внесенные изменения.)
- Сопоставьте свойство Название (Name) полю OrderName1.
- Сопоставьте свойство Описание (Description) полю Адрес пациента (PatientAddress).
- Сопоставьте свойство TimeWindowStart1 полю PickFrom field.
- Сопоставьте свойство TimeWindowEnd1 полю PickTo field.
- Сопоставьте свойство PickupQuantities полю TotalPassengers.
- Убедитесь, что свойство SpecialtyNames автоматически соответствует полю SpecialtyNames.
-
Введите значение 2 на закладке Значение по умолчанию (Default Value) для свойства ServiceTime.
Все загруженные адреса пациентов имеют значение 2 для свойства ServiceTime, которое означает время (в минутах) посадки в машину для каждого пассажира.
-
Введите значение 0 на закладке Значение по умолчанию (Default Value) для свойства MaxViolationTime1.
Установив для всех свойств MaxViolationTime1 значение 0, инструмент решения задачи VRP будет искать только маршруты для заказов в указанное время.
-
Нажмите ОК.
Загружено 15 заказов. Заказы видно на карте и в окне Network Analyst.
-
В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Заказы (Orders (15)) и выберите команду Загрузить расположения (Load Locations).
Откроется диалоговое окно Загрузка расположений (Load Locations).
- Выберите Результаты геокодирования: больницы назначения (Geocoding Results: DestinationHospitals) в раскрывающемся списке Загрузить из (Load from).
-
Настройте свойства, перечисленные в разделе Свойства анализа расположений (Location Analysis Properties) так, чтобы они соответствовали значениям полей слоя Результаты геокодирования: больницы назначения (Geocoding Results: DestinationHospitals), как указано в дополнительных шагах ниже. (Следующее изображение содержит внесенные изменения.)
-
Сопоставьте свойство Название (Name) полю OrderName2.
Обратите внимание, что значение для атрибута Имя (Name) должно быть уникальным в классе анализа сети Заказы (Orders). В данном случае есть несколько пациентов, которым нужно посетить одну и ту же больницу. Если бы адреса больниц использовались для выведения значения атрибута Имя (Name) для Заказов (Orders), инструмент решатель VRP вернул бы сообщение об ошибке из-за повторяющихся значений имен.
- Сопоставьте свойство Описание (Description) полю Адрес больницы (HospitalAddress).
- Сопоставьте свойство DeliveryQuantities полю TotalPassengers.
- Убедитесь, что свойство SpecialtyNames автоматически соответствует полю SpecialtyNames.
-
Сопоставьте свойство Название (Name) полю OrderName2.
-
Введите значение 2 на закладке Значение по умолчанию (Default Value) для свойства ServiceTime.
-
Нажмите ОК.
30 заказов перечислены в окне Network Analyst на закладке класса анализа сети Заказы (Orders) и отображены в качестве заказов на карте слоя задачи по нахождению транспортного маршрута.
В следующих шагах эти слои будут загружены в класс анализа сети Заказы (Orders).
Секция Свойства анализа местоположений (Location Analysis Properties) диалогового окна Загрузить местоположения (Load locations) позволяет вам указывать, какие атрибуты слоя Результаты геокодирования: Пациенты содержат значения, которые будут использованы Network Analyst при решении задачи выбора маршрута транспорта.
Добавление парных заказов
Пассажиров нужно доставлять в определенную больницу. Добавляя объекты в класс анализа сети Парные заказы (Order Pairs), можно указать, в какую больницу нужно отвезти пациентов и максимальное время, которое пациенты могут провести в машине в течение поездки в одну сторону.
-
В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Парные заказы (Orders (0)) и выберите команду Загрузить расположения (Load Locations).
Откроется диалоговое окно Загрузка расположений (Load Locations).
- Щёлкните на кнопке Обзор (Browse) к раскрывающемуся списку Загрузить из (Load From).
-
В раскрывающемся списке Искать в (Look in) выберите Главная – учебник (Home – Tutorial).
Таблица, которую вы добавите, хранится в файле Excel, который входит в состав демонстрационных данных Дополнительный модуль ArcGIS Network Analyst.
- Дважды щёлкните на файле OrderPairs.xls.
-
Дважды щёлкните на элементе Patients$.
Электронная таблица Пациенты (Patients) добавляется в раскрывающийся список Загрузить из (Load From) в диалоговом окне Загрузка расположений (Load Locations).
-
Настройте свойства, перечисленные в разделе Свойства анализа расположений (Location Analysis Properties) так, чтобы они соответствовали значениям из таблицы Patients$ в соответствии с дополнительными шагами ниже.
- Сопоставьте свойство FirstOderName полю OrderName1.
- Сопоставьте свойство SecondOrderName полю OrderName2.
- Убедитесь, что свойство MaxTransitTime автоматически соответствует полю MaxTransitTime.
-
Нажмите ОК.
15 парных заказов будут перечислены в окне Network Analyst во закладке класса анализа сети Парные заказы (Order Pairs).
Добавление складов
Логистическая компания использует машины из трех расположений, указанных на слое пространственных объектов CentralDepots в ArcMap. Эти точечные характеристики нужно добавить в класс анализа сети Склады (Depots).
-
В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Склады (Depots (0)) и выберите команду Загрузить расположения (Load Locations).
Откроется диалоговое окно Загрузка расположений (Load Locations).
- Выберите Центральные склады (CentralDepots) в раскрывающемся списке Загрузить из (Load From).
-
В разделе Свойства анализа расположений (Location Analysis Properties) убедитесь, что свойство Название (Name) автоматически соответствует полю Name.
-
Нажмите ОК.
3 склада перечислены в окне Network Analyst на закладке класса анализа сети Склады (Depots)и отображены в качестве заказов на карте слоя задачи по нахождению транспортного маршрута.
Добавление маршрутов
У логистической компании три машины, каждая из которых может перевозить не более шести пассажиров. Машины уезжают с автобазы и возвращаются на нее после выполнения маршрута. Одна из машин, работающих в центре, оборудована для погрузки кресел-колясок.
Нужно добавить три маршрута (по одному для каждой машины) и указать, что машина, которая ездит по городу, была оборудована для погрузки кресел-колясок.
-
В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Маршруты (Routes (0)) и выберите команду Добавить элемент (Add Item).
Новый маршрут Item1 добавляется на закладке класса анализа сети Маршруты (Routes), после чего откроется окно Свойства (Properties).
-
В окне Свойства (Properties) задайте атрибуты для маршрута, как показано в таблице ниже, не изменяя значения атрибутов, заданные по умолчанию. В столбце описания приводятся пояснения по каждому значению.
Attribute – Атрибут
Значение
Описание
Имя (Name)
Центр города
Название маршрута.
StartDepotName
Автобаза в центре города
Машина выезжает с автобазы в центре города.
EndDepotName
Автобаза в центре города
Машина возвращается на автобазу в центре города после выполнения маршрута.
Вместимость
6
Машина может вместить не более шести пассажиров одновременно.
SpecialtyNames
Кресло-коляска (Wheelchair) (Поставьте отметку Кресло-коляска (Wheelchair) для специального условия.)
Машина оборудована для погрузки кресел-колясок.
-
Нажмите ОК.
Новый маршрут Центр города (Downtown) указан в окне Network Analyst.
-
Повторите шаги 1 – 3, чтобы добавить два других маршрута для машин, работающих в районе Северной бухты и Восточной бухты. Используйте следующие таблицы для этих новых маршрутов вместо свойств, перечисленных на шаге 2.
Attribute – Атрибут
Значение
Имя (Name)
Северная бухта (North Bay)
StartDepotName
Автобаза Северной бухты (North Bay)
EndDepotName
Автобаза Северной бухты (North Bay)
Вместимость
6
Attribute – Атрибут
Значение
Имя (Name)
Восточная бухта (East Bay)
StartDepotName
Автобаза Восточной бухты (East Bay Depot)
EndDepotName
Автобаза Восточной бухты (East Bay Depot)
Вместимость
6
Обратите внимание, что эти машины оборудованы для погрузки кресел-колясок.
В окне Network Analyst показаны три объекта маршрутов, которые перечислены в классе анализа сети Маршруты (Routes).
Добавление зон маршрута
Компания использует три машины, которые имеют лицензии на обслуживание заказов только в определенной зоне. Нужно добавить зоны маршрутов и связать из с машинами или маршрутами.
- В окне Network Analyst выберите элемент Зоны маршрутов (Route Zones (0)).
- Щёлкните на инструменте Создание сетевого положения (Create Network Location) на панели инструментов Network Analyst.
-
На карте нарисуйте многоугольник, который в общих чертах охватывает центр города, как показано ниже.
Щёлкните один раз, чтобы добавить вершину; щёлкните дважды, чтобы завершить создание многоугольника.
Новая зона маршрута Изображение (Graphic Pick 1) будет добавлена в класс зон маршрута в окне Network Analyst. -
В окне Network Analyst дважды щёлкните на объекте новой зоны маршрута Изображение (Graphic Pick 1).
Откроется окно Свойства (Properties) для зоны маршрута.
-
Задайте свойства зоны маршрута, как показано в таблице ниже.
Attribute – Атрибут
Значение
Описание
RouteName
Центр города
Название маршрута, с которым связана эта зона маршрута.
IsHardZone
Истина (True)
Машина не может обслуживать заказы, которые не входят в зону маршрута. Если это свойство имеет значение True, то машина будет получать только те заказы, которые относятся к зоне маршрута.
-
Повторите шаги 1 – 6, чтобы добавить две другие зоны маршрута: одну для района Северной бухты и вторую для района Восточной бухты.
На карте и в окне Network Analyst должно быть три объекта зоны маршрута.
Установка свойств для анализа
Далее нужно задать свойства для анализа задачи по нахождению транспортного маршрута.
-
Нажмите кнопку Свойства слоя анализа (Analysis Layer Properties) в окне Network Analyst.
Откроется диалоговое окно Свойства слоя (Layer Properties).
- Перейдите на закладку Настройки анализа (Analysis Settings).
-
Убедитесь, что в раскрывающемся списке Атрибут времени (Time Attribute) выбрано значение Время в пути в минутах (TravelTime (Minutes)).
Инструмент решения задачи VRP использует этот атрибут для расчета затрат между заказами и автобазами на основе времени.
-
Убедитесь, что в раскрывающемся списке Атрибут расстояния (Distance Attribute) ничего не выбрано.
Поскольку параметры издержек на основе расстояния, такие как CostPerUnitDistance или MaxTotalDistance, не используются, атрибут расстояния не требуется.
- Задайте свойству Дата по умолчанию (Default Date) значение День недели (Day of Week). В раскрывающемся списке День недели (Day of Week) выберите Понедельник (Monday).
-
Поскольку вместимость машины измеряется только количеством пассажиров, убедитесь, что свойство Счетчик вместимости (Capacity Count) имеет значение 1.
Если бы вместимость измерялась числом пассажиров и максимальным числом кресел-колясок, счетчик вместимости имел бы значение 2.
-
Оставьте значения по умолчанию для других свойств.
- Нажмите ОК.
Запустите процесс для нахождения решения
-
Щёлкните на кнопке Расчет (Solve) на панели инструментов Network Analyst.
Инструмент решения задачи VRP вычислит маршруты для каждой машины. Каждый маршрут начинается на автобазе, подбирает одного или двух человек, если время, которое они могут провести в машине, меньше значения свойства MaxTransitTime, указанного в парном заказе, отвозит их в нужную больницу, продолжает подбирать и отвозить других людей и в конце возвращается на автобазу. Маршруты обслуживают только заказы в заданных зонах маршрутов.
Определение пошаговых направлений для маршрутов
-
Щёлкните на кнопке Окно направлений (Directions Window) на панели инструментов Network Analyst.
Откроется диалоговое окно Направления (Directions).
- При необходимости также экспортировать задачу по нахождению транспортного маршрута в качестве файла слоя (<имя_файла>.lyr) на диск, чтобы его можно было загрузить в другой документ карты.
- Выйдите из ArcMap без сохранения изменений.