summaryrefslogtreecommitdiff
path: root/examples/takagi-sugeno/approximation.java
diff options
context:
space:
mode:
Diffstat (limited to 'examples/takagi-sugeno/approximation.java')
-rw-r--r--examples/takagi-sugeno/approximation.java127
1 files changed, 69 insertions, 58 deletions
diff --git a/examples/takagi-sugeno/approximation.java b/examples/takagi-sugeno/approximation.java
index c3d98e1..c2f9d00 100644
--- a/examples/takagi-sugeno/approximation.java
+++ b/examples/takagi-sugeno/approximation.java
@@ -1,4 +1,5 @@
import com.fuzzylite.*;
+import com.fuzzylite.activation.*
import com.fuzzylite.defuzzifier.*;
import com.fuzzylite.factory.*;
import com.fuzzylite.hedge.*;
@@ -12,74 +13,84 @@ import com.fuzzylite.variable.*;
public class approximation{
public static void main(String[] args){
+//Code automatically generated with fuzzylite 6.0.
+
Engine engine = new Engine();
-engine.setName("approximation of sin(x)/x");
+engine.setName("approximation");
+engine.setDescription("");
-InputVariable inputVariable = new InputVariable();
-inputVariable.setEnabled(true);
-inputVariable.setName("inputX");
-inputVariable.setRange(0.000, 10.000);
-inputVariable.addTerm(new Triangle("NEAR_1", 0.000, 1.000, 2.000));
-inputVariable.addTerm(new Triangle("NEAR_2", 1.000, 2.000, 3.000));
-inputVariable.addTerm(new Triangle("NEAR_3", 2.000, 3.000, 4.000));
-inputVariable.addTerm(new Triangle("NEAR_4", 3.000, 4.000, 5.000));
-inputVariable.addTerm(new Triangle("NEAR_5", 4.000, 5.000, 6.000));
-inputVariable.addTerm(new Triangle("NEAR_6", 5.000, 6.000, 7.000));
-inputVariable.addTerm(new Triangle("NEAR_7", 6.000, 7.000, 8.000));
-inputVariable.addTerm(new Triangle("NEAR_8", 7.000, 8.000, 9.000));
-inputVariable.addTerm(new Triangle("NEAR_9", 8.000, 9.000, 10.000));
-engine.addInputVariable(inputVariable);
+InputVariable inputX = new InputVariable();
+inputX.setName("inputX");
+inputX.setDescription("");
+inputX.setEnabled(true);
+inputX.setRange(0.000, 10.000);
+inputX.setLockValueInRange(false);
+inputX.addTerm(new Triangle("NEAR_1", 0.000, 1.000, 2.000));
+inputX.addTerm(new Triangle("NEAR_2", 1.000, 2.000, 3.000));
+inputX.addTerm(new Triangle("NEAR_3", 2.000, 3.000, 4.000));
+inputX.addTerm(new Triangle("NEAR_4", 3.000, 4.000, 5.000));
+inputX.addTerm(new Triangle("NEAR_5", 4.000, 5.000, 6.000));
+inputX.addTerm(new Triangle("NEAR_6", 5.000, 6.000, 7.000));
+inputX.addTerm(new Triangle("NEAR_7", 6.000, 7.000, 8.000));
+inputX.addTerm(new Triangle("NEAR_8", 7.000, 8.000, 9.000));
+inputX.addTerm(new Triangle("NEAR_9", 8.000, 9.000, 10.000));
+engine.addInputVariable(inputX);
-OutputVariable outputVariable1 = new OutputVariable();
-outputVariable1.setEnabled(true);
-outputVariable1.setName("outputFx");
-outputVariable1.setRange(-1.000, 1.000);
-outputVariable1.fuzzyOutput().setAccumulation(null);
-outputVariable1.setDefuzzifier(new WeightedAverage("TakagiSugeno"));
-outputVariable1.setDefaultValue(Double.NaN);
-outputVariable1.setLockPreviousOutputValue(true);
-outputVariable1.setLockOutputValueInRange(false);
-outputVariable1.addTerm(new Constant("f1", 0.840));
-outputVariable1.addTerm(new Constant("f2", 0.450));
-outputVariable1.addTerm(new Constant("f3", 0.040));
-outputVariable1.addTerm(new Constant("f4", -0.180));
-outputVariable1.addTerm(new Constant("f5", -0.190));
-outputVariable1.addTerm(new Constant("f6", -0.040));
-outputVariable1.addTerm(new Constant("f7", 0.090));
-outputVariable1.addTerm(new Constant("f8", 0.120));
-outputVariable1.addTerm(new Constant("f9", 0.040));
-engine.addOutputVariable(outputVariable1);
+OutputVariable outputFx = new OutputVariable();
+outputFx.setName("outputFx");
+outputFx.setDescription("");
+outputFx.setEnabled(true);
+outputFx.setRange(-1.000, 1.000);
+outputFx.setLockValueInRange(false);
+outputFx.setAggregation(null);
+outputFx.setDefuzzifier(new WeightedAverage("TakagiSugeno"));
+outputFx.setDefaultValue(Double.NaN);
+outputFx.setLockPreviousValue(true);
+outputFx.addTerm(new Constant("f1", 0.840));
+outputFx.addTerm(new Constant("f2", 0.450));
+outputFx.addTerm(new Constant("f3", 0.040));
+outputFx.addTerm(new Constant("f4", -0.180));
+outputFx.addTerm(new Constant("f5", -0.190));
+outputFx.addTerm(new Constant("f6", -0.040));
+outputFx.addTerm(new Constant("f7", 0.090));
+outputFx.addTerm(new Constant("f8", 0.120));
+outputFx.addTerm(new Constant("f9", 0.040));
+engine.addOutputVariable(outputFx);
-OutputVariable outputVariable2 = new OutputVariable();
-outputVariable2.setEnabled(true);
-outputVariable2.setName("trueFx");
-outputVariable2.setRange(-1.000, 1.000);
-outputVariable2.fuzzyOutput().setAccumulation(null);
-outputVariable2.setDefuzzifier(new WeightedAverage("Automatic"));
-outputVariable2.setDefaultValue(Double.NaN);
-outputVariable2.setLockPreviousOutputValue(true);
-outputVariable2.setLockOutputValueInRange(false);
-outputVariable2.addTerm(Function.create("fx", "sin(inputX)/inputX", engine));
-engine.addOutputVariable(outputVariable2);
+OutputVariable trueFx = new OutputVariable();
+trueFx.setName("trueFx");
+trueFx.setDescription("");
+trueFx.setEnabled(true);
+trueFx.setRange(-1.000, 1.000);
+trueFx.setLockValueInRange(false);
+trueFx.setAggregation(null);
+trueFx.setDefuzzifier(new WeightedAverage("Automatic"));
+trueFx.setDefaultValue(Double.NaN);
+trueFx.setLockPreviousValue(true);
+trueFx.addTerm(Function.create("fx", "sin(inputX)/inputX", engine));
+engine.addOutputVariable(trueFx);
-OutputVariable outputVariable3 = new OutputVariable();
-outputVariable3.setEnabled(true);
-outputVariable3.setName("diffFx");
-outputVariable3.setRange(-1.000, 1.000);
-outputVariable3.fuzzyOutput().setAccumulation(null);
-outputVariable3.setDefuzzifier(new WeightedAverage("Automatic"));
-outputVariable3.setDefaultValue(Double.NaN);
-outputVariable3.setLockPreviousOutputValue(false);
-outputVariable3.setLockOutputValueInRange(false);
-outputVariable3.addTerm(Function.create("diff", "fabs(outputFx-trueFx)", engine));
-engine.addOutputVariable(outputVariable3);
+OutputVariable diffFx = new OutputVariable();
+diffFx.setName("diffFx");
+diffFx.setDescription("");
+diffFx.setEnabled(true);
+diffFx.setRange(-1.000, 1.000);
+diffFx.setLockValueInRange(false);
+diffFx.setAggregation(null);
+diffFx.setDefuzzifier(new WeightedAverage("Automatic"));
+diffFx.setDefaultValue(Double.NaN);
+diffFx.setLockPreviousValue(false);
+diffFx.addTerm(Function.create("diff", "fabs(outputFx-trueFx)", engine));
+engine.addOutputVariable(diffFx);
RuleBlock ruleBlock = new RuleBlock();
-ruleBlock.setEnabled(true);
ruleBlock.setName("");
+ruleBlock.setDescription("");
+ruleBlock.setEnabled(true);
ruleBlock.setConjunction(null);
ruleBlock.setDisjunction(null);
-ruleBlock.setActivation(null);
+ruleBlock.setImplication(null);
+ruleBlock.setActivation(new General());
ruleBlock.addRule(Rule.parse("if inputX is NEAR_1 then outputFx is f1", engine));
ruleBlock.addRule(Rule.parse("if inputX is NEAR_2 then outputFx is f2", engine));
ruleBlock.addRule(Rule.parse("if inputX is NEAR_3 then outputFx is f3", engine));