public decimal CalculateNormalizedScore(SawNormalizationMethod method, WeightVector weightVector, decimal[] rowValues, decimal[] minVector, decimal[] maxVector) { var score = 0.0m; for (int i = 0; i < NumberOfColumns; i++) { if (method == SawNormalizationMethod.LinearFirstType) { var isProfit = DecisionCriterias.First(x => x.Position == i).IsProfit; var weight = weightVector.GetValue(i); if (isProfit) { var denom = (maxVector[i] - minVector[i]); score += denom != 0 ? (((rowValues[i] - minVector[i]) / denom) * weight) : 0; } else { var denom = (maxVector[i] - minVector[i]); score += denom != 0 ? ((1 - ((rowValues[i] - minVector[i])) / denom) * weight) : 0; } } else { return(0.0m); } } return(score); }
private decimal Validate(WeightVectorLabel label, decimal?value) { var criteria = DecisionCriterias.First(x => x.Position == (int)label); if (!value.HasValue) { return(criteria.ReserveLevel); } if (criteria.IsProfit) { return(GetInRange(value.Value, criteria.ReserveLevel, criteria.AspirationLevel)); } else { return(GetInRange(value.Value, criteria.AspirationLevel, criteria.ReserveLevel)); } }