首页 > 其他分享 >层次分析法

层次分析法

时间:2025-01-15 13:05:02浏览次数:3  
标签:disp 指标 CI 层次 权重 矩阵 分析法 一致性

层次分析法:(AHP)

是一种将与决策有关的元素分解成目标、准则、方案等层次,在此基础上进行定性定量分析的决策方法。

以下面的题目为例子:

唐僧师徒一行人取经结束后,打算组织一场大乘佛法全国巡回演唱会,但是对于第一场去苏杭、北戴河还是桂林,师徒四人有了分歧……一番讨论后,他们最关心的是以下问题:

景色美丽,价格合适,饮食美味,男女比例适中.

解决过程:

1,.递阶层次结构的建立

首先,要明确问题的目标。例如,现在的目标就是选择一个最满意的目的地。

然后,确定准则层。也就是怎么样才是一个最满意的目的地?对此,准则可能包括景色,花费,饮食,男女比例等。这些准则是衡量各个方案优劣的标准。

最后是方案层,列出所有可供选择的住房方案。这样就构成了一个目标 - 准则 - 方案的递阶层次结构。

2.构造判断矩阵

在确定了层次结构后,需要对每一层的元素进行两两比较,以确定它们相对于上一层元素的重要性程度。比较的结果用一个判断矩阵来表示。

通常采用 1 - 9 标度法,1 表示两个因素同等重要,9 表示一个因素比另一个因素极端重要。

在这个题目里面的考虑因素就是景色,花费,饮食,男女比例.

然后建立这个表格:

如果你认为景色和花费相比,景色更重要,而且绝对的更加重要,你这次的目的就是获得更美丽的景色,因此你不在乎花费,那就可以写上7(在1,2的位置),因此(2,1)的位置就是1/7

如果你认为花费和景色差不多重要,但是花费稍微重要一点点,那就在(1,2)写1/2

就这样填完整个矩阵

然后根据一个指标,比如:景色,我们就针对景色,对我们的目的地进行打分,方法和上面的一样

然后对剩下的3个指标进行打分

最后该方案的得分= 求和(在指标i的得分*i的权重)

整个的过程就和这个差不多

(不一致矩阵:这里的矩阵不是一致的,要我们去调整为一致的)

所以就有了第三步

3.层次单排序及一致性检验

层次单排序是计算判断矩阵的最大特征值及其对应的特征向量。特征向量的各个分量就是本层次各个元素对于上一层次某元素的相对重要性权重。

但是,由于判断矩阵是通过主观判断得到的,可能会出现逻辑不一致的情况。例如,A 比 B 重要,B 比 C 重要,但 C 又比 A 重要。所以需要进行一致性检验。

一致性指标,其中是判断矩阵的最大特征值,是判断矩阵的阶数。当CI=0时,判断矩阵具有完全一致性。

还需要计算一致性比例CR=CI/RI,其中RI是平均随机一致性指标

。当CR<0.1时,认为判断矩阵的一致性是可以接受的。

不能接受就调整为每行每列都是对应的倍数关系,然后重要性大致不变就可以

4.权重的计算(同一指标下的方案 with 各个指标的权重)

直接进行归一化计算同一个指标下的选择的权重

1,直接计算平均值

(1)一致性矩阵,直接拿出一列出来直接计算即可(这里把5调整为了4)

 苏杭=1/(1+0.5+0.25)=0.5714,北戴河=0.2857,桂林=0.1143

(2)可接受的非一致矩阵,要计算每一列的权重,然后计算平均值

最后的权重是苏杭=0.5949,北戴河=0.2766,桂林=0.1285

 2,特征值计算法:

各个指标的权重也可以按照上面的方法计算

5,统一成一个表格(层次总排序)

最后算出来得分  (每个指标的权重*对应的方案的权重)

最后对层次总排序进行一致性检测

(这里的ai是指指标所占权重,CIi是指各个指标对应的CI)

特征值法代码:

disp('请输入判断矩阵A(n阶)');

A=input('A=');

[n,n]=size(A);

x=ones(n,100);

y=ones(n,100);

m=zeros(1,100);

m(1)=max(x(:,1));

y(:,1)=x(:,1);

x(:,2)=A*y(:,1);

m(2)=max(x(:,2));

y(:,2)=x(:,2)/m(2);

p=0.0001;i=2;k=abs(m(2)-m(1));

while k>p

i=i+1;

x(:,i)=A*y(:,i-1);

m(i)=max(x(:,i));

y(:,i)=x(:,i)/m(i);

k=abs(m(i)-m(i-1));

end

a=sum(y(:,i));

w=y(:,i)/a;

t=m(i);

disp('权向量');disp(w);

disp('最大特征值');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];

CR=CI/RI(n);

if CR<0.10

disp('此矩阵的一致性可以接受!');

disp('CI=');disp(CI);

disp('CR=');disp(CR);

else

disp('此矩阵的一致性不可以接受!');

end

标签:disp,指标,CI,层次,权重,矩阵,分析法,一致性
From: https://blog.csdn.net/2401_84910613/article/details/145139212

相关文章