Обслуживание нескольких клиентов из одного распределительного центра с помощью Доставки до двери

Уровень сложности: НачальныйТребования к данным: ArcGIS Tutorial Data for Desktop

Стартап по производству сэндвичей для завтрака превратился в процветающий бизнес по доставке сэндвичей в независимые кофейни по всему Сан-Франциско. Сэндвичи завоевали популярность, а в кофейнях их заказывают дюжинами. Чтобы уложиться в необходимое время, работая в часы пик, компания по производству сэндвичей должна доставлять их в кофейни между 5:00 и 7:30 утра. Это означает, что компания по производству сэндвичей и ее парк водителей должны быть максимально эффективными при доставке в этот небольшой промежуток времени.

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

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

Получение данных

Данные для этого учебного руководства доступны для скачивания.

  1. Перейдите на страницу скачивания данных.
  2. Щелкните Загрузить и сохраните файл на свой компьютер.
  3. Разархивируйте загруженный файл.

Создание карты

Для создания карты выполните следующие действия:

  1. Запустите ArcGIS Pro.
  2. Создайте новый проект, щелкнув на шаблоне Карта. Также можно изменить имя и местоположение вашего проекта.

    Появится новый проект с картой.

Добавление в проект учебных данных

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

Примечание:
Если вы выполняете анализ с помощью ArcGIS Online, алгоритм решения использует высококачественный набор сетевых данных на весь мир, хранящийся в облаке ArcGIS Online, и расходует кредиты ArcGIS Online. Вы также можете использовать свой собственный набор сетевых данных, хранящийся локально на вашем компьютере, или воспользоваться ArcGIS Enterprise для публикации сервисов маршрутизации с использованием собственного набора сетевых данных и настроить сервисы на корпоративном портале для их использования в ArcGIS Pro.

Для этого добавьте набор сетевых данных на карту.

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

    Появится диалоговое окно Добавить подключение к папке.

  2. Перейдите к папке, в которую вы разместили учебные данные, дважды щелкните Network Analyst и укажите Tutorial для выбора папки.
  3. Нажмите OK.

    Будет создано подключение к папке Tutorial

  4. Затем добавьте на карту набор сетевых данных, содержащийся в папке.

  5. На панели Каталог разверните Папки > Руководство пользователя > SanFrancisco.gdb > Транспорт.
  6. Перетащите на карту Streets_ND со значком набора сетевых данных Набор сетевых данных.

    Набор сетевых данных добавляется на панель Содержание и на карту.

  7. На панели Содержание снимите отметку Streets_ND, чтобы отображать только базовую карту.

Геокодирование кофеен

Теперь вам предстоит выполнить геокодирование файла CoffeeShops.csv, чтобы создать класс объектов с местоположениями клиентов. Если в таблице есть адреса местоположения, его можно найти на карте с помощью геокодирования. Адреса могут находиться как в одном поле, так и в нескольких полях таблицы.

Примечание:

Если у вас есть собственные данные улиц, вы можете создать локатор, используя эти данные; в противном случае Esri предложит вам локатор ArcGIS World Geocoding Service, который использует кредиты.

  1. На панели Каталог перейдите к местоположению данных учебника, щелкните правой кнопкой SanFranciscoLocator.loc и щелкните Добавить в проект.
  2. Щелкните правой кнопкой CoffeeShops.csv, затем в контекстном меню выберите Геокодировать таблицу.

    Откроется панель Геокодирование таблицы.

  3. На панели Геокодировать таблицу щелкните Запустить.

    Панель Геокодирование таблицы

  4. В ниспадающем списке Входной локатор выберите SanFranciscoLocator.
  5. На панели Геокодировать таблицу щелкните Далее.
  6. Убедитесь, что Входная таблица указывает на файл CoffeeShops.csv; в ниспадающем списке указано более одного поля в качестве адреса для клиентов в полях StreetAddress, City и Postal и нажмите кнопку Далее.
  7. Сопоставьте поля адресов следующим образом:
    • Адрес или Место к StreetAddress
    • Город к City
    • Почтовый индекс к Postal
    • Штат к State
  8. Щелкните Далее.

    Оставьте Выходные данные как есть, чтобы сохранить их в рабочей области проекта.

  9. Для Предпочитаемый тип местоположения выберите Местоположение маршрута из опций ниспадающего меню.

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

  10. Оставьте Выходные поля установленным на Все и щелкните Далее.
  11. Для Категория, отметьте Address и щелкните Готово.
  12. Щелкните Запустить.

    По окончании процесса появится сообщение с вопросом, хотите ли вы провести повторное сопоставление.

  13. Щелкните Нет, поскольку все местоположения были сопоставлены правильно.

    Сообщение Геокодирование завершено

  14. Закройте панель Геокодировать таблицу.

