Автоматизация отдела доставки с помощью PHP и JavaScript

Данный скрипт легко установить на свой хостинг, поддерживающий PHP, или использовать локально с помощью эмуляторов PHP типа Denwer. Вы сможете при помощи открытого API Яндекс.Карт составлять оптимальный маршрут для своих курьеров, будете знать требуемое время и общий километраж.

На написание данной статьи меня сподвигнул этот стартап:

Вспомнил, что когда то давно, когда у меня были свои водители для доставки по Ростов-на-Дону, сделал тогда себе нехитрый скрипт (php + javascript) для составления оптимального плана доставки, который при необходимости легко разделить на нескольких водителей.

Скачиваете дистрибутив (php + javascript):

И заливаете все содержимое к себе на сайт в отдельную папку, скажем в папку route, далее в адресной строке браузера набираете ваш_сайт.ru/route/, появится такое окно:

Загружаете csv файл c кодировкой utf-8, его в excel можно сделать, нажав "сохранить как" и выбрав там "Текст CSV(.csv)".

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

Нажав кнопку "найти оптимальный маршрут", вы через минуту работы javascript кода получите такой результат:

Ниже будет список оптимальной последовательности адресов:

Можно кликнуть по ссылке "открыть маршрут" и в режиме навигатора начать двигаться по адресам.

Этим скриптом я также начислял водителям компенсацию за использование их автомобиля, заранее рассчитав с конкретным водителем стоимость одного км пробега, исходя из расхода топлива по городу и стоимости планового ТО.

0
92 комментария
Написать комментарий...
Василий Пупкин

мне вот нужно разбить 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 и эмуляции сервера, можно будет на компе использовать через браузер.

Ответить
Развернуть ветку
89 комментариев
Раскрывать всегда