有没有办法限制某个变量的特定值的赋值次数?限制赋值 - Choco
我正在写课程问题,使用Choco [4.0.1]
与课程,教师和时隙。同一位老师可以教许多课程,我需要确定他/她可以教授的课程数量。我正在考虑计算时间片的数量,比如老师B可以工作12 hours (12 timeslots)
,所以我可以发布一个约束如arithm()
来确保。有任何想法吗?
[更新]
下面是一些代码:
IntVar [] teachers;
IntVar [][] teacherTimeslots;
IntVar [] courses;
对于每个过程有一个教师和N
时隙,因此教师A可以教{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我已经在我的问题上放了一些代码,你可以看看吗? –