Автоматизация отдела доставки с помощью PHP и JavaScript
Данный скрипт легко установить на свой хостинг, поддерживающий PHP, или использовать локально с помощью эмуляторов PHP типа Denwer. Вы сможете при помощи открытого API Яндекс.Карт составлять оптимальный маршрут для своих курьеров, будете знать требуемое время и общий километраж.
На написание данной статьи меня сподвигнул этот стартап:
Вспомнил, что когда то давно, когда у меня были свои водители для доставки по Ростов-на-Дону, сделал тогда себе нехитрый скрипт (php + javascript) для составления оптимального плана доставки, который при необходимости легко разделить на нескольких водителей.
Скачиваете дистрибутив (php + javascript):
И заливаете все содержимое к себе на сайт в отдельную папку, скажем в папку route, далее в адресной строке браузера набираете ваш_сайт.ru/route/, появится такое окно:
Загружаете csv файл c кодировкой utf-8, его в excel можно сделать, нажав "сохранить как" и выбрав там "Текст CSV(.csv)".
В этом списке должно быть всего два поля, полный адрес (включая город) и время стоянки по адресу в минутах. Первой записью должен быть адрес вашего склада, остальные адреса в произвольном порядке. Я например такой список формировал автоматом своей crm.
Нажав кнопку "найти оптимальный маршрут", вы через минуту работы javascript кода получите такой результат:
Ниже будет список оптимальной последовательности адресов:
Можно кликнуть по ссылке "открыть маршрут" и в режиме навигатора начать двигаться по адресам.
Этим скриптом я также начислял водителям компенсацию за использование их автомобиля, заранее рассчитав с конкретным водителем стоимость одного км пробега, исходя из расхода топлива по городу и стоимости планового ТО.
2к18 который мы заслужили:
* Код в зипке
* Denwer
* Инструкция как получить csv в нужной кодировке
---
К автору претензий никаких, понятно что он не разработчик, и что его творение решает бизнес-задачу и это хорошо. Просто забавно :)
Не стреляйте в музыканта, играю как умею )))
* Никак пререквезитов
* Не нужно ставить ноду
* Не нужны тайные знания по запуску
* Просто распаковал и работает
Да эта программа лучше, чем 95% творений сегодняшних "профессиональных программистов"
Да и давно это было, дата последней правки 26.06.2013, но работает, тока проверял.
это был сарказм? тогда расскажите как правильно и модно.
1) код в зипке. в чем здесь подвох. я в "облаках" не летаю. и на github не выкладываю.
2) денвер - обычный локальный сервер как и другие. буквально на днях обработал на нем базу ФИАС, а это несколько гигобайт.
3) Это проблема бесконечна. win, koi, utf
Я брал на себя работу по обслуживанию сайтов. это не забавно и это 2к18
Клавиша с 0 на клавиатуре отвалилась?
Denwer ещё жив??? о_О
А я каждый раз вспоминаю другого Денвера:
Сайт работает
http://www.denwer.ru/
А что сейчас лучше для эмуляции сервака на локалке?
У меня живет )))
Пока справляется, зачем менять?
Комментарий недоступен
тут скорее всего придется яндексу заплатить еще
https://tech.yandex.ru/maps/commercial/
Я не против))) пилите стартап и выкладывайте отчет))
Комментарий удален модератором
Exel- это как excel, но только короче
Спасибо)), поправил.
Комментарий недоступен
Что же вы так сразу исходники на стол, архивчики...
Надо было пилит презу, считать рынок и заявку во фри, пару лямов не лишние! )
Непутевый)))
Но вообще такой скрипт напишит любой программист за пару часава, а вот на всякие фри нужно посевные брать вместе с бизнес ангелом.
Вообще удивлен что статья с простым скриптом стала такой популярной, тут с месяц наверное обмозговывал вот эту:
https://vc.ru/future/45632-pochemu-tramp-priblizhaet-bezuslovnyy-bazovyy-dohod-a-putin-otdalyaet-i-prichem-tut-internet-torgovlya
И эффект в разы меньше, а эту вчера за час накатал, включая проверку самого скрипта, так как давно им не пользовался.
У меня тоже похожее есть.
На досуге создал сервис Доставки dostavka23.ru Но я его счас не использую :)
Пользователь( которому нужно например перевезти плюшки и вкусняшки ) ставит точки откуда и куда вести груз и ставит цену которую готов заплатить. При помощи яндекса рисуется маршрут. Ну а исполнитель (например газелька) выбирает лучшие заказы и перевозит. Все довольны :)
что-то пошло не так видимо.
Комментарий недоступен
Как вариант, посмотреть как javascript работает)))
Почему-то никто не сказал про Composer, почему библиотека распространяется вне ракетного менеджера?
Видимо потому что человек не является разработчиком и просто бесплатно поделился тем, что делал для себя по-быстрому, а дареному коню в зубы не смотрят.
Почему все написали про composer но никто не взял и не сделал как надо)
Денис, спасибо за статью!
Пожалуйста
Эмулятор PHP Deneer, ясно-понятно
Denwer! Правильнее конечно было написать локальный сервер (Apache, PHP, MySQL, Perl и т.д.)
мне вот нужно разбить N адресов с временными окнами на несколько машин, а у вас только на одну, Как бы допилить ваш скрипт
VRP with Time Windows, VRPTW
http://rain.ifmo.ru/cat/view.php/theory/unsorted/vrp-2006
Задачи маршрутизации транспорта (VRP) лежат на пересечении двух хорошо изученных задач.
- Задача коммивояжера (Traveling Salesman Problem, TSP)
- Задача об упаковке рюкзака (Bin Packing Problem, BPP)
Пока нашел решение на C (используется алгоритм имитации отжига)
https://github.com/radkasprzak/VRPTW_simulated_annealing
Берите мой скрипт и допиливайте, заодно поправите свой javascript, можно вообще так поправить, что будет голый javascript без необходимости php и эмуляции сервера, можно будет на компе использовать через браузер.
Комментарий недоступен
Это к этим ребятам:
https://vc.ru/services/45973-transportnye-kompanii-do-sih-por-planiruyut-marshruty-na-bumage-ili-v-excel-fayle?ref=vc.ru
А если у вас пара-тройка курьеров, то этого скрипта хватит с головой, особенно если его прикрутить напрямую к своей crm, чтоб без всяких csv файлов
Хорошая задача для многофакторной процедурной оптимизации!
Вам бы найти людей, кто шарит в таком классе задач, и можно съэкономить на SAP
Денис, я прочитал Вашу статью на тему безусловного базового дохода. Меня заинтересовала эта тема. Могу ли я задать Вам пару вопросов в вк? Надеюсь Вы ответите)
Я в вк не бываю, тут пишите
а скриптик то не работает.... бегунок моргает, но дальше не проходит
Сегодня вообще походу трабла с яндекс картами, у меня сейчас на сайте не работает даже определение города через их api, так что все норм, починят и будет работать
Вчера проверял работает, много адресов загружаете? Пишите их как указано в примере?
На всякий случай еще и в яндексе авторизуйтесь, все таки через их API работа основная идет.
Сколько адресов пробовали? Чем больше адресов, тем больше javascript работает на вашей машине перебирая разные варианты. Интернет нормальный еще нужен. Также попробуйте браузер другой, хотя я вчера даже на эксплорере 11 пробовал, на нем если что работает то потом 100% и на других будет работать.
Скриншоты которые в статье, именно вчера и сделал в ходе тестирования.
Сейчас еще раз сам проверил и правда, не работает, яндекс данные не отдает, может у них там что-то ремонтируют, думаю поправят и он заработает, так как использует открытый API яндекс.карт
Денис, а подобная автоматизация с Гуглом может работать? не пробовали?
Даже не знаю, не разбирался с API гугловских карт
Вопрос хоть и не мне, попробую ответить. У Google есть Directions API. (https://developers.google.com/maps/documentation/directions/intro#DirectionsRequests) Через него можно прокладывать маршруты между точками, в т.ч. и оптимальные (при указании optimize:true). Это относится к автомобильным, пешеходным и прочим. Из ограничений: количество запросов в сутки на ключ ограничено (при бесплатном использовании). Из плюшек: есть либы для работы под все основные ЯП.
Когда девушка работала по этой теме, запилил решение на Django + bootstrap/jQuery. Интересовали пешие сотрудники (полевые), поэтому тогда остановился именно на API от Google. Расчет маршрутов по дням (в разные дни - разные маршруты), вывод времени перемещения между точками и расстояние). Расчет как от заданной (первой) начальной точки, так и автоперебор для определения стартовых точек (с привязкой к ближайшим станциям метро).
Можно посмотреть: http://mroute.pythonanywhere.com, логопасс: tanya:tanya (если при расчете будет падать - не пугаться, проблемы с адресами - есть нюансы).
Репо открыто: https://github.com/grybakov/MerchRoutes, по аналогии можно запилить под свое.