1

インストール済みの Eclipse 用 Jess プラグインと FuzzyJ Toolkit をダウンロードしました。今、私は次の簡単なコードを実行しようとしています:

(import nrc.fuzzy.*)

(bind ?temperature (new FuzzyVariable "temperature" 0 100 "°C"))
(bind ?pressure (new FuzzyVariable "pressure" 0.1 50 "MPa"))

(?temperature addTerm "cold" (new RightLinearFuzzySet 6 20))
(?temperature addTerm "warm" (new TrapezoidFuzzySet 15 20 25 30))
(?temperature addTerm "hot"  (new LeftLinearFuzzySet 25 50))

(?pressure addTerm "low"    (new RightLinearFuzzySet 0.9 5))
(?pressure addTerm "medium" (new TrapezoidFuzzySet 2 8 14 28))
(?pressure addTerm "high"  (new LeftLinearFuzzySet 22 50))

(deffunction about (?number ?fuzzyVariable)
    (bind ?delta (- (?fuzzyVariable getMaxUOD) (?fuzzyVariable getMinUOD)))
    (new FuzzyValue ?fuzzyVariable 
        (new TriangleFuzzySet 
            (- ?number (* ?delta 0.01))
        ?number   
            (+ ?number (* ?delta 0.01)) 
        )
    )
)

; (printout t ((about 34 ?temperature) plotFuzzyValue "*"))

(assert (Temperature (about 43 ?temperature)))

(defrule trivial-rule
    (Temperature ?t & :(fuzzy-match ?t "hot"))
    =>
    (assert (Pressure (new FuzzyValue ?pressure "low")))    
)

(defrule printing
    (Pressure ?p)
    =>
    (printout t (?p plotFuzzyValue "*"))    
)


(run)

ただし、コードを実行すると、関数 fuzzy-match が定義されていないという例外のみが発生します。メインクラスはすでに FuzzyMain に変更しています。また、FuzzyConsole を実行してそこからコードを読み込もうとしたり、addPackage を使用してエンジンに FuzzyFunctions を追加しようとしたりしましたが、いずれにしてもエラーが発生します。

4

1 に答える 1

2

Jess in Actionは残念ながらこれを教えてくれませんが、 で起動する場合でも、ファジー関数を明示的にロードする必要がありますFuzzyMain。Jess コードの先頭近くに次の行を追加すると、期待どおりに動作します。

(load-package nrc.fuzzy.jess.FuzzyFunctions)
于 2013-09-23T21:25:49.663 に答える