#python #python-3.x #optimization #scheduling #or-tools
Вопрос:
инструменты для создания расписаний моя модель заключается в следующем :
for l in lessons:
for r in rooms:
for t in timeslots:
tables[(l,r,t)] = model.NewBoolVar('table %s/%s/%s' % (l.subject,r, t))
у меня есть определенное ограничение в отношении пятницы, в которой должно быть 2 урока арабского, 2 урока французского и 1 урок математики, а в пятницу всего 5-6 занятий.
На изображениях ниже показан хороший результат для некоторых групп и как он должен быть (синий раздел-это просто пауза, а не сеанс). :
И это плохой результат для некоторых групп :
Поэтому мне нужно ограничение, гарантирующее, что результат будет таким же, как и первые два изображения, что означает, что, например, два урока Ar не должны находиться далеко друг от друга и должны быть последовательными, одно и то же для Fr без проблем, если МАТЕМАТИКА находится между одним из них.
Любая помощь ценится и заранее благодарна.
Комментарии:
1. что-то вроде
model.AddBoolOr([tables["Fr", r, t-1], tables["Fr", r, t 1]]).OnlyEnforceIf(tables["Fr", r, t])
?