1 import com.fuzzylite.*;
2 import com.fuzzylite.activation.*
3 import com.fuzzylite.defuzzifier.*;
4 import com.fuzzylite.factory.*;
5 import com.fuzzylite.hedge.*;
6 import com.fuzzylite.imex.*;
7 import com.fuzzylite.norm.*;
8 import com.fuzzylite.norm.s.*;
9 import com.fuzzylite.norm.t.*;
10 import com.fuzzylite.rule.*;
11 import com.fuzzylite.term.*;
12 import com.fuzzylite.variable.*;
13 
14 public class ObstacleAvoidance{
main(String[] args)15 public static void main(String[] args){
16 //Code automatically generated with fuzzylite 6.0.
17 
18 Engine engine = new Engine();
19 engine.setName("ObstacleAvoidance");
20 engine.setDescription("");
21 
22 InputVariable obstacle = new InputVariable();
23 obstacle.setName("obstacle");
24 obstacle.setDescription("");
25 obstacle.setEnabled(true);
26 obstacle.setRange(0.000, 1.000);
27 obstacle.setLockValueInRange(false);
28 obstacle.addTerm(new Ramp("left", 1.000, 0.000));
29 obstacle.addTerm(new Ramp("right", 0.000, 1.000));
30 engine.addInputVariable(obstacle);
31 
32 OutputVariable mSteer = new OutputVariable();
33 mSteer.setName("mSteer");
34 mSteer.setDescription("");
35 mSteer.setEnabled(true);
36 mSteer.setRange(0.000, 1.000);
37 mSteer.setLockValueInRange(false);
38 mSteer.setAggregation(new Maximum());
39 mSteer.setDefuzzifier(new Centroid(100));
40 mSteer.setDefaultValue(Double.NaN);
41 mSteer.setLockPreviousValue(false);
42 mSteer.addTerm(new Ramp("left", 1.000, 0.000));
43 mSteer.addTerm(new Ramp("right", 0.000, 1.000));
44 engine.addOutputVariable(mSteer);
45 
46 OutputVariable tsSteer = new OutputVariable();
47 tsSteer.setName("tsSteer");
48 tsSteer.setDescription("");
49 tsSteer.setEnabled(true);
50 tsSteer.setRange(0.000, 1.000);
51 tsSteer.setLockValueInRange(false);
52 tsSteer.setAggregation(new Maximum());
53 tsSteer.setDefuzzifier(new WeightedAverage("Automatic"));
54 tsSteer.setDefaultValue(Double.NaN);
55 tsSteer.setLockPreviousValue(false);
56 tsSteer.addTerm(new Constant("left", 0.333));
57 tsSteer.addTerm(new Constant("right", 0.666));
58 engine.addOutputVariable(tsSteer);
59 
60 RuleBlock mamdani = new RuleBlock();
61 mamdani.setName("mamdani");
62 mamdani.setDescription("");
63 mamdani.setEnabled(true);
64 mamdani.setConjunction(null);
65 mamdani.setDisjunction(null);
66 mamdani.setImplication(new AlgebraicProduct());
67 mamdani.setActivation(new General());
68 mamdani.addRule(Rule.parse("if obstacle is left then mSteer is right", engine));
69 mamdani.addRule(Rule.parse("if obstacle is right then mSteer is left", engine));
70 engine.addRuleBlock(mamdani);
71 
72 RuleBlock takagiSugeno = new RuleBlock();
73 takagiSugeno.setName("takagiSugeno");
74 takagiSugeno.setDescription("");
75 takagiSugeno.setEnabled(true);
76 takagiSugeno.setConjunction(null);
77 takagiSugeno.setDisjunction(null);
78 takagiSugeno.setImplication(null);
79 takagiSugeno.setActivation(new General());
80 takagiSugeno.addRule(Rule.parse("if obstacle is left then tsSteer is right", engine));
81 takagiSugeno.addRule(Rule.parse("if obstacle is right then tsSteer is left", engine));
82 engine.addRuleBlock(takagiSugeno);
83 
84 
85 }
86 }
87