AHP层次分析法及代码

基本原理

AHP多用于决策和评价类的模型。
应用AHP分析决策问题时,首先要把问题构造为一个有层次的结构模型。
在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。这些层次可以分为三类:

  1. 最高层:也称为目标层。这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果
  2. 中间层:这一层次中包含了为实现目标所涉及的中间环节。它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。(当然一般的简单模型都只有一层)
  3. 最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。
    在这里插入图片描述

运算方法

分别求出准则层的判断矩阵和方案层的判断矩阵(根据决策人判断建立),并分别计算权值。
最后根据权值计算出总排序权值。

代码

%% AHP法权重计算MATLAB程序
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
%% 数据读入
clc
clear all
A=[1 2 6; 1/2 1 4; 1/6 1/4 1];% 评判矩阵
%% 一致性检验和权向量计算
[n,n]=size(A);
[v,d]=eig(A);
r=d(1,1);
CI=(r-n)/(n-1);
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if  CR<0.10
    CR_Result='通过';
   else
    CR_Result='不通过';   
end

%% 权向量计算
w=v(:,1)/sum(v(:,1));
w=w';

%% 结果输出
disp('该判断矩阵权向量计算报告:');
disp(['一致性指标:' num2str(CI)]);
disp(['一致性比例:' num2str(CR)]);
disp(['一致性检验结果:' CR_Result]);
disp(['特征值:' num2str(r)]);
disp(['权向量:' num2str(w)]);

猜你喜欢

转载自blog.csdn.net/DwenKing/article/details/108039948