Examples of MembershipFunction


Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

  private MembershipFunction fclTreeFuzzifyTermTriangular(AST tree) {
    AST child = tree.getFirstChild();
    double min = parseDouble(child);
    double mid = parseDouble(child.getNextSibling());
    double max = parseDouble(child.getNextSibling().getNextSibling());
    MembershipFunction membershipFunction = new MembershipFunctionTriangular(min, mid, max);
    return membershipFunction;
  }
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

   * Add membershipfunction to deffuzifier (using 'min' as inference)
   */
  public void imply(FuzzyRuleTerm fuzzyRuleTerm, double degreeOfSupport) {
    Variable variable = fuzzyRuleTerm.getVariable();
    Defuzzifier defuzzifier = variable.getDefuzzifier();
    MembershipFunction mf = fuzzyRuleTerm.getMembershipFunction();
    double membership, y, x, aggregated = 0;

    // Both are equal? (both discrete or both continuous?)
    if( mf.isDiscrete() != defuzzifier.isDiscrete() ) throw new RuntimeException("MembershipFunction and Defuzzifier are neither both discrete nor both continuous\n\tTerm: " + fuzzyRuleTerm + "\n\tMembership function: " + mf + "\n\tDefuzzifier: " + defuzzifier + "\n");

    if( mf.isDiscrete() ) {
      //---
      // Discrete case
      //---
      DefuzzifierDiscrete defuzzifierDiscrete = (DefuzzifierDiscrete) defuzzifier;
      MembershipFunctionDiscrete mfd = (MembershipFunctionDiscrete) mf;

      // Add membershipfunction to deffuzifier
      int i, size = mfd.size();
      for( i = 0; i < size; i++ ) {
        // Get 'x' value
        x = mfd.valueX(i);

        // Is term negated?
        if( fuzzyRuleTerm.isNegated() ) membership = 1 - mf.membership(x);
        else membership = mf.membership(x);

        y = imply(degreeOfSupport, membership); // Call to abstract implication method described above

        // Aggregate value
        aggregated = variable.getRuleAggregationMethod().aggregate(defuzzifierDiscrete.getDiscreteValue(x), y);
        defuzzifierDiscrete.setPoint(x, aggregated);
      }
    } else {
      //---
      // Continuous case
      //---
      DefuzzifierContinuous defuzzifierContinuous = (DefuzzifierContinuous) defuzzifier;
      x = defuzzifierContinuous.getMin();
      double step = defuzzifierContinuous.getStepSize();

      // Do some sanitychecks
      if( Double.isNaN(x) || Double.isInfinite(x) ) throw new RuntimeException("Universe minimum not calculated for term '" + fuzzyRuleTerm.getTermName() + "' : " + x);
      if( Double.isNaN(step) || Double.isInfinite(step) ) throw new RuntimeException("Step not calculated for term '" + fuzzyRuleTerm.getTermName() + "' : " + step);

      int i, length = defuzzifierContinuous.getLength();

      // Add membershipfunction to deffuzifier
      for( i = 0; i < length; i++, x += step ) {
        // Is term negated?
        if( fuzzyRuleTerm.isNegated() ) membership = 1 - mf.membership(x);
        else membership = mf.membership(x);

        y = imply(degreeOfSupport, membership); // Call to abstract implication method described above

        // Aggregate value
        aggregated = variable.getRuleAggregationMethod().aggregate(defuzzifierContinuous.getValue(i), y);
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

    //---
    int j = 0;
    for( Iterator<String> it = iteratorLinguisticTermNames(); it.hasNext(); j++ ) {
      // Add this linguistic term to dataset
      String termName = it.next();
      MembershipFunction membershipFunction = getLinguisticTerm(termName).getMembershipFunction();
      discrete &= membershipFunction.isDiscrete();

      // Create a series and add points
      XYSeries series = new XYSeries(termName);
      if( membershipFunction.isDiscrete() ) {
        // Discrete case: Evaluate membership function and add points to dataset
        MembershipFunctionDiscrete membershipFunctionDiscrete = (MembershipFunctionDiscrete) membershipFunction;
        numberOfPoints = membershipFunctionDiscrete.size();
        for( int i = 0; i < numberOfPoints; i++ )
          series.add(membershipFunctionDiscrete.valueX(i), membershipFunctionDiscrete.membership(i));
      } else {
        // Continuous case: Add every membershipfunction's point
        numberOfPoints = PlotWindow.DEFAULT_CHART_NUMBER_OF_POINTS;
        double xx = universeMin;
        for( int i = 0; i < numberOfPoints; i++, xx += step )
          series.add(xx, membershipFunction.membership(xx));
      }

      // Add serie to dataSet
      xyDataset.addSeries(series);
    }
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

    // Calculate max / min on every membership function
    double umin = Double.POSITIVE_INFINITY;
    double umax = Double.NEGATIVE_INFINITY;
    for( Iterator<String> it = iteratorLinguisticTermNames(); it.hasNext(); ) {
      String lingTerm = it.next();
      MembershipFunction membershipFunction = getMembershipFunction(lingTerm);
      membershipFunction.estimateUniverse();

      umin = Math.min(membershipFunction.getUniverseMin(), umin);
      umax = Math.max(membershipFunction.getUniverseMax(), umax);
    }

    // Set parameters (if not setted)
    if( Double.isNaN(universeMin) ) universeMin = umin;
    if( Double.isNaN(universeMax) ) universeMax = umax;
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

    return linguisticTerms;
  }

  /** Evaluate 'termName' membershipfunction at 'value' */
  public double getMembership(String termName) {
    MembershipFunction mf = getMembershipFunction(termName);
    if( mf == null ) throw new RuntimeException("No such termName: \"" + termName + "\"");
    return mf.membership(value);
  }
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

   * Add membershipfunction to deffuzifier (using 'min' as inference)
   */
  public void imply(RuleTerm fuzzyRuleTerm, RuleAccumulationMethod ruleAccumulationMethod, double degreeOfSupport) {
    Variable variable = fuzzyRuleTerm.getVariable();
    Defuzzifier defuzzifier = variable.getDefuzzifier();
    MembershipFunction mf = fuzzyRuleTerm.getMembershipFunction();
    double membership, y, x, aggregated = 0;

    // Both are equal? (both discrete or both continuous?)
    if( mf.isDiscrete() != defuzzifier.isDiscrete() ) throw new RuntimeException("MembershipFunction and Defuzzifier are neither both discrete nor both continuous\n\tTerm: " + fuzzyRuleTerm + "\n\tMembership function: " + mf + "\n\tDefuzzifier: " + defuzzifier + "\n");

    if( mf.isDiscrete() ) {
      //---
      // Discrete case
      //---
      DefuzzifierDiscrete defuzzifierDiscrete = (DefuzzifierDiscrete) defuzzifier;
      MembershipFunctionDiscrete mfd = (MembershipFunctionDiscrete) mf;

      // Add membershipfunction to deffuzifier
      int i, size = mfd.size();
      for( i = 0; i < size; i++ ) {
        // Get 'x' value
        x = mfd.valueX(i);

        // Is term negated?
        if( fuzzyRuleTerm.isNegated() ) membership = 1 - mf.membership(x);
        else membership = mf.membership(x);

        y = imply(degreeOfSupport, membership); // Call to abstract implication method described above

        // Aggregate value
        aggregated = ruleAccumulationMethod.aggregate(defuzzifierDiscrete.getDiscreteValue(x), y);
        defuzzifierDiscrete.setPoint(x, aggregated);
      }
    } else {
      //---
      // Continuous case
      //---
      DefuzzifierContinuous defuzzifierContinuous = (DefuzzifierContinuous) defuzzifier;
      x = defuzzifierContinuous.getMin();
      double step = defuzzifierContinuous.getStepSize();

      // Do some sanitychecks
      if( Double.isNaN(x) || Double.isInfinite(x) ) throw new RuntimeException("Universe minimum not calculated for term '" + fuzzyRuleTerm.getTermName() + "' : " + x);
      if( Double.isNaN(step) || Double.isInfinite(step) ) throw new RuntimeException("Step not calculated for term '" + fuzzyRuleTerm.getTermName() + "' : " + step);

      int i, length = defuzzifierContinuous.getLength();

      // Add membershipfunction to deffuzifier
      for( i = 0; i < length; i++, x += step ) {
        // Is term negated?
        if( fuzzyRuleTerm.isNegated() ) membership = 1 - mf.membership(x);
        else membership = mf.membership(x);

        y = imply(degreeOfSupport, membership); // Call to abstract implication method described above

        // Aggregate value
        aggregated = ruleAccumulationMethod.aggregate(defuzzifierContinuous.getValue(i), y);
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

    //---
    int j = 0;
    for( Iterator it = v.iteratorLinguisticTermNames(); it.hasNext(); j++ ) {
      // Add this linguistic term to dataset
      String termName = (String) it.next();
      MembershipFunction membershipFunction = v.getLinguisticTerm(termName).getMembershipFunction();
      discrete &= membershipFunction.isDiscrete();

      // Create a series and add points
      XYSeries series = new XYSeries(termName);
      if( membershipFunction.isDiscrete() ) {
        // Discrete case: Evaluate membership function and add points to dataset
        MembershipFunctionDiscrete membershipFunctionDiscrete = (MembershipFunctionDiscrete) membershipFunction;
        numberOfPoints = membershipFunctionDiscrete.size();
        for( int i = 0; i < numberOfPoints; i++ )
          series.add(membershipFunctionDiscrete.valueX(i), membershipFunctionDiscrete.membership(i));
      } else {
        // Continuous case: Add every membershipfunction's point
        numberOfPoints = PlotWindow.DEFAULT_CHART_NUMBER_OF_POINTS;
        double xx = universeMin;
        for( int i = 0; i < numberOfPoints; i++, xx += step )
          series.add(xx, membershipFunction.membership(xx));
      }

      // Add serie to dataSet
      xyDataset.addSeries(series);
    }
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

    //       TERM excellent := (6, 0) (9, 1);
    //    END_FUZZIFY

    Value poorX[] = { new Value(0), new Value(4) };
    Value poorY[] = { new Value(1), new Value(0) };
    MembershipFunction poor = new MembershipFunctionPieceWiseLinear(poorX, poorY);

    MembershipFunction good = new MembershipFunctionTrapetzoidal(new Value(1), new Value(4), new Value(6), new Value(9));

    Value exX[] = { new Value(6), new Value(9), new Value(10) };
    Value exY[] = { new Value(0), new Value(1), new Value(1) };
    MembershipFunction excellent = new MembershipFunctionPieceWiseLinear(exX, exY);

    LinguisticTerm ltPoor = new LinguisticTerm("poor", poor);
    LinguisticTerm ltGood = new LinguisticTerm("good", good);
    LinguisticTerm ltExcellent = new LinguisticTerm("excellent", excellent);

    service.add(ltPoor);
    service.add(ltGood);
    service.add(ltExcellent);

    //    FUZZIFY food
    //       TERM rancid := (0, 1) (1, 1) (3,0) ;
    //       TERM delicious := (7,0) (9,1) (10,1);
    //    END_FUZZIFY

    Value ranX[] = { new Value(0), new Value(1), new Value(3) };
    Value ranY[] = { new Value(1), new Value(1), new Value(0) };
    MembershipFunction rancid = new MembershipFunctionPieceWiseLinear(ranX, ranY);

    Value delX[] = { new Value(7), new Value(9), new Value(10) };
    Value delY[] = { new Value(0), new Value(1), new Value(1) };
    MembershipFunction delicious = new MembershipFunctionPieceWiseLinear(delX, delY);

    LinguisticTerm ltRancid = new LinguisticTerm("rancid", rancid);
    LinguisticTerm ltDelicious = new LinguisticTerm("delicious", delicious);

    food.add(ltRancid);
    food.add(ltDelicious);

    //    DEFUZZIFY tip
    //       TERM cheap := (0,0) (5,1) (10,0);
    //       TERM average := (10,0) (15,1) (20,0);
    //       TERM generous := (20,0) (25,1) (30,0);
    //       METHOD : COG;
    //       DEFAULT := 0;
    //    END_DEFUZZIFY

    MembershipFunction cheap = new MembershipFunctionTriangular(new Value(0), new Value(5), new Value(10));
    MembershipFunction average = new MembershipFunctionTriangular(new Value(10), new Value(15), new Value(20));
    MembershipFunction generous = new MembershipFunctionTriangular(new Value(20), new Value(25), new Value(30));

    LinguisticTerm ltCheap = new LinguisticTerm("cheap", cheap);
    LinguisticTerm ltAverage = new LinguisticTerm("average", average);
    LinguisticTerm ltGenerous = new LinguisticTerm("generous", generous);
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

    String termName = tree.getChild(0).getText();
    Tree child = tree.getChild(1);
    String leaveName = child.getText();
    if( debug ) Gpr.debug("\t\tTermname: " + termName + "\tLeavename: " + leaveName);

    MembershipFunction membershipFunction = null;
    if( leaveName.equalsIgnoreCase("POINT") ) membershipFunction = fclTreeFuzzifyTermPieceWiseLinear(tree);
    else if( leaveName.equalsIgnoreCase("COSINE") ) membershipFunction = fclTreeFuzzifyTermCosine(child);
    else if( leaveName.equalsIgnoreCase("DSIGM") ) membershipFunction = fclTreeFuzzifyTermDifferenceSigmoidal(child);
    else if( leaveName.equalsIgnoreCase("GAUSS") ) membershipFunction = fclTreeFuzzifyTermGauss(child);
    else if( leaveName.equalsIgnoreCase("TRIAN") ) membershipFunction = fclTreeFuzzifyTermTriangular(child);
View Full Code Here

Examples of net.sourceforge.jFuzzyLogic.membership.MembershipFunction

   */
  private MembershipFunction fclTreeFuzzifyTermCosine(Tree tree) {
    if( debug ) Gpr.debug("Tree: " + tree.toStringTree());
    Value net_max = new Value(tree.getChild(0), this);
    Value offset = new Value(tree.getChild(1), this);
    MembershipFunction membershipFunction = new MembershipFunctionCosine(net_max, offset);
    return membershipFunction;
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.