数学建模学习笔记(四)层次分析法(AHP)

2022-06-14 09:37:28 浏览数 (1)

应用场景: 1、最佳方案选取 2、评价类问题 3、指标体系的优选

步骤: 1、建立层次结构模型; 2、构造判断(成对比较)矩阵; 3、层次单排序及其一致性检验; 4、层次总排序及其一致性检验;

建立层次结构模型:

最高层(目标层):决策的目的、要解决的问题; 中间层(准则层或指标层):考虑的因素、决策的准则; 最低层(方案层):决策时的备选方案

构造判断矩阵

注:采用两两比较,采用1-9标度方法

很显然,这是对称矩阵

层次单排序及一致性检验:

为什么要一致性检验? 例如:第一行可以看出A=2B,A=4C,那么可以推导出B=2C,那么如果第二行的第三列不是2,就不一致,所以要一致性检验。 一致阵的性质:(转自知乎) 1、对称矩阵,主对角线都为1; 2、其转置也是一致阵; 3、各行成比例,则矩阵秩为1; 4、A的最大特征根(值)为 n,其余的n-1个特征根均等于0; 5、A的任一列(行)都是对应于特征根n的特征向量,AW=nW; (这一块比较难懂,但不影响使用)

例子说明:

层次总排序及其一致性检验:

具体案例:

使用方法: 1、有大牛将整个计算过程浓缩成软件 AHP软件 2、matlab实现

代码语言:javascript复制
使用方法
(1)构造判断矩阵A
(2)将下文代码复制粘贴到Matlab中即可
例如:A=[1 3 5;0.33 1 3;0.2 0.33,1]

disp('请输入准则层判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
[V,D]=eig(A);%求得特征向量和特征值
            %求出最大特征值和它所对应的特征向量
tempNum=D(1,1);
pos=1;
for h=1:n
    if D(h,h)>tempNum
        tempNum=D(h,h);
        pos=h;
    end
end    
w=abs(V(:,pos));
w=w/sum(w);
t=D(pos,pos);
disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');disp(t);
%以下是一致性检验
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59 1.60 1.61 1.615 1.62 1.63];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
else disp('此矩阵的一致性验证失败,请重新进行评分!');
end

使用体验待日后补充~

0 人点赞