Я бы планировал смены таким образом, чтобы люди работали в паре.
1. Основным ограничением является то, что время от времени каждый человек не должен работать с человеком, с которым он работал в предыдущую смену.
2. Там не ограничивают время смен, мне просто нужно сопоставить пару с днем.
Например, если {A, B .. F} представляют людей, то
День 1: A-B День 2: C-D День 3: E-F День 4: A-B ‹--- Неправильно, потому что так (1.) нарушается
Мое решение:
Определите фитнес-функцию T, тогда T (A) будет равно 0, если A работал сегодня, или T (A) = c, если A работал в последний раз c дней назад.
Шаги было бы:
- Произвести инициализацию пар случайным образом (очевидно, с соблюдением ограничений)
- Создайте новую пару (i, j): возьмите элемент (человека) i с наивысшей пригодностью и элемент j со вторыми по величине значениями пригодности, доказывающими, что T (j)! = T (i). (Чтобы не обеспечивать каждый раз разные пары)
- Обновлять
Есть способ лучше решить проблему? Есть что-то подобное в литературе, чтобы я мог проконсультироваться? Нравится похожие задачи для примеров? Проблемы с медсестрой вроде как на это?
Спасибо.
AB, CD, EF, FA, BC, DE, AB, ...
? (при условии, что количество человек четное, для нечетных чисел это можно сделать аналогично) - person Anton Savin   schedule 12.09.2014