Написание ограничения для задачи планирования для проведения последовательных уроков с одним и тем же типом

#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]) ?