目录
二、构造判断矩阵
一、基本思想
层次分析法是基于各个准则(评价标准)对各个方案进行打分,通过比较各个方案的加权总得分来选出最优方案。
例如:考虑择校问题,当我们计算出各个要素的权值、得分后可以对各个大学进行评分。(下面的数据仅对层次分析法做举例说明)
二、构造判断矩阵
我们已经知道了层次分析法的计算方法,现在的问题是如何对表中的数据进行填写。如果我们仅仅是凭借直观的印象进行填写表格,难免会出现判断失误、缺乏科学性的错误,因为我们对于数据的填写/计算引入了科学的方法。简单来说就是判断矩阵的方法,判断矩阵让各个要素直接两两比较,更加直接。
指标的选择可以根据常识、知网论文、题目中涉及的因素
判断矩阵A中表示和j要素相比i的重要程度,一般由我们自己查找资料后填写。我们做出下面的规定:
这里还是以上面的择校问题为例,我填写的判断矩阵:
权重判断矩阵:
科研成果 | 师资力量 | 校园生活 | 国际合作 | 学科设置 | |
科研成果 | 1 | 3 | 5 | 3 | 1 |
师资力量 | 1/3 | 1 | 4 | 1 | 8 |
校园生活 | 1/5 | 1/4 | 1 | 1/5 | 1/8 |
国际合作 | 1/3 | 1 | 5 | 1 | 1 |
学科设置 | 1 | 1/8 | 8 | 1 | 1 |
各准则下各方案判断矩阵:
科研成果 | 复旦大学 | 南京大学 | 武汉大学 |
复旦大学 | 1 | 2 | 3 |
南京大学 | 1/2 | 1 | 1 |
武汉大学 | 1/3 | 1 | 1 |
师资力量 | 复旦大学 | 南京大学 | 武汉大学 |
复旦大学 | 1 | 1 | 2 |
南京大学 | 1 | 1 | 2 |
武汉大学 | 1/2 | 1/2 | 1 |
校园生活 | 复旦大学 | 南京大学 | 武汉大学 |
复旦大学 | 1 | 1/2 | 1/2 |
南京大学 | 2 | 1 | 1/2 |
武汉大学 | 2 | 2 | 1 |
国际合作 | 复旦大学 | 南京大学 | 武汉大学 |
复旦大学 | 1 | 1/2 | 1/3 |
南京大学 | 2 | 1 | 1 |
武汉大学 | 3 | 1 | 1 |
学科设置 | 复旦大学 | 南京大学 | 武汉大学 |
复旦大学 | 1 | 2 | 3 |
南京大学 | 1/2 | 1 | 1/2 |
武汉大学 | 1/3 | 2 | 1 |
三、判断矩阵一致性检验
1.为什么要进行一致性检验?
在填写指标重要性时由于我们是两个两个比较的,不可避免的会出现不符合逻辑的地方,可能会出现A>B,A=C,C>B这样的逻辑矛盾。
完全没有逻辑矛盾的矩阵称为“一致矩阵”,一致矩阵具有的特点:各列之间成倍数,正互反矩阵:也就是矩阵中各个元素都是正数,
2.怎样进行一致性检验?
进行一致性检验的过程也就是计算我们填写的判断矩阵和一致性矩阵差别大小的过程。
一致性检验基于:当且仅当n阶正互反矩阵A为一致性矩阵时,最大特征值为n。当正互反矩阵A非一致时,一定满足最大特征值大于n。判断矩阵越不一致时,最大特征值和n的差距越大。
步骤1:一致性指标
步骤2:查找平均随机一致性指标RI,其中n为矩阵的阶数
步骤3:计算一致性比例CR
CR=CI/RI,如果小于0.1则表示可以接受,否则需要对判断矩阵就行修订
matlab代码
disp('请输入判断矩阵A: ')
A = input('判断矩阵A=')
[V,D] = eig(A) %V是特征向量, D是由特征值构成的对角矩阵
Max_e = max(max(D))
[n,n]=size(A);
CI = (Max_e - 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]; %注意哦,这里的RI最多支持 n = 15
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
disp('因为CR < 0.10,所以该判断矩阵A的一致性可以接受!');
else
disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end
四、根据判断矩阵计算权值
1.算数平均法
步骤1:判断矩阵按列归一化
步骤2:归一化后的矩阵按照行的方向(横向)相加
步骤3:相加后的向量每个元素除n
matlab实现
disp('请输入判断矩阵A: ')
A = input('判断矩阵A=');
n=size(A,1);
B=A./repmat(sum(A),n,1)
C=sum(B,2)/n
2.几何平均法
步骤1:将判断矩阵的元素每行相乘得到一个列向量
步骤2:对该列向量的每个分量开n次方
步骤3:对该列向量进行归一化处理
matlab实现
disp('请输入判断矩阵A: ')
A = input('判断矩阵A=');
n=size(A,1);
B=prod(A,2);
C=B.^(1/n);
C=C./sum(C)
3.特征值法
步骤1:对判断矩阵求最大特征值以及对应的特征向量
步骤2:对特征向量进行归一化处理
matlab实现
disp('请输入判断矩阵A: ')
A = input('判断矩阵A=');
n=size(A,1);
[B,C]=eig(A);
% B是特征向量矩阵,C是特征值矩阵
max_eig=max(C(:));
[i,j]=find(C==max_eig);
B_max=B(:,j);%取最大特征值对应的特征向量
B_max=B_max./sum(B_max)
五、结果
复旦大学
0.3354*0.5499+0.3203*0.4+0.0376*0.1958+0.1488*0.1692+0.1579*0.5476=0.43149838
南京大学
0.3354*0.2402+0.3203*0.2+0.0376*0.3108+0.1488*0.3874+0.1579*0.1897=0.24390791
武汉大学
0.3354*0.2098+0.3203*0.2+0.0376*0.4934+0.1488*0.4434+0.1579*0.2631=0.26050017
指标权重 | 复旦大学 | 南京大学 | 武汉大学 | |
科研成果 | 0.3354 | 0.5499 | 0.2402 | 0.2098 |
师资力量 | 0.3203 | 0.4 | 0.2 | 0.2 |
校园生活 | 0.0376 | 0.1958 | 0.3108 | 0.4934 |
国际合作 | 0.1488 | 0.1692 | 0.3874 | 0.4434 |
学科设置 | 0.1579 | 0.5472 | 0.1897 | 0.2631 |