예제 #1
0
        private PairwiseComparisonSolution IntervalPreferenceProgramming(IntervalPairwiseComparisonMatrix matrix)
        {
            int n = matrix.Size;

            int m = n * (n - 1);
            int k = 0;

            double[,] R = new double[n * (n - 1), n];

            for (int i = 0; i < n - 1; i++)
            {
                for (int j = 1; j < n; j++)
                {
                    if (i >= j)
                    {
                        continue;
                    }

                    R[k, i] = 1;
                    R[k, j] = -matrix[i, j].UpperLimit;

                    R[k + 1, i] = -1;
                    R[k + 1, j] = matrix[i, j].LowerLimit;

                    k++;
                    k++;
                }
            }

            double[] weights = _engine.IntervalPreferenceProgramming(R, _admissionParameters);

            return(new PairwiseComparisonSolution()
            {
                ConsistencyIndex = weights[0], Weights = weights.Skip(1).ToArray()
            });
        }
 public IntervalPreferenceProgrammingSolution(IntervalPairwiseComparisonMatrix matrix, double[] weights, double consistencyIndex)
 {
     _matrix           = matrix;
     _weights          = weights;
     _consistencyIndex = consistencyIndex;
 }