2013-09-22 45 views
1

我已经下载了一个已安装的eclipse插件和FuzzyJ工具包插件。现在,我试图运行下面简单的代码:使用FuzzyJess:未定义模糊匹配

(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) 

然而,当我运行的代码,我只得到一个异常说,功能模糊匹配没有定义。我已经将主类更改为FuzzyMain。我还尝试运行FuzzyConsole并从那里加载代码,并尝试使用addPackage将FuzzyFunctions添加到引擎,但无论如何我仍然会遇到该错误。

回答

2

虽然Jess在行动不幸的是,您不得不明确加载模糊函数,即使在启动时使用FuzzyMain。在Jess码顶部附近添加以下行,它将按需要工作:

(load-package nrc.fuzzy.jess.FuzzyFunctions) 
+0

谢谢,解决了问题! – Totem