Упражнение 8. Поиск оптимальных маршрутов для выполнения парных заказов

Уровень сложности: Начальный Требования к данным: ArcGIS Tutorial Data for Desktop Путь к данным: C:\ArcGIS\ArcTutor\ArcGIS Network Analyst\Tutorial Задача: Выполните анализ задачи нахождения транспортного маршрута с учетом парных заказов.

Цель этого упражнения – найти наиболее оптимальные маршруты для автопарка, чтобы перевозить людей, у которых нет другого доступа к транспорту, из дома до больницы для прохождения лечения. Упражнение будет выполнено путем решения задачи нахождения транспортного маршрута (VRP) с учетом парных заказов, которая связывает два последовательных заказа (остановки) так, что транспорт будет подбирать людей и доставлять их в нужную больницу. Также будут соблюдены дополнительные требования с помощью других характеристик слоя анализа задачи VRP. Например, будет введено максимальное время в пути для парных заказов так, чтобы люди не проводили слишком много времени в пути. Будут использованы временные ограничения, так как люди не должны опаздывать в больницу. Некоторым людям требуются кресла-коляски, поэтому для них нужно будет отправить транспорт со специальными подъемниками для кресел-колясок. После определения маршрутов будут созданы пошаговые указания результирующих маршрутов, которые можно отправить электронным способом или распечатать и передать водителям.

ПримечаниеПримечание:

Данные для этого и других учебных упражнений Network Analyst доступны на сайте ArcGIS.com. После загрузки данных их можно извлечь в любое место. Однако удобнее извлечь их в папку C:\arcgis\ArcTutor, поскольку эта папка указана в упражнениях как местоположение учебных данных по умолчанию.

Подготовка отображения

Шаги:
  1. Если файл Exercise08.mxd открыт в ArcMap, переходите к шагу 6.
  2. Чтобы запустить ArcMap, выберите Пуск > Все программы > ArcGIS > ArcMap 10.1.
  3. В диалоговом окне ArcMap - Начало работы (ArcMap - Getting Started), щелкните Существующие карты (Existing Maps) > Найти... (Browse for more).

    Появится диалоговое окно Открыть документ ArcMap (Open ArcMap Document).

  4. Перейдите к папке C:\ArcGIS\ArcTutor\ArcGIS Network Analyst\Tutorial.

    Это местоположение по умолчанию для установки учебных материалов.

  5. Дважды щёлкните на файле Exercise08.mxd.

    Документ карты откроется в ArcMap.

  6. Активируйте дополнительный модуль ArcGIS Network Analyst.
    1. Щелкните Настройка (Customize) > Дополнительные модули (Extensions).

      Откроется диалоговое окно Дополнительные модули (Extensions).

    2. Отметьте ArcGIS Network Analyst.
    3. Щелкните Закрыть (Close).
  7. Если панель инструментов Network Analyst еще не отображается, необходимо ее добавить.

  8. Щелкните Настройка (Customize) > Панели инструментов (Toolbars) > Network Analyst.

    Панель инструментов Network Analyst будет добавлена в ArcMap.

    Панель инструментов Network Analyst

  9. Если окно Network Analyst еще не отображается, необходимо его добавить.

  10. На панели инструментов Network Analyst щелкните на кнопке Окно Network Analyst (Network Analyst window) Окно Network Analyst.

    Откроется прикрепляемое окно Network Analyst.

    Окно Network Analyst

  11. Окно Network Analyst можно закреплять и откреплять.

Создание слоя анализа для выбора маршрута транспорта

Шаги:
  1. Щёлкните на пункте Network Analyst на панели инструментов Network Analyst и щёлкните на Новая задача выбора маршрута транспорта (New Vehicle Routing Problem).

    Выбор Новой матрицы Источник-Назначение (New OD Cost Matrix)

    Слой анализа задачи выбора маршрута транспорта добавлен в окно Network Analyst. Классы сетевого анализа: Вызовы (Orders), Гаражи (Depots), Маршруты (Routes), Возвращения в гараж (Depot Visits), Границы (Breaks), Зоны маршрутов (Route Zones), Исходные точки маршрутов (Route Seed Points), Обновления маршрутов (Route Renewals), Специальные требования (Specialties), Пары заказов (Order Pairs), Точечные барьеры (Point Barriers), Линейные барьеры (Line Barriers) и Полигональные барьеры (Polygon Barriers) — пусты.

    Окно ArcGIS Network Analystс незаполненными классами

    Также в окно Таблица содержания (Table Of Contents) добавлен новый слой анализа.

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