Создание слоя анализа Доставка до двери

Механизм расчета Доставка до двери предназначен для решения подгруппы задач выбора маршрута транспорта, связанных с доставкой посылок конечным потребителям. При Доставке до двери связаны есть единый распределительный центр, из которого отправляются автомобили для доставки по адресам клиентов. Этот слой позволяет добавлять информацию о клиентах, начальных и конечных точках маршрутов, транспортных средствах и водителях. Есть несколько классов объектов и таблиц для сбора информации. На вкладке Слой Доставка до двери также есть несколько параметров, к которым можно обратиться, чтобы убедиться, что решение принимается для правильной даты, с использованием правильных единиц измерения и информации о поездках транспортных средств.

Чтобы создать слой анализа Доставка до двери, выполните следующие шаги:

  1. На вкладке Анализ в группе Рабочие процессы щелкните Сетевой анализ > Доставка до двери Доставка до двери.

    Слой анализа Доставка до двери добавится на панель Содержание. От содержит подслои со входными и выходными данными анализа.

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

    Примечание:

    Чтобы проверить или изменить набор сетевых данных, который используется для создания слоя сетевого анализа, на вкладке Анализ в группе Рабочие процессы щелкните ниспадающее меню Сетевой анализ и просмотрите Источник сетевых данных.

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

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

Для добавления заказов, выполните следующие шаги:

  1. Выберите слой Доставка до двери на панели Содержание, чтобы включить вкладку.
    Лента слоя Доставка до двери
  2. Щелкните вкладку Слой Доставка до двери и в разделе Входные данные щелкните кнопку Импорт заказов Импорт заказов.

    Откроется диалоговое окно Добавить положения.

  3. Выберите CoffeeShops_Geocoded для Входные положения.
  4. В шагах с 4 по 6 вы выполните сопоставление полей. Это необходимо для того, чтобы информация о кофейнях из класса объектов CoffeeShops_Geocoded была правильно сопоставлена и заполнена в соответствующих полях в подслое Заказы.
  5. Под Сопоставлением полей выберите Имя из раздела Свойства.
  6. Выберите из ниспадающего списка Имя поля опцию USER_Name в самом конце списка.

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

  7. Сопоставьте следующее дополнительное свойство DeliveryQuantity_1 > USER_DozensOfBreakfastSandwiches.

    Бутербродная доставляет сэндвичи по дюжине. Количество, которое необходимо доставить в каждую кофейню, отслеживается в поле USER_DozensOfBreakfastSandwiches, поэтому оно будет сопоставлено с полем DeliveryQuantity_1, что позволит механизму расчета Доставка до двери отслеживать дюжины сэндвичей, доставленных в каждое место.

  8. Выберите CurbApproach из раздела Свойство, и выберите Правая сторона транспортного средства в ниспадающем списке Значение по умолчанию.

    Поле CurbApproach указывает сторону улицы, на которой должен находиться автомобиль при его обслуживании. Поскольку эти маршруты проложены в Сан-Франциско, где автомобили ездят по правой стороне улицы, установка CurbApproach на правую сторону автомобиля гарантирует, что фургон будет припаркован у обочины рядом с кофейнями, и водителю не придется переходить дорогу.

  9. Нажмите OK.

    Кофейни добавлены на подслой Заказы.

    Кофейни в подслое Заказы

    Появляется предупреждение о том, что в процессе геокодирования поле Name в классе объектов CoffeeShops_Geocoded стало слишком длинным для поля Name в подслое Заказы. Закройте окно предупреждения, поскольку имена не были слишком длинными.

    Предупреждающее сообщение

  10. Теперь вы обновите время обслуживания в зависимости от количества доставленных товаров.
  11. В панели Содержание щелкните правой кнопкой мыши подслой Заказы и выберите Таблица атрибутов.
  12. В таблице атрибутов щелкните правой кнопкой мыши поле ServiceTime и выберите Вычислить поле.

    Появится диалоговое окно Вычислить поле.

  13. На шагах 11 и 12 вы рассчитаете время обслуживания в зависимости от количества сэндвичей, заказанных в конкретной кофейне. Количество заказываемого товара в дюжинах, а время доставки в минутах. Если кофейня заказала одну, две или три дюжины сэндвичей, то на доставку уйдет 3, 4 или 5 минут, соответственно. Доставка в кофейню любого заказа, превышающего три дюжины, займет 6 минут.
  14. Установите значение ServiceTime на BasedOnQuantity(!DeliveryQuantity_1!).
  15. Используйте следующее для Блок кода:
  16. def BasedOnQuantity(quantity):
        if quantity == 1:
            time = 3
        elif quantity == 2:
            time = 4
        elif quantity == 3:
            time = 5
        else:
            time = 6
        return time
    Окно должно выглядеть следующим образом:

    Диалоговое окно Вычислить поле с заполненными параметрами

  17. Щёлкните отметку, чтобы проверить выражение.
  18. Нажмите OK.

    Теперь поле ServiceTime заполнено соответствующим значением.

  19. Закройте таблицу атрибутов.

