数模之层次分析法

前言


层次分析法通过将决策分成目标、准则、方案等多个层次,来进行定性和定向的分析。

这个算法通常用于多指标的综合评价问题,一般有两个用途:

1.为指标定制权重
2.量化方案的选择

算法实现过程


首先我们将一个事件分为三部分:

1.目标层(决策问题)
2.准则层(影响因素)
3.方案层(可供选择的方案)

然后分别按照实际因素,构造准则矩阵和方案矩阵,相乘得出得分。

即可得出评价。


举例


shit

其中,

目标层:最优旅游地选择
准则层:C1~C5
方案层:P1~P4

构造准则矩阵:

假设C1~C5的重要程度分别为:

C1重要程度是C2的3倍;
C1重要程度是C3的6倍;
C1重要程度是C4的2倍;
C1重要程度是C5的6倍;

那么准则矩阵C第一行为:

[ 1 3 6 2 6 ]

逐次对每行进行如此判断构造,得出最终矩阵:

\[ C = \begin{bmatrix} 1 & 3 & 6 & 2 & 6\\ 1/3 & 1 & 2 & 2/3 & 2\\ 1/6 & 1/2 & 1 & 1/3 & 1\\ 1/2 & 2/3 & 3 & 1 & 3\\ 1/6& 1/2 & 1 & 1/3 &1 \end{bmatrix} \]

尽管这里我构造的矩阵每行的比例一致,但是在实际状况下,人的主观感受会导致每行的重要程度比例不同。

所以我们需要使用两次标准化来将主观评价量客观化,这里有两种方法:

1.使用乘积的方法:

对于每一行:

\[C_i = \sqrt[m]{\prod_{j=1}^{m} C_{ij}} \]

然后对得出的列向量C' 进行标准化:

\[W_i = \frac{C_i}{\sum_{i=1}^{n}C_i} \]

得出最终可以用于评分的准则矩阵W = [w1,w2…wn]

2.使用两次标准化的方式:

对于每一列进行一次标准化,得出标准化后的矩阵,然后再对每一行求算数平均值。

如图所示:

shit

求得矩阵W后,我们需要对我们构造的矩阵进行一致性检验,判断其是否具有逻辑性错误:

首先,我们需要计算一个最大特征根:

其中,AW为一开始构造的矩阵C与标准化后的矩阵W相乘后的按行累加值。

得出 λ 后,求出两个不用管是什么意义的值:

CI值:CI = (λ-n)/ (n-1)

再根据查表得出RI的值:

最终得出CR:

CR = CI/RI

当CR<0.1时,我们可以认为我们构造的矩阵的一致性程度在可以接受的范围内。我们进进行下一步。

开始构造方案层矩阵。

方案层矩阵需要构造多个,每一个矩阵都是针对每一个影响因素而设计的,例如,针对景色这一影响因素构造矩阵:

仍旧按照之前构造准则矩阵的方式构造这一矩阵,首先我们针对景点1的景色相对于景点2来进行评分,如此重复得出整个矩阵。

对于每个构造出的矩阵,我们都需要进行标准化和一致性的检验。

最后,根据每个因素,计算加权得分,最终判断我们的决策。

posted @ 2024-08-21 23:51  报废之人  阅读(82)  评论(0)    收藏  举报