ご存じのように、多くのルール エンジンは、ルールを処理するときに Rete アルゴリズムを使用します。このアルゴリズムは、Rete ツリーと呼ばれるツリーを構築します。
ルール処理のパフォーマンスを向上させるための Rete ツリーの理想的なトポロジは何ですか? つまり、パフォーマンスを向上させるために、ルール セットがより適切に対応する必要があるツリー トポロジを知りたいのです。
ご存じのように、多くのルール エンジンは、ルールを処理するときに Rete アルゴリズムを使用します。このアルゴリズムは、Rete ツリーと呼ばれるツリーを構築します。
ルール処理のパフォーマンスを向上させるための Rete ツリーの理想的なトポロジは何ですか? つまり、パフォーマンスを向上させるために、ルール セットがより適切に対応する必要があるツリー トポロジを知りたいのです。
簡単に言えば、パフォーマンスは、ルールとオブジェクトの数、テストの数、ルール内でのテストの順序付け方法、およびルール間で共有されるテスト/条件の数によって影響を受けるということです。
最適なパフォーマンスを得るには、次のようにルールを書き直す必要があります。
条件の調整IBM ODM 資料を参照してください。
また、ルールによって評価する必要があるオブジェクトの数とテストの数を減らす必要があります。
Rete および IBM ODM に関する参考資料:
Rete ツリーの構造の例については、RetePlus ネットワーク構造のIBM ODM 資料を参照してください。
RetePlus は、多数のオブジェクトにわたる多数のルールの評価を最適化するように設計されています。RetePlus は、無関係なテストが評価されないようにテストをフィルタリングします。同様のテストを使用するルール間でテストを共有できるため、すべてのルールについて再評価する必要がありません。
最良の結果を得るには:
異なるオブジェクトに対する共通のテストが共有されます。
実行されるテストの数は最小限に抑えられます。
1 つの評価に含まれる変数の定義と条件が多すぎると、パフォーマンスが低下します。
テストで使用するメモリが少なくなります。
簡単に言えばRetePlus
、オーケストレーションでアルゴリズムを使用する場合は、Decision Trees
ビジネス ルールのみを使用してください。
このように使用すると、はるかに高速になります。Sequential
(この場合は for )と同様に、他のアルゴリズムと組み合わせて使用 することもできますがAction Rules
。
したがって、ソリューションはアクション ルールの一部 ( を使用Sequential
) とDecision Tables
(を使用) の一部である可能性がありますRetePlus
。
お役に立てれば。