Я пытаюсь разработать приложение на c #, которое будет генерировать список всех возможных перестановок, в пределах лимита и стоимости. Например, у меня есть список из 80 рабочих мест. Каждое задание имеет значение (1-5) (обычно 3), и у каждого инженера есть предел того, сколько они могут сделать, обычно это значение 20.
В данный момент я начал с составления списка всех возможных комбинаций (n! / (K! * (Nk)! Где n - общее количество заданий, а k - 2). Связь между каждым заданием должна быть взвешенным с расстоянием между каждой работой.
Отсюда я хотел бы выбрать начальное начальное задание и составить список всех возможных комбинаций заданий (от начального задания) до предела 20, а затем упорядочить их по сумме веса. Маршрут с наименьшим весом победит и будет выделен инженеру. Моя проблема в том, что я не знаю, как подойти к этому - какая структура данных будет лучше?
Как правило, есть приблизительно 6-8 инженеров (в зависимости от рабочей нагрузки), я планировал маршрутизировать каждого инженера по одному - после того, как маршрут был назначен другому инженеру, эти задания будут удалены из списка и новые начать задание, выбранное с новым набором комбинаций. Это звучит как приемлемый подход?
Любая помощь будет приветствоваться.