0

DroolsのNクイーンクラウドバランサーの例を理解しようとしています。マニュアルの第3章と第4章、および2つの例のソースを詳しく調べました。

私はそれを(誤)理解しています

  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

NQueensGeneratorQ1:、、 ...で作成され、CurriculumCourseSolutionImporterXStreamを使用してXMLファイルにシリアル化された計画インスタンス。ロードボタンは、XMLからそれらを逆シリアル化するだけです。をデバッグする場合は、インポートボタン(すべての例で使用できるわけではありません)を使用します*SolutionImporter

Q2:getProblemFacts()がfacts.addAll(queenList)を実行してはならないことを意味します。Plannerは、この注釈により自動的にそれを行います。

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