Минимальная медсестер в смену - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь поиграть с первым примером этой ссылки: https://developers.google.com/optimization/scheduling/employee_scheduling

Я хотел бы иметь по крайней мере две медсестры посменно. Поэтому я изменил строку:

model.Add(sum(shifts[(n, d, s)] for n in all_nurses) == 1)

По:

model.Add(sum(shifts[(n, d, s)] for n in all_nurses) == 2)

И я увеличил количество медсестер до 8.

К сожалению, программа не находит никаких решений. Но должно быть, для этого достаточно медсестер. У тебя есть идея? Спасибо!

PS: если я установлю количество дней на 1, оно будет работать, но если оно превосходит 1, оно ничего не найдет.

1 Ответ

2 голосов
/ 02 апреля 2019

На самом деле этот пример проблематичен и нуждается в обновлении. Проблема заключается в том, что предполагается, что число возможных смен равно числу медсестер, и, следовательно, каждая смена выполняется ровно одной медсестрой.

Для более интересной отправной точки, я предлагаю вам взглянуть на:

https://github.com/google/or-tools/blob/stable/examples/python/shift_scheduling_sat.py

Этот пример является более сложным и включает в себя конкретные ограничения, которые лучше подходят для планирования смены.

...