一、应用
人员素质评估、 多方案比较、科技成果评比和工作成效评价等。
二、过程概述
1、构成:目标层+准则层(决策指标)+方案层(选择方案)
2、过程概述图
三、具体实现
1、确定模型结构
确认整个决策事件的目标层+准则层(可以有子准则层)+方案层
2、构造判断矩阵
注意:aij是指j相对i的重要程度
3、一致性检验
用于确定构建的判断矩阵是否存在逻辑问题
(1)层次单排序
在判断矩阵基础上求解各个指标的权重Wi
①方根法
m维向量(行乘积的m次方)-->向量标准化-->权重向量
②和法(列向量的算术平均)
列向量归一化(标准化)-->按指标求和-->按指标的求和结果标准化
(2)求解最大特征根
AW:判断矩阵*标准化的权重
(3)求解CI值
(4)判断一致性
C.R<0.1,则一致性检验通过
4、层次总排序与一致性检验
通过类型层次单排序的方法给方案打分,并且全部判断矩阵都要做一致性检验
四、MATLAB代码实现过程
假设我们有一个目标层(选择最好的手机),三个准则层(价格、性能、外观),和三个方案层(手机A,手机B,手机C)。
1、构造判断矩阵
①准则层判断矩阵
% 准则层判断矩阵 (价格, 性能, 外观)
criteria_matrix = [1, 1/3, 3;
3, 1, 5;
1/3, 1/5, 1];
②方案层判断矩阵
% 对价格的判断矩阵
price_matrix = [1, 2, 1/5;
1/2, 1, 1/7;
5, 7, 1];
% 对性能的判断矩阵
performance_matrix = [1, 1/3, 3;
3, 1, 5;
1/3, 1/5, 1];
% 对外观的判断矩阵
appearance_matrix = [1, 5, 9;
1/5, 1, 4;
1/9, 1/4, 1];
2、计算权重向量和一致性检验
% 计算权重向量和一致性检验
% 准则层权重和一致性检验
[criteria_weights, criteria_CR] = ahp(criteria_matrix);
% 价格权重和一致性检验
[price_weights, price_CR] = ahp(price_matrix);
% 性能权重和一致性检验
[performance_weights, performance_CR] = ahp(performance_matrix);
% 外观权重和一致性检验
[appearance_weights, appearance_CR] = ahp(appearance_matrix);
% 打印结果
% 打印准则层权重向量和一致性比率
disp('准则层权重向量:');
disp(criteria_weights);
disp(['准则层一致性比率 CR: ', num2str(criteria_CR)]);
% 打印价格权重向量和一致性比率
disp('价格权重向量:');
disp(price_weights);
disp(['价格一致性比率 CR: ', num2str(price_CR)]);
% 打印性能权重向量和一致性比率
disp('性能权重向量:');
disp(performance_weights);
disp(['性能一致性比率 CR: ', num2str(performance_CR)]);
% 打印外观权重向量和一致性比率
disp('外观权重向量:');
disp(appearance_weights);
disp(['外观一致性比率 CR: ', num2str(appearance_CR)]);
3、层次总排序和一致性检验
% 方案层综合得分
scores = criteria_weights(1) * price_weights + ...
criteria_weights(2) * performance_weights + ...
criteria_weights(3) * appearance_weights;
disp('方案综合得分:');
disp(scores);
>>>自定义ahp()
function [weights, CR] = ahp(matrix)
% 计算特征向量和特征值
[V, D] = eig(matrix);
% 找到最大的特征值
[max_eigenvalue, index] = max(diag(D));
% 对应的特征向量
max_eigenvector = V(:, index);
% 归一化特征向量
weights = max_eigenvector / sum(max_eigenvector);
% 一致性指标 (CI)
CI = (max_eigenvalue - length(matrix)) / (length(matrix) - 1);
% 随机一致性指标 (RI)
RI = [0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45]; % 当 n <= 10 时的 RI 值
n = length(matrix);
% 计算一致性比率 (CR)
CR = CI / RI(n);
end
参考资料