Package infosapient.resolution

Source Code of infosapient.resolution.FzyResCENTROID

package infosapient.resolution;
/*
* Copyright (c) 2001, Workplace Performance Tools, All Rights Reserved.
*
* LICENSE TO USE THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE 0.5
* ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
* RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
* The license may be viewed at:
* http://www.opensource.org/licenses/cpl.html
*/

import infosapient.system.FSEvent;
import infosapient.system.FzySystemException;
import infosapient.system.FzySet;
import java.rmi.server.ObjID;

/**
* Use the CENTROID method for defuzzification.
*   centerOfMass = SUM(d(i)*m(i))/SUM(m(i))
*   return the membership of (int) centerOfMass.
* @author: Michael McConnell
* @version $Revision: 1.1.1.1 $
*/
public class FzyResCENTROID extends FzyResolutionMethod {
  static final long serialVersionUID = -3673394684947280463L;
  /**
  *
  */
  public FzyResCENTROID() {super();}
  public String getName() { return "centroid"; }
  /**
  * @param FzySet the FzySet to be defuzzified.
  * @return double the 'crisp' value of the FzySet.
  * Defuzzify the set using the Centroid method
  */
  protected synchronized double resolveUsing(FzySet fset) {
  int i;
  double resultant = Double.NaN;
  if (fset.isNormal()) {
    VECMAX = fset.getVECMAX();
    double lDomain[] = new double[VECMAX];
    double lMember[] = new double[VECMAX];
    lDomain = fset.getDomainArray();
    lMember = fset.getMemberArray();
    double x = 0.0;
    double y = fset.integrateMbr();
    for (i = 0; i < VECMAX; i++){
    x = (lDomain[i] * lMember[i]) + x;
    }
    try {
    resultant = x / y;
    } catch (ArithmeticException ae) {
    notifyObservers(new FSEvent(this, "Error", ae));
    }
    try {
    fset.setSolution(resultant);
    if (DEBUG_[2]) trace[2].println(" Resolved value for set: "
                + fset.getQualifiedName()
                +" is: " + fset.getSolution()
                +", with degree of membership " + fset.getSolutionDOM());
    } catch (Exception iae) {
    notifyObservers(new FSEvent(this, "Error", iae));
    }
  } else {
    if (DEBUG_[2]) trace[2].println(
    " ***WARNING**** Centroid method not performed as fset membership not normalized.");
  }
  return fset.getSolution();
  }
}
TOP

Related Classes of infosapient.resolution.FzyResCENTROID

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.