std::string DiscreteTerm::toString() const { std::stringstream ss; ss << LinguisticTerm::toString(); ss << "Discrete ("; for (int i = 0; i < numberOfCoords(); ++i) { ss << "{" << _x[i] << "," << _y[i] << "}"; if (i < numberOfCoords() - 1) { ss << " "; } } ss << ")"; return ss.str(); }
void Initial::setCoordString() { int ylen = numberOfCoords(); string *coordList = new string[ylen]; int i = startPoint(); int j = 0; string str = ""; /*List of strings. Each string is a coordinate *pair.*/ while(j<ylen) { while(i<buffer.length() && buffer[i]!=')') str+=buffer[i++]; //Grabs ) if(i<buffer.length()) str+=buffer[i++]; //Skips comma inbetween ) ( i++; coordList[j++] = str; str = ""; } setCoord(coordList,ylen); }
flScalar DiscreteTerm::maximum() const { flScalar result = -INFINITY; for (int i = 0; i < numberOfCoords(); ++i) { if (_x[i] > result) { result = _x[i]; } } return isinf(result) ? NAN : result; }
flScalar DiscreteTerm::maximum() const { flScalar result = -(log (0.0)); for (int i = 0; i < numberOfCoords(); ++i) { if (_x[i] > result) { result = _x[i]; } } return isinfa(result) ? sqrt(-1.0) : result; }
flScalar DiscreteTerm::membership(flScalar crisp) const { flScalar closer = INFINITY; flScalar result = NAN; for (int i = 0; i < numberOfCoords(); ++i) { if (fabs(crisp - _x[i]) < closer) { closer = fabs(crisp - _x[i]); result = _y[i]; } } return result; }