Добавление специальных условий

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

Шаги:
  1. В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Специальные условия (Specialites (0)) и выберите команду Добавить элемент (Add Item).

    Создание специального условия

    Новое специальное условие Item 1 появится на закладке класса Специальные условия (Specialties) в окне Network Analyst. Откроется окно Свойства (Properties) для нового специального условия.

  2. В окне Свойства (Properties) введите Кресло-коляска (Wheelchair) в качестве значения свойства Название (Name).

    Название специального условия со значением Кресло-коляска (Wheelchair)

  3. Нажмите ОК.

Добавление заказов

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

Attribute – Атрибут

Описание

OrderName1

Имя пациента, которого нужно перевезти

PatientAddress

Адрес, по которому нужно забрать пациента

OrderName2

Уникальное имя адреса назначения

HospitalAddress

Адрес, по которому нужно доставить пациента

PickFrom

Самое раннее время, когда пациента можно забрать по адресу PatientAddress

PickTo

Самое позднее время, когда пациента можно забрать по адресу PatientAddress

TotalPassengers

Общее число пассажиров, которых нужно забрать

MaxTransitTime

Максимальное время, которое пациент может провести в машине

SpecialtyNames

Указывает особые потребности пассажира, например, кресло-коляску

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

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

Шаги:
  1. Щёлкните на кнопке Файл (File) > Добавить данные (Add Data) > Геокодирование (Geocoding) > Присвоить геокод адресу (Geocode Addresses).

    Откроется диалоговое окно Выбрать локатор адресов к применению (Choose an Address Locator to use).

  2. Щёлкните на кнопке SanFranciscoLocator.

    Локатор SanFranciscoLocator включен в файл Exercise08.mxd.

  3. Нажмите ОК.

    Откроется диалоговое окно Присвоение геокода адресу: SanFranciscoLocator.

  4. Щёлкните на кнопке Обзор (Browse) Обзор раскрывающемуся списку Таблица адресов (Address table).

    Откроется диалоговое окно Выбор таблицы с адресами (Choose a table containing addresses).

  5. В раскрывающемся списке Искать в (Look in) выберите Главная – учебник (Home – Tutorial).

    Таблица, которую вы добавите, хранится в файле Excel, который входит в состав демонстрационных данных Network Analyst.

  6. Дважды щёлкните на файле OrderPairs.xls.
  7. Дважды щёлкните на элементе Patients$.

    Электронная таблица Пациенты (Patients) будет добавлена в раскрывающийся список Таблица адресов (Address table).

  8. В раскрывающемся списке Улица или пересечение (Street or Intersection) выберите Адрес пациента (PatientAddress).
  9. Щёлкните на кнопке Обзор (Browse) Обзор к текстовому полю Выходной шейп-файл или класс пространственных объектов (Output shapefile or feature class).

    Откроется диалоговое окно Сохранение данных (Saving Data) из главного расположения для файла Exercise08.mxd.

  10. В раскрывающемся списке Искать в (Look in) выберите Главная – учебник (Home – Tutorial).
  11. В раскрывающемся списке Сохранить как тип (Save as type) выберите Файл и персональные классы пространственных объектов базы геоданных (File and Personal Geodatabase feature classes).

    Список файлов и рабочих областей обновится.

  12. Дважды щёлкните на файле SanFrancisco.gdb.
  13. Удалите имя в текстовом поле Имя (Name) и введите Пациенты (Patients).

    «Пациенты» – это имя выходного класса пространственных объектов.

  14. Нажмите Сохранить (Save).

    Текстовое поле Выходного шейп-файла или класса пространственных объектов (Output shapefile or feature class) в диалоговом окне Геокодирование адресов: SanFranciscoLocator обновится с учетом нового выходного пути.

    Окончательное диалоговое окно Геокодирование адресов: SanFranciscoLocator

  15. Нажмите ОК.

    Откроется диалоговое окно Геокодирование адресов (Geocoding Addresses) и покажет, что все 15 адресов были найдены.

  16. Щелкните Закрыть (Close).

    Геокодированные адреса будут добавлены в документ карты в качестве слоя пространственных объектов Результат геокодирования: пациенты (Geocoding Result: Patients).

  17. Повторите шаги 1 – 16, чтобы загрузить больницы назначения пациентов, но внесите следующие изменения:
    1. В шаге 8 задайте свойству Улица или пересечение (Street or Intersection) значение Адрес больницы (HospitalAddress).
    2. В шаге 13 введите Больницы назначения (DestinationHospitals) в текстовом поле Название (Name).

      Диалоговое окно Геокодирование адресов: SanFranciscoLocator (Geocode Addresses: SanFranciscoLocator) для больницы

      В окне Содержимое (Table of Contents) должно быть два слоя пространственных объектов Результаты геокодирования: больницы назначения (Geocoding Results: DestinationHospitals) и Результаты геокодирования: пациенты (Geocoding Results: Patients).

  18. В окне Содержимое (Table Of Contents) снимите выделение для двух слоев результатов геокодирования, чтобы они стали невидимыми на карте.
  19. В следующих шагах эти слои будут загружены в класс анализа сети Заказы (Orders).

  20. В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Заказы (Orders (0)) и выберите команду Загрузить расположения (Load Locations).

    Откроется диалоговое окно Загрузка расположений (Load Locations).

  21. Выберите Результаты геокодирования: пациенты (Geocoding Results: Patients) в раскрывающемся списке Загрузить из (Load from).
  22. Секция Свойства анализа местоположений (Location Analysis Properties) диалогового окна Загрузить местоположения (Load locations) позволяет вам указывать, какие атрибуты слоя Результаты геокодирования: Пациенты содержат значения, которые будут использованы Network Analyst при решении задачи выбора маршрута транспорта.

  23. Настройте свойства, перечисленные в разделе Свойства анализа расположений (Location Analysis Properties) так, чтобы они соответствовали значениям полей слоя Результаты геокодирования: пациенты (Geocoding Results: Patients), как указано в дополнительных шагах ниже. (Следующее изображение содержит внесенные изменения.)
    1. Сопоставьте свойство Название (Name) полю OrderName1.
    2. Сопоставьте свойство Описание (Description) полю Адрес пациента (PatientAddress).
    3. Сопоставьте свойство TimeWindowStart1 полю PickFrom field.
    4. Сопоставьте свойство TimeWindowEnd1 полю PickTo field.
    5. Сопоставьте свойство PickupQuantities полю TotalPassengers.
    6. Убедитесь, что свойство SpecialtyNames автоматически соответствует полю SpecialtyNames.
  24. Введите значение 2 на закладке Значение по умолчанию (Default Value) для свойства ServiceTime.

    Все загруженные адреса пациентов имеют значение 2 для свойства ServiceTime, которое означает время (в минутах) посадки в машину для каждого пассажира.

  25. Введите значение 0 на закладке Значение по умолчанию (Default Value) для свойства MaxViolationTime1.

    Установив для всех свойств MaxViolationTime1 значение 0, инструмент решения задачи VRP будет искать только маршруты для заказов в указанное время.

    Диалоговое окно Загрузка расположений (Load Locations)

  26. Нажмите ОК.

    Загружено 15 заказов. Заказы видно на карте и в окне Network Analyst.

  27. В следующих шагах больницы назначения также буду загружены в качестве заказов.
  28. В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Заказы (Orders (15)) и выберите команду Загрузить расположения (Load Locations).

    Откроется диалоговое окно Загрузка расположений (Load Locations).

  29. Выберите Результаты геокодирования: больницы назначения (Geocoding Results: DestinationHospitals) в раскрывающемся списке Загрузить из (Load from).
  30. Настройте свойства, перечисленные в разделе Свойства анализа расположений (Location Analysis Properties) так, чтобы они соответствовали значениям полей слоя Результаты геокодирования: больницы назначения (Geocoding Results: DestinationHospitals), как указано в дополнительных шагах ниже. (Следующее изображение содержит внесенные изменения.)
    1. Сопоставьте свойство Название (Name) полю OrderName2.

      Обратите внимание, что значение для атрибута Имя (Name) должно быть уникальным в классе анализа сети Заказы (Orders). В данном случае есть несколько пациентов, которым нужно посетить одну и ту же больницу. Если бы адреса больниц использовались для выведения значения атрибута Имя (Name) для Заказов (Orders), инструмент решатель VRP вернул бы сообщение об ошибке из-за повторяющихся значений имен.

    2. Сопоставьте свойство Описание (Description) полю Адрес больницы (HospitalAddress).
    3. Сопоставьте свойство DeliveryQuantities полю TotalPassengers.
    4. Убедитесь, что свойство SpecialtyNames автоматически соответствует полю SpecialtyNames.
  31. Введите значение 2 на закладке Значение по умолчанию (Default Value) для свойства ServiceTime.

    Откроется диалоговое окно Загрузка расположений (Load Locations).

  32. Нажмите ОК.

    30 заказов перечислены в окне Network Analyst на закладке класса анализа сети Заказы (Orders) и отображены в качестве заказов на карте слоя задачи по нахождению транспортного маршрута.

Добавление парных заказов

Пассажиров нужно доставлять в определенную больницу. Добавляя объекты в класс анализа сети Парные заказы (Order Pairs), можно указать, в какую больницу нужно отвезти пациентов и максимальное время, которое пациенты могут провести в машине в течение поездки в одну сторону.

Шаги:
  1. В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Парные заказы (Orders (0)) и выберите команду Загрузить расположения (Load Locations).

    Откроется диалоговое окно Загрузка расположений (Load Locations).

  2. Щёлкните на кнопке Обзор (Browse) Обзор к раскрывающемуся списку Загрузить из (Load From).
  3. В раскрывающемся списке Искать в (Look in) выберите Главная – учебник (Home – Tutorial).

    Таблица, которую вы добавите, хранится в файле Excel, который входит в состав демонстрационных данных Дополнительный модуль ArcGIS Network Analyst.

  4. Дважды щёлкните на файле OrderPairs.xls.
  5. Дважды щёлкните на элементе Patients$.

    Электронная таблица Пациенты (Patients) добавляется в раскрывающийся список Загрузить из (Load From) в диалоговом окне Загрузка расположений (Load Locations).

  6. Настройте свойства, перечисленные в разделе Свойства анализа расположений (Location Analysis Properties) так, чтобы они соответствовали значениям из таблицы Patients$ в соответствии с дополнительными шагами ниже.
    1. Сопоставьте свойство FirstOderName полю OrderName1.
    2. Сопоставьте свойство SecondOrderName полю OrderName2.
    3. Убедитесь, что свойство MaxTransitTime автоматически соответствует полю MaxTransitTime.
  7. Нажмите ОК.

    15 парных заказов будут перечислены в окне Network Analyst во закладке класса анализа сети Парные заказы (Order Pairs).

    Парные заказы в окне Network Analyst

