Example #1
0
        public int Process()
        {
            //NumExpert = OptionsList[0].Count;
            //NumCriteria = PairComparisonList[0].Matrix.GetLength(0);
            //NumOptions = OptionsList[0][0].Matrix.GetLength(0);
            // Step3
            // калькуляция сводной таблицы
            double[,] summaryTable = CalculateSummaryTable(PairComparisonList);
            //Локальные приоритеты критериев
            var localPriority = CalculateLocalPriority(summaryTable);

            //Step4
            Validate(summaryTable, localPriority);
            //Step6
            List <double[]> summaryLocalPriorityOptions = OptionsList.Select(x => CalculateLocalPriority(CalculateSummaryTable(x))).ToList();
            var             result = summaryLocalPriorityOptions.Select((x, i) =>
                                                                        new
            {
                Val = x.Select(
                    (el, j) => el * localPriority[j]).Sum(),
                Index = i
            }).OrderByDescending(item => item.Val).FirstOrDefault()?.Index;

            return(result ?? -1);
        }