matlab编程实现成对比较矩阵判别、层次分析法方案层排序 代码
时间: 2023-12-09 11:03:40 浏览: 144
以下是 MATLAB 实现的成对比较矩阵判别和层次分析法方案层排序的代码:
1. 成对比较矩阵判别
```matlab
function [result, consistency_ratio] = pairwise_comparison(matrix)
% matrix: 成对比较矩阵
% result: 各方案的权重
% consistency_ratio: 一致性比例(小于0.1时可接受)
% 计算特征向量
n = size(matrix, 1);
[V, D] = eig(matrix);
[~, max_idx] = max(diag(D));
w = V(:, max_idx);
% 计算一致性指标
lambda_max = D(max_idx, max_idx);
consistency_index = (lambda_max - n) / (n - 1);
random_index = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49];
consistency_ratio = consistency_index / random_index(n);
% 归一化处理
result = w / sum(w);
end
```
2. 层次分析法方案层排序
```matlab
function [result, consistency_ratio] = hierarchy_analysis(matrix)
% matrix: 层次分析法判别矩阵
% result: 各方案的权重
% consistency_ratio: 一致性比例(小于0.1时可接受)
% 计算各层权重
n = size(matrix, 1);
w = zeros(n, 1);
for i = 1:n
w(i) = prod(matrix(i, :) .^ (1 / n));
end
% 计算一致性指标
lambda_max = sum(matrix * w) / w;
consistency_index = (lambda_max - n) / (n - 1);
random_index = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49];
consistency_ratio = consistency_index / random_index(n);
% 归一化处理
result = w / sum(w);
end
```
使用时,可以先将成对比较矩阵和层次分析法判别矩阵传入上述两个函数,即可得到各方案的权重和一致性比例。
阅读全文