До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

Главная | Все статьи | Дневник студента

Пример автоматизации развоза сотрудников

Время чтения статьи ~3 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Пример автоматизации развоза сотрудников главное изображение

В основном программисты занимаются автоматизацией. И эта статья про то, как автоматизировать поездки.

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

Разработкой инструмента занимался я один, и в свое время мне помог Хекслет. Когда начинающий разработчик делает первые шаги, он тратит очень много времени на то, чтобы узнать, что учить. А если учиться с наставником, или выбрать профессию на Хекслете и пролистать темы, станет понятным, что учить и как.

Это веб-инструмент, и на клиентской части используется VueJS. В программе Фронтенд-разработчик можно выучить React. Отличие VueJS и React не большие, но если вы хотите с шансом побольше найти работу, то учите React. Вакансий по нему больше. Серверная часть инструмента написана на NodeJS в связке с некоторыми библиотеками.

А теперь покажу инструмент и объясню, что и как работает.

Для начала нам нужно определиться с контейнером для карт. Есть разные контейнеры. «Яндекс», Google. Но и есть бесплатные, например Leaflet. Leaflet — всего лишь контейнер, и не имеет самой карты. Но в связке с «Яндексом», Google, или OSM (Open Street Map) — это станет картой. Картой, которую мы привыкли видеть в интернете.

В моем проекте используются «Яндекс.Карты».

Для начала нужно выбрать город. (можете открывать фото в новой вкладке, чтобы было корректно видно). Фото выбора города

Город выбирается для серверной части. Потом нам нужно создать сотрудников или загрузить с Excel-файла.

Фото выбора сотрудников

После чего нажимаем на кнопку «Найти сотрудников на карте» и сотрудники появляются на карте.

Но как карта узнает о сотрудниках? Для этого существует геокодинг. Дело в том, что у каждого сотрудника есть свой адрес. Инструмент обращается к «Яндексу» и спрашивает о координатах. «Яндекс» дает ответ, и все это отображается на картах.

Фото сотрудников на карте

Заметьте, что у каждого сотрудника разное время.

Сотрудник, который отвечал за развоз, тратил по 2-3 часа в среднем. Вы можете увидеть количество сотрудников. Жмем «Построить маршрут» и происходит та самая магия. Фото маршрутов на карте

А вот пример конкретного времени. На изображении маршрут на 02.00. Вы можете посмотреть, маршрут действительно оптимальный.

Фото маршрутов на карте

Как работает оптимизация? На серверной части используется NodeJS. Это мощный инструмент и на Хекслет есть профессия Node.js-разработчик.

Сначала нужно построить матрицу расстояний. Матрица содержит расстояние от каждой точки до каждой точки. Откуда ее можно получить? Можно запросить у «Яндекса». Но дело в том, что это платно. Как и геокодинг, также платный. Мы решили сэкономить на матрице расстояний, и использовать OSRM Project. Эта библиотека, которой нужно скормить карты. Кормим ее с помощью OSM (Open Street Map) — там можно скачать любую часть мира. Но чем больше часть, тем больше места занимает в ОЗУ. Вся Россия примерно занимает 3ГБ. Но я скачал отдельно города и снизил до 200-мбайт.

После получения матрицы нужно построить оптимальный маршрут. Этим занимается Google OR_TOOLS. На сайте OR_TOOLS сказано: OR-Tools — это быстрое и портативное программное обеспечение для комбинаторной оптимизации.

NodeJS запускает скрипт на Python. Он анализирует матрицу, решает и дает в ответе массив, в котором указана очередность путей. Это все снова возвращается к «Яндексу», и по координатам «Яндекс.Карты» строят маршрут, который мы увидели выше.

Теперь вы знакомы с тем, как решаются вопросы с оптимизацией.

Необязательно все знать. Нужно просто знать, где найти.

Аватар пользователя bruto
bruto 04 июля 2021
2
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября