繁体   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