Доступно с лицензией Network Analyst.
- Подготовка отображения
- Создание слоя анализа для выбора маршрута транспорта
- Добавление заказов
- Добавление складов
- Добавление маршрутов
- Задание свойств для анализа задачи нахождения транспортного маршрута
- Выполните процесс для определения наиболее оптимального маршрута и последовательности заказов
- Определение пошаговых путевых листов для маршрутов
- Внесите изменения в существующее решение для выполнения другого сценария
- Удаление существующего маршрута из решения
- Добавление загрузок на маршруте
- Изменение маршрута для включения сверхурочного времени
- Добавление перерывов
- Вычисление решения
- Добавление основных точек маршрута
- Вычислите решение
В этом упражнении будут найдены наиболее оптимальные маршруты для автопарка дистрибьюторской компании для доставки товаров из центра распределения в 25 розничных магазинов. У каждого магазина есть определенные потребности в товаре, и у каждого грузовика есть ограниченная вместимость товара. Основная цель – подобрать грузовики из автопарка под определенный набор магазинов и распределить доставки таким образом, чтобы снизить общие транспортные расходы.
В этом заключается решение задачи нахождения маршрута транспорта (VRP). Когда последовательность доставки будет определена, будут созданы пошаговые путевые листы итоговых маршрутов, которые можно отправить электронным способом или распечатать и передать водителям, работающим на маршрутах доставки.
Подготовка отображения
- Если файл Exercise07.mxd открыт в ArcMap, переходите к шагу 6.
- Запустите ArcMap.
- В диалоговом окне ArcMap – Начало работы (ArcMap – Getting Started) щелкните Существующие карты (Existing Maps) > Найти еще (Browse for more).
Появится диалоговое окно Открыть документ ArcMap (Open ArcMap Document).
- Перейдите к папке C:\ArcGIS\ArcTutor\ArcGIS Network Analyst\Tutorial.
Это местоположение по умолчанию для установки учебных материалов.
- Дважды щёлкните на файле Exercise07.mxd.
Документ карты откроется в ArcMap.
- Активируйте дополнительный модуль ArcGIS Network Analyst.
- Щелкните Настройка (Customize) > Дополнительные модули (Extensions).
Откроется диалоговое окно Дополнительные модули (Extensions).
- Отметьте ArcGIS Network Analyst.
- Щелкните на кнопке Закрыть (Close).
- Щелкните Настройка (Customize) > Дополнительные модули (Extensions).
- Щелкните Настройка > Панели инструментов > Network Analyst.
Панель инструментов Network Analyst будет добавлена в ArcMap.
- На панели инструментов Network Analyst щелкните на кнопке Окно Network Analyst.
Откроется прикрепляемое окно 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) добавлен новый слой анализа.
Добавление заказов
Расположения розничных магазинов будут добавлены в класс сетевого анализа Заказы. Заказы можно представить как заявки, которые необходимо выполнить, поскольку каждый магазин заказывает определенное количество товара из центра распределения. Элементы класса Заказы в конечном итоге будут остановками на транспортном маршруте.
Расположения магазинов уже добавлены в качестве слоя объектов Stores в документ карты. Атрибуты слоя Stores содержат сведения об общем весе товара (в фунтах), который требуется каждому магазину, времени, когда должна быть выполнена доставка, и времени разгрузки (в минутах) в каждом магазине. ServiceTime – это время, необходимое для разгрузки товара.
Вы добавите эти точечные объекты магазинов в слой анализа в качестве заказов.
- В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Заказы (0) и выберите команду Загрузить положения.
Откроется диалоговое окно Загрузить положения.
- Выберите Stores в раскрывающемся списке Загрузить положения.
- В разделе Свойства анализа положений убедитесь, что свойство Name автоматически сопоставлено полю NAME, а свойство ServiceTime ― полю ServiceTime.
Дополнительный модуль ArcGIS Network Analyst пытается автоматически сопоставить свойства анализа положений для вновь созданного слоя задачи выбора маршрута транспорта на основе файла конфигурации (расположенного в установочном каталоге ArcGIS [...]\NetworkAnalyst\NetworkConfiguration\NASolverConfiguration.xml).
- Задайте значение Поля для свойства TimeWindowStart1 как TimeStart1.
- Задайте значение Поля свойства TimeWindowEnd1 как TimeEnd1.
- Задайте значение Поля свойства DeliveryQuantities как Demand.
- Введите значение 0 в столбце Значение по умолчанию для свойства MaxViolationTime1.
Если задать нулевое значение этого свойства, это будет означать, что время доставки нарушать нельзя.
- Нажмите ОК.
25 магазинов перечислены в окне Network Analyst на вкладке Заказы в качестве заказов на карте.
Раздел Свойства анализа положений в диалоговом окне Загрузить положения позволяет указать, какие атрибуты класса объектов Stores содержат значения, которые дополнительный модуль ArcGIS Network Analyst будет использовать для расчета задачи выбора маршрута транспорта.
Добавление складов
Товары доставляют из одного центра распределения, местоположение которого показано в слое пространственных объектов DistributionCenter в ArcMap. Центр распределения работает с 8:00 до 17:00. Этот точечный объект должен быть добавлен в класс сетевого анализа Станции.
- В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Станции (0) и выберите команду Загрузить положения.
Откроется диалоговое окно Загрузить положения.
- Выберите DistributionCenter в раскрывающемся списке Загрузить положения.
- В разделе Свойства анализа положений убедитесь, что свойство Name автоматически соответствует полю NAME.
- Введите значение 8 AM в поле Значение по умолчанию для свойства TimeWindowStart1.
- Введите значение 5 PM в поле Значение по умолчанию для свойства TimeWindowEnd1.
- Нажмите ОК.
Один центр распределения указан в окне Network Analyst на вкладке Станции и отображен в качестве склада на карте.
Добавление маршрутов
У центра распределения есть три грузовика, каждый из которых может перевозить не более 15 тыс. фунтов товара. Нужно добавить три маршрута (один для каждого грузовика) и задать свойства для маршрутов исходя из инструкций центра распределения.
- В окне Network Analyst щёлкните правой кнопкой мыши на Маршруты (0) и выберите команду Добавить элемент.
Новый маршрут Элемент 1 добавляется на вкладке класса Маршруты в окне Network Analyst, после чего откроется окно Свойства для маршрута.
- В окне Свойства задайте атрибуты для маршрута, как показано в таблице ниже. В столбце описания приводятся пояснения по каждому значению. Не изменяйте в таблице значения атрибутов по умолчанию.
Атрибут Значение Описание Имя канала
Truck_1
Название транспортного средства.
StartDepotName
Сан-Франциско
Грузовик начинает движение по маршруту от центра распределения.
EndDepotName
Сан-Франциско
Грузовик возвращается в центр распределения в конце маршрута.
StartDepotServiceTime
60
Время (в данном случае в минутах), необходимое для полной загрузки грузовика товаром.
EarliestStartTime
8 AM
Грузовик может начать доставку, как только центр распределения откроется в 8:00.
LatestStartTime
8 AM
Грузовик должен начинать работу как можно раньше.
Ёмкость
15000
Грузовик может перевозить не более 15 тыс. фунтов товаров.
CostPerUnitTime
0.20
Водитель грузовика получает 12 долларов в час, то есть его заработная плата составляет 12 долларов/60 минут = 0,20 центов в минуту.
CostPerUnitDistance
1.5
Средняя стоимость в долларах на милю с учетом расхода топлива, амортизации грузовика и обслуживания.
MaxOrderCount
10
Максимальное число магазинов, которые могут быть обслужены грузовиком.
MaxTotalTime
360
В силу ограничений рабочего дня водители не могут работать дольше шести часов (360 минут).
MaxTotalTravelTime
120
Чтобы не нарушать ограничений рабочего дня и обслуживать достаточное количество магазинов, учитывая время разгрузки у каждого магазина, грузовик должен тратить не более двух часов (120 минут) на движение по улицам.
MaxTotalDistance
80
Чтобы сбалансировать ежедневные расходы на топливо и обслуживание для всего автопарка, каждый грузовик должен проезжать не более 80 миль маршрута.
- Нажмите ОК.
Новый маршрут Truck_1 добавляется в класс маршрутов в окне Network Analyst.
- Щёлкните правой кнопкой мыши на объекте маршрута Truck_1 в окне Network Analyst и выберите команду Копировать.
- Щёлкните правой кнопкой мыши на классе Маршрут (1) в окне Network Analyst и выберите команду Вставить.
Класс Маршруты содержит два идентичных объекта маршрута.
- Повторите предыдущий шаг, чтобы создать третий объект маршрута.
- Дважды щёлкните на втором объекте Truck_1 в списке.
Откроется окно Свойства.
- Щёлкните на свойстве Name и введите Truck_2.
- Дважды щёлкните на клавишу ВВОД.
Маршрут получит уникальное имя, и окно закроется.
- Используйте ту же процедуру для изменения названия последнего маршрута на Truck_3.
Поскольку три грузовика в центре распределения не отличаются друг от друга, можно сделать две копии первого грузовика и переименовать их.
Задание свойств для анализа задачи нахождения транспортного маршрута
- Нажмите кнопку Свойства слоя анализа (Analysis Layer Properties) в окне Network Analyst.
Откроется диалоговое окно Свойства слоя (Layer Properties).
- Перейдите на закладку Настройки анализа (Analysis Settings).
- Убедитесь, что в раскрывающемся списке Атрибут времени выбрано значение TravelTime (Минуты).
Инструмент решения задачи VRP использует этот атрибут для расчета стоимости на основании времени между заказами и складом.
- В раскрывающемся списке Атрибут расстояния выберите Метры.
Этот атрибут используется для вычисления расстояний между заказами и складом для целей ограничения и создания маршрутов, но цель инструмента решения задачи VRP заключается в минимизации издержек исходя из временных показателей.
- Задайте свойству Дата по умолчанию значение День недели. Выберите Понедельник в раскрывающемся списке День недели.
- Убедитесь, что свойству Число характеристик ёмкости задано значение 1.
Это значение указывает на то, что доставляемые товары измеряются только по одному показателю. В данном случае этот показатель – вес (в фунтах). Если бы ёмкость была указана с помощью двух показателей, например, веса и объема, то число характеристик ёмкости имело бы значение 2.
- Убедитесь, что значение Минуты задано свойству Единицы поля времени.
Это свойство указывает на то, что все атрибуты на основе времени, такие как ServiceTime и MaxViolationTime1 для класса Заказы и MaxTotalTime, MaxTotalTravelTime и CostPerUnitTime для класса Маршрут, задаются в минутах.
- Убедитесь, что свойству Единицы поля расстояния задано значение Мили.
Это свойство указывает на то, что все атрибуты на основе расстояния, такие как MaxTotalDistance и CostPerUnitDistance для класса Маршруты, задаются в милях.
- Поскольку эти грузовики не могут выполнять развороты, задайте свойству Развороты в соединениях значение Не разрешено.
- Выберите Прямая линия в раскрывающемся списке Тип выходной формы.
Можно выбрать значение Истинная форма с измерениями или Истинная форма, если требуется, чтобы маршруты проходили по улицам. Обратите внимание, что этот параметр влияет только на отображение маршрутов, а не результаты, определенные механизмом расчета VRP.
- Убедитесь, что опция Использовать иерархию включена.
- Убедитесь, что в разделе Ограничения (Restrictions) отмечены ограничения RestrictedTurns и Oneway.
- Оставьте параметры в разделе Путевой лист без изменений.
- Нажмите ОК.
Выполните процесс для определения наиболее оптимального маршрута и последовательности заказов
- Щёлкните на кнопке Расчет (Solve) на панели инструментов Network Analyst.
Инструмент решения задачи VRP вычислит три маршрута, необходимые для обслуживания заказов, и нарисует линии, соединяющие заказы. Каждый маршрут начинается и заканчивается в центре распределения и обслуживает набор заказов на соответствующем маршруте.
Если вы получили сообщения об ошибках, убедитесь, что значение атрибута Capacities для маршрутов задано равным 15000, а не 15,000, что имя каждого маршрута уникально.
Определение пошаговых путевых листов для маршрутов
- Щёлкните правой кнопкой мыши на кнопке Маршруты (3) в окне Network Analyst и выберите команду Выборка > Очистить выбранные объекты.
- Щёлкните на кнопке Окно направлений (Directions Window) на панели инструментов Network Analyst.
Откроется диалоговое окно Направления (Directions).
- Вы также можете экспортировать слой задачи выбора маршрута транспорта в виде файла слоя (<filename>.lyr), щелкнув правой кнопкой на Задача выбора маршрута транспорта в окне Таблицы содержания и выбрав Сохранить как файл слоя. Эта команда сохранит анализ на диск, после чего его можно будет добавить в другой документ карты и использовать позже.
- Если необходимо продолжить работу и перейти в другие разделы этого упражнения, закройте окно Путевой лист. В противном случае – выйдите из программы ArcMap и не сохраняйте изменения для файла Exercise 07.mxd.
Внесите изменения в существующее решение для выполнения другого сценария
Решение задачи нахождения транспортного маршрута, полученное ранее, подошло компании. Но через несколько недель водитель маршрута Truck_2 вышел в отпуск. Теперь дистрибьюторской компании нужно обслуживать то же количество магазинов с помощью только двух грузовиков. Чтобы учесть дополнительную нагрузку, компания решила платить двум другим водителям сверхурочные и предоставить им один оплачиваемый перерыв в течение дня. Дистрибьюторская компания также приобрела два дополнительных центра распределения. Эти центры могут быть использованы грузовиками для пополнения загрузки и продолжения маршрута доставки вместо возвращения в основной центр распределения для очередной загрузки. Необходимо изменить решение, полученное на предыдущем шаге, и учесть эти изменения.
Удаление существующего маршрута из решения
- В окне Network Analyst щёлкните правой кнопкой мыши на объекте Truck_2 в классе Маршруты и выберите команду Удалить.
Добавление загрузок на маршруте
Два дополнительных центра распределения, приобретенных компанией, находятся на ул. Браш-Стрит, 800, и Олд-Каунти-Роуд, 100. Их можно использовать для пополнения загрузки грузовиков. Грузовики могут пополнить загрузку, заехав в эти центры распределения, и тем самым сэкономить время, не возвращаясь на исходный склад. Новые центры распределения нужно добавить в класс анализа сети Станции через геокодирование их адресов. Маршруты, на которых можно пополнять загрузку в дополнительном центре распределения, и время загрузки в них указаны в классе сетевого анализа Обновления маршрутов.
- В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Станции (1) и выберите команду Найти адрес.
Откроется диалоговое окно Найти.
- Выберите SanFranciscoLocator в раскрывающемся списке Выберите локатор.
- В текстовом поле Full Address введите 800 Brush St.
- Щелкните Найти (Find).
Локатор адресов SanFranciscoLocator, который уже был добавлен в файл Exercise07.mxd, найдет адрес и покажет результат внизу диалогового окна Найти.
- Щёлкните правой кнопкой мыши на диалоговом окне Найти и выберите команду Добавить как объект сетевого анализа.
Новый адрес будет добавлен в качестве станции в окно Network Analyst и отображение карты.
- В текстовом поле Full Address диалогового окна Поиск введите 100 Old County Rd.
- Щелкните Найти (Find).
- Щёлкните правой кнопкой мыши на новом результате внизу диалогового окна Найти и выберите команду Добавить как объект сетевого анализа.
Третий склад добавлен в класс сетевого анализа Станции.
- Закройте диалоговое окно Найти.
- В окне Network Analyst щёлкните на правой кнопкой мыши на Обновления маршрутов (0) и выберите команду Добавить элемент.
Новый объект пополнения загрузки на маршруте Item1 будет добавлен на вкладку класса Обновления маршрута в окне Network Analyst, после чего откроется окно Свойства для элемента Item1.
- В окне Свойства задайте атрибуты для обновлений на маршруте, как показано ниже.
Атрибут Значение Описание DepotName
Браш-Стрит 800
Грузовик может использовать этот склад для пополнения загрузки.
RouteName
Truck_1
Название транспортного средства.
ServiceTime
30
Время в минутах, необходимое для загрузки грузовика товаром.
- Нажмите ОК.
Новый объект пополнения загрузки на маршруте 800 Brush St появится внутри элемента Truck_1 в окне Network Analyst.
- Выполните последние три шага, чтобы добавить еще три объекта обновления маршрута так, чтобы каждый грузовик (Truck_1 и Truck_3) мог пополняться на обоих дополнительных складах (Браш-Стрит 800 и Олд-Каунти-Роуд 100).
В окне Network Analyst теперь должно содержаться два объекта обновления маршрута, указанных в элементах Truck_1 и Truck_3 соответственно.
Поскольку оба грузовика могут обновлять загрузку по адресу Браш-Стрит, 800, и Олд-Каунти-Роуд, 100, необходимо привязать каждый грузовик к двум местам пополнения загрузки. Механизм расчета задачи выбора маршрута транспорта вычислит наилучшее местоположение обновления для грузовых автомобилей, а также то, когда именно они должны пополнить свой запас товаров.
Изменение маршрута для включения сверхурочного времени
Чтобы учесть сверхурочное время, компания собирается удалить ограничения максимального времени, максимального времени в пути и максимального расстояния для маршрутов. Поскольку водители должны работать дольше обычного, им будут уплачены сверхурочные в размере 18 долларов в час после шести часов работы. В этом шаге эти изменения будут внесены в маршруты.
- В окне Network Analyst на вкладке класса анализа сети Маршруты дважды щёлкните на объекте Truck_1.
Откроется окно Свойства.
- Внесите изменения в атрибуты Truck_1 так, чтобы они совпадали со значениями в таблице ниже.
Атрибут Значение Описание OvertimeStartTime
360
Водитель получает сверхурочные, если он работает еще шесть часов (360 минут).
CostPerUnitOvertime
0.3
Водитель получает 18 долларов в час за сверхурочную работу. Заработная плата в минуту составляет 18 долларов/60 минут = 0,30 центов в минуту.
MaxOrderCount
20
Поскольку водитель получает сверхурочные, он должен обслужить больше магазинов.
MaxTotalTime
<Null>
Общее время рабочей смены водителя не имеет ограничений.
MaxTotalTravelTime
<Null>
Время в пути по улицам не имеет ограничений.
MaxTotalDistance
<Null>
Общее расстояние, пройденное грузовиком, не имеет ограничений.
- Нажмите ОК.
- Повторите последние три шага для объекта Truck_3.
Добавление перерывов
Поскольку водители должны работать дольше, им потребуется получасовой перерыв во время рабочей смены. В этом шаге нужно указать перерывы для каждого маршрута.
- В окне Network Analyst щёлкните правой кнопкой мыши на кнопке Перерывы (0) и выберите команду Добавить элемент.
Откроется окно Свойства.
- Укажите значения атрибутов для нового перерыва, как показано в таблице ниже.
Атрибут Значение Описание TimeWindowStart
12:30 PM
Перерыв должен начаться где-то после 12:30.
TimeWindowEnd
1:30 PM
Перерыв должен начаться где-то до 13:30.
RouteName
Truck_1
Название маршрута, для которого применим этот перерыв.
ServiceTime
30
Длительность перерыва в минутах.
MaxViolationTime
0
Перерыв должен начаться между 12:30 и 13:30. Нулевое значение означает, что перерыв не может начаться после 13:30. (то есть время перерыва фиксированное).
IsPaid
Да
Это оплачиваемый перерыв, поэтому издержки включаются в общую стоимость маршрута.
- Нажмите ОК.
- Повторите последние три шага, указав значение Truck_3 для свойства RouteName.
В окне Network Analyst теперь должно содержаться два объекта в классе Перерывы: Truck_1 и Truck_3.
Вычисление решения
- Щёлкните на кнопке Расчет (Solve) на панели инструментов Network Analyst.
Инструмент решения задачи VRP вычислит два маршрута, которые могут быть использованы для обслуживания заказов, и нарисует прямые линии, соединяющие заказы. Каждый маршрут начинается и заканчивается в центре распределения, обслуживает определенный набор заказов на своем пути, заезжает в один центр пополнения загрузки, продолжает обслуживать оставшиеся заказы и, наконец, возвращается в центр распределения.
Это решение соответствует ограничениям, указанным дистрибьюторской компанией. Тем не менее, после выдачи путевого листа двум водителям, компания обнаружила, что водитель грузового автомобиля Truck_1 предпочитает ездить в Сан-Франциско, а водитель грузового автомобиля Truck_3 – в East Bay . Компания хотела бы найти новое решение, в котором маршруты бы обслуживали заказы в соответствии с предпочтениями водителей. В следующих шагах будут добавлены основные точки маршрутов, которые будут учитывать пожелания водителей.
Добавление основных точек маршрута
В этом шаге будут добавлены основные точки маршрута для Truck_1 и Truck_3 путем указания геокодированных адресов. Обратите внимание, что основные точки маршрутов также могут быть импортированы из существующего класса пространственных объектов или созданы интерактивно с помощью инструмента Создать сетевые положения .
- В окне Network Analyst щёлкните правой кнопкой мыши на основные точки маршрута (0) и выберите команду Найти адрес.
Откроется диалоговое окно Найти.
- В текстовом поле Full Address введите 3000 Vicente Ave.
- Щелкните Найти (Find).
Локатор SanFranciscoLocator найдет адрес и покажет результат внизу диалогового окна.
- Щёлкните правой кнопкой мыши на результате и выберите команду Добавить как объект сетевого анализа.
Расположение адреса будет добавлено в качестве основной точки маршрута. Оно будет отображено в окне Network Analyst и на карте.
- Закройте диалоговое окно Найти.
- В окне Network Analyst дважды нажмите на новую основную точку маршрута, 3000 Vicente Ave.
Откроется диалоговое окно Свойства.
- Укажите значения атрибутов для основной точки маршрута, как показано в таблице ниже.
Атрибут Значение Описание RouteName
Truck_1
Название маршрута, для которого применима основная точка.
SeedPointType
Статичная
В результате этого действия заказы рядом с указанной основной точкой, скорее всего, будут назначены маршруту Truck_1.
- Повторите шаги 1-5 этой секции для добавление основной точки маршрута, находящейся по адресу 2500 McGee Ave.
- Повторите шаги 6 – 7, чтобы изменить атрибут RouteName второй основной точки на Truck_3.
Вычислите решение
- Щёлкните на кнопке Расчет (Solve) на панели инструментов Network Analyst.
Инструмент решения задачи VRP вычислит два маршрута, которые могут быть использованы для обслуживания заказов, и нарисует прямые линии, соединяющие заказы. Маршрут для Truck_1 включает заказы только в Сан-Франциско, а маршрут для Truck_3 проходит через все магазины в Восточном районе Залива, а также через несколько в других частях города.
- Выйдите из ArcMap без сохранения изменений.