You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Система — дизайнер паттернов. Она генерирует набор совместимых паттернов ротации (общих и персональных) на конкретный квартал, с учётом покрытия, отпусков, праздников, болезней (статистически), предпочтений и резервов. Верифицирует что всё сходится по каждой неделе. Потом врачи разбирают заготовки — выбирают паттерн и отпуск, получают расписание. Система не составляет расписание — она проектирует паттерны из которых расписание собирается автоматически.
Две фазы
Фаза 1 — Дизайн паттернов (итеративная)
Система генерирует паттерны на конкретный квартал. Входные данные:
Покрытие: какие слоты надо закрыть (смена × место × день)
Врачи: типы (EL/EVAL), квалификации, занятость (100/80/50%)
Отпуска: плановые на этот квартал
Праздники: конкретные даты (Vappu, Juhannus, Joulu...)
Болезни: статистика (~5%, зимой ~8%, грипп ~15%)
Резерв: запас прочности по критичным слотам
Факт прошлого: где рвалось в предыдущем квартале
Итерации Фазы 1:
Итерация 1: Система генерирует общие паттерны
→ Верификатор проверяет каждую неделю
→ Показывает карту хрупкости
Итерация 2: Врачи просят кастомные паттерны
("мне без парных ночных")
→ Система генерирует персональный паттерн
→ Проверяет совместимость с остальными
→ Если не сходится → показывает цену:
"Ок, но тебе +1 Loimaa. Согласен?"
→ Врач соглашается или остаётся на стандартном
Итерация 3: Админ корректирует требования если нужно
(летом Loimaa 4 дня вместо 5)
→ Пересчёт → ОК
...
Итерация N: Все паттерны утверждены
Результат: библиотека совместимых паттернов на квартал + карта хрупкости.
Ключевые принципы Фазы 1:
Общий паттерн — дефолт. 80% врачей на стандартном, сбалансированном, справедливом. Спорить не о чем — все одинаковые.
Персональный — исключение с компенсацией. Кто просит кастом — должен быть гибок при противоречиях. Не привилегия, а trade-off.
Паттерн на квартал, не вечный. Летний отличается от зимнего. Праздники, отпуска, состав врачей — всё учтено при генерации.
Резерв заложен в паттерн. Критичные слоты (ночные VV) генерируются с запасом. В хороший день резервный врач на обучении/админе. В плохой — закрывает дыру.
Фаза 2 — Врачи разбирают заготовки + добивка
1. Врачи выбирают отпуск
2. Система назначает offset (отпуск → лёгкие позиции)
3. Расписание собирается автоматически
4. Оставшиеся дыры (2-5%) — подмены или контракторы
Верификатор — ядро системы
Не просто чекер ✅/❌, а инструмент переговоров между админом, врачами и реальностью.
Что проверяет
Паттерны генерируются на конкретный квартал (13 недель) — верификатор проверяет каждую неделю явно, не среднее.
Для каждой недели, для каждого слота:
покрытие = сколько врачей проходят этот слот в паттернах
требование = сколько нужно
отпуска = сколько потеряем (план этого квартала)
праздники = изменённое покрытие в эту неделю
болезни = статистический резерв (сезонный)
запас = покрытие - требование - отпуска - праздники - болезни
запас > 0.5 → 🟢 устойчиво
запас 0-0.5 → 🟡 хрупко
запас < 0 → 🔴 дефицит
Карта хрупкости
Админ видит где система сломается первой на каждой неделе квартала:
Система: "Q3 2027 — работает, но:
- неделя 28: hy3 вечер недопокрыт (3 отпуска совпали)
- недели 30-31: запас Yö VV = 0.2 (хрупко)
- грипп-сценарий: недели 1-4 ломаются при >10% болезней"
Админ: "Что делать?"
Система: "Варианты:
1. Добавить резервный вечерний слот в позицию D (+2ч)
2. Сдвинуть отпуск Петровой на неделю 29 → конфликт уходит
3. Запланировать контрактора на неделю 28
4. Снизить покрытие hy3 вечер до 0 на эту неделю"
Обратная связь между кварталами
Q2 прошёл → факт:
- 12 реальных подмен (план был 5)
- Позиция K оказалась хрупкой 3 раза
- Грипп в феврале: 4 дня без покрытия hy1
→ Входные данные для генерации паттернов Q3:
- Усилить резерв позиции K
- Увеличить зимний коэффициент болезней
- Добавить резервный слот hy1
Поток работы
Факт прошлого квартала
│
▼
┌──────────────────────────────────────────────────┐
│ ФАЗА 1: ДИЗАЙН ПАТТЕРНОВ (итеративная) │
│ │
│ Входные данные: │
│ покрытие + врачи + отпуска + праздники + │
│ болезни (стат.) + резерв + факт прошлого │
│ │
│ Итерация 1: Система генерирует общие паттерны │
│ Итерация 2: Врачи просят кастом → переговоры │
│ Итерация 3: Админ корректирует → пересчёт │
│ ... │
│ Итерация N: Утверждение │
│ │
│ Результат: паттерны + карта хрупкости │
├──────────────────────────────────────────────────┤
│ ФАЗА 2: РАСПИСАНИЕ │
│ │
│ Врачи выбирают отпуск → offset → расписание │
│ Добивка остатков (2-5%) → финал │
│ │
│ Результат: расписание на квартал │
└──────────────────────────────────────────────────┘
│
▼
Факт этого квартала
│
▼
Фаза 1 следующего квартала
Почему это работает
Вопрос
Ответ
Праздники?
Часть входных данных для генерации, не исключение
Лето, все в отпуске?
Паттерн на квартал — летний уже учитывает 30% отпусков
ER Physician Scheduling: Algorithm & Literature Review
Алгоритм создания расписания для врачей скорой помощи (päivystys) в Финляндии с «идеальной цепочкой» смен и полный обзор литературы (110 источников).
Часть I. Контекст и ограничения
Идеальная цепочка (Metropolitan Pattern)
Паттерн УУДДННВВ — 8-дневный цикл прямой ротации (forward rotation) для 4 команд:
День 1–2: Утро (07:00–15:00)
День 3–4: День (15:00–23:00)
День 5–6: Ночь (23:00–07:00)
День 7–8: Выходной
Почему именно этот паттерн:
Прямая ротация (M→E→N) соответствует циркадному ритму — тело легче сдвигает фазу «по часовой». Доказано в ландмарковом исследовании Czeisler et al. [R30]: −40% аварий, −25% случаев засыпания на работе.
Быстрая ротация (2 смены каждого типа) — циркадная фаза остаётся в узком коридоре ~4 часа, без глубокой десинхронизации [R31], [R32].
Только 2 ночи подряд — безопасная зона. Риск растёт экспоненциально: 3-я ночь +17%, 4-я +36% [R36].
Справедливость по конструкции — все команды работают одинаковый паттерн [R22], [R68].
Финское законодательство
Ключевые ограничения для системы расписания:
Ограничение
Значение
Источник
Регулярные часы (SOTE)
38ч 15мин / неделя
SOTE-sopimus
Jaksotyö: 3-недельный период
≤ 114ч 45мин
Työaikalaki §7
Отдых между сменами
≥ 11ч (≥ 9ч для jaksotyö)
Työaikalaki §25
Еженедельный отдых
≥ 35ч непрерывно
Työaikalaki §27
Макс. рабочее время
≤ 48ч/нед (среднее за 4 мес)
EU WTD (без opt-out)
Выходных за 3 недели
≥ 6, из них ≥ 2 подряд
SOTE-sopimus
Макс. дневная смена
10ч
SOTE-sopimus
Макс. ночная смена
11–12ч
SOTE-sopimus
Дежурства врачей
≤ 5/мес, ≤ 85ч/мес
Lääkärisopimus
Ночное время
23:00–06:00
Työaikalaki §8
Финляндия не использует opt-out из 48ч EU WTD — в отличие от UK, Германии, Нидерландов [R91].
Часть II. Алгоритм
Общий принцип
Расписание строится послойно — от идеального каркаса к реальности:
┌─────────────────────────────────────────┐
│ Шаг 0. Входные данные │
├─────────────────────────────────────────┤
│ Шаг 1. Мастер-паттерн (цепочка) │ ← чистая математика
├─────────────────────────────────────────┤
│ Шаг 2. Разбивка по командам │ ← кто с кем
├─────────────────────────────────────────┤
│ Шаг 3. Раскладка на календарь │ ← привязка к датам
├─────────────────────────────────────────┤
│ Шаг 4. Вычитание отпусков │ ← дыры в расписании
├─────────────────────────────────────────┤
│ Шаг 5. Заполнение дыр │ ← подмены, оптимизация
├─────────────────────────────────────────┤
│ Шаг 6. Назначение отделений │ ← кто куда
├─────────────────────────────────────────┤
│ Шаг 7. Валидация │ ← проверка всех ограничений
├─────────────────────────────────────────┤
│ Шаг 8. Публикация │ ← уведомления, экспорт
└─────────────────────────────────────────┘
Этот послойный подход обоснован в литературе: циклическая база + обработка исключений — наиболее практичный гибрид [R5], [R16], [R21].
Формализация входных данных для задач расписания врачей рассмотрена в [R9], [R10], [R102].
Шаг 1. Мастер-паттерн
Определяем базовый цикл и адаптируем под финские нормы.
Проблема: чистый 8-дневный цикл даёт 42ч/нед > 38ч15мин.
Решение — jaksotyö (периодический учёт за 3 недели):
114.75ч ÷ 8ч = 14.3 смены за 3 недели
21 день − 14 смен = 7 выходных (≥ 6 по SOTE ✓)
Неделя 1: M M E E N N - (6 смен = 48ч)
Неделя 2: - M M E E N N (6 смен = 48ч)
Неделя 3: - - M M - - - (2 смены = 16ч)
Итого: 14 смен × 8ч = 112ч ≤ 114.75ч ✓
Теоретическое обоснование циклических расписаний: [R26], [R27], [R28]. Для ER конкретно: [R21] — cyclic stint-based staff scheduling with on-call.
Расчёт количества врачей:
Потребность по отделениям:
Утро: 2+3+1+2 = 8 врачей одновременно
День: 2+3+1+2 = 8
Ночь: 1+2+1+0 = 4
При 14 сменах из 21 дня → каждый врач работает 2/3 времени
Минимум врачей: 8 ÷ (2/3) = 12 (+ запас на отпуска ≈ 15)
Вопросы стаффинга с учётом квалификаций рассмотрены в [R14], [R64].
Шаг 2. Разбивка по командам
Группируем врачей в ротационные команды:
Для каждого врача определить «совместимую команду»:
1. В каждой команде — квалификации для всех отделений
2. Конфликтующие врачи → разные команды
3. Парные связки (обучение) → одна команда
Пример:
Команда A: [Virtanen(Trauma), Korhonen(Pediatric), Mäkinen(Acute), Laine(Acute)]
Команда B: [Nieminen(Trauma), Heikkinen(Pediatric), Hämäläinen(Acute), Koskinen(FT)]
Команда C: [Järvinen(Trauma), Lehtonen(Pediatric), Salo(Acute), Tuominen(Acute)]
Это задача балансировки с ограничениями — формально описана в [R70] (multi-department nursing) и [R72] (multi-skill scheduling).
1. Отсортировать дыры по приоритету:
ночные > дневные > утренние
праздники > выходные > будни
2. Для каждой дыры H:
a. Кандидаты: врачи на выходном в этот день
b. Фильтр (жёсткие ограничения):
- квалификация для отделения
- ≥ 11ч отдых до и после
- ≤ 114.75ч за 3 недели
- ≤ 48ч/нед за 4 месяца
- нет конфликта с врачами на смене
c. Ранжирование (мягкие):
score = w1 × (кол-во доп. смен) # справедливость
+ w2 × (нарушение ротации) # циркадность
+ w3 × (предпочтение) # персональное
+ w4 × (стоимость сверхурочных) # бюджет
- w5 × (родное отделение) # квалификация
d. Назначить с минимальным score
3. Каскадные перестановки (глубина ≤ 3) для неразрешимых дыр
GRASP-вариант этого подхода описан в [R19], показавший улучшение справедливости распределения.
Вариант B: CP-SAT солвер (рекомендуемый)
Переменные: swap[i,j,k] ∈ {0,1} — врач i берёт смену k в день j
Ограничения: все жёсткие из шага 5b
Цель: min Σ дыр + Σ штрафов за мягкие нарушения
Решатель: Google OR-Tools CP-SAT
CP-SAT доказал эффективность на бенчмарках INRC [R77], [R78]. Практическое руководство по CP-SAT для расписаний — [R110], [R50].
Для каждой смены — задача назначения (assignment problem):
Для каждого дня j, для каждого типа смены k:
1. working = [врачи, работающие смену k в день j]
2. needs = { "Trauma": 2, "Acute": 3, "Pediatric": 1, "FT": 2 }
3. Назначить по критериям:
- Квалификация (жёсткое)
- «Домашнее» отделение (мягкое)
- Ротация отделений (мягкое)
- Баланс за период (мягкое)
→ Венгерский алгоритм или CP-SAT
Мульти-отделенческое назначение рассмотрено в [R70], [R73]. Учёт мульти-квалификаций — [R72].
Шаг 7. Валидация
Финальная проверка всех финских ограничений:
Для каждого врача:
✓ Часы за 3 недели ≤ 114ч 45мин (Työaikalaki §7)
✓ Часы за неделю ≤ 48ч (средн. за 4 мес) (EU WTD)
✓ Между сменами ≥ 11ч (или ≥ 9ч jaksotyö) (Työaikalaki §25)
✓ Еженедельный отдых ≥ 35ч непрерывно (Työaikalaki §27)
✓ Выходных за 3 недели ≥ 6 (SOTE)
✓ Есть ≥ 1 блок из 2+ выходных подряд (SOTE)
✓ Ночных подряд ≤ 2 (хронобиология)
✓ Дежурств в месяц ≤ 5 (Lääkärisopimus)
✓ Нет работы в дни отпуска
✓ Нет конфликтующих врачей на одной смене
Для каждой смены:
✓ Покрытие ≥ минимума по каждому отделению
✓ Хотя бы 1 senior врач (если требуется)
Справедливость:
✓ Разброс ночных смен ≤ 2
✓ Разброс выходных смен ≤ 2
✓ Разброс праздничных смен ≤ 1
[R1] Burke, E.K., De Causmaecker, P., Vanden Berghe, G., & Van Landeghem, H. (2004). "The State of the Art of Nurse Rostering." Journal of Scheduling, 7(6), 441–499. DOI
Семинальный обзор 40 лет исследований NRP. Классификация ограничений, методов OR и AI.
[R2] Cheang, B., Li, H., Lim, A., & Rodrigues, B. (2003). "Nurse Rostering Problems — A Bibliographic Survey." EJOR, 151(3), 447–460. DOI
Библиографический обзор моделей и методологий NRP.
[R3] Ngoo, C.M. et al. (2022). "A Survey of the Nurse Rostering Solution Methodologies." IEEE Access, 10, 56504–56524. DOI
[R9] Smet, P. et al. (2013). "Nurse Rostering: A Complex Example of Personnel Scheduling with Perspectives." Automated Scheduling and Planning, Springer, 129–153. DOI
Универсальная математическая формулировка NRP.
[R10] De Causmaecker, P. & Vanden Berghe, G. (2010). "A Critical Appraisal of the Problem Structure." EJOR, 202(2), 379–389. DOI
Критический анализ структуры NRP.
[R11] den Hartog, T. et al. (2023). "On the Complexity of Nurse Rostering Problems." Operations Research Letters, 51(6), 672–678. DOI
Доказательство NP-hard для NRP даже с 3 типами смен.
[R12] Kellogg, D.L. & Walczak, S. (2007). "Nurse Scheduling: From Academia to Implementation or Not?" Interfaces (INFORMS), 37(4), 355–369. DOI
Разрыв между исследованиями и практикой.
3. Расписание ER/ED
[R13] Zaerpour, F. et al. (2022). "Scheduling of Physicians with Time-Varying Productivity in EDs." Production and Operations Management, 31(2), 645–667. DOI
[R14] Brunner, J.O. & Edenharter, G.M. (2011). "Long-Term Staff Scheduling of Physicians with Different Experience Levels." Health Care Mgmt Sci, 14(2), 189–202. DOI
Column generation для расписания с двумя уровнями опыта (резиденты vs специалисты).
[R15] Gendreau, M. et al. (2006). "Physician Scheduling in Emergency Rooms." PATAT, Springer LNCS 3867, 53–66. DOI
CP + IP для ER-расписания.
[R16] Gunawan, A. & Lau, H.C. (2013). "Master Physician Scheduling Problem." JORS, 64(3), 410–425. DOI
Мастер-расписание (циклический шаблон) для врачей.
[R17] Beaulieu, H. et al. (2000). "A Mathematical Programming Approach for Scheduling Physicians in the ER." Health Care Mgmt Sci, 3(3), 193–200. DOI
Пионерская работа по MIP для ER.
[R18] Ferrand, Y.B. et al. (2021). "Productivity-Driven Physician Scheduling in EDs." POM, 30(8), 2606–2626. PMC
Снижение времени ожидания с 54.6 до 16.8 мин через оптимизацию.
[R19] Apornak, A. (2021). "A GRASP-Based Algorithm for the ER Physician Scheduling Problem." Applied Soft Computing, 103, 107151. DOI
GRASP для ER с улучшенной справедливостью.
[R20] Savage, D.W. et al. (2015). "Developing Emergency Physician Work Schedules to Reduce Fatigue." Emergency Medicine Journal, 32(12), 935–940.
Оптимизация расписания для снижения утомляемости.
[R21] Becker, T. et al. (2019). "Cyclic Shift Scheduling with On-Call Duties for EMS." Health Care Mgmt Sci, 22(4), 676–690. DOI
Циклическое расписание + ротация дежурств для скорой.
[R22] Garcia de Veas Lovillo, R. et al. (2021). "The ED Physician Rostering Problem: Equitable Solutions via Network Optimization." Flexible Services and Manufacturing J., 34, 783–809. DOI
Двухфазный подход: multicommodity flow для справедливого распределения ночей и выходных.
[R23] Wang, T. et al. (2009). "Modelling and Optimization of Emergency Physician Scheduling." Int. J. Production Economics, 125(2), 281–293.
Оптимизация с предпочтениями врачей и нормами труда.
[R24] Stolletz, R. & Brunner, J.O. (2012). "Fair Optimization of Fortnightly Physician Schedules with Flexible Shifts." EJOR, 219(3), 622–629. DOI
Set covering с минимизацией overtime/undertime.
[R25] Li, J. et al. (2025). "Stochastic Model for Physician Staffing and Scheduling in EDs with Multiple Treatment Stages." EJOR, 324(1), 250–265. DOI
[R26] Musliu, N. (2006). "Heuristic Methods for Automatic Rotating Workforce Scheduling." Int. J. Comp. Intelligence Research, 2(4), 309–326. PDF
Tabu search + min-conflict для автоматической генерации ротаций.
[R27] Bard, J.F. & Purnomo, H.W. (2005). "Preference Scheduling for Nurses Using Column Generation." EJOR, 164(2), 510–534. DOI
Column generation с индивидуальными предпочтениями.
[R28] Bard, J.F. & Purnomo, H.W. (2007). "Cyclic Preference Scheduling of Nurses Using a Lagrangian-Based Heuristic." J. Scheduling, 10(1), 5–23. DOI
IP + Lagrangian relaxation для циклических расписаний до 100 медсестёр.
[R29] Trilling, L. et al. (2006). "Nurse Scheduling Using Integer Linear Programming and Constraint Programming." IFAC Proceedings, 39(3), 651–656. DOI
Сравнение ILP и CP для расписаний медсестёр.
5. Циркадная хронобиология и ротация
[R30] Czeisler, C.A. et al. (1982). "Rotating Shift Work Schedules That Disrupt Sleep Are Improved by Applying Circadian Principles." Science, 217(4558), 460–463. DOI
[R37] Smith, M.R. et al. (2009). "A Compromise Circadian Phase Position for Permanent Night Work." Sleep, 32(11), 1481–1489.
Компромиссная фаза для постоянных ночных работников.
6. Integer Linear Programming (ILP/MIP)
[R38] Brunner, J.O. et al. (2009). "Flexible Shift Scheduling of Physicians." Health Care Mgmt Sci, 12(3), 285–305. DOI
MIP с implicit shift generation, column generation heuristic.
[R39] Brunner, J.O. et al. (2011). "Midterm Scheduling of Physicians with Flexible Shifts Using Branch and Price." IIE Transactions, 43(2), 84–109. DOI
Branch-and-price для больших инстансов.
[R40] Santos, H.G. et al. (2016). "Integer Programming Techniques for the Nurse Rostering Problem." Annals of OR, 239(1), 225–251. DOI
Улучшенные cuts + primal heuristics для INRC. Оптимальность для большинства инстансов.
[R41] Rahimian, E. et al. (2017). "A Hybrid IP and VNS Algorithm for Nurse Rostering." EJOR, 258(2), 411–423. DOI
Гибрид IP + VNS для сложных инстансов.
[R42] Burke, E.K. & Curtois, T. (2014). "New Approaches to Nurse Rostering Benchmark Instances." EJOR, 237(1), 71–81. DOI
[R43] Bagheri, M. et al. (2016). "Stochastic Programming for Nurse Scheduling in Real-World Hospital." Computers & Industrial Engineering, 96, 192–200.
[R44] Gomes, R.A. et al. (2017). "IP Model Extensions for Multi-Stage Nurse Rostering." Annals of OR, 275(2), 403–419. DOI
7. Constraint Programming (CP/CP-SAT)
[R45] Topaloglu, S. & Ozkarahan, I. (2011). "A CP-Based Solution Approach for Medical Resident Scheduling." Computers & OR, 38(1), 246–255. DOI
CP для резидентов с учётом ACGME.
[R46] Qu, R. & He, F. (2009). "A Hybrid CP Approach for Nurse Rostering." PDF
CP-based column generation.
[R47] Abdennadher, S. & Schlenker, H. (1999). "INTERDIP — An Interactive Constraint Based Nurse Scheduler." PACLP.
[R48] Aeschbacher, D.J. et al. (2023). "Nurse Scheduling with State-of-the-Art Open-Source Tools." SHTI, 302, 897–898. DOI
Оценка open-source инструментов (OMPR, DEAP) на реальном госпитале.
[R49] Ahmad, F. & Kovalchuk, Y. (2024). "ML and CP for Efficient Healthcare Scheduling." arXiv:2409.07547. arXiv
ML + CSP для расписания медсестёр.
[R50] Google OR-Tools. "Employee Scheduling." Tutorial
Официальный туториал CP-SAT для расписаний.
8. Метаэвристики
[R51] Ceschia, S. & Schaerf, A. (2020). "Solving INRC-II by Simulated Annealing Based on Large Neighborhoods." Annals of OR, 288(1), 95–113. DOI
[R52] Ceschia, S. & Schaerf, A. (2023). "Solving a Real-World NRP by Simulated Annealing." JIFS, 44(4), 6309–6321. DOI
[R53] Knust, F. & Xie, L. (2019). "SA Approach to Nurse Rostering Benchmark and Real-World Instances." Annals of OR, 272(1), 187–216. DOI
[R54] Leksakul, K. & Phetsawat, S. (2014). "Nurse Scheduling Using Genetic Algorithm." Math. Problems in Engineering, 2014, 246543. DOI
[R55] Pato, M.V. & Moz, M. (2008). "Solving a Bi-Objective Nurse Rerostering Problem by Utopic Pareto GA." J. Heuristics, 14(4), 359–374. DOI
[R56] Aickelin, U. et al. (2009). "An EDA with Intelligent Local Search for Rule-Based Nurse Rostering." JORS, 60(8), 1085–1098. DOI
[R57] Dowsland, K.A. (1998). "Nurse Scheduling with Tabu Search and Strategic Oscillation." EJOR, 106(2–3), 393–407. DOI
[R58] Bilgin, B. et al. (2012). "Local Search Neighbourhoods for a Novel Nurse Rostering Model." Annals of OR, 194(1), 33–57. DOI
[R59] Burke, E.K. et al. (2010). "A Hybrid IP + VNS for Highly-Constrained NRP." EJOR, 203(2), 484–493. DOI
[R60] Li, C. & Li, H. (2022). "A Combined MIP and DNN-Assisted Heuristics for NRP." Applied Soft Computing, 131, 109919. DOI
[R61] Zhang, Y. et al. (2022). "Neural Network-Assisted Method for the NRP." Computers & Industrial Engineering, 171, 108432. DOI
9. Column Generation / Branch-and-Price
[R62] Legrain, A. et al. (2020). "A Rotation-Based Branch-and-Price Approach for the NSP." Math. Programming Computation, 12, 417–450. DOI
До 120 медсестёр, 4 смены, 8-недельный горизонт. Open-source.
[R63] Maenhout, B. & Vanhoucke, M. (2010). "Branching Strategies in B&P for Multi-Objective NRP." J. Scheduling, 13(1), 77–93. DOI
[R64] Maenhout, B. & Vanhoucke, M. (2013). "Integrated Nurse Staffing and Scheduling for Longer-Term Problems." Omega, 41(2), 485–499. DOI
10. Справедливость (Fairness)
[R65] Berrada, I. et al. (1996). "A Multi-Objective Approach to Nurse Scheduling." Socio-Economic Planning Sciences, 30(3), 183–193. DOI
[R66] Constantino, A.A. et al. (2013). "A Heuristic for Nurse Scheduling with Balanced Preference Satisfaction." IEEE CEC, 605–612.
[R67] Wang, S. et al. (2019). "Improving Physician Schedules by Leveraging Equalization." Omega, 85, 182–193. DOI
[R68] Wolbeck, L. (2019). "Fairness Aspects in Personnel Scheduling." PhD, Universität Hamburg. PDF
[R69] Roemer, A. et al. (2025). "Exploring Nurse Perspectives on AI-Based Shift Scheduling for Fairness." BMC Nursing, 24, 383. DOI
11. Мульти-отделения
[R70] Maenhout, B. & Vanhoucke, M. (2013). "Analyzing Nursing Organizational Structure from a Scheduling Perspective." Health Care Mgmt Sci, 16(3), 177–196. DOI
[R71] Wickert, T.I. et al. (2019). "The Nurse Rerostering Problem: Strategies for Reconstructing Disrupted Schedules." J. Scheduling, 22(6), 647–668.
[R72] Chen, P.-S. et al. (2023). "A Heuristic for Medical Staff Scheduling with Multi-Skills and Vacation Control." Int. J. Comp. Intelligence Systems, 16, 126. DOI
[R73] Dogan, E. et al. (2023). "A B&P Approach for the NRP with Multiple Units." arXiv:2311.05438. arXiv
12. Финляндия и Скандинавия
[R74] Garde, A.H. et al. (2019). "Working Hour Characteristics Among Nurses in Three Nordic Countries." BMC Nursing, 18, 12. DOI
Сравнение Дания/Финляндия/Норвегия (n=83,473). Ночные смены длиннее в Финляндии (10–11ч).
[R75] Leineweber, C. et al. (2014). "Organization of Nursing Care in Three Nordic Countries." BMC Nursing, 13, 27. DOI
[R102] Carter, M.W. & Lapierre, S.D. (2001). "Scheduling Emergency Room Physicians." Health Care Mgmt Sci, 4(4), 347–360. DOI
Основополагающая работа по расписанию ER.
[R103] Franz, L.S. & Miller, J.L. (1993). "Scheduling Medical Residents to Rotations." Operations Research, 41(2), 269–279.
[R104] Fuegener, A. et al. (2017). "Online Rescheduling of Physicians in Hospitals." Flexible Services and Manufacturing J., 29, 375–399. DOI
[R105] Fuegener, A. & Brunner, J.O. (2021). "Physician Scheduling During a Pandemic." CPAIOR, Springer LNCS, 29–44. DOI
[R106] Lin, C.-C. et al. (2015). "Nurse Scheduling with Joint Normalized Preference Satisfaction Using GA." Int. J. Distributed Sensor Networks, 11(7), 595419. DOI
[R107] Fikar, C. & Hirsch, P. (2017). "Home Health Care Routing and Scheduling: A Review." Computers & OR, 77, 86–95. DOI
[R108] Asfaw, A. et al. (2021). "Fatigue, Personnel Scheduling and Operations: Review." EJOR, 295(3), 807–822. DOI
[R109] Youn, S. et al. (2022). "Planning and Scheduling in Healthcare for Better Care Coordination." POM, 31(12), 4407–4423. DOI
[R110] Brenndoerfer, M. (2024). "CP-SAT Rostering: Complete Guide to Constraint Programming for Workforce Scheduling." Blog
Задача: не составлять расписание с нуля, а спроектировать сам паттерн ротации (master template) алгоритмически — с заложенной гибкостью, устойчивостью к отпускам и учётом предпочтений. Потом использовать этот паттерн как эталон для составления конкретных расписаний.
Три фазы:
Дизайн паттерна — оптимизация самого шаблона
Выбор — сравнение вариантов, утверждение
Составление расписания — Column Generation с паттерном как эталоном
1. Генерация паттернов как задача оптимизации
Musliu, Gärtner, Slany (TU Wien, 2002–2020)
Главная группа по автоматической генерации ротационных паттернов.
Musliu, N., Gärtner, J., Slany, W. (2002). "Efficient generation of rotating workforce schedules." Discrete Applied Mathematics, 118(1-2), 85-98.
DOI: 10.1016/S0166-218X(01)00258-X
Основополагающая работа. Алгоритм строит ротационный паттерн за 4 шага: (1) выбрать длину рабочих блоков, (2) расставить выходные с оптимальными свойствами, (3) перебрать допустимые последовательности смен, (4) назначить смены на блоки для покрытия. Паттерн — прямой выход алгоритма.
Musliu, N. (2006). "Heuristic methods for automatic rotating workforce scheduling." Int. J. Comp. Intelligence Research, 2(4), 309-326.
PDF
Tabu search + min-conflicts для автоматической генерации ротаций. Гибрид методов эффективнее каждого по отдельности. Встроен в коммерческую систему Ximes.
Kletzander, L., Musliu, N. (2019). "Exact methods for extended rotating workforce scheduling problems." Proc. ICAPS, 29, 519-527.
DOI: 10.1609/icaps.v29i1.3518
Best Paper Award ICAPS 2019. Находит оптимальный паттерн точно (не приближённо) для реальных инстансов с практическими расширениями.
Kletzander, L., Musliu, N. (2020). "A decomposition heuristic for rotational workforce scheduling." J. Scheduling, 23(5), 529-553.
DOI: 10.1007/s10951-020-00659-2
Декомпозиция внутри дизайна паттерна: фиксируется блочная структура → решается назначение смен. Двухфазная оптимизация самого паттерна.
Gärtner, J., Musliu, N., Slany, W. (2001). "Rota: A research project on algorithms for workforce scheduling and shift design optimization." AI Communications, 14(2), 83-92.
Обзор проекта Rota: shift design (какие смены существуют) и rotation design (как они повторяются) как связанные задачи оптимизации.
Column Generation: колонки = паттерны
Legrain, A., Omer, J., Rosat, S. (2020). "A rotation-based branch-and-price approach for the nurse scheduling problem." Math. Programming Computation, 12, 417-450.
DOI: 10.1007/s12532-019-00172-4
Каждая колонка = ротация (блок последовательных рабочих дней). Pricing subproblem генерирует новые ротации динамически. 120 медсестёр, 4 смены, 8 недель. Open-source реализация.
Bard, J.F., Purnomo, H.W. (2005). "Preference scheduling for nurses using column generation." EJOR, 164(2), 510-534.
DOI: 10.1016/j.ejor.2003.06.046
Column generation где колонки = индивидуальные schedule-паттерны. Subproblem генерирует новые паттерны с учётом предпочтений.
Bard, J.F., Purnomo, H.W. (2007). "Cyclic preference scheduling of nurses using a Lagrangian-based heuristic." J. Scheduling, 10, 5-23.
DOI: 10.1007/s10951-006-0323-7
Генерация циклических профилей (repeating patterns) через IP + Lagrangian relaxation. До 100 медсестёр, 20 ротационных профилей. Предпочтения встроены в паттерн.
Maenhout, B., Vanhoucke, M. (2010). "Branching strategies in a branch-and-price approach for a multiple objective nurse scheduling problem." J. Scheduling, 13, 77-93.
DOI: 10.1007/s10951-009-0108-x
Branch-and-price с branch-on-pattern стратегиями. Многокритериальная оптимизация паттернов.
Physician Scheduling — генерация паттернов для врачей
Brunner, J.O., Bard, J.F., Kolisch, R. (2009). "Flexible shift scheduling of physicians." Health Care Mgmt Sci, 12(3), 285-305.
DOI: 10.1007/s10729-008-9095-2
MIP с implicit shift generation через column generation. Новый подход: множественная генерация паттернов из одного решения для ускорения.
Brunner, J.O., Edenharter, G.M. (2011). "Long term staff scheduling of physicians with different experience levels." Health Care Mgmt Sci, 14(2), 189-202.
DOI: 10.1007/s10729-011-9155-x
Стратегическое долгосрочное планирование. Dantzig-Wolfe декомпозиция с генерацией паттернов для врачей разного уровня.
2. Гибкость в паттернах
Doi, T., Nishi, T., Voß, S. (2016). "Flexible cyclic rostering in the service industry." IIE Transactions, 48(12), 1139-1155.
DOI: 10.1080/0740817X.2016.1200202
Flexible cyclic rostering — паттерн спроектирован, но допускает ограниченные еженедельные отклонения. Стохастическая модель: паттерн оптимизируется под неопределённость спроса. Результат: −10% непокрытия vs жёсткий паттерн.
Maenhout, B., Vanhoucke, M. (2009). "The impact of incorporating nurse-specific characteristics in a cyclical scheduling approach." JORS, 60(12), 1683-1698.
DOI: 10.1057/jors.2008.131
Сравнение: (1) один паттерн для всех, (2) персональные циклические паттерны, (3) полностью ациклическое расписание. Персональные паттерны — лучший баланс предсказуемости и качества.
3. Устойчивость к отпускам (Robust Pattern Design)
Smet, P., Wauters, T., Mihaylov, M., Vanden Berghe, G. (2015). "The impact of reserve duties on the robustness of a personnel shift roster." Computers & OR, 61, 153-169.
DOI: 10.1016/j.cor.2015.03.005
Встраивают резервные смены прямо в паттерн. Расположение резервов — переменная оптимизации. Паттерн заранее устойчив к отсутствиям.
Wickert, T.I., Smet, P., Vanden Berghe, G. (2021). "Quantifying and enforcing robustness in staff rostering." J. Scheduling, 24(3), 325-345.
DOI: 10.1007/s10951-021-00686-7
Метрики робастности паттерна без симуляции. Можно оценить устойчивость паттерна к дырам ещё до составления расписания.
Doneda, M., Smet, P., Carello, G. et al. (2025). "Robust personnel rostering: How accurate should absenteeism predictions be?" J. Scheduling.
DOI: 10.1007/s10951-025-00858-9
Predict-then-optimize: ML предсказывает отсутствия → паттерн проектируется с учётом прогноза. Чем точнее прогноз отпусков, тем лучше паттерн.
4. Основополагающие работы
Balakrishnan, N., Wong, R.T. (1990). "A network model for the rotating workforce scheduling problem." Networks, 20(1), 25-42.
DOI: 10.1002/net.3230200103
Дизайн паттерна как shortest path в сетевой модели. Все ограничения = структура графа. Оптимальный паттерн = кратчайший путь.
Аргументирует что хороший паттерн — и математика, и неявные знания (эргономика, хронобиология). IP-модели слишком жёсткие, нужен гибридный подход.
Alfares, H.K. (2004). "Survey, categorization, and comparison of recent tour scheduling literature." Annals of OR, 127, 145-175.
DOI: 10.1023/B:ANOR.0000019088.98647.e2
Обзор методов дизайна циклических графиков (tour scheduling). 10 категорий подходов.
Erhard, M., Schoenfelder, J., Fugener, A., Brunner, J.O. (2018). "State of the art in physician scheduling." EJOR, 265(1), 1-18.
DOI: 10.1016/j.ejor.2017.06.037
Определяющий обзор PSP: cyclic vs acyclic, template-based, two-phase decompositions.
5. Двухфазные подходы: Дизайн + Инстанциация
Valouxis, C., Gogos, C. et al. (2012). "A systematic two phase approach for the nurse rostering problem." EJOR, 219(2), 425-433.
DOI: 10.1016/j.ejor.2011.12.042
Фаза 1: назначить day-on/day-off паттерны (шаблон). Фаза 2: назначить конкретные смены внутри шаблона. Существенно уменьшает размер задачи.
Сводная таблица
Что
Кто
Как
Генерация ротационного паттерна
Musliu et al. (2002–2020)
Constraint-based + tabu search, точные методы
Паттерны через column generation
Legrain (2020), Bard (2005, 2007)
Колонки = паттерны, pricing = генерация
Паттерны для врачей
Brunner (2009, 2011)
MIP + column generation
Гибкие паттерны
Doi, Nishi, Voß (2016)
Стохастическая модель, допуск отклонений
Персональные vs общие паттерны
Maenhout & Vanhoucke (2009)
Сравнение подходов
Устойчивость к отпускам
Smet et al. (2015), Wickert (2021)
Резервные смены в паттерне
Прогноз отсутствий → дизайн
Doneda et al. (2025)
ML + optimize
Паттерн как shortest path
Balakrishnan & Wong (1990)
Сетевая модель
Дизайн + инстанциация (2 фазы)
Valouxis et al. (2012)
IP фаза 1 + IP фаза 2
Вывод
Генерация паттернов — зрелая область. Точные методы существуют (Musliu 2019). Гибкость в паттернах (Doi 2016), устойчивость к отпускам (Smet 2015, Doneda 2025), персонализация (Maenhout 2009) — всё есть в литературе. Наша задача: скомбинировать — взять паттерн Сергея как стартовую точку, оптимизировать его гибкость и устойчивость, потом использовать Column Generation для составления конкретных расписаний.
Сергей, мы расшифровали оба паттерна с картинок. Проверь, пожалуйста, правильно ли мы всё поняли.
Общий принцип (как мы его поняли)
Есть два паттерна: один для специалистов (EL/EL+), другой для специализирующихся (EVAL/EVAL+)
Каждый паттерн — набор «недель-позиций» (16 для EL, 19 для EVAL)
Каждая позиция — готовое недельное расписание: какой день, какая смена, какое место
Врачу присваивается буква (A–P) или цифра (1–19), и он стартует с этой позиции
Каждую неделю врач сдвигается на следующую позицию: A→B→C→...→P→A
За полный цикл (16 или 19 недель) каждый врач проходит все позиции
Среднее за цикл ≈ 38ч/нед — в норме SOTE
Вопрос: это верно? Или сдвиг идёт не каждую неделю, а как-то иначе?
Паттерн 1: Специалисты (EL/EL+) — 16 позиций
Позиция A — «Неделя ответственного» (40ч)
Пн–Пт: каждый день Aamu VV (утренняя смена ответственного по смене, 8-16).
Сб–Вс: выходные.
→ Полная рабочая неделя в одной роли. Самая «стабильная» неделя.
Пн: Yö VV (после ночи Вс? или начало недели с ночной).
Чт: Koulutus. Пт: Aamu hy4.
Сб: Vkl aamu hy3. Вс: Vkl Aamu osasto.
→ Тяжёлая: ночная в начале + выходные.
Паттерн специалистов: 16 позиций-недель, каждая позиция = конкретный набор {день → смена + место}
Паттерн EVAL: 19 позиций-недель, аналогично
Каждый паттерн спроектирован вручную так, что:
Смены идут цепочками (утро→вечер→ночь→отдых)
Локации ротируются (не одно место всю неделю)
Выходные парные (Сб=Вс)
Среднее за цикл ≈ 38ч/нед
Покрытие всех мест и смен обеспечено
Сейчас врачи «запускаются» в паттерн со смещением и вручную проходят все позиции. Это работает, но обработка отпусков и подмен делается руками в Excel.
Что не работает
Существующий солвер (Саша) пытается генерировать расписание с нуля из правил и constraints. Результат плохой:
Нет цепочек
Нет парных выходных
Хаотичное распределение
Половина врачей с недобором часов
Солвер не знает про паттерны. Он стартует с рандома и пытается удовлетворить правила — но пространство решений слишком большое, и он ловит локальный оптимум.
Что нужно
Алгоритм, который:
Берёт готовый паттерн (16 или 19 позиций-недель)
Назначает каждому врачу offset (позицию входа в паттерн)
Раскатывает на календарь (квартал = 13 недель)
Вырезает отпуска → список дыр
Заполняет дыры подменами, сохраняя:
цепочки (не ломать утро→вечер→ночь)
покрытие всех мест
часовые нормы
парные выходные
Отдаёт результат в существующую систему как warm-start для солвера — или как финальное расписание
Почему это должно сработать
Паттерн уже содержит в себе решение 80% задачи — цепочки, diversity, справедливость, покрытие. Остаётся только обработать 20% исключений (отпуска, частичная занятость, индивидуальные предпочтения). Это радикально меньшее пространство поиска, чем генерация с нуля.
Одной фразой
Не генерировать расписание из правил — а взять готовый работающий паттерн и адаптировать его под реальность.
Циклическое проектирование расписаний означает, что сначала строится повторяющийся рабочий паттерн, и лишь затем он накладывается на реальные календарные даты. Вместо того чтобы каждый месяц составлять расписание заново, планировщик создаёт цикл — например, утро, утро, вечер, вечер, ночь, ночь, выходной, выходной — и затем воспроизводит его для всех команд или сотрудников [Mai73, Fer11]. Главное преимущество — стабильность. Персонал может видеть свой ритм далеко вперёд, руководителям проще проверять соответствие правилам, а расписание становится легче объяснять и отстаивать.
В здравоохранении эта идея особенно полезна, когда структура спроса достаточно регулярна и когда нормы отдыха имеют принципиальное значение. Хороший цикл может напрямую встраивать в паттерн многие из сложных ограничений — ограничения на количество подряд идущих ночных смен, время восстановления после ночей, справедливое распределение выходных и нежелательных дежурств [Mil98, Bar07, Pur07]. Получив рабочий цикл, планировщик может применять его на долгосрочных горизонтах вместо того, чтобы каждый раз выстраивать расписание с нуля.
Как это обычно работает
Типичный процесс циклического составления расписания включает четыре шага.
Выбор повторяющегося паттерна смен.
Паттерн задаёт ритм работы и отдыха. В медицинских работах это, как правило, чередование утренних, вечерних, ночных смен и выходных дней [Mai73, Mil98].
Проверка качества паттерна.
Цикл проверяется на соответствие нормам укомплектованности, правилам отдыха, целям справедливости и качеству последовательности смен. Важно не только обеспечить покрытие спроса, но и исключить вредные или непопулярные сочетания смен [Bar07, Pur07].
Назначение цикла людям или командам.
Разные команды нередко запускаются со сдвигом относительно одного и того же цикла. Таким образом, одна команда может быть на утренних сменах, пока другая работает ночью, и вся система в совокупности обеспечивает необходимое ежедневное покрытие [Mai73, Fer11].
Развёртывание цикла в реальный календарь.
После того как повторяющаяся основа зафиксирована, она накладывается на недели, месяцы или полный год. Именно на этом этапе начинают играть роль праздники, заявки на отпуск и локальные корректировки [Fer11].
Почему циклические расписания нравятся
Основные преимущества носят практический характер.
Предсказуемость для персонала
Упрощённая проверка соответствия юридическим и договорным нормам
Более стабильные ритмы сна и восстановления при грамотно спроектированном цикле
Снижение трудозатрат на планирование в долгосрочной перспективе
Чёткая база, от которой можно отталкиваться при последующих корректировках [Fer11, Kly21]
Для отделений экстренной помощи и стационарных отделений циклическое проектирование также помогает прозрачно распределять выходные, ночные смены и прочие тяжёлые дежурства. Это важно как для справедливости, так и для того, чтобы персонал принял итоговое расписание [Fer11, Sto12].
Основные проектные цели в литературе
Литература по циклическому составлению расписаний, как правило, стремится сбалансировать несколько повторяющихся целей.
Цель
Что это означает на практике
Примеры ссылок
Покрытие
Достаточное количество персонала на каждом типе смены
[Mai73, Mil98]
Отдых и безопасность
Отсутствие вредных последовательностей и достаточное время восстановления
[Mil98, Bec18]
Справедливость
Разумное распределение ночей, выходных и нежелательных дежурств
[Bar07, Pur07, Sto12]
Стабильность
Повторяющиеся паттерны, которые персонал может освоить и учитывать в личном планировании
[Fer11, Kly21]
Учёт предпочтений
Частичный учёт пожеланий сотрудников
[Bar07, Pur07]
Важные разновидности
Строго циклические расписания
Один и тот же паттерн повторяется с минимальными изменениями. Это наиболее чистая форма циклического планирования, наиболее удобная для аудита. Ранние работы по составлению расписаний медицинских сестёр наиболее близки к этому стилю [Mai73, Ros87].
Полуциклические расписания
Есть повторяющийся каркас, однако допускается некоторая локальная гибкость. На практике это ближе к реальной больничной среде: такой подход сохраняет преимущества стабильного ритма, не загоняя весь год в жёсткий шаблон [Kly21].
Циклические расписания с учётом предпочтений
Цикл проектируется не только для покрытия спроса и соответствия нормам, но и для повышения удовлетворённости персонала. Это направление стремится включать предпочтительные последовательности и минимизировать нежелательные, сохраняя при этом циклическую структуру [Bar07, Pur07].
Вклад классических работ
Статья
Ключевая идея
Почему она актуальна до сих пор
[Mai73]
Построить цикличное расписание медсестёр, а затем распределить персонал по реальным потребностям
Ранее доказательство того, что циклическое планирование можно отделить от последующей настройки
[Mil98]
Сетевые модели для циклических и нециклических 12-часовых расписаний медсестёр
Показывает, как циклическое проектирование можно решать как структурированную задачу оптимизации
[Bar07]
Циклическое расписание с учётом предпочтений и эвристической оптимизацией
Показывает, что циклические расписания могут включать предпочтения сотрудников
[Pur07]
Метод ветвей и цен для циклического расписания с предпочтениями
Строгий взгляд на точную оптимизацию циклических расписаний медсестёр
[Fer11]
Повторяемые годовые циклические расписания для врачей скорой помощи
Лучший прямой пример применения для врачей и отделений экстренной помощи в изученном наборе
[Kly21]
Полуциклическое составление расписаний с явными показателями стабильности и гибкости
Хороший мост между строгими циклами и реальной больничной гибкостью
Лучший пример для отделения экстренной помощи
Наиболее релевантной работой для контекста отделения экстренной помощи является статья Ferrand et al. [Fer11]. В ней строятся повторяемые расписания для врачей скорой помощи и обосновывается, что циклический подход делает расписание более предсказуемым и сбалансированным. Это важно, поскольку показывает: циклическое проектирование — не только устаревший метод составления расписаний медсестёр, оно применимо и в среде врачей с множеством ограничений и предпочтений [Fer11].
Не менее важно то, чего эта работа не делает. В ней говорится, что отпуска и праздничные заявки можно учитывать после построения циклического расписания, однако этот шаг не превращается в отдельный этап оптимизационного восстановления [Fer11]. Именно это является одной из главных причин, по которым более широкий проект по-прежнему выглядит новаторским.
Сильные стороны циклического проектирования расписаний
Циклическое проектирование расписаний наиболее эффективно при создании базового расписания.
Оно хорошо подходит для:
проектирования здорового и повторяемого рабочего ритма
соблюдения повторяющихся правил последовательности смен
управления планированием на длительных горизонтах
обеспечения предсказуемости для персонала
создания стабильного каркаса для дальнейшей работы с расписанием [Mai73, Fer11, Kly21]
Слабые стороны
Циклическое проектирование расписаний хуже справляется с ситуациями, когда реальная жизнь нарушает паттерн.
Типичные слабые места:
отпуска и ежегодные выходные
учебные дни
декретный или родительский отпуск
внезапные изменения спроса
распределение по конкретным подразделениям, кабинетам или рабочим местам после фиксации самой смены
Большинство работ по циклическому планированию останавливаются после построения базового паттерна или лишь вскользь упоминают последующие корректировки [Fer11]. Литература по перепланированию исследует восстановление расписаний гораздо детальнее, однако, как правило, отправной точкой служит обобщённое расписание, а не циклическое мастер-расписание [Wic19, Kly24]. Именно поэтому циклическое проектирование расписаний лучше всего рассматривать как один из слоёв более широкой архитектуры, а не как самостоятельное и исчерпывающее решение всей задачи больничного планирования.
Почему это важно для текущего проекта
Для финского отделения экстренной помощи циклическое проектирование расписаний имеет смысл в качестве фундаментального слоя. Оно обеспечивает стабильный мастер-паттерн, в который можно встроить нормы отдыха, ограничения на ночные смены и требования справедливости на повторяющихся периодах. После этого реальная задача сводится к тому, как наложить цикл на конкретные даты, учесть плановые отсутствия, устранить возникающие пробелы и лишь затем распределить людей по конкретным секциям отделения. Литература хорошо проработана на первом слое и значительно тоньше — в отношении полного конвейера, следующего за ним [Fer11, Kly24, Fug15].
Ключевые ссылки
[Mai73] Maier-Rothe, C., Wolfe, H.B. 1973. Cyclical scheduling and allocation of nursing staff. Socio-Economic Planning Sciences 7, 471–487.
[Mil98] Millar, H.H., Kiragu, M. 1998. Cyclic and non-cyclic scheduling of 12 h shift nurses by network programming. European Journal of Operational Research 104, 582–592.
[Bar07] Bard, J.F., Purnomo, H.W. 2007. Cyclic preference scheduling of nurses using a Lagrangian-based heuristic. Journal of Scheduling 10, 5–23.
[Pur07] Purnomo, H.W., Bard, J.F. 2007. Cyclic preference scheduling for nurses using branch and price.
[Fer11] Ferrand, Y.B., Magazine, M.J., Rao, U.S., Glass, T.F. 2011. Building Cyclic Schedules for Emergency Department Physicians. Interfaces 41, 521–533.
[Kly21] Klyve, K.K., et al. 2021. Semi-cyclic rostering of ranked surgeons: A real-life case with stability and flexibility measures. Operations Research for Health Care 28, 100286.
[Wic19] Wickert, T.I., Smet, P., Vanden Berghe, G. 2019. The nurse rerostering problem: Strategies for reconstructing disrupted schedules. Computers and Operations Research 104, 319–337.
[Fug15] Fügener, A., Brunner, J.O., Podtschaske, A. 2015. Duty and workstation rostering considering preferences and fairness: a case study at a department of anaesthesiology. International Journal of Production Research 53, 7465–7487.
Итог
Циклическое проектирование расписаний лучше всего понимать как способ создания стабильного повторяющегося каркаса рабочих графиков. Оно очень хорошо справляется с задачами упорядочивания, справедливости и предсказуемости. Как самостоятельный метод больничного планирования оно существенно менее полно, как только в картину входят отпуска, отсутствия и последующее распределение по подразделениям. Именно поэтому оно лучше всего работает как первый слой более широкого конвейера планирования, а не как весь конвейер целиком.