本文介绍了层次分析法(AHP)在解决志愿填报问题中的应用。首先,给出了问题的背景和目标,然后详细介绍了层次分析法的步骤和计算方法。通过 MATL
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
这篇文章距离上次更新已经过去了 620 天,其中的某些内容可能不再适用了,请谨慎阅读。
层次分析法
层次分析法,简称 AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于 20 世纪 70 年代初,在为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
层次分析法一般包括以下几个步骤:
- 建立层次结构模型
- 构造判断矩阵
- 层次单排序及其一致性检验
- 层次总排序及其一致性检验
建立层次结构模型
将将决策的目标、考虑的因素(决策准则)和决策方案,按它们之间的相互关系分为最高层、中间层和最低层,画出层次结构图。
- 最高层:目标层。决策的目的、要解决的问题。
- 中间层:准则层。考虑的因素、决策的准则。
- 最低层:方案层。决策时可供选择的方案。

构造判断矩阵
在确定各层次各因素之间的权重时,如果只是定性的结果,则常常不容易被别人接受,因而 Saaty 等人提出一致矩阵法,即不把所有因素放在一起比较,而是两两相互比较,对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。如对某一准则,对其下的各方案进行两两对比,并按其重要性程度评定等级。aij 为要素i 与要素j 重要性比较结果,按两两比较结果构成的矩阵称作判断矩阵,判断矩阵具有如下性质:
aij>0,aij=aji1,aii=1 下表列出了 Saaty 给出的 9 个重要性等级及其赋值:
因素i 与因素j 的重要性比较结果 | 量化值 |
---|
i 与j 同等重要 | 1 |
i 比j 稍微重要 | 3 |
i 比j 较强重要 | 5 |
i 比j 强烈重要 | 7 |
i 比j 极端重要 | 9 |
两相邻判断的中间值 | 2, 4, 6, 8 |
层次单排序及其一致性检验
对应于判断矩阵最大特征根λmax 的特征向量,经归一化(使向量中各元素之和等于 1)后记为W。W 的元素为同一层次因素对于上一层次因素某因素相对重要性的排序权值,这一过程称为层次单排序。得到的W 称为单层权向量。
计算得到的单层权向量W 是否合理,取决于判断矩阵是否一致,一个完全一致的判断矩阵A 应满足以下条件:
aijajk=aik,∀i,j,k∈{1,2,⋯,n} 但事实上,由于人们的主观性,构造出来的判断矩阵很难做到完全一致,因此人们引入了一致性指标CI 来衡量判断矩阵的一致性,CI 的计算公式为:
CI=n−1λmax−n - 当CI=0 时,判断矩阵A 完全一致。
- 当CI>0 时,判断矩阵A 不一致。
- 当CI 值越大,判断矩阵A 不一致程度越大。
为了衡量CI 的大小,引入了随机一致性指标RI:
RI=n1i=1∑nCIi 一般情况下,矩阵阶数越大,则出现一致性随机偏离的可能性也越大,即RI 的值会随着n 的增大而增大,RI 的值与n 的关系如下表所示:
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|
RI | 0 | 0 | 0.58 | 0.90 | 1.12 | 1.24 | 1.32 | 1.41 | 1.45 | 1.49 |
考虑到一致性的偏离可能是由于随机原因造成的,因此在检验判断矩阵是否具有满意的一致性时,还需将CI 和随机一致性指标RI 进行比较,得出一致性比例CR ,公式如下:
CR=RICI 通常情况下,我们认为:
- 当CR<0.1 时,判断矩阵A 具有满意的一致性。
- 当CR>0.1 时,判断矩阵A 不具有满意的一致性。
层次总排序及其一致性检验
计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。这一过程是从最高层次到最低层次依次进行的。
对于第k 层次,设其一致性指标为CI(k),随机一致性指标为RI(k),则有:
CI(k)=CI(k)TW(k−1)RI(k)=RI(k)TW(k−1) 第k 层次的一致性比例为:
CR(k)=RI(k)CI(k) 评判标准与层次单排序相同。
层次分析法解志愿填报问题
问题描述
小李需要填报考研志愿,已经确定了 3 个方案,需要你从专业认可度、院校认可度、院校所在地、考研难易 4 个方面进行评估,最终确定最佳方案。

小李给出的准则层判断矩阵如下:
A=11/21/41/2211/31/24313221/31 小李对预选的 3 个方案进行了两两比较,得到的判断矩阵如下:
B1=11/41/6411/2621,B2=11/21/3211/2321,B3=11/8181911/91,B4=11/21/4211/3431 MATLAB 求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| A = [1 2 4 2; 1/2 1 3 2; 1/4 1/3 1 1/3; 1/2 1/2 3 1];
B1 = [1 4 6; 1/4 1 2; 1/6 1/2 1]; B2 = [1 2 3; 1/2 1 2; 1/3 1/2 1]; B3 = [1 8 1; 1/8 1 1/9; 1 9 1]; B4 = [1 2 4; 1/2 1 3; 1/4 1/3 1];
[V2, D2] = eig(A); W2 = V2(:, 1) / sum(V2(:, 1)); lambda2 = D2(1, 1);
CI2 = (lambda2 - size(A, 1)) / (size(A, 1) - 1); RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49]; CR2 = CI2 ./ RI(size(A, 1)); if CR2 < 0.1 disp('准则层一致性检验通过'); CR2 else error('准则层一致性检验不通过'); end
[V3_1, D3_1] = eig(B1); [V3_2, D3_2] = eig(B2); [V3_3, D3_3] = eig(B3); [V3_4, D3_4] = eig(B4); W3_1 = V3_1(:, 1) / sum(V3_1(:, 1)); W3_2 = V3_2(:, 1) / sum(V3_2(:, 1)); W3_3 = V3_3(:, 1) / sum(V3_3(:, 1)); W3_4 = V3_4(:, 1) / sum(V3_4(:, 1)); lambda3_1 = D3_1(1, 1); lambda3_2 = D3_2(1, 1); lambda3_3 = D3_3(1, 1); lambda3_4 = D3_4(1, 1);
lambda3 = [lambda3_1 lambda3_2 lambda3_3 lambda3_4]; CI3 = (lambda3 - size(B1, 1)) ./ (size(B1, 1) - 1); CR3 = CI3 ./ RI(size(B1, 1)); if CR3 < 0.1 disp('方案层一致性检验通过'); CR3 else error('方案层一致性检验不通过'); end
CR = CR2 + CR3 * W2; if CR < 0.1 disp('组合一致性检验通过'); CR else error('组合一致性检验不通过'); end
W3 = [W3_1 W3_2 W3_3 W3_4]; W = W3 * W2;
disp('最终权向量为:'); W
|
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 准则层一致性检验通过 CR2 = 0.0301
方案层一致性检验通过 CR3 = 0.0079 0.0079 0.0013 0.0158
组合一致性检验通过 CR = 0.0390
最终权向量为: W = 0.6057 0.2359 0.1583
|
因此,最佳方案为方案 1。