AHP算法怎么进行一致性调整
时间: 2023-06-19 16:06:34 浏览: 63
在AHP算法中,一致性是指判断判断两两比较矩阵中的数据是否合理。一致性调整是指通过调整比较矩阵中的数据,使其满足一致性条件。
一致性调整可以通过以下步骤完成:
1. 计算判断矩阵的特征向量和特征值。
2. 根据特征向量计算一致性指标CR(Consistency Ratio)。
3. 如果CR值大于0.1,则说明比较矩阵存在较大的不一致性,需要进行一致性调整。
4. 对于每个比较矩阵,可以使用一致性指数CI(Consistency Index)来进行调整。计算CI的公式为:CI=(λ-max(n)) / (n-1),其中λ是特征值,n是矩阵的阶数。
5. 根据CI值确定需要进行的一致性调整方法。常用的调整方法有平均随机一致性指数法和一致性指数法。
6. 进行一致性调整后,重新计算特征向量和特征值,再次计算CR值,直到CR值小于0.1为止。
总的来说,一致性调整就是通过调整比较矩阵中的数据,使其满足一致性条件,从而提高AHP算法的准确性和可靠性。
相关问题
AHP算法怎么进行一致性调整的matlab代码
下面是AHP算法一致性调整的Matlab代码实现,其中输入的参数为判断矩阵A:
```matlab
function [W,CI,CR]=AHP(A)
% AHP算法计算权重矩阵及一致性检验
% 输入:
% A - 判断矩阵
% 输出:
% W - 权重矩阵
% CI - 一致性指标
% CR - 一致性比率
n=length(A); % 矩阵维数
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49]; % 随机一致性指标
% 计算权重向量
[V,D]=eig(A);
[maxD,ind]=max(diag(D)); % 获取最大特征值及其位置
W=V(:,ind)'/sum(V(:,ind)); % 获取对应的特征向量
AW=A*W'; % 计算A*W
lambda=maxD; % 最大特征值
CI=(lambda-n)/(n-1); % 一致性指标
CR=CI/RI(n); % 一致性比率
% 输出结果
fprintf(['最大特征值为:%.4f\n'],lambda);
fprintf(['权重向量为:']);
fprintf('%.4f ',W);
fprintf('\n');
fprintf(['一致性检验结果:CI=%.4f,CR=%.4f\n'],CI,CR);
% 如果一致性检验未通过,则对矩阵进行一致性调整
if CR>0.1
fprintf('一致性检验未通过,需要进行一致性调整!\n');
RI=RI(n); % 取n阶随机一致性指标
A_new=(A+eye(n)*RI)/(1+RI); % 进行一致性调整
[W,CI,CR]=AHP(A_new); % 调用AHP函数重新计算
end
end
```
其中,RI为随机一致性指标,用于判断一致性检验是否通过。如果一致性检验未通过,则对判断矩阵进行一致性调整,重新计算权重向量、一致性指标和一致性比率。最终输出权重向量及一致性检验结果。
改进的AHP算法matlab实现
AHP(Aanlytic Hierarchy Process)是一种多准则决策分析方法,用于处理复杂的决策问题。以下是使用MATLAB实现改进的AHP算法的步骤:
1. 建立判断矩阵
首先,需要建立判断矩阵。判断矩阵是一个n×n矩阵,其中n表示决策问题中的准则数。矩阵中的每个元素aij表示准则i与准则j之间的比较结果,具有如下性质:
- aij > 0,表示准则i与准则j之间的相对重要性;
- aij = 1/aji,表示准则i与准则j之间的相对重要性与准则j与准则i之间的相对重要性互为倒数;
- aii = 1,表示准则i与自身之间的相对重要性为1。
2. 计算权重向量
根据判断矩阵,可以计算出每个准则的权重向量。具体步骤如下:
- 将判断矩阵的每一行除以该行所有元素之和,得到一个n×n的正则化矩阵;
- 对正则化矩阵的每一列求平均值,得到一个n维的权重向量。
3. 计算一致性指标
为了验证判断矩阵的一致性,需要计算一致性指标。一致性指标越小,判断矩阵的一致性越好。计算一致性指标的公式如下:
CI = (λmax - n) / (n - 1)
其中,λmax表示判断矩阵的最大特征值,n表示判断矩阵的阶数。一般来说,CI小于0.1可以接受,大于0.1则需要进行调整。
4. 进行一致性调整
如果一致性指标超过了0.1,就需要进行一致性调整。一般采用随机一致性指标RI进行比较。RI的值是根据判断矩阵的阶数n查表得到的。如果CI超过了0.1,则需要进行一致性调整,具体步骤如下:
- 计算一致性比例指标CR = CI / RI;
- 如果CR小于0.1,则判断矩阵可以接受,否则需要进行调整。
5. 做出决策
根据得到的权重向量,可以对决策进行排序或者选择最优的决策。
以下是MATLAB实现改进的AHP算法的代码示例:
```matlab
% 建立判断矩阵
A = [1 3 5;
1/3 1 3;
1/5 1/3 1];
% 计算权重向量
[n, ~] = size(A);
norm_A = zeros(n, n);
for i = 1:n
norm_A(i,:) = A(i,:) ./ sum(A(i,:));
end
w = sum(norm_A) ./ n;
% 计算一致性指标
lambda_max = max(eig(A));
CI = (lambda_max - n) / (n - 1);
% 进行一致性调整
RI = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49];
CR = CI / RI(n);
if CR > 0.1
disp('需要进行一致性调整');
else
disp('判断矩阵可以接受');
end
% 做出决策
[~, I] = sort(w, 'descend');
disp(I);
```
这里的判断矩阵是一个3×3的矩阵,权重向量和一致性指标可以通过MATLAB的eig函数计算得到。RI是一个预先定义好的随机一致性指标表,根据判断矩阵的阶数选择相应的RI值。最后,根据权重向量对决策进行排序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)