Добрый день!
Несколько абстрактный вопрос без строчки кода...
Передо мной руководство поставило следующую задачу:
Имеется новостной канал, который осуществляет видеосъемки. Кто-то (это не имеет отношение к задаче) определяет корреспондента, цели, сюжеты которые необходимо снять. Есть отдел «Координации», который по требуемым видеосъемкам назначает ограниченный человеческий ресурс – операторов и звукооператоров.
Задача сделать так, что бы распределение операторов и звукооператоров определяла компьютерная программа, а не человек.
К сожалению, руководство не может ни составить ТЗ, ни описать какие параметры требуют оптимизации.
Я сделал первый набросок к программе: Координатор перед назначением сотрудников на видеосъемку получает список только доступных операторов и звукооператоров (исключаем больных, в отпуске, отгуле, в командировке и т.п.) далее нужно из полученного списка выбрать группу. Я сделал следующее предположение – что все в отделе должны примерно одинаково работать. Поэтому я рассчитал для каждого “свободного” сотрудника время, отработанного им в течение месяца (от даты видеосъемки) и отсортировал в порядке от меньшего, к большему. Т.е. наименее работавшие – первые кандидаты на видеосъемку.
Но Координаторы не оценили работы. Из предложенного списка они очень редко выбирают тех, кого предлагает программа. Чаще всего они уходят сильно «в низ» по сортировке. Примерно на 4-6 позиций в низ. Аргументация примерно следующая:
1. «Человек только вышел из больничного (естественно у него самое маленькое кол-во отработанных часов и программа подбирает в качестве первого претендента на видеосъемку) – человек должен отдохнуть;
2. «Оператору под 50 лет – пусть молодежь побегает…»
3. «У человека нога болит…»
4. И т.п.
Я делал предположение, что все сотрудники одинаковы, но получается что это не так ("Не все йогурты одинаково полезны"). Я попытался придумать некий коэффициент «полезности» сотрудника.
Не все сотрудники работают одинаково, кто-то болеет, кого-то только что приняли, поэтому я предположил, что таким коэффициентом «полезности» можно назначить соотношение «Кол-во дней на видеосъемке(Командировке)»/«Кол-во рабочих дней»
Чем ближе этот коэффициент к 1, тем лучше. Рассчитав для каждого сотрудника, я получил следующие цифры:
Среднее значение: 0,61
Стандартное отклонение: 0,133
Минимальное значение: 0,22
Максимальное значение: 0,96
Кол-во сотрудников попадающих в 2сигма (Среднее значение+- Стандартное отклонение) – 76%
«Мало работающие» сотрудники – 12%
«Много работающие» сотрудники – 12%
Я могу при отображении списка «доступных» на видеосъемку сотрудников добавить сортировку по коэффициенту «полезности». Но это приведет к тому что, тот, кто мало работал, будет мало работать, и программа будет только усиливать «неравенство».
![]()
Буду признателен за любые советы которые помогут решить данную проблему.
С Уважением,
Александр.