ビジネスルールエンジンと制約プログラミング言語の関係


20

(おそらく古い)Droolsまたは他のルールエンジンのマニュアルを見ると、その付加価値の例の1つは、Miss Mannersパズル(Droolsのマニュアル)などのパズルを解くことです。現在、このようなパズルはPrologまたは最新のConstraint Programming言語を使用して自然に定式化および解決されており、なぜこの目的にDroolsを使用するのか疑問に思われます。この場合、PrologとCPLが提供する付加価値は、パズルを論理的な述語のセットとして自然に定式化し、ソリューションのスペースを自動的に検索できることです(この点でCPLの方が効率的です)。しかし、Droolsなどの製品の付加価値は何ですか(たとえば、Excelファイルを取得して、それを一連のルールに変換するという付加機能を意味します)。

より具体的には、Prologはバックトラック検索を実装し、CLPは制約伝播を使用したバックトラック検索を実装します。したがって、いわば、個々の変数の空間のデカルト積全体を検索する代わりに、この製品空間の大部分を取り除きます。これがそれらを効果的かつ有用にするものです。PrologとCLPの両方が文献で十分に議論されています。

一方、Reteアルゴリズムがいくつかのデータ構造の形式でルールセットをキャッシュすることは明らかであるため、(私の理解では)入力の一部が変更された場合に出力を評価する方が効果的です。このデータ構造を段階的に変更するために効果的に更新する手段を与えると、基本的な考え方を理解することは難しくなります(私にとっては)、さらにその有効性(何に比べて?残念ながら、この広いコンテキストでReteアルゴリズムを表示する適切な参照を見つけることは困難です。

Droolsのドキュメントは、残念ながらこの点に関してあまり有益ではありません。最も見つけられたのは、「Reteアルゴリズム、Leapsアルゴリズム、およびDrools 'Reteoo(およびLeaps)などの子孫は、ルールオブジェクトをドメインオブジェクトデータに一致させる非常に効率的な方法を提供します。これらは、 (ルールエンジンは過去の一致を記憶できるため)完全に変更することはできません。これらのアルゴリズムは戦闘で実証済みです。」非常に効率的-何と比較して?バトルで実証済み-現実世界のアプリケーションを指すことができますか?

このテーマにもう少し光を当てるか、有効な参考文献を提供していただければ幸いです。


1
この質問は少し広範であり、実際にはここに「属している」わけではありません...

3
まあ、cstheory.stackexchange.comにとっては「業界志向」すぎるのではないかと心配しています。ビジネスルールエンジンの基本的なポイントと、PrologやCLPを使用するよりもなぜそれを使用するのが本当に興味深いのでしょうか。より良い場所を投稿するための提案があれば、私はそれを聞いてうれしいです。

回答:


7

フォワードチェーンエンジン(Droolsなど)とバックワードチェーン(Prolog)を使用する多くの商用ビジネスルールシステムの議論は、多くの「ジョープログラマー」がIF / THEN / ELSEロジックの処理に慣れているということです。大衆向けのマーケティングがはるかに簡単です。技術的なメリットはそれとは関係ないと思います。

これはコミュニティWikiとして投稿しています。なぜなら、それは私の色分けされた意見であり、本当の答えではないからです。


4

Droolsは最近、drl言語にシームレスに後方チェーンを追加しました。これで、両方の単語の利点が得られます。

プロローグのすべての機能、たとえば「カット」はまだありません。しかし、それは統一と派生ツリーの結果であり、プロローグの人々が期待するように機能します。つまり、推移的閉鎖の完全なサポートです。また、表形式のサポート、切り取り、式の統一などの機能は引き続き成長します。

フォワード「リアクティブ」ルールまたはバックワード「クエリ」ルールを個別に使用することも、一緒に使用することもできます。ここで、リアクティブルールはクエリの結果と結合できます。

追加したことの1つは、クエリをリアクティブビューとして完全に具体化できることです。したがって、transititveクロージャクエリを呼び出すと、リアクティブな方法で開いたままになり、クエリを再ポーリングすることなく、地下のデータの変更に応答します。

「後方チェーン」が追加された時期については、New&Noteworthセクションをご覧ください:http : //blog.athico.com/2012/05/drools-540final-released.html

DroolsのようなHybrid Reasoning Systemを持っているのに、なぜあなたはあなたの質問がより良い言葉で表現されると思いますか、なぜあなたは他のものを使いたいと思いますか? http://blog.athico.com/2012/05/drools-54-artificial-intelligence.html


3

PrologはDroolsよりも強力であることに同意します。しかし、Droolsは他の一般的なエンタープライズアプリケーションとの優れたフロントエンドツールおよび統合により、Droolsはエンタープライズクライアントにとって魅力的だと思います。これらのルールはデータベースに永続化され、多くのDroolsエンジンがすぐにそれらを使用できると思います。

実行時にルールを変更することは、Droolsエンジンを使用するかなり動的な方法であり、サポートされています。Prologに同様のシステムあり得ると思いますが、これは知らないです。これらのルールまたは編集されたルールはどこに行きますか?プログラムのデータベースでアサートされましたか?再起動すると、これらのルールは失われます。それらを共有データベースに永続化し、必要に応じてプログラムにアサートしますか?Prologは使用可能かもしれませんが、Droolsはエンタープライズアプリケーションスタックに既に十分に統合されています。


「PrologはDroolsよりも強力であることに同意します。しかし、Droolsは他の一般的なエンタープライズアプリケーションとの素晴らしいフロントエンドツールおよび統合により、Droolsはエンタープライズクライアントにアピールすると思います」

上記の私のコメントによると、Droolsは現在、Prologと同じ方法で目標ベースの派生ツリーを実装しています。さらに、Droolsは、他のほとんどのPrologシステムでは不可能な、そのdeivationツリーで何らかの処理を実行できます。Droolsは、派生ツリーをビューに具体化し、基礎となるグループ用語の変更に応じて事後更新を受け取ることができます。


2
@MarkProctor、一般に、修正とは反対の異議があることは、一般に、他の誰かの答えの内容を編集するのではなく、コメントと(潜在的に)投票によって行われるべきです。
チャールズダフィー14年

2

Droolsは、CLIPSに基づいて開始されました。CLIPSは古い「本番システム」であり、すべての本番システムと同様にフォワードチェーンシステムです。Reteの多くの研究は、アルゴリズムが知的財産である企業で働くようになったため、「暗くなって」しまいました。Reteバージョン3は、FICOスコアを作成する人々が所有しているため、「戦闘実証済み」です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.