有没有办法限制变量特定值的赋值次数?
我正在使用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;
我想过为老师获取所有时间段,但是当我构建模型时,没有选择时间段,所以我得到了所有的可能性。