From 6ce553563bc795f389f639a3a8cdfe356de71441 Mon Sep 17 00:00:00 2001 From: Johannes 'josch' Schauer Date: Sun, 27 Jan 2019 13:56:24 +0100 Subject: new upstream version 6.0 --- examples/mamdani/Laundry.java | 106 +++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 47 deletions(-) (limited to 'examples/mamdani/Laundry.java') diff --git a/examples/mamdani/Laundry.java b/examples/mamdani/Laundry.java index d45e77e..95cbe7c 100644 --- a/examples/mamdani/Laundry.java +++ b/examples/mamdani/Laundry.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,64 +13,75 @@ import com.fuzzylite.variable.*; public class Laundry{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); engine.setName("Laundry"); +engine.setDescription(""); -InputVariable inputVariable1 = new InputVariable(); -inputVariable1.setEnabled(true); -inputVariable1.setName("Load"); -inputVariable1.setRange(0.000, 6.000); -inputVariable1.addTerm(Discrete.create("small", 0.000, 1.000, 1.000, 1.000, 2.000, 0.800, 5.000, 0.000)); -inputVariable1.addTerm(Discrete.create("normal", 3.000, 0.000, 4.000, 1.000, 6.000, 0.000)); -engine.addInputVariable(inputVariable1); +InputVariable Load = new InputVariable(); +Load.setName("Load"); +Load.setDescription(""); +Load.setEnabled(true); +Load.setRange(0.000, 6.000); +Load.setLockValueInRange(false); +Load.addTerm(Discrete.create("small", 0.000, 1.000, 1.000, 1.000, 2.000, 0.800, 5.000, 0.000)); +Load.addTerm(Discrete.create("normal", 3.000, 0.000, 4.000, 1.000, 6.000, 0.000)); +engine.addInputVariable(Load); -InputVariable inputVariable2 = new InputVariable(); -inputVariable2.setEnabled(true); -inputVariable2.setName("Dirt"); -inputVariable2.setRange(0.000, 6.000); -inputVariable2.addTerm(Discrete.create("low", 0.000, 1.000, 2.000, 0.800, 5.000, 0.000)); -inputVariable2.addTerm(Discrete.create("high", 1.000, 0.000, 2.000, 0.200, 4.000, 0.800, 6.000, 1.000)); -engine.addInputVariable(inputVariable2); +InputVariable Dirt = new InputVariable(); +Dirt.setName("Dirt"); +Dirt.setDescription(""); +Dirt.setEnabled(true); +Dirt.setRange(0.000, 6.000); +Dirt.setLockValueInRange(false); +Dirt.addTerm(Discrete.create("low", 0.000, 1.000, 2.000, 0.800, 5.000, 0.000)); +Dirt.addTerm(Discrete.create("high", 1.000, 0.000, 2.000, 0.200, 4.000, 0.800, 6.000, 1.000)); +engine.addInputVariable(Dirt); -OutputVariable outputVariable1 = new OutputVariable(); -outputVariable1.setEnabled(true); -outputVariable1.setName("Detergent"); -outputVariable1.setRange(0.000, 80.000); -outputVariable1.fuzzyOutput().setAccumulation(new Maximum()); -outputVariable1.setDefuzzifier(new MeanOfMaximum(500)); -outputVariable1.setDefaultValue(Double.NaN); -outputVariable1.setLockPreviousOutputValue(false); -outputVariable1.setLockOutputValueInRange(false); -outputVariable1.addTerm(Discrete.create("less", 10.000, 0.000, 40.000, 1.000, 50.000, 0.000)); -outputVariable1.addTerm(Discrete.create("normal", 40.000, 0.000, 50.000, 1.000, 60.000, 1.000, 80.000, 0.000)); -outputVariable1.addTerm(Discrete.create("more", 50.000, 0.000, 80.000, 1.000)); -engine.addOutputVariable(outputVariable1); +OutputVariable Detergent = new OutputVariable(); +Detergent.setName("Detergent"); +Detergent.setDescription(""); +Detergent.setEnabled(true); +Detergent.setRange(0.000, 80.000); +Detergent.setLockValueInRange(false); +Detergent.setAggregation(new Maximum()); +Detergent.setDefuzzifier(new MeanOfMaximum(500)); +Detergent.setDefaultValue(Double.NaN); +Detergent.setLockPreviousValue(false); +Detergent.addTerm(Discrete.create("less_than_usual", 10.000, 0.000, 40.000, 1.000, 50.000, 0.000)); +Detergent.addTerm(Discrete.create("usual", 40.000, 0.000, 50.000, 1.000, 60.000, 1.000, 80.000, 0.000)); +Detergent.addTerm(Discrete.create("more_than_usual", 50.000, 0.000, 80.000, 1.000)); +engine.addOutputVariable(Detergent); -OutputVariable outputVariable2 = new OutputVariable(); -outputVariable2.setEnabled(true); -outputVariable2.setName("Cycle"); -outputVariable2.setRange(0.000, 20.000); -outputVariable2.fuzzyOutput().setAccumulation(new Maximum()); -outputVariable2.setDefuzzifier(new MeanOfMaximum(500)); -outputVariable2.setDefaultValue(Double.NaN); -outputVariable2.setLockPreviousOutputValue(false); -outputVariable2.setLockOutputValueInRange(false); -outputVariable2.addTerm(Discrete.create("short", 0.000, 1.000, 10.000, 1.000, 20.000, 0.000)); -outputVariable2.addTerm(Discrete.create("long", 10.000, 0.000, 20.000, 1.000)); -engine.addOutputVariable(outputVariable2); +OutputVariable Cycle = new OutputVariable(); +Cycle.setName("Cycle"); +Cycle.setDescription(""); +Cycle.setEnabled(true); +Cycle.setRange(0.000, 20.000); +Cycle.setLockValueInRange(false); +Cycle.setAggregation(new Maximum()); +Cycle.setDefuzzifier(new MeanOfMaximum(500)); +Cycle.setDefaultValue(Double.NaN); +Cycle.setLockPreviousValue(false); +Cycle.addTerm(Discrete.create("short", 0.000, 1.000, 10.000, 1.000, 20.000, 0.000)); +Cycle.addTerm(Discrete.create("long", 10.000, 0.000, 20.000, 1.000)); +engine.addOutputVariable(Cycle); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(new Minimum()); ruleBlock.setDisjunction(new Maximum()); -ruleBlock.setActivation(new Minimum()); -ruleBlock.addRule(Rule.parse("if Load is small and Dirt is not high then Detergent is less", engine)); -ruleBlock.addRule(Rule.parse("if Load is small and Dirt is high then Detergent is normal", engine)); -ruleBlock.addRule(Rule.parse("if Load is normal and Dirt is low then Detergent is less", engine)); -ruleBlock.addRule(Rule.parse("if Load is normal and Dirt is high then Detergent is more", engine)); -ruleBlock.addRule(Rule.parse("if Detergent is normal or Detergent is less then Cycle is short", engine)); -ruleBlock.addRule(Rule.parse("if Detergent is more then Cycle is long", engine)); +ruleBlock.setImplication(new Minimum()); +ruleBlock.setActivation(new General()); +ruleBlock.addRule(Rule.parse("if Load is small and Dirt is not high then Detergent is less_than_usual", engine)); +ruleBlock.addRule(Rule.parse("if Load is small and Dirt is high then Detergent is usual", engine)); +ruleBlock.addRule(Rule.parse("if Load is normal and Dirt is low then Detergent is less_than_usual", engine)); +ruleBlock.addRule(Rule.parse("if Load is normal and Dirt is high then Detergent is more_than_usual", engine)); +ruleBlock.addRule(Rule.parse("if Detergent is usual or Detergent is less_than_usual then Cycle is short", engine)); +ruleBlock.addRule(Rule.parse("if Detergent is more_than_usual then Cycle is long", engine)); engine.addRuleBlock(ruleBlock); -- cgit v1.2.3