Добавьте местоположение бутербродной в подслой Станции.

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

Примечание:

При использовании опции Добавить в класс объектов с ArcGIS World Geocoding Service расходуются кредиты. При использовании предоставленного локатора не расходуются кредиты.

Для добавления местоположения бутербродной выполните следующие шаги:

  1. Щелкните вкладку Карта и в группе Запрос щелкните кнопку Найти местоположение Найти местоположение.

    Кнопка Найти местоположение в группе Запрос

    Появится панель Найти местоположение.

  2. Щелкните стрелку ниспадающего списка Опции рядом с полем поиска.

    Кнопка Опции на панели Найти местоположение

  3. Поставьте отметку SanFranciscoLocator.
  4. В текстовом окне поиска введите адрес бутербродной, 50 Southdale Ave. Daly City, CA 94015 и нажмите клавишу Enter.
  5. На панели Найти местоположение щелкните правой кнопкой мыши опцию А и выберите Добавить в класс объектов.

    Появится окно Добавить в класс объектов, в котором можно выбрать класс объектов для добавления адреса.

  6. Разверните Доставка до двери: Станции, выберите шаблон Станции и нажмите OK.
  7. В панели Содержание щелкните правой кнопкой мыши подслой Станции и выберите Таблица атрибутов.

    В таблицу атрибутов была добавлена строка, представляющая единственное местоположение бутербродной. Полный адрес бутербродной был включен в название станции.

  8. Закройте таблицу атрибутов.
  9. На вкладке Редактирование очистите выборку и сохраните изменения.
  10. Закройте панель Найти местоположение.

Добавление информации в подслой Маршруты

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

Чтобы эффективно доставлять заказы в 173 кофейни, при добавлении маршрутов задайте следующие параметры. Вы укажете количество маршрутов, которые могут обслуживать 173 кофейни, начальное и конечное местоположение маршрута (это местоположение бутербродной), самое раннее время начала маршрута (временное окно доставки - с 5 утра до 7:30 утра), грузоподъемность грузовика, максимальное общее время движения маршрута и размер оплаты труда водителя в час.

