home › Forums › # Technical Support › JAVA API › Reply To: JAVA API
November 19, 2014 at 16:35
#1512
Member
hi
how I can get the value of the output fuzzy set and the value of the rules that were activated?
regards
package ejemfuzzy1;
import com.fuzzylite.Engine;
import com.fuzzylite.defuzzifier.Centroid;
import com.fuzzylite.norm.s.Maximum;
import com.fuzzylite.norm.t.Minimum;
import com.fuzzylite.rule.Rule;
import com.fuzzylite.rule.RuleBlock;
import com.fuzzylite.term.Trapezoid;
import com.fuzzylite.term.Triangle;
import com.fuzzylite.variable.InputVariable;
import com.fuzzylite.variable.OutputVariable;
/**
*
* @author Fernandinho
*/
public class EjemFuzzy1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Engine engine = new Engine();
engine.setName("ejemplo");
InputVariable project_funding = new InputVariable();
project_funding.setEnabled(true);
project_funding.setName("ProjectFunding");
project_funding.setRange(0.000, 100.000);
project_funding.addTerm(new Trapezoid("INADEQUATE", 0.000, 0.000, 20.000, 50.000));
project_funding.addTerm(new Triangle("MARGINAL", 31.250, 50.000, 68.750));
project_funding.addTerm(new Trapezoid("ADEQUATE", 50.000, 80.000, 100.000, 100.000));
engine.addInputVariable(project_funding);
InputVariable project_staffing = new InputVariable();
project_staffing.setEnabled(true);
project_staffing.setName("ProjectStaffing");
project_staffing.setRange(0.000, 100.000);
project_staffing.addTerm(new Trapezoid("SMALL", 0.000, 0.000, 30.000, 63.333));
project_staffing.addTerm(new Trapezoid("LARGE", 40.000, 68.57, 100.000, 100.000));
engine.addInputVariable(project_staffing);
OutputVariable risk = new OutputVariable();
risk.setEnabled(true);
risk.setName("Risk");
risk.setRange(0.000, 100.000);
risk.fuzzyOutput().setAccumulation(new Maximum());
risk.setDefuzzifier(new Centroid());
risk.setDefaultValue(Double.NaN);
risk.setLockValidOutput(false);
risk.setLockOutputRange(false);
risk.addTerm(new Trapezoid("LOW", 0.000, 0.000, 20.000, 40.000 ));
risk.addTerm(new Triangle("NORMAL", 20.000, 50.000, 80.000));
risk.addTerm(new Trapezoid("HIGH", 60.000, 80.000, 100.000, 100.000));
engine.addOutputVariable(risk);
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 ProjectFunding is ADEQUATE or ProjectStaffing is SMALL then Risk is LOW",engine));
ruleBlock.addRule(Rule.parse("if ProjectFunding is MARGINAL and ProjectStaffing is LARGE then Risk is NORMAL", engine));
ruleBlock.addRule(Rule.parse("if ProjectFunding is INADEQUATE then Risk is HIGH",engine));
engine.addRuleBlock(ruleBlock);
StringBuilder status = new StringBuilder();
if (!engine.isReady(status))
throw new RuntimeException("No fue posible generar el archivo. "
+ "Los siguientes errores fueron encontrados:\n"
+ status.toString());
engine.setInputValue("ProjectFunding", 35.000);
engine.setInputValue("ProjectStaffing", 60.000);
engine.process();
System.out.println(engine.getOutputValue("Risk"));
}
}