问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

层次分析法几何平均法求权重

创作时间:
作者:
@小白创作中心

层次分析法几何平均法求权重

引用
51CTO
1.
https://blog.51cto.com/u_16099356/12014266

层次分析法(AHP)是一种常用的决策分析方法,特别适用于解决评价类问题。本文将详细介绍层次分析法的基本原理、具体步骤以及如何通过MATLAB实现该方法。

一、简介及前言

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

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

层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。层次分析法是建模比赛中最常用的模型,主要用于解决评价类问题。评价类问题可用打分解决。如果直接打分问权重:关键在于如何确定这些权重

二、构造判断矩阵

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

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

满足主对角线全为1,aijaji=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);  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号