【数学建模】第一讲-层次分析法

​​​​​​

目录

​​​​​​一、简介及前言(层次分析法解决评价类问题)

二、构造判断矩阵(准则层、方案层)

三、一致性检验(CR=CI/RI)

四、计算权重(算数平均、几何平均、特征值)

五、计算得分(Excel)

六、论文写作(SmartArt、画图)

七、代码实现(MATLAB)


一、简介及前言

层次分析法(Analytic Hierarchy Process,简称AHP),是指将与 决策有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。

层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。

层次分析法是建模比赛中最常用的模型,主要用于解决评价类问题。评价类问题可用打分解决。

如果直接打分问权重:

 关键在于如何确定这些权重

二、构造判断矩阵

​ 

采用指标两两比较的方法确定最终权重

​ 

 aij与列指标相比,行指标的重要程度(行是列的几倍)

满足主对角线全为1,aij*aji=1,则称正互反矩阵也就是层次分析法中的判断矩阵

 

准则层各个指标构造一次得出权重。

方案层针对准则层每个指标构造判断矩阵得出各个权重。

三、一致性检验

 

                     

列与列成比例,比值为 ajk。         行与行成比例,比值为aij

 

 一致性检验:检验我们构造的判断矩阵与一致矩阵的差距大小

 

 

四、计算权重

 五、计算得分

六、论文写作

七、代码实现

clear;clc
%第一步:输入判断矩阵
A=input('请输入判断矩阵');
%A = [1,2,4;
    1/2,1,2;
    1/4,1/2,1];

%第二步:一致性检验(求CI、RI、CR)
E = eig(A);%得到一个所有特征值构成的列向量
lambda_max = max(E);%最大特征值
n = size(A,1);%指标数即行列数
CI = (lambda_max-n)/(n-1);
RI = [0 0.0001 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];  %注意哦,这里的RI最多支持 n = 15
CR = CI/RI(n);
disp(['一致性比例CR为' num2str(CR)]);
if CR<0.1
    disp('一致性检验通过。')
else
    disp('一致性检验不通过。')
end

%第三步:判断矩阵求权重
[n,n] = size(A);
%--------算数平均法--------%
sum_A = repmat(sum(A),n,1);%按列求和得到行向量,行向量向下复制成r行
average_A = A./sum_A;%按列归一化
average_A1 = sum(average_A,2)./n;%按行求和再除以指标数n
disp('算数平均法得出的权重:');
disp(average_A1);
%--------几何平均法--------%
product_A = prod(A,2).^(1/n);%按行求几何平均值得到列向量(和算数平均有区别!!)
product_A1 = product_A./sum(product_A);%归一化
disp('几何平均法得出的权重:');
disp(product_A1);
%--------特征值法--------%
[V,D] = eig(A);%V:一列列特征向量构成的矩阵D:特征值对角阵
eig_max = max(max(D));%最大特征值
[r,c] = find(D==eig_max,1);%最大特征值所在列find(logic,1)只找第一个不为0的
eig_vetor_max = V(:,c);%最大特征值对应的特征向量
eig_vetor_max1 = eig_vetor_max./sum(eig_vetor_max);%归一化
disp('特征值法得出的权重:');
disp(eig_vetor_max1);

  • 4
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊-Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值