Есть ли способ ограничить количество присвоений для определенного значения переменной?Предельное значение присваивания - Choco
Я пишу расписание с использованием Choco [4.0.1]
с курсами, учителями и временными слотами. Тот же учитель может преподавать много курсов, и мне нужно определить количество курсов, которые он может преподавать. Я думал о подсчете количества временных интервалов, например, Учитель B мог работать 12 hours (12 timeslots)
, поэтому я мог бы разместить ограничение, например arithm()
, чтобы это обеспечить. Есть идеи?
[Обновлено]
Вот код:
IntVar [] teachers;
IntVar [][] teacherTimeslots;
IntVar [] courses;
Для каждого курса есть учитель и N
временных интервалов, поэтому Учитель А может научить {1,2,3,4} и учитель B {3,4,5}, и каждый курс имеет 4 часа в неделю. Теперь представьте, что A может работать 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;
Я думал о том, чтобы все временных интервалах для учителя, но когда я строй своей модели нет временного интервала выбран, поэтому я получить все возможности.
Вы можете поделиться с нами каким-либо кодом? Если нет, тогда ваш вопрос может быть слишком широким, и сначала вы должны что-то предпринять. –
Просто назначьте курсы каждому временному интервалу, и если что-то было назначено ранее, действуйте соответствующим образом, то есть разрешите только один курс на каждый временной интервал и учитель, и вам должно быть хорошо идти. – Thomas
@TimBiegeleisen Я поставил код на свой вопрос, не могли бы вы взглянуть? –