层次分析法的matlab代码
时间: 2023-08-15 09:08:54 浏览: 52
层次分析法(Analytic Hierarchy Process,简称AHP)是一种常用的决策分析方法,可以用于处理复杂的多因素决策问题。在Matlab中实现AHP方法,可以参照以下步骤进行编写:
Step 1: 输入判断矩阵
首先,需要输入判断矩阵,即对于每个因素之间的相对重要性进行判断,得到一个矩阵。这个矩阵的大小为n x n,其中n表示因素的数量。
例如,假设有3个因素A、B和C,需要对它们进行判断,得到的判断矩阵如下:
```
A B C
2 4 6
1/4 1 3
1/6 1/3 1
```
在Matlab中,可以使用矩阵输入这个判断矩阵:
```
J = [2 4 6; 1/4 1 3; 1/6 1/3 1];
```
Step 2: 计算特征向量
接下来,需要计算每个因素的权重,即计算判断矩阵的特征向量。可以使用Matlab中的eig函数进行计算:
```
[eigvec, eigval] = eig(J);
```
其中,eigvec表示判断矩阵的特征向量,eigval表示判断矩阵的特征值。
Step 3: 归一化特征向量
由于特征向量的大小不一定为1,需要对特征向量进行归一化。可以使用Matlab中的norm函数进行计算:
```
w = eigvec(:,1)/norm(eigvec(:,1));
```
其中,eigvec(:,1)表示特征向量的第一列,即对应最大特征值的特征向量。
Step 4: 计算一致性指标
为了判断判断矩阵的一致性,需要计算一致性指标。可以使用以下公式进行计算:
```
CI = (lambda - n)/(n-1);
```
其中,lambda表示最大特征值,n表示判断矩阵的大小。一般来说,CI的值应该小于0.1。
Step 5: 计算随机一致性指标
为了比较计算出来的一致性指标和随机一致性指标,需要先计算随机一致性指标。可以使用以下公式进行计算:
```
RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49];
```
其中,RI是一个数组,根据判断矩阵的大小取不同的值。
Step 6: 判断一致性
最后,可以比较计算出来的一致性指标和随机一致性指标,判断判断矩阵是否一致性。如果一致性指标小于0.1,则可以认为判断矩阵是一致的。
完整的Matlab代码如下:
```
% 输入判断矩阵
J = [2 4 6; 1/4 1 3; 1/6 1/3 1];
% 计算特征向量
[eigvec, eigval] = eig(J);
% 归一化特征向量
w = eigvec(:,1)/norm(eigvec(:,1));
% 计算一致性指标
lambda = max(max(eigval));
n = length(eigval);
CI = (lambda - n)/(n-1);
% 计算随机一致性指标
RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49];
RCI = (RI(n)-n)/(n-1);
% 判断一致性
if CI/RCI < 0.1
disp('判断矩阵一致');
else
disp('判断矩阵不一致');
end
```
这个代码可以对任意大小的判断矩阵进行计算,并输出一致性判断结果。