DoroginRuslan / distribution-of-tasks

0 stars 0 forks source link

Алгоритм распределения задач и построения маршрутов вижу так. Но нужен взгляд со стороны и на свежую голову еще раз глянуть его #1

Open Sanalex97 opened 11 months ago

Sanalex97 commented 11 months ago

Процесс: определение задач для каждой агентской точки на текущий день Вход: входные данные для анализа и справочник задач Выход: 3 массива с высоким, средним и низким приоритетами соответственно с агентскими точками Алгоритм:

  1. Создать 3 массива для хранения агентских точек и задач

2.Проверка агентской точки на наличие задачи с высоким приоритетом: 2.1. Проверка количества дней после выдачи последней карты: 2.1.1. Если количество дней больше 14, то добавление задачи в массив с большим приоритетом и переход к проверке условия для среднего приоритета 2.1.2. Если количество дней меньше 14 и больше 7, проверка - «кол-во выданных карт>0» 2.1.2.1 Если да, то добавление задачи в массив с большим приоритетом и переход к проверке условия для среднего приоритета 2.1.2.2 Если нет, то переход к проверке на наличие задачи со средним приоритетом

  1. Проверка агентской точки на наличие задачи со средним приоритетом: 3.1. (Отношение кол-во выданных карт к кол-ву одобренных заявок) * 100% < 50% 3.1.1. Если да, то добавление задачи в массив со средним приоритетом и переход к проверке условия для низкого приоритета 3.1.2. Если нет, то переход к проверке условия на наличие задачи с низким приоритетом

  2. Проверка агентской точки на наличие задачи с низким приоритетом: 4.1. Проверка, когда подключена точка: 4.1.1. Если точка подключена вчера, то добавление задачи в массив с низким приоритетом и переход к следующей агентской точке 4.1.2. Если не вчера, то проверка была ли доставка карт и материалов 4.1.2.1. Если нет, то добавление задачи в массив с низким приоритетом и переход к следующей агентской точке 4.1.2.2. Если да, то переход к анализу следующей агентской точки

Процесс: построение маршрута для каждого сотрудника на день Вход: 3 массива с задачами разного приоритета и агентскими точками, массив сотрудников Выход: массивы с маршрутом движения для каждого сотрудника Алгоритм:

  1. Распределение задач по сотрудникам: 1.1. Анализ массива задач с высоким приоритетом: 1.1.1. Проверка какая задача с высоким приоритетом ближе всего к сотруднику — синьору, кроме тех у кого уже есть задача с высоким приоритетом 1.1.2. Добавление к каждой задаче сотрудника на текущий день 1.1.3. Удаление агентской точки из массивов со средним и низким приоритетом 1.2. Анализ массива задач со средним приоритетом: 1.2.1. Проверка какая задача со средним приоритетом ближе всего к сотруднику — мидл и синьор, кроме тех, у которых уже есть задача с высоким и средним приоритетом, а также при условии, что у агентской точки отсутствует задача в высоком приоритете 1.2.2. Добавление к каждой задаче сотрудника на текущий день 1.2.3. Удаление агентской точки из массивов с низким приоритетом 1.3. Анализ массива задач с низким приоритетом: 1.3.1. Проверка какая задача с низким приоритетом ближе всего к любому сотруднику, кроме тех, у которых уже есть задача, а также при условии, что у агентской точки отсутствует задача в высоком и среднем приоритете и у сотрудника осталось рабочее время 1.3.2. Добавление к каждой задаче сотрудника на текущий день

  2. Добавление задач в маршрут сотрудников, вычет у каждого сотрудника времени на дорогу+выполнение задачи, обновление текущего адреса сотрудника

  3. Вычет уже распределенных задач(отметка о ее выполнении, удаление задачи из соответствующего массива)

  4. повторение пунктов 1-3 до тех пор, пока задачи с высоким и средним приоритетом не будут выполнены полностью, а на задачи с низким приоритетом нельзя будет назначить сотрудника в рабочее время

  5. Если остались задачи с низким приоритетом, то они переносятся в массив с высоким приоритетом.