home Forums # Technical Support JAVA API Reply To: JAVA API

#1136

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.