マッチを「正確ではありません」評価システムを支配して(EJ:X <3000)
-
16-09-2019 - |
質問
私は、データベースの上に実際のデータベースと、特定のルールを処理するために必要なルール評価システムを設計しています。我々は現在、いくつかの欠点を持つ部分的に正しく動作するRETEするのバージョンを変更しhref="https://stackoverflow.com/questions/33076/pattern-recognition-algorithms">
の問題は、ルールが完全一致に限定するものではないが、それらはまた、ファジー計算及び他の種類(未満のように)不等式をサポートする必要があります。 例としては、あなたがこの事実を持っていると仮定します。 (給与ジョン58000)
(給与サラ78000)
(従業員ジョン)
(ボスサラ)
(既婚ジョン・サラ)
(ワークスジョンStackOverflowの)
あなたは言うルールがある可能性があります
(給与?W <60000)/ \(既婚?ワット)/ \(StackOverflowのワークW?)==>どのような
もちろん結果は「ジョン」の?wの値を持つルールが、我々は今、ループトラフで最初の式(給与XXのbegginingと一致する事実ベース内の各要素であることをやっている方法をトリガされます)、次いで比較すると事実ベースのIT自身に結果を格納します。
:たとえば、最初のパスの後に次のような項目が事実ベースに追加しています(給与ジョン58000 <60000)
と、それはあなたがいつもRETE途中で結合を実行行われた後。その方法は、それはルールは任意の番号を参照することができますので、あなたがいる限り、ルールがアクティブであるとして、これらの「計算された」事実を持っている特別なので、事実ベースに多くのスペースを占めています。
一方、あなたは最初の式といくつかのルールを適用することができますし、ルールをトリガするために、標準的なマッチングアルゴリズムを使用し続けることができます。
誰もが行動のこの種を扱う任意のパターン、参照や方法を知っていますか?通常のLEAPSは、おやつ、Reteアルゴリズムは(私の知る限り)を扱う「正確な」マッチングます。
ところで、これはC#.NETである。
解決
<のhref = "http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/expert/systems/clips/0.html" のrel = "nofollowをnoreferrer"限り、私はそれを意識してきたとしての条件付きの要素をサポートしてきましたの>クリップ - 少なくとも15年。クリップの基本的なプログラミングガイドをチェック>そしてこのクリップは例のためにのチュートリアル。あなたが自由のためのクリップのソースを見て(または変更)することができます。
クリップは、条件は次のようになりますプレフィックス表記を使用していますので、あなたの例
(defrule fat-boy
(person-data (name ?name) (weight ?weight))
(test (> ?weight 100))
=>
(printout t ?name " weighs " ?weight " kg! " crlf)
)
他のヒント
私の知る限りは、問題を理解するように、全てのファジールールは、整数または浮動小数点値は、部分範囲の限定された数にまで及ぶ分けます。給料は58000、60000、78000値と比較されている場合たとえば、あなたは4つの範囲があります。<58000を、58000から60000、60000から78000、> 78000
その場合は、、多分あなたはどちらか0,1,2,3は整数であるためにあなたの変数を再定義することができ、それによって平等規則にあなたの不平等ルールを変換します。