Чтобы добавить маршруты и другую информацию на подслой Маршруты, выполните следующие действия:

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

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

  4. Укажите следующие значения:
    1. Число маршрутов — 12

      У бутербродной есть 12 машин для доставки, поэтому именно столько маршрутов они могут отправить.

    2. Имя начальной станции—50 Southdale Ave. Daly City, CA 94015

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

      Вы можете выбрать Имя начальной станции из ниспадающего списка, а значение должно совпадать со значением в поле Name подслоя Станции.

    3. Имя конечной станции—50 Southdale Ave. Daly City, CA 94015

      Вы можете выбрать Имя конечной станции из ниспадающего списка, а значение должно совпадать со значением в поле Name подслоя Станции.

    4. Самое раннее время начала маршрута — 05:00 утра

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

    5. Capacity_1—150

      Каждый автомобиль вмещает не более 150 дюжин сэндвичей для завтрака. Важно, чтобы единицы измерения, используемые для Capacity_1, совпадали с единицами измерения для DeliveryQuantity_1, которые в данном случае представляют собой дюжину сэндвичей.

    6. Максимальное общее время—150

      Маршруты должны быть закончены и возвращены в бутербродную к 7:30 утра. Это дает водителям 2,5 часа на выполнение маршрута. Поскольку единицами поля времени, используемыми для моделирования этой проблемы, являются минуты, вам нужно ввести 150 минут для параметра Максимальное общее время.

    7. Стоимость на единицу времени—0,5

      Водителям платят $30 в час, но так как в моделировании этой задачи используются минуты, сумма будет равна $0,5 за минуту.

  5. Щелкните OK, чтобы запустить инструмент.

    Двенадцать маршрутов добавляются на подслой Маршруты.

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

Чтобы держать водителей в предпочитаемых ими районах города, теперь вы добавите зоны.

  1. На вкладке Слой Доставка до двери в разделе Входные данные щелкните кнопку Создать объекты Создать объекты.
  2. На панели Создать объекты выберите шаблон Зоны.
  3. Нарисуйте два полигона, чтобы разделить северную и южную части парка Голден-Гейт и холмов Сан-Мигель. Зоны должны выглядеть примерно так, как на изображении ниже.

    Добавлены северная и южная зоны

  4. На панели Содержание щелкните правой кнопкой слой Зоны и выберите Таблица атрибутов.
  5. Для полигона, расположенного к югу от парка Голден-Гейт и холмов Сан-Мигель, измените значение поля Name на Южный.
  6. Для полигона, расположенного к северу от парка Голден-Гейт и холмов Сан-Мигель, измените значение поля Name на Северный.
  7. Откройте таблицу атрибутов Маршруты, прокрутите таблицу вправо до полей ZoneName и IsHardZone.
  8. Щелкните правой кнопкой поле IsHardZone и щелкните Вычислить поле

    Появится диалоговое окно Вычислить поле.

  9. Установите значение IsHardZone на True.

    Эта настройка определяет, что маршруты могут доставлять заказы только в пределах указанной зоны.

  10. В таблице атрибутов выберите первые три строки, щелкните правой кнопкой мыши поле ZoneName и щелкните Вычислить поле.

    Появится диалоговое окно Вычислить поле.

  11. Установите значение ZoneName на Южный.

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

  12. Переключите выбор строки в таблице атрибутов и с помощью Вычислить поле установите значение ZoneName на Северный для оставшихся девяти маршрутов.

    Это накладывает ограничение на оставшиеся девять маршрутов, которые могут доставлять заказы только в северной зоне.

  13. Очистите выборку и сохраните изменения.
  14. Закройте таблицу атрибутов.

Установите дату и запустите анализ

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

  1. На ленте Слой Доставка до двери в разделе Дата и время щелкните раскрывающуюся стрелку Дата по умолчанию и установите дату 03/14/2024.
  2. В группе Анализ щелкните Запустить.

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

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

  3. В панели Содержание щелкните правой кнопкой мыши подслой Маршруты и выберите Таблица атрибутов.
  4. Прокрутите таблицу вправо до выходного поля OrderCount.
  5. Просмотрите результаты. Несколько классов объектов в Слое анализа Доставка до двери имеют выходные поля, которые предоставляют подробную информацию о выполненном решении. В таблице Маршруты представлен обзор каждого маршрута, но вы также можете просмотреть подробную информацию о каждом заказе. В выходных данных Маршруты указывается количество мест, которые посещает каждый водитель, общее время, которое он затрачивает, время начала маршрута и время возвращения в бутербродную. Вы заметите, что три маршрута не обслуживали ни одну из кофеен, потому что они были охвачены другими маршрутами. Следовательно, большинство полей для этих трех маршрутов имеют нулевые значения.