了解Drools规划器示例:问题状态在哪里初始化?

时间:2012-01-19 09:42:25

标签: drools drools-planner

我正在尝试了解Drools的 N Queens Cloud Balancer 示例。我深入研究了手册的第3章和第4章以及两个例子的来源。

我(错)了解

  1. 问题必须从未分配或未最佳状态开始
  2. 那么,问题事实和计划实体,即POJO,必须实例化
  3. 解决方案类,例如CloudBalance或NQueens必须了解问题事实和计划实体

  4. 问题1 :在示例中,规划实体和问题事实类的对象在哪里已初始化

    例如,当我加载云平衡时,我看到了:

    2012 .. INFO  Loaded: data/cloudbalancing/unsolved/cb-0002comp-0006proc.xml
    

    这意味着序列化格式转换为真实对象并送入解决方案吗?


    问题2 :规划实体在哪里处理?

    该评论的含义是什么?首先如何处理?

    public Collection<? extends Object> getProblemFacts() {
        List<Object> facts = new ArrayList<Object>();
        facts.addAll(columnList);
        facts.addAll(rowList);
        // Do not add the planning entity's (queenList) because that will be done automatically 
    

1 个答案:

答案 0 :(得分:1)

Q1:在NQueensGeneratorCurriculumCourseSolutionImporter,......中创建的计划实例,然后使用XStream序列化为XML文件。加载按钮只是从XML反序列化它们。如果要调试*SolutionImporter,请使用导入按钮(并非在所有示例中都可用)。

Q2:这意味着getProblemFacts()不应该执行facts.addAll(queenList)。 由于此注释,Planner会自动执行此操作:

@PlanningEntityCollectionProperty
public List<Queen> getQueenList() {
    return queenList;
}