У меня есть следующая проблема: я хотел бы запланировать некоторые встречи (задачи) с использованием библиотеки pyschedule и разрешить торможение между ними, когда в совокупности они занимают слишком много времени (более 4 временных интервалов).В то же время я хотел бы разрешить задачи, занимающие более 4 временных интервалов.Допустим, у меня есть 1 человек и 3 встречи:
person = scenario.Resource('person')
meeting1 = scenario.Task('meeting1', 1)
meeting2 = scenario.Task('meeting2', 2)
meeting3 = scenario.Task('meeting3', 5)
Тогда желаемое решение будет, например, [meeting1, meeting2, break, meeting3]
.Я пытался сделать ограничение:
MAX_CONSECUTIVE_SLOTS = 4
for slot in range(HORIZON):
scenario += person[slot:slot + MAX_CONSECUTIVE_SLOTS + 1] <= MAX_CONSECUTIVE_SLOTS
, но это работает только тогда, когда все собрания не длиннее MAX_CONSECUTIVE_SLOTS
.Я также попытался объединить это условие с количеством задач на интервал времени:
meeting1.count = 1
meeting2.count = 1
meeting3.count = 1
for slot in range(HORIZON):
scenario += (person[slot:slot + MAX_CONSECUTIVE_SLOTS + 1] <= MAX_CONSECUTIVE_SLOTS) or \
(person['count'][slot:slot + MAX_CONSECUTIVE_SLOTS + 1] <= 1)
Но person['count'][n:m]
, по-видимому, означает количество задач, завершенных в данном интервале времени, когда мне нужно количество задачперекрывая этот фрагмент.
Я использую mip.solve
решатель.Любая помощь будет высоко ценится.