2015-09-22 73 views
0

是否可以定義特定日期特定時間(例如5和6)不是課程?在opta課程課程策劃師。課程課程特定日期特定課時無課程

試過以下方法,不起作用。

rule "saturdayHalfDay" 
    when 
     Lecture(period!=null, $day:period.getDay(), 
     $day!=null,$time:period.getTimeslot(), 
     $time!=null, 
     $day.getDayIndex()==5, 
     ($time.getTimeslotIndex()==5 || $time.getTimeslotIndex()==4) 
     ) 

    then 
    System.out.println(" $day " + $day + " $time " + $time); 
     scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 

//假設$ day.getDayIndex()== 5(5日)

回答

0

如果從課程教學計劃的例子開始,你會看到一些數據集不具備時間段爲12:00至13:00,因爲午餐時間沒有課程。所以這只是一個不爲這些小時添加Timeslot的問題。

如果某些課程不能在某個時間段內安排,它會變得更有趣。只需創建一個TimeslotCoursePenatly對象(請參閱其他示例中的Penatly類),以便能夠將不需要的組合放入數據集中。然後添加一個評分規則,檢查是否降低每個Penalty違規的硬分數。

+0

「Penatly」類示例,無法在opta規劃器中找到此類。你能否提供更詳細的信息? – user1424130

+0

轉到[https://github.com/droolsjbpm/optaplanner](https://github.com/droolsjbpm/optaplanner),按下按鈕「t」並輸入「罰款」。 –

+0

我嘗試了以下方法,不起作用。有什麼建議麼? 規則 「saturdayHalfDay」 時 講座(週期= NULL,$日:period.getDay(), \t \t $天= NULL,$時間:period.getTimeslot(), \t \t $時間=空! , \t \t $ day.getDayIndex()== 5, \t \t($ time.getTimeslotIndex()== 5 || $ time.getTimeslotIndex()== 4) \t \t) 然後 \t系統。 out.println(「$ day」+ $ day +「$ time」+ $ time); scoreHolder.addHardConstraintMatch(kcontext,-1); end //假設$ day.getDayIndex()== 5(5是星期六) – user1424130