2014-11-22 57 views
0

我正在使用Optaplanner在土耳其阿塔圖爾克大學開發自動時間表軟件。 Optalanner滿足了所有要求。但是另外還有一些要求。其中之一: - >當我想在時間表上安排課程時,我如何按順序安排它。而且不應該是三個連續時間的講座。 對於實例3小時考慮數學課:Opta Planner我如何安排連續兩個課程的課程演講

     IN MONDAY 
     ----------------------------------------------- 

     0.P  Math    Math   Math 

     1.P  Math    Math   Another 

     2.P  Another   Math   Another 

     3.P  Another   Another  Math 

     4.P  Math    Another  Another 
     (or another day) 
     5.P  Another   Another  Another 

     6.P  Another   Another  Math 
       -----    -----   ----- 
      CORRECT   WRONG   WRONG 

我想我的時間表看起來像第一列,我需要防止其他案件。

回答

0

這樣的事情應該工作:

rule "twoInARowIsgood" 
when 
    CourseSequentialRequirement($c : course) 
    Lecture (course == $c, $firstP : period) 
    Lecture (course == $c, period.isImmediatlyAfter($firstP)) 
then 
    scoreHolder.add...(kcontext, 100); // Positive constraint 
end 

rule "threeInARowIsBad" 
when 
    CourseSequentialRequirement($c : course) 
    Lecture (course == $c, $firstP : period) 
    Lecture (course == $c, period.isImmediatlyAfter($firstP), $secondP : period) 
    Lecture (course == $c, period.isImmediatlyAfter($secondP)) 
then 
    scoreHolder.add...(kcontext, -500); // Negative constraint and higher than twice the positive one 
end 
+0

感謝傑弗裏。 – 2014-12-04 11:13:34