Есть ли способ ограничить количество присваиваний для определенного значения переменной?
Я пишу задачу расписания, используя Choco [4.0.1]
с курсами, учителями и временными интервалами. Один и тот же учитель может преподавать множество курсов, и мне нужно определить количество курсов, которые он/она может преподавать. Я думал о том, чтобы подсчитать количество временных интервалов, например, учитель Б может работать 12 hours (12 timeslots)
, поэтому я мог опубликовать ограничение, например arithm()
, чтобы гарантировать это. Любые идеи?
[Обновлено]
Вот код:
IntVar [] teachers;
IntVar [][] teacherTimeslots;
IntVar [] courses;
Для каждого курса есть учитель и N
временных интервалов, поэтому учитель А может преподавать {1,2,3,4}, а учитель Б {3,4,5}, и каждый курс имеет 4 часа в неделю. Теперь представьте, что А может работать 12 часов. Я хотел бы ограничить A преподаванием только 12 часов (3 курса), в то время как B будет преподавать оставшиеся курсы;
Я не могу сказать, сколько курсов у преподавателя, но сколько он может преподавать, поэтому я использую
Tuples tuples = new Tuples(true);
tuples.add(1, 1);
...
tuples.add(2, 5);
model.table(teacher, course, tuples).post();
ограничение, чтобы убедиться, что он/она может преподавать определенные курсы.
teacherTimeslots
заполнен всеми возможными временными интервалами, и я использую model.allDifferent(teacherTimeslots[teacher]).post()
, чтобы каждый временной интервал учителя был уникальным.
Мои курсы фиксированы так
course[0] = 1;
...
course[4] = 5;
Я думал о том, чтобы получить все временные интервалы для учителя, но когда я строю свою модель, временной интервал не выбран, поэтому я получаю все возможности.