Страницы: 1
RSS
Транспортная логистика. Распределить адреса по зонам (участкам).
 
Всем привет! В данный момент используется программа которая распределяет точки по нарисованным зонам. Зон могут быть от 2 и более сколько курьеров столько зон. Если данный координат входит в зону 1 значит ему присваивается зона один, если в зону 2 значит присваивается зона 2 и т.д.
Столкнулся с неудобством, если в штат добавляется курьер то нужно рисовать еще одну зону корректируя все остальные. По сути с нуля рисовать все зоны. Если было пять курьеров и было 5 зон, при добавлении еще 1 курьера нужно рисовать с нуля 6 зон. Еще одна проблема это если в одной указанной зоне всего 3 точки а в ближайшей зоне 15 точек то приходится вручную корректировать перегруз и недогруз.

Вопрос такой Возможно ли Распределить точки так чтобы каждый курьер был равномерно загружен и его точки были оптимально близки друк к другу.
Из данных имеются геокоординаты, количество курьеров, время работы на адресе (сложность). Пример рабочего документа прикрепил.
Хотелось бы найти совершенно другой подход к распределению, в голове мысль такая, от точки отправки определяются для каждого курьера максимально дальняя точка после чего присваивается время в пути от точки отправления к максимально дальней точке (Время в пути можно определить формулой гаверсинусов), добавляется время работы на адресе (сложность), на выходе получаем время работы курьера с дорогой, далее исходя из итогового времени каждого курьера, назначать свободному курьеру ближайшую точку к последней присвоенной точки курьера, до тех пор пока его время не выровнится или не превысит время другого курьера. И так переключаясь на каждого курьера нужно присвоить все точки.
Изменено: vikttur - 22.06.2021 20:27:55
 
это же не учебная а практическая задача?
полагаю к ее решению нужно подходить с практической стороны:
1. начинайте откладывать деньги на решение
2. давайте определимся что за задачу с точки зрения математики вы решаете (мы будем решать)
3. по координатам геолокации фактически между точками может оказаться 600м, и эти 600 метров - физически это река. ближайший мост за 6 км, итого по геолокации между точками 600 метров, фактически нужно пилить 13 км
4. кто от куда стартует? (должен, может стартовать)

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

Цитата
RenatKZ написал:
чтобы каждый курьер был равномерно загружен
понимаете, допустим у вас 4 курьера и мы добились идеально равномерной загрузки - по 24 часа в сутки
бегают с одного края на противоположный, но в результате абсолютно равномерно все по 24 часа (итого 96 чел-часов беготни)
но может задача решается так  6, 7, 9 и 12 часов соотв. время не равномерно, но общий итог = 34 чел-часа

обсуждение можно начать прямо с п.2))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Привет! Отлично) видите я изхожу из своих знании например прямые линии км ексель научить двигатся по дорогам и учитывать пробки и т.д. может ли самостоятельно? Если да то это другой вопрос а если нет то нужны api и парсинги с яндекс карт или 2giz  у нас в казахстане, тогда это платные или ограниченные варианты... ну и в добавок наш город не имеет к сожалению рек, но все же есть одно место где заехать в эту часть участка нужно либо с низу города либо с верху города... стартовую точку  забыл указать, это склад. скорость движения 50км, кол.во курьеров определяется путем объема работ и км пути от старта до финиша прямыми линиями. (понимаю что это не правильно, но пока что есть).

Админ пожалуйста отправьте тему в платный раздел.
Если это выполнимая задачка, и я коряво объяснил, завтра сяду попробую более подробнее описать задачу.  
 
пусть не речка, а огражденная железная дорога, на ту сторону по геолокации 100 метров, а до ближайшего переезда - 6 км, и итог тот же что и с рекой
да можно заморочиться с дорогами и пр. (если в этом есть смысл)
а можно принять некоторое упрощение - условное движение по прямой и определение расстояния по прямой
все условно двигаются по прямым все в одинаковых условиях

нужно обсуждать исходные и способ решения и САМОЕ ГЛАВНОЕ нужно понимать КАКУЮ МАТЕМАТИЧЕСКУЮ ЗАДАЧУ мы решаем
Изменено: Ігор Гончаренко - 22.06.2021 22:39:52
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Привет! Вы говорите у вас есть схожая работа по данной теме? возможно как то ознакомится?
Изменено: RenatKZ - 23.06.2021 14:54:58
 
По математике.
Возможно подойдет метод Кларка-Райта который очень близок к поставленной задаче
Для упрощения изначально определяем расстояния между точками по координатам (по прямой) по данной матрице находим циклы методом Кларка-Райта
Если есть возможность построить расстояния по дорогам (с учетом рек, переездов, одностороннего движения и т.п.) - то делаем точную матрицу расстояний и решаем для каждого цикла задачу коммивояжера, улучшая решение.

Можно также сгруппировать точки методом k-средних, а затем использовать "коммивояжера" для каждой группы.

Цитата
RenatKZ написал:
Вы говорите у вас есть схожая работа по данной теме?
Метод Кларка-Райта - делал на VBA
Задачу коммивояжера, также реализовывал разными способами
k-средних (k-means) тоже есть решения
Изменено: MCH - 23.06.2021 15:29:14
 
Цитата
MCH написал:
Если есть возможность построить расстояния по дорогам (с учетом рек, переездов, одностороннего движения и т.п.) - то делаем точную матрицу расстояний и решаем для каждого цикла задачу коммивояжера, улучшая решение.
Привет! А если не рисовать всю матрицу, а нарисовать только часть для участка к которому нужен расчет с учетом того что прямая должна дойти до моста а потом уже до точки?
 
Почитал по поводу метода Кларка Райта, то что нужно есть кто сможет решить задачу? Данные по весу имеются!

Модератор пожалуйста можете переместить тему на платную ветку🙏
 
Люди кто нибудь отпишитесь))) Учитывая то что я не знаю на сколько это сложная или легкая задача для решения, готов оплатить 10 000тг это примерно 2 000р.
Задачу объясню подробнее и пример приложу тоже.
Есть курьеры, количество (определяется путем веса отгрузки), точка старта, адрес, широта, долгота, вес, время задержки на адресе.
Нужно чтобы каждый курьер был загружен оптимально так чтобы вес не превышал 3000кг, конец рабочего дня должен быть средним между каждым курьером.  За исключением дальних поездок там один из курьеров может закончить рабочий день и в 22:00 а другие в 20:00 в одну дальнюю дорогу 2 курьера  не могут ехать если только его вес не превышает 3000кг. Остальные ближайшие адреса в приоритете должны быть оптимально близки друг к другу.

по телефону обсудим более подробнее.  
Изменено: RenatKZ - 24.06.2021 19:40:42
 
получил приглашение на реализацию задачи.
работаю)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Спасибо ОГРОМНЕЙШЕЕ!!! за проделанную работу! Все работает более чем ожидал!
Страницы: 1
Наверх