数学建模之层次分析法(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
标签:特征值,特征向量,矩阵,建模,检验,lenda,分析法,AHP,一致性 来源: https://blog.csdn.net/qq_52785473/article/details/122442010