diff options
Diffstat (limited to 'examples/mamdani/SimpleDimmerInverse.java')
-rw-r--r-- | examples/mamdani/SimpleDimmerInverse.java | 84 |
1 files changed, 47 insertions, 37 deletions
diff --git a/examples/mamdani/SimpleDimmerInverse.java b/examples/mamdani/SimpleDimmerInverse.java index 0bdde89..218f831 100644 --- a/examples/mamdani/SimpleDimmerInverse.java +++ b/examples/mamdani/SimpleDimmerInverse.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,52 +13,61 @@ import com.fuzzylite.variable.*; public class SimpleDimmerInverse{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("simple-dimmer"); +engine.setName("SimpleDimmerInverse"); +engine.setDescription(""); -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); +InputVariable Ambient = new InputVariable(); +Ambient.setName("Ambient"); +Ambient.setDescription(""); +Ambient.setEnabled(true); +Ambient.setRange(0.000, 1.000); +Ambient.setLockValueInRange(false); +Ambient.addTerm(new Triangle("DARK", 0.000, 0.250, 0.500)); +Ambient.addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); +Ambient.addTerm(new Triangle("BRIGHT", 0.500, 0.750, 1.000)); +engine.addInputVariable(Ambient); -OutputVariable outputVariable1 = new OutputVariable(); -outputVariable1.setEnabled(true); -outputVariable1.setName("Power"); -outputVariable1.setRange(0.000, 1.000); -outputVariable1.fuzzyOutput().setAccumulation(new Maximum()); -outputVariable1.setDefuzzifier(new Centroid(200)); -outputVariable1.setDefaultValue(Double.NaN); -outputVariable1.setLockPreviousOutputValue(false); -outputVariable1.setLockOutputValueInRange(false); -outputVariable1.addTerm(new Triangle("LOW", 0.000, 0.250, 0.500)); -outputVariable1.addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); -outputVariable1.addTerm(new Triangle("HIGH", 0.500, 0.750, 1.000)); -engine.addOutputVariable(outputVariable1); +OutputVariable Power = new OutputVariable(); +Power.setName("Power"); +Power.setDescription(""); +Power.setEnabled(true); +Power.setRange(0.000, 1.000); +Power.setLockValueInRange(false); +Power.setAggregation(new Maximum()); +Power.setDefuzzifier(new Centroid(200)); +Power.setDefaultValue(Double.NaN); +Power.setLockPreviousValue(false); +Power.addTerm(new Triangle("LOW", 0.000, 0.250, 0.500)); +Power.addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); +Power.addTerm(new Triangle("HIGH", 0.500, 0.750, 1.000)); +engine.addOutputVariable(Power); -OutputVariable outputVariable2 = new OutputVariable(); -outputVariable2.setEnabled(true); -outputVariable2.setName("InversePower"); -outputVariable2.setRange(0.000, 1.000); -outputVariable2.fuzzyOutput().setAccumulation(new Maximum()); -outputVariable2.setDefuzzifier(new Centroid(500)); -outputVariable2.setDefaultValue(Double.NaN); -outputVariable2.setLockPreviousOutputValue(false); -outputVariable2.setLockOutputValueInRange(false); -outputVariable2.addTerm(new Cosine("LOW", 0.200, 0.500)); -outputVariable2.addTerm(new Cosine("MEDIUM", 0.500, 0.500)); -outputVariable2.addTerm(new Cosine("HIGH", 0.800, 0.500)); -engine.addOutputVariable(outputVariable2); +OutputVariable InversePower = new OutputVariable(); +InversePower.setName("InversePower"); +InversePower.setDescription(""); +InversePower.setEnabled(true); +InversePower.setRange(0.000, 1.000); +InversePower.setLockValueInRange(false); +InversePower.setAggregation(new Maximum()); +InversePower.setDefuzzifier(new Centroid(500)); +InversePower.setDefaultValue(Double.NaN); +InversePower.setLockPreviousValue(false); +InversePower.addTerm(new Cosine("LOW", 0.200, 0.500)); +InversePower.addTerm(new Cosine("MEDIUM", 0.500, 0.500)); +InversePower.addTerm(new Cosine("HIGH", 0.800, 0.500)); +engine.addOutputVariable(InversePower); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(null); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(new Minimum()); +ruleBlock.setImplication(new Minimum()); +ruleBlock.setActivation(new General()); 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)); |