class FuzzyController { private FuzzySet xLow, xMed, xHigh; //pkt private FuzzySet yLow, yMed, yHigh; //oct/pkt private FuzzySet zLow, zMed, zHigh; //output private double xl, xm, xh, yl, ym, yh; // input of membership private double clow, cmed, chigh; // center of low, med, high private final boolean LEFT = true; private final boolean RIGHT = false; double low[] = new double[4]; double med[] = new double[3]; double high[] = new double[2]; private double[] xlow = {20, 310}; private double[] xmed = {200, 600, 1000}; private double[] xhigh = {700, 1300}; private double[] ylow = {50, 200}; private double[] ymed = {150, 475, 800}; private double[] yhigh = {600, 900}; //Z ranging from -10 to 10 /*private double[] zlow = {-, -3}; private double[] zmed = {-6, 0, 6}; private double[] zhigh = {3, 6};*/ //Z ranging from 0 to 10 private final double[] Z = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; public FuzzyController() { xLow = new FuzzySet(2, xlow); xMed = new FuzzySet(1, xmed); xHigh = new FuzzySet(2, xhigh); yLow = new FuzzySet(2, ylow); yMed = new FuzzySet(1, ymed); yHigh = new FuzzySet(2, yhigh); } private double getRSSInferencing(double[] membership) { double sum = 0.0; for(int i=0; i= side)? xres : sidelimit; //eg: side=0.6666; xres=0.6667 double y = (medlimit >= med)? yres : medlimit; //eg: med=0.3333; xres=0.3333 return Math.max(x,y); } private double getZvalue(double[] centers, double[] strength) { double sum = 0.0; double sum_str = 0.0; for(int i=0; i