层次分析法应用举例
层次分析法用于定量解决生活中的决策问题,或最优问题
接下来,请允许我通过一个例子来简单介绍层次分析法,我将用尽可能通俗的语言去描述它。
首先提出问题:小广计划去买一部手机,现在有小米10,Mate 40 Pro,iPhone 12 Pro Max三部手机他比较喜欢,犹豫这不知道买哪个,现需你给他一个定量的方案,告诉他买哪个比较好。
下面分析题目:见到问题我们判断用层次分析法来解题(当然我认为这个题目使用层次分析法是优问题的,以后或许我能找到更好的方法解题)
首先通过我对小广的了解,我认为影响他判断的因素主要有一下几个方面:价格,美观,性能,寿命。其中价格受到处理器芯片,屏幕,摄像,内存等因素影响,美观受到组两,屏幕,尺寸,解锁方式等影响,性能受到处理器芯片,摄像,内存,电池,流畅度影响,寿命受到售后,使用年限于性能降低关系影响。
因此我们做出如下图所示的结构图,并将用下图来求解上述问题。
图中,选手机是我们的目标
价格等因素我们称为第一层准则
芯片等因素为第二层准则
最后一层称为选择的方案
解题的想法思路就很简单,得出每一个手机在我们这些准则下得到的分数就是我们最后判断的答案。
要怎么得到这个分数呢?
用的就是权重,就好比说假设,小广平时比较节约,价格在他心中占4成,性能占2成,美观占1成,寿命占3成,我们要是知道了这个就可以根据这些权重计算出最后每个手机在这些准则下的分数,得到结果。
但是,通常情况下我们也不能确定自己对这些的权重到底是多少,这怎么办呢?
层次分析法 /AHP/
层次分析法就是用于解决这样的问题:它不把所有因素放在一起比较,而是两两相互比较,构造判断矩阵,以提高准确度。下面我们先来看一下这个表格。
含义
1 表示两个因素具有同样重要性
3 表一个因素比另一个因素稍微重要
5 表一个因素比另一个因素明显重要
7 表一个因素比另一个因素强烈重要
9 表一个因素比另一个因素极端重要
2,4,6,8 上述两相邻判断的中值
接下来构造目标层到准则层1的判断矩阵
上面是一张粗略的判断矩阵,(自己大概编的数据,正常建模这些需要查资料推证)
简单解释(1,1)代表价格和价格同等重要
(2,1)代表美观比价格强烈不重要
(1,2)代表价格比美观强烈重要
其他的交给大家自己看
第二层准则到第一层的判断矩阵以及最后一层到第二层准则的判断矩阵也能类似的做出来
大家知道构建一个判断矩阵意味着什么吗?
一个判断举证通过一定的计算就可以得出一组权重,而得到了权重,就意味着解决了问题,因此我认为层次分析法的到这里思想已经讲完了。
NO
2通过判断矩阵计算权重
三种方法
算术平均法,将各列元素归一化,然后按行求和,所得即为权重。
几何平均法,按行求积,然后开n次方,在归一化,即为权重。
特征值法,判断举证最大特征值对应的特征向量归一化即为权重。
通常建模采用较为成熟的特征值法。
下面不得不提的是判断矩阵有可能会出现自相矛盾的情况,举个例子可能你两两比较时认为价格:美观为7:1,美观比上寿命为1:5,寿命比上价值为1:3,这样就很不合理,因为寿命比上价值应该是5:7不是吗?
针对这问题,前人给了我们一个判断方法,即求一致性检验指标CI和一致性比例RI,通过一定的判断来决定你的矩阵是否能够用层次分析法。在此就不给出方法了。
还有一点,就是可能大家能够理解算术平均法和几何平均法求权重,但是不知道什么叫特征值法,大家看完后有兴趣的可以百度搜索“层次分析法中特征向量法确定权重向量的理论”自行研究,如果有不明白的问题也可以和我讨论。
以下是部分代码
MATLAB代码
算术平均
>> sum(A)
>>sum(A)_A=repmat(sum(A),size(A,2),1)
>> A./sum_A
>> sum(ans,2)/size(A,1)
几何平均
>>prdut_A=prod(A,2)
>> prdut_n_A=prdut_A.^(1/size(A,2))
>> prdut_n_A./sum(prdut_n_A)
特征值
>> [V,D]=eig(A)
>> Max_eig=max(max(D))
>> [r,e]=find(D==Max_eig,1)
>> V(:,e)./sum(V(:,e))
一致性检验,CR<0.1即可
>> n=size(A,2)
>> CI=(Max_eig-n)/(n-1)
>> RI=[0 0 0.52 0.89 1.121.241.321.411.451.491.51]
>> CR=CI/RI(n)