Java Drools Planner考试示例只有一个主题

Java Drools Planner考试示例只有一个主题,java,drools,drools-planner,Java,Drools,Drools Planner,我测试了Drools Planner的考试示例。过了一会儿,我想解决一个尚未解决的问题。我启动了应用程序,选择了一个xml文件并点击了“解决”按钮。在我的XML文件中有5个考试,有5个不同的主题(t1、t2、t3、t4、t5) Drools生成了一个解决方案。在这个解决方案中有5个考试,但它们都有相同类型的主题(t1)。我没有发现为什么drools给了我5次相同主题的考试。在开始时(解决之前),调试器告诉我所有的考试都有不同的主题 通常情况下,考试的题目不应该改变 在我的检查中,Solution

我测试了Drools Planner的考试示例。过了一会儿,我想解决一个尚未解决的问题。我启动了应用程序,选择了一个xml文件并点击了“解决”按钮。在我的XML文件中有5个考试,有5个不同的主题(t1、t2、t3、t4、t5)

Drools生成了一个解决方案。在这个解决方案中有5个考试,但它们都有相同类型的主题(t1)。我没有发现为什么drools给了我5次相同主题的考试。在开始时(解决之前),调试器告诉我所有的考试都有不同的主题

通常情况下,考试的题目不应该改变

在我的检查中,SolutionInitializer.java方法“changeWorkingSolution”返回错误的解决方案。scoreDirector.getWorkingSolution()只生成了一个主题的考试


有人能帮我吗?

您的XML输入文件中可能有一个错误。您能将它复制粘贴到这里或gist.github.com上并链接吗

在Drools Planner的考试示例中,每个考试实例正好有一个字段主题,Planner从不更改它。计划者改变的是考试的场地和时间

public class Exam ... {

    private Topic topic;
    ...

    // Planning variables: changes during planning, between score calculations.
    private Period period;
    private Room room;
    ...
}
此外,考试与主题的关系是一对一的关系。它们本可以设计为一类,但没有。主题类保存所有在计划期间不会更改的考试信息,考试类链接其所在的每个主题和时间段


至于检查SolutionInitializer.java:它是在Planner中添加构造启发式之前编写的。现在,通常最好只使用first fit或first fit Desculation。它仍然存在于检查示例中的唯一原因是,它有特定于域的代码来处理
Exam.isCoincidenceLeader()
多个考试需要在同一时间安排,因此需要一起进行的情况。

问题是我在考试中将主题声明为@PlanningVariable。java

可能问题是我的新计划变量“day”。我不想在这段时间里有一个日指数。因此,我复制了周期课程,并将其改为日间课程。在我的考试解决方案初始化程序中,我有inititalizeExamList。在循环每个周期和每个考试处理之前,我循环了几天。 但我认为问题可能是scheduleLeader()。在这个方法中,我算出了最佳房间和最佳时段,但没有最佳日期。你觉得怎么样?

有趣:)我想你也声明了一个有效的@ValueRange。我想知道规划师是否有办法发现这样的问题?对于许多常见的错误,它会自动快速地失败,但对于这一个,我认为它不能?不要问我为什么这样做;-)但是像你提到的这样的检测会很有帮助。也许控制台上包含所有规划变量的输出是个好主意。用户应该看到哪个实体是规划实体,它有哪些静态变量和规划变量。:)