Понимание примеров планировщика Drools: где инициализируется состояние p‌r‌o‌b‌l‌e‌m? - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь понять примеры N Queens и Cloud Balancer Drools. Я углубился в главы 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 

1 Ответ

1 голос
/ 20 января 2012

Q1: экземпляры планирования, созданные в NQueensGenerator, CurriculumCourseSolutionImporter, ... и затем сериализованные в файл XML с помощью XStream.Кнопка загрузки просто десериализует их из XML.Используйте кнопку импорта (доступно не во всех примерах), если вы хотите отладить *SolutionImporter.

Q2: это означает, что getProblemFacts () не должен выполнять facts.addAll (queenList).Планировщик делает это автоматически благодаря этой аннотации:

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