0

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

我(错误)理解

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

问题 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 
4

1 回答 1

1

Q1:计划实例在NQueensGenerator, CurriculumCourseSolutionImporter, ... 中创建,然后使用 XStream 序列化为 XML 文件。加载按钮只是将它们从 XML 反序列化。如果要调试*SolutionImporter.

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

@PlanningEntityCollectionProperty
public List<Queen> getQueenList() {
    return queenList;
}
于 2012-01-20T14:59:54.440 回答