数学建模之层次分析法(AHP)

Posted Icy Hunter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学建模之层次分析法(AHP)相关的知识,希望对你有一定的参考价值。

本文参考老师课上的PPT

层次分析法(AHP),是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。由于其系统灵活简洁的优点,迅速地在我国社会经济各个领域内,如工程计划、资源规划、政策指定等,得到了广泛的重视和应用。

层次分析法大体可以分为四个步骤:
1.建立层次结构模型
2.构建判断(成对比较)矩阵
3.一致性检验

**1.建立结构模型。**需要将决策的目标、考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。

2.构建判断(成对比较)矩阵。
构建原则有以下两点
1)不把所有因素放在一起比较,而是两两相互比较。
2)对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。

判断矩阵元素aij的标度方法:

3.一致性检验。

其中lamda为判断矩阵的最大特征值,n为判断矩阵的阶数。由于不一致情况一般都会出现,因此,为了衡量CI的大小是否合理,因此引入随机一致性指标RI。


因此当算出CI之后,可通过判断矩阵阶数查表得RI计算出CR,如果CR<0.1则通过一致性检验。

matlab代码如下:

clc,clear
data = [1 1/2 4 3 3
    2 1 7 5 5
    1/4 1/7 1 1/2 1/3
    1/3 1/5 2 1 1
    1/3 1/5 3 1 1];%需要检验的一致性矩阵
[n,m]=size(data);

%求特征值特征向量,找到最大特征值对应的特征向量
[V,D]=eig(data);%求矩阵的特征值和特征向量,V为特征向量矩阵,D为特征值矩阵。
lenda=max(D);
lendada=max(lenda);%求对角线向量
col = find(D(1,:) == max(lenda));%求最大特征值
lenda_V = V(:, col);% 最大特征值的特征向量,能够用于计算特征权重
for i = 1:n
    w(i,1) = lenda_V(i,1)/sum(lenda_V);
end

%一致性检验
CI=(lendada-n)/(n-1);
RI=[0,0,0.58,0.9,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.1
   fprintf('没有通过一致性检验\\n');
else
  w
  fprintf('通过一致性检验\\n');
end


以上是关于数学建模之层次分析法(AHP)的主要内容,如果未能解决你的问题,请参考以下文章

AHP层次分析法具体操作

层次分析法

AHP层次分析法 | 过程解读 案例实践

备战数学建模9-层次分析法模型

ahp层次分析法是啥

层次分析模型(AHP)及其MATLAB实现