home › Forums › # Technical Support › JAVA API › Reply To: JAVA API
September 14, 2014 at 15:01
#1448
Member
Hi, Mr Vilela
I have a question about the outcome of my code. I have a linguistic output variable that can return me three options: sell, hold or buy. The result I get is only one value, eg 0.62999. I wonder which of the possible outputs this value makes reference, sell, hold or buy, is to know?
Follows the code below:
Engine engine = new Engine();
engine.setName("acao");
InputVariable inputVariable1 = new InputVariable();
inputVariable1.setEnabled(true);
inputVariable1.setName("MACD");
inputVariable1.setRange(-2.000, 2.000);
inputVariable1.addTerm(new Triangle("baixo", -2.000, -0.780, 0.340));
inputVariable1.addTerm(new Triangle("alto", -0.380, 0.720, 2.000));
engine.addInputVariable(inputVariable1);
InputVariable inputVariable2 = new InputVariable();
inputVariable2.setEnabled(true);
inputVariable2.setName("BETA");
inputVariable2.setRange(-2.000, 2.000);
inputVariable2.addTerm(new Triangle("baixo", -2.000, -1.260, -0.500));
inputVariable2.addTerm(new Triangle("neutro", -1.000, 0.000, 1.000));
inputVariable2.addTerm(new Triangle("alto", 0.520, 1.260, 2.000));
engine.addInputVariable(inputVariable2);
InputVariable inputVariable3 = new InputVariable();
inputVariable3.setEnabled(true);
inputVariable3.setName("RSI");
inputVariable3.setRange(0.000, 100.000);
inputVariable3.addTerm(new Triangle("sobrevendido", 0.000, 25.000, 60.000));
inputVariable3.addTerm(new Triangle("sobrecomprado", 40.000, 65.000, 100.000));
engine.addInputVariable(inputVariable3);
OutputVariable outputVariable = new OutputVariable();
outputVariable.setEnabled(true);
outputVariable.setName("DECISAO");
outputVariable.setRange(-3.000, 3.000);
outputVariable.fuzzyOutput().setAccumulation(new AlgebraicSum());
outputVariable.setDefuzzifier(new Centroid(200));
outputVariable.setDefaultValue(Double.NaN);
outputVariable.setLockValidOutput(false);
outputVariable.setLockOutputRange(false);
outputVariable.addTerm(new Triangle("sell", -2.980, -1.750, -0.620));
outputVariable.addTerm(new Triangle("old", -1.140, -0.050, 1.220));
outputVariable.addTerm(new Triangle("buy", 0.650, 1.590, 3.040));
engine.addOutputVariable(outputVariable);
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 MACD is baixo and BETA is baixo and RSI is sobrevendido then DECISAO is sell", engine));
ruleBlock.addRule(Rule.parse("if MACD is baixo and BETA is baixo and RSI is sobrecomprado then DECISAO is sell", engine));
ruleBlock.addRule(Rule.parse("if MACD is baixo and BETA is neutro and RSI is sobrevendido then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is baixo and BETA is neutro and RSI is sobrecomprado then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is baixo and BETA is alto and RSI is sobrevendido then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is baixo and BETA is alto and RSI is sobrecomprado then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is alto and BETA is baixo and RSI is sobrevendido then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is alto and BETA is baixo and RSI is sobrecomprado then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is alto and BETA is neutro and RSI is sobrevendido then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is alto and BETA is neutro and RSI is sobrecomprado then DECISAO is old", engine));
ruleBlock.addRule(Rule.parse("if MACD is alto and BETA is alto and RSI is sobrevendido then DECISAO is buy", engine));
ruleBlock.addRule(Rule.parse("if MACD is alto and BETA is alto and RSI is sobrecomprado then DECISAO is buy", engine));
engine.addRuleBlock(ruleBlock);
engine.setInputValue("MACD", MACD);
engine.setInputValue("BETA", BETA);
engine.setInputValue("RSI", RSI);
engine.process();
System.out.println(engine.getOutputValue("DECISAO"));
Thank’s