public object ComputeMeanValue(ArrayList stats, string featureName) { double sum = 0; double totalSimilarity = 0; for (int i = 0; i < stats.Count; i++) { IStat s = (IStat)stats[i]; Case c = s.GetCBRCase(); if (c != null) { Feature f = c.GetFeature(featureName); if (f != null) { if (f.GetFeatureType() == FeatureType.TYPE_FEATURE_FLOAT) { sum += (double)f.GetFeatureValue() * s.GetCaseSimilarity(); totalSimilarity += s.GetCaseSimilarity(); } else if (f.GetFeatureType() == FeatureType.TYPE_FEATURE_INT) { sum += (int)f.GetFeatureValue() * s.GetCaseSimilarity(); totalSimilarity += s.GetCaseSimilarity(); } else { throw new Exception("ComputeMeanValue method exception:unsupported type"); } } } } if (totalSimilarity == 0) { throw new Exception("ComputeMeanValue method exception"); } return(sum / totalSimilarity); }