方法步骤
1.分析系统中各因素之间的关系,建立系统的递阶层级结构。
2.对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。
上图即为一个判断矩阵,而判断矩阵是怎么填的话就是根据下表:
几个概念:
<1> 正互反矩阵:若矩阵中每个元素𝑎ij > 0且满足aij * aji = 1,则这个矩阵为正互反矩阵,判断矩阵都是正互反矩阵。
<2> 一致矩阵:若正反矩阵满足aij * ajk = aik,则我们称其为一致矩阵。
上图中构造的矩阵为目标层-准则层的判断矩阵,而我们下面的这个是准则层-方案层的矩阵。
需要注意的是:准则层—方案层的判断矩阵的数值要结合实际来填写,如果题目中有其他数据,可以考虑利用这些数据进行计算。
3.进行一致性检验(检验通过权重才能用)。
检验我们构造的判断矩阵和一致矩阵是否有太大的差别。
注:一致矩阵不需要进行一致性检验,只有非一致矩阵的判断矩阵才需要进行一致性检验。
一致性检验的步骤:
<1> 计算一致性指标CI:
其中λ 为最大特征根,n为矩阵的大小。
<2> 查找对应的平均随机一致性指标RI。
<3> 计算一致性比例CR
如果CR < 0.1,则认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。只需将原有矩阵往一致矩阵调整,一致矩阵各行成倍数关系。
4.根据权重矩阵计算得分,并进行排序。
下面介绍三种方法计算权重,但建议比赛的时候都用。
<1> 算术平均法:
第一步,将判断矩阵按照列归一化(每一个元素除以其所在列的和)。
第二步,将归一化的各列相加(按行求和)。
第三步,将相加后得到的向量中每个元素除以n即可得到权重向量。
<2> 几何平均法
第一步,将矩阵中的元素按照行相乘得到一个新的列向量。
第二步,将新的向量的每个分量开n次方。
第三步,对该列向量进行归一化即可得到权重向量。
<3> 特征值法
第一步,求出矩阵的最大特征值以及其对应的特征向量。
第二步,对求出的特征向量进行归一化即可得到我们的权重。
局限性
评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大。而且在我们的平均随机一致性指标RI的表格中n最多是15。
代码
首先初始化一个矩阵:
A = [1 1 4 1/3 3;
1 1 4 1/3 3;
1/4 1/4 1 1/3 1/2;
3 3 3 1 3;
1/3 1/3 2 1/3 1]
算术平均法:
Sum_A = sum(A)
[n,n] = size(A)
SUM_A = repmat(Sum_A,n,1)
Stand_A = A./SUM_A
sum(Stand_A,2) / n
我们通过repmat函数构造出一个重复的Sum_A矩阵,当我们归一化时,直接除以相对应位置即可。
几何平均法:
Prduct_A = prod(A,2)
Prduct_n_A = Prduct_A .^ (1/n)
Prduct_n_A./sum(Prduct_n_A)
唯一需要注意的是开n次方需要用点乘。
特征值法:
[V,D] = eig(A)
Max_eig = max(max(D))
[r,c] = find(D == Max_eig,1)
V(:,c)/sum(V(:,c))
其中V是特征向量,D是由特征值构成的对角矩阵。由于需要找到最大特征值相对应的特征向量,所以我们可以利用D == Max _eig将不是所求最大特征值的地方变为0,最大特征值的地方变为1,然后利用find函数找到其位置即可。
计算一致性
CI = (Max_eig - n)/(n - 1)
RI = [0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]
CR = CI / RI(n)