簡體   English   中英

Drools Planner考試示例只有一個主題

[英]Drools Planner examination example has only one Topic

我測試了Drools Planner的考試例子。 過了一會兒,我想解決一個未解決的問題。 我啟動了應用程序,選擇了一個xml文件並點擊了解決按鈕。 在我的XML文件中有5個不同主題的考試(t1,t2,t3,t4,t5)。

Drools產生了一個解決方案。 在這個解決方案中有5個考試但是所有考試都有相同類型的主題(t1)。 我沒有找到為什么drools給我5個相同主題的考試的失敗。 在開始時(解決之前),調試器告訴我所有考試都有不同的主題。

通常,不應更改考試主題。

在我的ExaminationSolutionInitializer.java中 ,methhod“ changeWorkingSolution ”返回錯誤的解決方案。 scoreDirector.getWorkingSolution()僅使用一個主題生成考試。

有人能幫助我嗎?

您的XML輸入文件中可能存在錯誤。 你可以在這里或gist.github.com上復制粘貼並鏈接嗎?

在Drools Planner的考試示例中,每個考試實例都有1個字段主題,並且Planner永遠不會更改它。 這是由Planner更改的考試現場房間和期間。

public class Exam ... {

    private Topic topic;
    ...

    // Planning variables: changes during planning, between score calculations.
    private Period period;
    private Room room;
    ...
}

此外,Exam to Topic關系是1對1的關系。 它們可以被設計為1類,但沒有。 Topic類包含在計划期間不會更改的所有考試信息,Exam類將每個主題鏈接到它的Room和Period。

檢查域圖

至於ExaminationSolutionInitializer.java:這是在Planner中添加構造啟發式之前編寫的。 現在,通常最好只使用第一次擬合或第一次擬合減少。 在測試示例中它仍然存在的唯一原因是因為它具有特定於域的代碼來處理Exam.isCoincidenceLeader()情況,因為需要在同一時間段安排多個考試,因此需要將它們一起移動。

問題是我在exam.java中將主題聲明為@PlanningVariable

也許問題是我的新計划變量“日”。 我不想在這個時期有一個日期指數。 所以我復制了期間課程並將它們變成了日課程。 在我的ExaminationSolutionInitializer中,我有inititalizeExamList。 在循環每個句點和每個ExamToHandle之前,我循環了幾天。 但我認為問題可能是scheduleLeader()。 在這個方法中,我找出了bestRoom和bestPeriod,但沒有bestDay。 你怎么看?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM