//+++++++++++++++++++++++++++++++++++++++++++++++++++++ // File automatically generated by Xfuzzy - DO NOT EDIT //+++++++++++++++++++++++++++++++++++++++++++++++++++++ package pkg.xfl.mfunc; import xfuzzy.lang.*; public class sigma extends ParamMemFunc { public sigma() { super("xfl","sigma"); Parameter single[] = new Parameter[2]; single[0] = new Parameter("a"); single[1] = new Parameter("b"); setSingleParameters(single); } public double compute(double x) { double a = singleparam[0].value; double b = singleparam[1].value; return 1/(1+ Math.exp( (a-x)/b )); } public double greatereq(double x) { double min = this.u.min(); double a = singleparam[0].value; double b = singleparam[1].value; double y = (b>0? x : min); return 1 / (1+ Math.exp( (a-y)/b )); } public double smallereq(double x) { double max = this.u.max(); double a = singleparam[0].value; double b = singleparam[1].value; double y = (b<0? x : max); return 1 / (1+ Math.exp( (a-y)/b )); } public double[] deriv_eq(double x) { double[] deriv = new double[getNumberOfParameters()]; double a = singleparam[0].value; double b = singleparam[1].value; double aux1 = Math.exp((a-x)/b); double aux2 = aux1/((1+aux1)*(1+aux1)); deriv[0] = - aux2/b; deriv[1] = aux2*(a-x)/(b*b); return deriv; } public double[] deriv_greq(double x) { double[] deriv = new double[getNumberOfParameters()]; double min = this.u.min(); double a = singleparam[0].value; double b = singleparam[1].value; double y = (b>0? x : min); double aux1 = Math.exp((a-y)/b); double aux2 = aux1/((1+aux1)*(1+aux1)); deriv[0] = - aux2/b; deriv[1] = aux2*(a-y)/(b*b); return deriv; } public double[] deriv_smeq(double x) { double[] deriv = new double[getNumberOfParameters()]; double max = this.u.max(); double a = singleparam[0].value; double b = singleparam[1].value; double y = (b<0? x : max); double aux1 = Math.exp((a-y)/b); double aux2 = aux1/((1+aux1)*(1+aux1)); deriv[0] = - aux2/b; deriv[1] = aux2*(a-y)/(b*b); return deriv; } public boolean test () { double min = this.u.min(); double max = this.u.max(); double a = singleparam[0].value; double b = singleparam[1].value; return ( a>=min && a<=max ); } public void update() { if(!isAdjustable()) return; double[] pos = get(); double[] desp = getDesp(); boolean[] adj = getAdjustable(); double min = this.u.min(); double max = this.u.max(); double a = singleparam[0].value; double b = singleparam[1].value; a += desp[0]; b += desp[1]; if(a<min) a = min; if(a>max) a = max; if(b/pos[1]<=0) b = pos[1]/2; pos[0] = a; pos[1] = b; updateValues(pos); } public String getEqualJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return 1/(1+ Math.exp( (a-x)/b )); "+eol; return code; } public String getGreqJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " double y = (b>0? x : min);"+eol; code += " return 1 / (1+ Math.exp( (a-y)/b ));"+eol; return code; } public String getSmeqJavaCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " double y = (b<0? x : max);"+eol; code += " return 1 / (1+ Math.exp( (a-y)/b ));"+eol; return code; } public String getEqualCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return 1/(1+ exp( (a-x)/b )); "+eol; return code; } public String getGreqCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " double y = (b>0? x : min);"+eol; code += " return 1 / (1+ exp( (a-y)/b ));"+eol; return code; } public String getSmeqCCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " double y = (b<0? x : max);"+eol; code += " return 1 / (1+ exp( (a-y)/b ));"+eol; return code; } public String getEqualCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " return 1/(1+ exp( (a-x)/b )); "+eol; return code; } public String getGreqCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " double y = (b>0? x : min);"+eol; code += " return 1 / (1+ exp( (a-y)/b ));"+eol; return code; } public String getSmeqCppCode() { String eol = System.getProperty("line.separator", "\n"); String code = ""; code += " double y = (b<0? x : max);"+eol; code += " return 1 / (1+ exp( (a-y)/b ));"+eol; return code; } }