有沒有辦法限制某個變量的特定值的賦值次數?限制賦值 - 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我已經在我的問題上放了一些代碼,你可以看看嗎? –