Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
            }
        }