如何解决在控制台中运行FuzzyJess文件可能吗? Jess的新功能
我是Jess的新手,我正在Windows 10控制台上使用以下命令执行.clp文件:
java jess.Main example.clp
现在,我正在学习模糊逻辑,并读到执行Fuzzyjess .clp必须使用:
java nrc.fuzzy.jess.FuzzyMain fuzzyE.clp
但是它会引发此错误:
Jess reported an error in routine new
while executing (new FuzzyVariable "temperature" 0 100 "┬░C")
while executing (bind ?temperature (new FuzzyVariable "temperature" 0 100 "┬░C")).
Message: Constructor not found: (new FuzzyVariable "temperature" 0 100 "┬░C").
Program text: ( bind ?temperature ( new FuzzyVariable "temperature" 0 100 "┬░C" ) ) at line 8.
nested exception is:
nrc.fuzzy.FuzzyVariable
java.lang.NoSuchMethodException: nrc.fuzzy.FuzzyVariable
at jess.c6.call(UnkNown Source)
at jess.ep.a(UnkNown Source)
at jess.Funcall.execute(UnkNown Source)
at jess.FuncallValue.resolveValue(UnkNown Source)
at jess.c1.call(UnkNown Source)
at jess.ep.a(UnkNown Source)
at jess.Funcall.execute(UnkNown Source)
at jess.Jesp.a(UnkNown Source)
at jess.Jesp.for(UnkNown Source)
at jess.Jesp.parse(UnkNown Source)
at jess.Jesp.parse(UnkNown Source)
at jess.Main.execute(UnkNown Source)
at nrc.fuzzy.jess.FuzzyMain.main(UnkNown Source)
这是FuzzyE.clp的代码(我在互联网上找到它,尝试运行):
;; Load
(load-package nrc.fuzzy.jess.FuzzyFunctions)
(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))
)
)
)
(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 "*"))
)
; (reset)
(run)
我几乎可以肯定代码是正确的,但是也许我错了。 我像对jess.jar一样,将FuzzyJ-2.0.jar放在类路径中。但是,“找不到构造函数”使我认为FuzzyJess没有正确安装。 也许无法在控制台中运行此文件?只是在日食? 我是一个乞讨者,请给我任何提示。我想在控制台中制作它的原因是因为我可以制作一个.bat文件来使程序可执行。我不知道在没有日食的情况下是否有可能。
我也尝试这样做:
java -classpath "%classpath%";c:\Jess61p4\fuzzyJ-2.0.jar;.\ nrc.fuzzy.jess.FuzzyMain fuzzyE.clp
解决方法
这似乎是FuzzyJ API的问题,而不是Jess的问题;我的意思是,错误消息表明您已经正确加载了FuzzyJ类,但是正在运行的Jess代码正在查找所使用的FuzzyJ库中不存在的方法。这些年来,有多个版本的FuzzyJ,而您所拥有的版本似乎与您尝试运行的示例代码不匹配。
Here是指向FuzzyJ版本的链接,该版本肯定包含该构造函数,并且还包含Javadocs,以便您可以自己检查代码。希望这可以让您运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。