home › Forums › # Technical Support › JAVA API › Reply To: JAVA API
July 3, 2014 at 10:10
#1136
Keymaster
Hi Allison,
I have created the file Allison.java
as follows:
import com.fuzzylite.*;
import com.fuzzylite.defuzzifier.*;
import com.fuzzylite.factory.*;
import com.fuzzylite.hedge.*;
import com.fuzzylite.imex.*;
import com.fuzzylite.norm.*;
import com.fuzzylite.norm.s.*;
import com.fuzzylite.norm.t.*;
import com.fuzzylite.rule.*;
import com.fuzzylite.term.*;
import com.fuzzylite.variable.*;
class Allison{
public static void main(String[] args){
//OBJETO FUZZY
Engine engine = new Engine();
engine.setName("simple-dimmer");
//VARIAVEIS LINGUISTICAS DE ENTRADA
InputVariable inputVariable = new InputVariable();
inputVariable.setEnabled(true);
inputVariable.setName("Ambient");
inputVariable.setRange(0.000, 1.000);
inputVariable.addTerm(new Triangle("DARK", 0.000, 0.250, 0.500));
inputVariable.addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750));
inputVariable.addTerm(new Triangle("BRIGHT", 0.500, 0.750, 1.000));
engine.addInputVariable(inputVariable);
//SAIDA
OutputVariable outputVariable = new OutputVariable();
outputVariable.setEnabled(true);
outputVariable.setName("Power");
outputVariable.setRange(0.000, 1.000);
outputVariable.fuzzyOutput().setAccumulation(new Maximum());
outputVariable.fuzzyOutput().setAccumulation(new AlgebraicSum());
outputVariable.setDefuzzifier(new WeightedAverage());
outputVariable.setDefuzzifier(new Centroid(200));
outputVariable.setDefaultValue(Double.NaN);
outputVariable.setLockValidOutput(false);
outputVariable.setLockOutputRange(false);
outputVariable.addTerm(new Constant("LOW", 0.250));
outputVariable.addTerm(new Constant("MEDIUM", 0.500));
outputVariable.addTerm(new Constant("HIGH", 0.750));
engine.addOutputVariable(outputVariable);
//RULES
RuleBlock ruleBlock = new RuleBlock();
ruleBlock.setEnabled(true);
ruleBlock.setName("");
ruleBlock.setConjunction(new Minimum());
ruleBlock.setDisjunction(new Maximum());
ruleBlock.setActivation(new Minimum());
ruleBlock.addRule(Rule.parse("if Ambient is DARK then Power is HIGH",engine));
ruleBlock.addRule(Rule.parse("if Ambient is MEDIUM then Power is MEDIUM", engine));
ruleBlock.addRule(Rule.parse("if Ambient is BRIGHT then Power is LOW",engine));
engine.addRuleBlock(ruleBlock);
StringBuilder status = new StringBuilder();
if (!engine.isReady(status))
throw new RuntimeException("Nao foi possivel gerar o arquivo. "
+ "O seguintes erros foram encontrados:\n"
+ status.toString());
engine.setInputValue("Ambient", 0.1);
engine.process();
System.out.println(engine.getOutputValue("Power"));
}
}
I have compiled it as follows:
javac -cp jfuzzylite.jar Allison.java
I have executed it as follows:
java -cp .:jfuzzylite.jar Allison
And I have obtained the following result:
0.4999999999999997
Please, make sure you have not modified the sources of jfuzzylite and you are using the correct jar file which you can download from http://www.fuzzylite.com/downloads.
Cheers.