我在java中使用jFuzzyLogic library。
我正在使用的Fcl文件是:
FUNCTION_BLOCK rischio_ciclo_fenologico
VAR_INPUT
ciclo_colturale : REAL;
ciclo_vegetativo : REAL;
END_VAR
VAR_OUTPUT
rischio_ciclo_fenologico : REAL;
END_VAR
FUZZIFY ciclo_colturale
TERM alto := 0 ;
TERM medio := 1 ;
TERM basso := 2 ;
FUZZIFY ciclo_vegetativo
TERM alto := 0 ;
TERM medio := 1 ;
TERM basso := 2 ;
END_FUZZIFY
DEFUZZIFY rischio_ciclo_fenologico
TERM alto := 0 ;
TERM basso := 100 ;
METHOD : COG;
DEFAULT := 0;
END_DEFUZZIFY
RULEBLOCK No1
AND : MIN;
ACT : MIN;
ACCU : MAX;
RULE 1 : IF ciclo_colturale IS alto AND ciclo_vegetativo IS alto THEN rischio_ciclo_fenologico IS alto ;
RULE 2 : IF ciclo_colturale IS alto AND ciclo_vegetativo IS medio THEN rischio_ciclo_fenologico IS basso ;
RULE 3 : IF ciclo_colturale IS alto AND ciclo_vegetativo IS basso THEN rischio_ciclo_fenologico IS basso ;
RULE 4 : IF ciclo_colturale IS medio AND ciclo_vegetativo IS alto THEN rischio_ciclo_fenologico IS basso ;
RULE 5 : IF ciclo_colturale IS basso AND ciclo_vegetativo IS alto THEN rischio_ciclo_fenologico IS basso ;
RULE 6 : IF ciclo_colturale IS medio AND ciclo_vegetativo IS medio THEN rischio_ciclo_fenologico IS basso ;
RULE 7 : IF ciclo_colturale IS basso AND ciclo_vegetativo IS basso THEN rischio_ciclo_fenologico IS basso ;
RULE 8 : IF ciclo_colturale IS medio AND ciclo_vegetativo IS basso THEN rischio_ciclo_fenologico IS basso ;
RULE 9 : IF ciclo_colturale IS basso AND ciclo_vegetativo IS medio THEN rischio_ciclo_fenologico IS basso ;
END_RULEBLOCK
END_FUNCTION_BLOCK
我正在使用的java代码片段是:
FIS fis = FIS.load(fileName,true);
//set variables
fis.evaluate();
return fis.getVariable("rischio_ciclo_fenologico").getValue();
这是我得到的例外:
java.lang.RuntimeException: MembershipFunction and Defuzzifier are neither both discrete nor both continuous
Term: rischio_ciclo_fenologico IS alto
Membership function: Singleton : {0.0, 1.0}
Defuzzifier: CenterOfGravity
我做错了什么? Exception对我来说不是很清楚,也许CenterOfGravity Defuzzifier不能和单身人士一起使用?
答案 0 :(得分:2)
首先,缺少END_FUZZIFY
。
真正的问题是METHOD : COG;
使用单身时,defuzzifing方法必须是METHOD : COGS;