2017-11-10 3 views
0

私は大学プロジェクトにCLIPSを使用しています。これは質問駆動型のエキスパートシステムであり、私はいくつかの初期質問を無作為に質問する必要があるので、そして、(設定-戦略をランダム):CLIPSはさまざまなルールグループに対して異なる競合解消戦略を設定しています

(defrule ask-age 
    (not (age ?)) 
    => 
    (bind ?answer (question “What’s your age?”)) 
    (assert (age ?answer))) 

(defrule ask-gender 
    (not (age ?)) 
    => 
    (bind ?answer (question “What’s your gender?”)) 
    (assert (gender ?answer))) 

(defrule ask-main-symptom 
    (not (main-symptom ? TRUE)) 
    => 
    (bind ?answer (question “What’s the main symptom?”)) 
    (assert (main-symptom ?answer TRUE))) 

主な症状についての知識に基づいて、ルールの別のグループがアクティブになる、と私は紛争解決の戦略を変更する必要があります。 (assert(main-symptom?answer TRUE)の後に)ask-main-symptomルールに(set-strategy complexity)を入れるのは正しいですか?より良い方法がありますか?潜在的に矛盾するルールと、もともとOPS5で書かれたプログラムを実行するためのLEX/MEAをチェックするために、ランダムな戦略を使用するよりも、それ自体が間違っているが、他の何もない

(defrule ask-main-symptom 
    (not (main-symptom ? TRUE)) 
    => 
    (bind ?answer (question “What’s the main symptom?”)) 
    (assert (main-symptom ?answer TRUE)) 
    (set-strategy complexity)) 

答えて

0

、私は状況に遭遇したことがない場所I実行中に2つの異なる戦略を使用して、深さ以外の戦略を使用しました。戦略の変更がプロジェクトの要件の1つである場合は、ルールから実行しますが、他の質問ルールとの関係でランダムに発生する主観 - 主なルールから実行するのではなく、すべての質問ルールの実行後に戦略を変更するルール。

+0

ご返信ありがとうございます。はい、それはプロジェクトの要件です。私はルールを次のように使用しようとしました: ' '(宣言(顕著)-1) ' ' => ' '(セット戦略の複雑さ)) ' 最初の質問は無作為に求められますが、尋問主徴候規則で特定の徴候を主張した後、その徴候に応じたすべての規則は、実際には発射されない変更戦略規則の前に議題に入れられます。 –

関連する問題