Добавление складов

Логистическая компания использует машины из трех расположений, указанных на слое пространственных объектов CentralDepots в ArcMap. Эти точечные характеристики нужно добавить в класс анализа сети Склады (Depots).

Шаги:
  1. В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Склады (Depots (0)) и выберите команду Загрузить расположения (Load Locations).

    Откроется диалоговое окно Загрузка расположений (Load Locations).

  2. Выберите Центральные склады (CentralDepots) в раскрывающемся списке Загрузить из (Load From).
  3. В разделе Свойства анализа расположений (Location Analysis Properties) убедитесь, что свойство Название (Name) автоматически соответствует полю Name.

    Диалоговое окно Загрузка расположений (Load Locations)

  4. Нажмите ОК.

    3 склада перечислены в окне Network Analyst на закладке класса анализа сети Склады (Depots)и отображены в качестве заказов на карте слоя задачи по нахождению транспортного маршрута.

Добавление маршрутов

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

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

Шаги:
  1. В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Маршруты (Routes (0)) и выберите команду Добавить элемент (Add Item).

    Добавление элемента

    Новый маршрут Item1 добавляется на закладке класса анализа сети Маршруты (Routes), после чего откроется окно Свойства (Properties).

  2. В окне Свойства (Properties) задайте атрибуты для маршрута, как показано в таблице ниже, не изменяя значения атрибутов, заданные по умолчанию. В столбце описания приводятся пояснения по каждому значению.

    Attribute – Атрибут

    Значение

    Описание

    Имя (Name)

    Центр города

    Название маршрута.

    StartDepotName

    Автобаза в центре города

    Машина выезжает с автобазы в центре города.

    EndDepotName

    Автобаза в центре города

    Машина возвращается на автобазу в центре города после выполнения маршрута.

    Вместимость

    6

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

    SpecialtyNames

    Кресло-коляска (Wheelchair) (Поставьте отметку Кресло-коляска (Wheelchair) для специального условия.)

    Машина оборудована для погрузки кресел-колясок.

    Окно Свойства маршрута (Route Properties)

  3. Нажмите ОК.

    Новый маршрут Центр города (Downtown) указан в окне Network Analyst.

  4. Повторите шаги 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).

    Классы анализа маршрута

