Стартап по производству сэндвичей для завтрака превратился в процветающий бизнес по доставке сэндвичей в независимые кофейни по всему Сан-Франциско. Сэндвичи завоевали популярность, а в кофейнях их заказывают дюжинами. Чтобы уложиться в необходимое время, работая в часы пик, компания по производству сэндвичей должна доставлять их в кофейни между 5:00 и 7:30 утра. Это означает, что компания по производству сэндвичей и ее парк водителей должны быть максимально эффективными при доставке в этот небольшой промежуток времени.
Пока что у водителей нет проблем с местом для перевозки всех сэндвичей, но они отстают от графика при доставке заказов в больших количествах. Поскольку временной промежуток для доставки имеет такое значение, компания хочет лучше учитывать время доставки в зависимости от количества поставляемых товаров.
Примечание:
Данные, использованные в этом руководстве, являются вымышленными и были созданы исключительно для решения приведенного выше сценария.Получение данных
Данные для этого учебного руководства доступны для скачивания.
- Перейдите на страницу скачивания данных.
- Щелкните Загрузить и сохраните файл на свой компьютер.
- Разархивируйте загруженный файл.
Создание карты
Для создания карты выполните следующие действия:
- Запустите ArcGIS Pro.
- Создайте новый проект, щелкнув на шаблоне Карта. Также можно изменить имя и местоположение вашего проекта.
Появится новый проект с картой.
Добавление в проект учебных данных
Набор сетевых данных – интеллектуальная модель дорожной сети. Он содержит не только местоположение и атрибуты дорог, но и информацию об отношении дорог друг к другу, например, о том, какие дороги соединены, какие повороты с одной дороги на другую разрешены, а какие запрещаются, и другие данные, влияющие на доступность различных дорог и время, проведенное в дороге.
Примечание:
Если вы выполняете анализ с помощью ArcGIS Online, алгоритм решения использует высококачественный набор сетевых данных на весь мир, хранящийся в облаке ArcGIS Online, и расходует кредиты ArcGIS Online. Вы также можете использовать свой собственный набор сетевых данных, хранящийся локально на вашем компьютере, или воспользоваться ArcGIS Enterprise для публикации сервисов маршрутизации с использованием собственного набора сетевых данных и настроить сервисы на корпоративном портале для их использования в ArcGIS Pro.Для этого добавьте набор сетевых данных на карту.
- На панели Каталог, находящейся по умолчанию на правой стороне приложения, щелкните правой кнопкой Папки и выберите Добавить подключение к папке .
Появится диалоговое окно Добавить подключение к папке.
- Перейдите к папке, в которую вы разместили учебные данные, дважды щелкните Network Analyst и укажите Tutorial для выбора папки.
- Нажмите OK.
Будет создано подключение к папке Tutorial
- На панели Каталог разверните Папки > Руководство пользователя > SanFrancisco.gdb > Транспорт.
- Перетащите на карту Streets_ND со значком набора сетевых данных .
Набор сетевых данных добавляется на панель Содержание и на карту.
- На панели Содержание снимите отметку Streets_ND, чтобы отображать только базовую карту.
Затем добавьте на карту набор сетевых данных, содержащийся в папке.
Геокодирование кофеен
Теперь вам предстоит выполнить геокодирование файла CoffeeShops.csv, чтобы создать класс объектов с местоположениями клиентов. Если в таблице есть адреса местоположения, его можно найти на карте с помощью геокодирования. Адреса могут находиться как в одном поле, так и в нескольких полях таблицы.
Примечание:
Если у вас есть собственные данные улиц, вы можете создать локатор, используя эти данные; в противном случае Esri предложит вам локатор ArcGIS World Geocoding Service, который использует кредиты.
- На панели Каталог перейдите к местоположению данных учебника, щелкните правой кнопкой SanFranciscoLocator.loc и щелкните Добавить в проект.
- Щелкните правой кнопкой CoffeeShops.csv, затем в контекстном меню выберите Геокодировать таблицу.
Откроется панель Геокодирование таблицы.
- На панели Геокодировать таблицу щелкните Запустить.
- В ниспадающем списке Входной локатор выберите SanFranciscoLocator.
- На панели Геокодировать таблицу щелкните Далее.
- Убедитесь, что Входная таблица указывает на файл CoffeeShops.csv; в ниспадающем списке в качестве адреса для клиентов в полях StreetAddress, City и Postal указано более одного поля; и нажмите кнопку Далее.
- Сопоставьте поля адресов следующим образом:
- Адрес или Место к StreetAddress
- Город к City
- Почтовый индекс к Postal
- Штат к State
- Щелкните Далее.
Оставьте Выходные данные как есть, чтобы сохранить их в рабочей области проекта.
- Для Предпочитаемый тип местоположения выберите Местоположение маршрута из опций ниспадающего меню.
В этой опции расположенные объекты размещаются не на крыше, а на уличной сети. В Network Analyst точки пространственно расположены на ближайшем краю улицы. Иногда центр здания может располагаться ближе к улице, чем подъездная улица.
- Оставьте Выходные поля установленным на Все и щелкните Далее.
- Для Категория, отметьте Address и щелкните Готово.
- Щелкните Запустить.
По окончании процесса появится сообщение с вопросом, хотите ли вы провести повторное сопоставление.
- Щелкните Нет, поскольку все местоположения были сопоставлены правильно.
- Закройте панель Геокодировать таблицу.
Создание слоя анализа Доставка до двери
Механизм расчета Доставка до двери предназначен для решения подгруппы задач выбора маршрута транспорта, связанных с доставкой посылок конечным потребителям. При Доставке до двери связаны есть единый распределительный центр, из которого отправляются автомобили для доставки по адресам клиентов. Этот слой позволяет добавлять информацию о клиентах, начальных и конечных точках маршрутов, транспортных средствах и водителях. Есть несколько классов объектов и таблиц для сбора информации. На вкладке Слой Доставка до двери также есть несколько параметров, к которым можно обратиться, чтобы убедиться, что решение принимается для правильной даты, с использованием правильных единиц измерения и информации о поездках транспортных средств.
Чтобы создать слой анализа Доставка до двери, выполните следующие шаги:
- На вкладке Анализ в группе Рабочие процессы щелкните Сетевой анализ > Доставка до двери .
Слой анализа Доставка до двери добавится на панель Содержание. От содержит подслои со входными и выходными данными анализа.
Это ссылка на набор сетевых данных Сан-Франциско, потому что сеть находилась на панели Содержание, когда создавался слой Доставка до двери.
Примечание:
Чтобы проверить или изменить набор сетевых данных, который используется для создания слоя сетевого анализа, на вкладке Анализ в группе Рабочие процессы щелкните ниспадающее меню Сетевой анализ и просмотрите Источник сетевых данных.
Добавление заказов
Заказы используются для указания информации о клиентах. Каждый заказ может содержать информацию о том, сколько времени водитель должен находиться в данном месте, о количестве доставляемых или забираемых товаров, о времени встречи и т.д.
Для добавления заказов, выполните следующие шаги:
- Выберите слой Доставка до двери на панели Содержание, чтобы включить вкладку.
- Щелкните вкладку Слой Доставка до двери и в разделе Входные данные щелкните кнопку Импорт заказов .
Откроется диалоговое окно Добавить положения.
- Выберите CoffeeShops_Geocoded для Входные положения.
- Под Сопоставлением полей выберите Имя из раздела Свойства.
- Выберите из ниспадающего списка Имя поля опцию USER_Name в самом конце списка.
Механизм расчета Доставка до двери требует уникального имени для каждого заказа. Поскольку каждая кофейня в списке для доставки имеет уникальное имя, названия кофеен (в поле USER_Name) сопоставляются с полем Name на подслое Заказы.
- Сопоставьте следующее дополнительное свойство DeliveryQuantity_1> USER_DozensOfBreakfastSandwiches.
Бутербродная доставляет сэндвичи по дюжине. Количество, которое необходимо доставить в каждую кофейню, отслеживается в поле USER_DozensOfBreakfastSandwiches, поэтому оно будет сопоставлено с полем DeliveryQuantity_1, что позволит механизму расчета Доставка до двери отслеживать дюжины сэндвичей, доставленных в каждое место.
- Выберите CurbApproach из раздела Свойство, и выберите Правая сторона транспортного средства в ниспадающем списке Значение по умолчанию.
Поле CurbApproach указывает сторону улицы, на которой должен находиться автомобиль при его обслуживании. Поскольку эти маршруты проложены в Сан-Франциско, где автомобили ездят по правой стороне улицы, установка CurbApproach на правую сторону автомобиля гарантирует, что фургон будет припаркован у обочины рядом с кофейнями, и водителю не придется переходить дорогу.
- Нажмите OK.
Кофейни добавлены на подслой Заказы.
Появляется предупреждение о том, что в процессе геокодирования поле Name в классе объектов CoffeeShops_Geocoded стало слишком длинным для поля Name в подслое Заказы. Закройте окно предупреждения, поскольку имена не были слишком длинными.
- В панели Содержание щелкните правой кнопкой мыши подслой Заказы и выберите Таблица атрибутов.
- В таблице атрибутов щелкните правой кнопкой мыши поле ServiceTime и выберите Вычислить поле.
Появится диалоговое окно Вычислить поле.
- Установите значение ServiceTime на BasedOnQuantity(!DeliveryQuantity_1!).
- Используйте следующее для Блок кода:
- Щёлкните отметку, чтобы проверить выражение.
- Нажмите OK.
Теперь поле ServiceTime заполнено соответствующим значением.
- Закройте таблицу атрибутов.
def BasedOnQuantity(quantity):
if quantity == 1:
time = 3
elif quantity == 2:
time = 4
elif quantity == 3:
time = 5
else:
time = 6
return time
Добавьте местоположение бутербродной в подслой Станции.
Станции - это места, где маршруты начинаются и заканчиваются. Все маршруты должны начинаться и заканчиваться в одном и том же месте. В данном анализе в качестве станции будет использоваться бутербродная. Как и в случае с данными о клиентах, адрес бутербродной может быть геокодирован. Однако, поскольку это один адрес, вы будете использовать панель Найти местоположение для геокодирования адреса и добавления его в подслой Станции.
Примечание:
При использовании опции Добавить в класс объектов с ArcGIS World Geocoding Service расходуются кредиты. При использовании предоставленного локатора не расходуются кредиты.
Для добавления местоположения бутербродной выполните следующие шаги:
- Щелкните вкладку Карта и в группе Запрос щелкните кнопку Найти местоположение .
Появится панель Найти местоположение.
- Щелкните стрелку ниспадающего списка Опции рядом с полем поиска.
- Поставьте отметку SanFranciscoLocator.
- В текстовом окне поиска введите адрес бутербродной, 50 Southdale Ave. Daly City, CA 94015 и нажмите клавишу Enter.
- На панели Найти местоположение щелкните правой кнопкой мыши опцию А и выберите Добавить в класс объектов.
Появится окно Добавить в класс объектов, в котором можно выбрать класс объектов для добавления адреса.
- Разверните Доставка до двери: Станции, выберите шаблон Станции и нажмите OK.
- В панели Содержание щелкните правой кнопкой мыши подслой Станции и выберите Таблица атрибутов.
В таблицу атрибутов была добавлена строка, представляющая единственное местоположение бутербродной. Полный адрес бутербродной был включен в название станции.
- Закройте таблицу атрибутов.
- На вкладке Редактирование очистите выборку и сохраните изменения.
- Закройте панель Найти местоположение.
Добавление информации в подслой Маршруты
Маршруты содержат информацию как о транспортном средстве, так и о водителе. Можно включить информацию о рабочем дне водителя, например, о том, когда он начинает работу и сколько времени может работать в течение дня. Можно также включить информацию о транспортном средстве, например, его мощность и затраты на эксплуатацию.
Чтобы эффективно доставлять заказы в 173 кофейни, при добавлении маршрутов задайте следующие параметры. Вы укажете количество маршрутов, которые могут обслуживать 173 кофейни, начальное и конечное местоположение маршрута (это местоположение бутербродной), самое раннее время начала маршрута (временное окно доставки - с 5 утра до 7:30 утра), грузоподъемность грузовика, максимальное общее время движения маршрута и размер оплаты труда водителя в час.
Чтобы добавить маршруты и другую информацию на подслой Маршруты, выполните следующие действия:
- На панели Содержание щелкните правой кнопкой мыши название составного слоя Доставка до двери и выберите Приблизить к слою, чтобы уменьшить масштаб до полного экстента.
- Вернитесь к вкладке Слой Доставка до двери.
- В группе Входные данные щелкните стрелку ниспадающего списка Импорт маршрутов и выберите Добавить маршруты.
Появится диалоговое окно Добавить маршруты задачи выбора маршрута транспортного средства.
- Укажите следующие значения:
- Число маршрутов — 12
У бутербродной есть 12 машин для доставки, поэтому именно столько маршрутов они могут отправить.
- Имя начальной станции—50 Southdale Ave. Daly City, CA 94015
Маршрут должен начинаться и заканчиваться в бутербродной, поэтому в значениях Имя начальной станции и Имя конечной станции указывается адрес бутербродной.
Вы можете выбрать Имя начальной станции из ниспадающего списка, а значение должно совпадать со значением в поле Name подслоя Станции.
- Имя конечной станции—50 Southdale Ave. Daly City, CA 94015
Вы можете выбрать Имя конечной станции из ниспадающего списка, а значение должно совпадать со значением в поле Name подслоя Станции.
- Самое раннее время начала маршрута — 05:00 утра
Маршруты должны начинаться в 5 утра, чтобы успеть доставить сэндвичи с завтраком в кофейни до утреннего часа пик.
- Capacity_1—150
Каждый автомобиль вмещает не более 150 дюжин сэндвичей для завтрака. Важно, чтобы единицы измерения, используемые для Capacity_1, совпадали с единицами измерения для DeliveryQuantity_1, которые в данном случае представляют собой дюжину сэндвичей.
- Максимальное общее время—150
Маршруты должны быть закончены и возвращены в бутербродную к 7:30 утра. Это дает водителям 2,5 часа на выполнение маршрута. Поскольку единицами поля времени, используемыми для моделирования этой проблемы, являются минуты, вам нужно ввести 150 минут для параметра Максимальное общее время.
- Стоимость на единицу времени—0,5
Водителям платят $30 в час, но так как в моделировании этой задачи используются минуты, сумма будет равна $0,5 за минуту.
- Число маршрутов — 12
- Щелкните OK, чтобы запустить инструмент.
Двенадцать маршрутов добавляются на подслой Маршруты.
Добавление зон
Чтобы держать водителей в предпочитаемых ими районах города, теперь вы добавите зоны.
- На вкладке Слой Доставка до двери в разделе Входные данные щелкните кнопку Создать объекты .
- На панели Создать объекты выберите шаблон Зоны.
- Нарисуйте два полигона, чтобы разделить северную и южную части парка Голден-Гейт и холмов Сан-Мигель. Зоны должны выглядеть примерно так, как на изображении ниже.
- На панели Содержание щелкните правой кнопкой слой Зоны и выберите Таблица атрибутов.
- Для полигона, расположенного к югу от парка Голден-Гейт и холмов Сан-Мигель, измените значение поля Name на Южный.
- Для полигона, расположенного к северу от парка Голден-Гейт и холмов Сан-Мигель, измените значение поля Name на Северный.
- Откройте таблицу атрибутов Маршруты, прокрутите таблицу вправо до полей ZoneName и IsHardZone.
- Щелкните правой кнопкой поле IsHardZone и щелкните Вычислить поле
Появится диалоговое окно Вычислить поле.
- Установите значение IsHardZone на True.
Эта настройка определяет, что маршруты могут доставлять заказы только в пределах указанной зоны.
- В таблице атрибутов выберите первые три строки, щелкните правой кнопкой мыши поле ZoneName и щелкните Вычислить поле.
Появится диалоговое окно Вычислить поле.
- Установите значение ZoneName на Южный.
Это накладывает ограничение на первые три маршрута, которые могут доставлять заказы только в южной зоне.
- Переключите выбор строки в таблице атрибутов и с помощью Вычислить поле установите значение ZoneName на Северный для оставшихся девяти маршрутов.
Это накладывает ограничение на оставшиеся девять маршрутов, которые могут доставлять заказы только в северной зоне.
- Очистите выборку и сохраните изменения.
- Закройте таблицу атрибутов.
Установите дату и запустите анализ
Теперь вы установите дату начала маршрутов. Задавать время не нужно, поскольку для каждого маршрута задано время, установленное при добавлении маршрутов с помощью инструмента Добавить маршруты для задачи выбора маршрута транспорта в предыдущем разделе.
- На ленте Слой Доставка до двери в разделе Дата и время щелкните раскрывающуюся стрелку Дата по умолчанию и установите дату 03/14/2024.
- В группе Анализ щелкните Запустить.
Слой Доставка до двери выполняет решение. Заказы назначаются маршрутам, а условные обозначения обновляются, показывая маршруты и назначенные на них заказы соответствующими цветами.
- В панели Содержание щелкните правой кнопкой мыши подслой Маршруты и выберите Таблица атрибутов.
- Прокрутите таблицу вправо до выходного поля OrderCount.