0
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
내가 사용하고 자바 코드는 다음과 같습니다 :
내가 사용하고있어 FCL 파일은
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
내가 뭘 잘못하고있어? 예외가 너무 분명하지 않습니다. CenterOfGravity Defuzzifier를 싱글 톤과 함께 사용할 수 없습니까?