Добавление зон маршрута

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

Шаги:
  1. В окне Network Analyst выберите элемент Зоны маршрутов (Route Zones (0)).
  2. Щёлкните на инструменте Создание сетевого положения (Create Network Location) Инструмент создания сетевого положения на панели инструментов Network Analyst.
  3. На карте нарисуйте многоугольник, который в общих чертах охватывает центр города, как показано ниже.

    Щёлкните один раз, чтобы добавить вершину; щёлкните дважды, чтобы завершить создание многоугольника.

    Создание зоны маршрута
    Новая зона маршрута Изображение (Graphic Pick 1) будет добавлена в класс зон маршрута в окне Network Analyst.

  4. В окне Network Analyst дважды щёлкните на объекте новой зоны маршрута Изображение (Graphic Pick 1).

    Откроется окно Свойства (Properties) для зоны маршрута.

  5. Задайте свойства зоны маршрута, как показано в таблице ниже.

    Attribute – Атрибут

    Значение

    Описание

    RouteName

    Центр города

    Название маршрута, с которым связана эта зона маршрута.

    IsHardZone

    Истина (True)

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

    Свойства зоны маршрута

  6. Повторите шаги 1 – 6, чтобы добавить две другие зоны маршрута: одну для района Северной бухты и вторую для района Восточной бухты.

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

    Три зоны маршрута на карте
    Три зоны маршрута в окне Network Analyst

Установка свойств для анализа

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

Шаги:
  1. Нажмите кнопку Свойства слоя анализа (Analysis Layer Properties) в окне Network Analyst.

    Нажмите кнопку Свойства слоя (Layer Properties)

    Откроется диалоговое окно Свойства слоя (Layer Properties).

  2. Перейдите на закладку Настройки анализа (Analysis Settings).
  3. Убедитесь, что в раскрывающемся списке Атрибут времени (Time Attribute) выбрано значение Время в пути в минутах (TravelTime (Minutes)).

    Инструмент решения задачи VRP использует этот атрибут для расчета затрат между заказами и автобазами на основе времени.

  4. Убедитесь, что в раскрывающемся списке Атрибут расстояния (Distance Attribute) ничего не выбрано.

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

  5. Задайте свойству Дата по умолчанию (Default Date) значение День недели (Day of Week). В раскрывающемся списке День недели (Day of Week) выберите Понедельник (Monday).
  6. Поскольку вместимость машины измеряется только количеством пассажиров, убедитесь, что свойство Счетчик вместимости (Capacity Count) имеет значение 1.

    Если бы вместимость измерялась числом пассажиров и максимальным числом кресел-колясок, счетчик вместимости имел бы значение 2.

  7. Оставьте значения по умолчанию для других свойств.

    Закладка Настройки анализа (Analysis Settings)

  8. Нажмите ОК.

Запустите процесс для нахождения решения

Шаги:
  1. Щёлкните на кнопке Расчет (Solve) Решение на панели инструментов Network Analyst.

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

    Результаты анализа задачи VRP

Определение пошаговых направлений для маршрутов

Шаги:
  1. Щёлкните на кнопке Окно направлений (Directions Window) Направления на панели инструментов Network Analyst.

    Откроется диалоговое окно Направления (Directions).

  2. При необходимости также экспортировать задачу по нахождению транспортного маршрута в качестве файла слоя (<имя_файла>.lyr) на диск, чтобы его можно было загрузить в другой документ карты.
  3. Выйдите из ArcMap без сохранения изменений.
9/11/2013