Как стать автором
Обновить

ИТ-решение для оптимизации доставки, сделанное «на коленке»: делай как я, делай вместе со мной, делай лучше чем я

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.1K

Всем привет! Я - Алекс Степанов, независимый разработчик ИТ-решений. Чтобы развеять скуку и убить время, люблю исследовать и экспериментировать с чем-то необычным для себя. И вот однажды я увлекся и решил сделать одну "ИТ-вещицу" для транспортной логистики.

В данной статье делюсь опытом создания прототипа TMS (Transportation Management Systems) – ИТ-решения для планирования и контроля исполнения перевозок (доставок/поставок) товаров, оборудования и людей, «собственными силами» или, так сказать, сделанного «на электронной коленке из подручных средств».

На дворе непростые времена: общий экономический кризис, специфическое состояние ИТ-отрасли и рынка труда (как в сегменте ИТ, так и по направлению, связанному с логистикой), а также специфика ситуации на вашем предприятия и с вашей ИТ-службой, могут заставить искать какие-то нестандартные пути для получения такого рода ИТ-решения для автоматизации транспортной логистики. Например, путем создания и внедрения TMS «из подручных средств». Речь пойдет о подходе, в рамках которого ИТ-решение конструируется из доступных, относительно свободно распространяемых компонентов, а вам предлагается писать связующий программный код для получения законченного прикладного ИТ-решения. И создавать это решение можно на «простеньком» компьютере – без использования продвинутого «железа» и «софта», без «облаков» и т.д., т.е. на своей «электронной коленке».

Создание «на коленке» компонентной базы такого ИТ-решения, как то – «вычислительный движок» для оптимизации маршрутов, геокодер, обработчик дорожных графов для вычисления «матрицы расстояний» (расстояний и продолжительностей при перемещении между каждой возможной парой точек доставки/поставки из решаемой задачи), геоинформационный визуализатор и др., представляется утопичным: за разумное время в одиночку - почти невозможно. Посмотрим на мой путь, который вы можете пройти сами, вместе со мной или в комбинированном режиме.

Центром вашего ИТ-решения является «вычислительный движок», на вход которому подаются данные о заказах доставки/поставки и данные о транспортных ресурсах (транспортных средствах или курьерах), а на выходе из которого вы получаете (суб)оптимальное решение задачи – списки точек доставки/поставки из заказов, привязанные к транспортным ресурсам. Я выбрал метаэвристический алгоритм оптимизации «Ruin and Recreate» (описание здесь) и реализующий его опен-сорс’овский «движок» jsprit (исходный код здесь).

Для получения «матрицы расстояний» используются бесплатные свободно распространяемые карты (графы) из проекта OpenStreetMap, которые можно загружать, например, отсюда: http://download.geofabrik.de/ Но для того, чтобы эффективно выудить из дорожного графа данные для «матрицы расстояний» вам нужно специальное средство, например, такое: https://github.com/graphhopper/graphhopper

Этот компонент берет на вход геокоды (географические координаты) точек доставки/поставки, а не адреса в привычном нам виде. Для качественного и бесплатного геокодирования я использую такие геоинформационные сервисы (их API), как например, Google Карты и пробный (тестовый) ключ доступа с квотой 2500 запросов в сутки. Это означает, что при необходимости вы можете ежедневно расширять свою «матрицу расстояний» комбинациями с 2500 новыми адресами (что вполне себе прилично).

Осталось выбрать веб-сервер, если вы хотите создать свое ИТ-решение в виде приложения для веб (как вариант можно делать десктоп’ное-приложение). Я, исходя из своих соображений, выбрал IIS (Internet Information Services). Кстати, для начала вполне подойдет версия Express: ее просто настроить для целей отладки при разработке, тестирования и пробной эксплуатации вашего ИТ-решения пользователями. Ну а раз я выбрал IIS, то и связующий программный код мне пришлось писать на C#/.Net.

Пользовательский интерфейс для логиста/диспетчера, загружающего задачу доставки/поставки на сервер и получающего табличное и графическое представление, можно быстро разработать, например, средствами ASP.Net. А возможно, вы создаете свое решение как расширение корпоративной информационной системы (типа ERP-системы) в виде веб-сервиса, то и веб-интерфейс не нужен – логист/диспетчер работает через интерфейс расширяемой системы.

А вот пользовательский интерфейс веб-приложения для исполнителя транспортной работы (водителя/экспедитора, курьера) лучше создавать с использованием нейтральных технологий типа JavaScript. Замечу, что выбор веб-сервера может оказывать непосредственное влияние на способ реализации приложения для исполнителя, но необязательно. В моем ИТ-решение это приложение написано на «чистом» JavaScript, а для передачи сообщений о результатах работы используется API посредством HTTP/Rest.

(Примечание: помимо этого вы можете подключить внешние инструменты BI (бизнес-аналитики), значительно повысив ценность и возможности своего ИТ-решения для управляющих сотрудников вашей компании.)

Как все это выглядит представлено на скриншотах ниже, здесь "Начало работы с решением".

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

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

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

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

Что, например, можно изменить в исходном решении: Google Maps на другие сервисы, например, Яндекс Карты; пользовательский интерфейс для диспетчера и исполнителя; адаптировать алгоритм планирования под логистическую специфику, например, "маятниковые" маршруты, приоритеты в заказах доставки и др.; реализовать новые способы обмена информацией между диспетчером и исполнителем, например, с использованием мессенджеров; усовершенствовать способы аутентификации и авторизации пользователей; выполнить интеграцию с ERP-системами и BI-системами.

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

Вы можете написать мне по адресу: erpacademy.ru@gmail.com

Теги:
Хабы:
+4
Комментарии 14
Комментарии Комментарии 14

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн