AHP层次分析法计算原理
- 格式:docx
- 大小:16.45 KB
- 文档页数:4
供应商的选择一、层次分析法基本原理供应商的选择多采用层次分析法。
层次分析法(Analytia1 Hierarchy Process,简称AHP)是美国匹兹堡大学教授A.L.Saaty于20世纪70年代提出的一种系统分析方法。
AHP是一种能将定性分析与定量分析相结合的系统分析方法。
AHP是分析多目标、多准则的复杂大系统的有力工具。
它具有思路清晰、方法简便、适用面广、系统性强等特点,最适宜于解决那些难以完全用定量方法进行分析的决策问题,便于普及推广,可成为人们工作和生活中思考问题、解决问题的一种方法。
将AHP引入决策,是决策科学化的一大进步。
应用AHP解决问题的思路是:首先, 把要解决的问题分层系列化, 即根据问题的性质和要达到的目标,将问题分解为不同的组成因素,按照因素之间的相互影响和隶属关系将其分层聚类组合,形成一个递阶的、有序的层次结构模型。
然后,对模型中每一层次因素的相对重要性,依据人们对客观现实的判断给予定量表示,再用数学方法确定每一层次全部因素相对重要性次序的权值。
最后,通过综合计算各层因素相对重要性的权值,得到最低层(方案层)相对于最高层(总目标)的相对重要性次序的组合权值,以此作为评价和选择决策方案的依据。
现举例来说明层次分析法的基本原理。
假定有n个物体, 它们的重量分别为 W1、W2、……,Wn,并且假定它们的重量和为1个单位,即。
两两比较它们之间的重量很容易得出判断矩阵:显然 aij=1/ aji , aii=1aij=aik/ ajk ; i,j,k=1,2,…,n用重量向量W=[W1,W2,……,Wn]右乘A矩阵,其结果为从上式不难看出,以n个物体重量为分量的向量W是判断矩阵的特征向量。
根据矩阵理论,n为上述矩阵A的唯一非零的,同时也是最大的特征值,而W是该特征值所对应的特征向量。
上面的例子显示,如果有一组物体需要估算它们的相对重量,而又没有称重仪器,那么可以通过两两比较这组物体相对重量的方法,得出每对物体的重量比值,从而形成判断矩阵,通过求解判断矩阵的最大特征值和所对应的特征向量,就可以计算出这组物体的相对重量。
层次分析法的原理层次分析法(Analytic Hierarchy Process,简称AHP)是一种用于多准则决策的数学模型。
它由美国数学家Thomas L. Saaty于20世纪70年代提出,被广泛应用于各个领域的决策分析中。
层次分析法基于人们在决策过程中常常需要考虑多个因素及其相对重要性的观点,通过对这些因素进行定量化和比较,帮助决策者做出理性决策。
层次分析法的原理主要包括层次结构、成对比较和权重计算三个部分。
一、层次结构:在层次分析法中,我们首先需要构建一个层次结构,将决策问题划分为不同的层次。
层次结构由目标层、准则层、子准则层和方案层组成。
目标层:决策问题的最终目标,通常只有一个。
准则层:实现目标所需的准则或评价指标,可以有多个。
子准则层:对每个准则进行细分或进一步评价的子指标,根据实际情况确定是否需要。
方案层:候选方案或决策选项,可以有多个。
二、成对比较:通过成对比较来确定各个层次之间的重要性或优先级。
成对比较是指将两个层次中的元素逐一配对,并根据它们之间的重要性进行比较。
在成对比较中,使用1-9的数值尺度,其中1表示相等重要,3表示略微重要,5表示中等重要,7表示强烈重要,9表示绝对重要。
通过比较各个元素对的重要性,可以建立一个判断矩阵。
例如,在准则层中,假设有三个准则A、B、C,那么我们需要进行三次成对比较,得到一个3x3的判断矩阵。
同样,在子准则层或方案层中,也需要进行成对比较,得到相应的判断矩阵。
三、权重计算:通过计算判断矩阵的特征向量,可以得到各个层次的权重,用于确定决策的最终结果。
特征向量是指矩阵的一个列向量,使得该矩阵与特征向量的乘积等于特征值乘特征向量。
通过对判断矩阵的特征向量进行归一化处理,可以得到各个层次的权重,用于计算总体权重或方案的优先级。
最后,根据权重计算的结果,可以得到最优的决策选择。
层次分析法的原理基于多个准则、多个层次的权重计算,旨在帮助决策者以合理的方式处理决策问题,并提供一种定量化的决策分析方法。
python实现AHP算法的⽅法实例(层次分析法)⼀、层次分析法原理层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,⽤于确定评价模型中各评价因⼦/准则的权重,进⼀步选择最优⽅案。
该⽅法仍具有较强的主观性,判断/⽐较矩阵的构造在⼀定程度上是拍脑门决定的,⼀致性检验只是检验拍脑门有没有⾃相⽭盾得太离谱。
相关的理论参考可见:⼆、代码实现需要借助Python的numpy矩阵运算包,代码最后⽤了⼀个b1矩阵进⾏了调试,相关代码如下,具体的实现流程已经⽤详细的注释标明,各位⼩伙伴有疑问的欢迎留⾔和我⼀起讨论。
import numpy as npclass AHP:"""相关信息的传⼊和准备"""def __init__(self, array):## 记录矩阵相关信息self.array = array## 记录矩阵⼤⼩self.n = array.shape[0]# 初始化RI值,⽤于⼀致性检验self.RI_list = [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]# 矩阵的特征值和特征向量self.eig_val, self.eig_vector = np.linalg.eig(self.array)# 矩阵的最⼤特征值self.max_eig_val = np.max(self.eig_val)# 矩阵最⼤特征值对应的特征向量self.max_eig_vector = self.eig_vector[:, np.argmax(self.eig_val)].real# 矩阵的⼀致性指标CIself.CI_val = (self.max_eig_val - self.n) / (self.n - 1)# 矩阵的⼀致性⽐例CRself.CR_val = self.CI_val / (self.RI_list[self.n - 1])"""⼀致性判断"""def test_consist(self):# 打印矩阵的⼀致性指标CI和⼀致性⽐例CRprint("判断矩阵的CI值为:" + str(self.CI_val))print("判断矩阵的CR值为:" + str(self.CR_val))# 进⾏⼀致性检验判断if self.n == 2: # 当只有两个⼦因素的情况print("仅包含两个⼦因素,不存在⼀致性问题")else:if self.CR_val < 0.1: # CR值⼩于0.1,可以通过⼀致性检验print("判断矩阵的CR值为" + str(self.CR_val) + ",通过⼀致性检验")return Trueelse: # CR值⼤于0.1, ⼀致性检验不通过print("判断矩阵的CR值为" + str(self.CR_val) + "未通过⼀致性检验")return False"""算术平均法求权重"""def cal_weight_by_arithmetic_method(self):# 求矩阵的每列的和col_sum = np.sum(self.array, axis=0)# 将判断矩阵按照列归⼀化array_normed = self.array / col_sum# 计算权重向量array_weight = np.sum(array_normed, axis=1) / self.n# 打印权重向量print("算术平均法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight"""⼏何平均法求权重"""def cal_weight__by_geometric_method(self):# 求矩阵的每列的积col_product = np.product(self.array, axis=0)# 将得到的积向量的每个分量进⾏开n次⽅array_power = np.power(col_product, 1 / self.n)# 将列向量归⼀化array_weight = array_power / np.sum(array_power)# 打印权重向量print("⼏何平均法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight"""特征值法求权重"""def cal_weight__by_eigenvalue_method(self):# 将矩阵最⼤特征值对应的特征向量进⾏归⼀化处理就得到了权重array_weight = self.max_eig_vector / np.sum(self.max_eig_vector)# 打印权重向量print("特征值法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weightif __name__ == "__main__":# 给出判断矩阵b = np.array([[1, 1 / 3, 1 / 8], [3, 1, 1 / 3], [8, 3, 1]])# 算术平均法求权重weight1 = AHP(b).cal_weight_by_arithmetic_method()# ⼏何平均法求权重weight2 = AHP(b).cal_weight__by_geometric_method()# 特征值法求权重weight3 = AHP(b).cal_weight__by_eigenvalue_method()总结到此这篇关于python实现AHP算法(层次分析法)的⽂章就介绍到这了,更多相关python AHP算法(层次分析法)内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
层次分析法层次分析法(Analytic Hierarchy Process ,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。
它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。
§1 层次分析法的基本原理与步骤人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。
层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。
运用层次分析法建模,大体上可按下面四个步骤进行:(i )建立递阶层次结构模型;(ii )构造出各层次中的所有判断矩阵;(iii )层次单排序及一致性检验;(iv )层次总排序及一致性检验。
下面分别说明这四个步骤的实现过程。
1.1 递阶层次结构的建立与特点应用AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。
在这个模型下,复杂问题被分解为元素的组成部分。
这些元素又按其属性及关系形成若干层次。
上一层次的元素作为准则对下一层次有关元素起支配作用。
这些层次可以分为三类:(i )最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。
(ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。
(iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。
递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。
每一层次中各元素所支配的元素一般不要超过9个。
这是因为支配的元素过多会给两两比较判断带来困难。
下面结合一个实例来说明递阶层次结构的建立。
例1 假期旅游有1P 、2P 、3P 3个旅游胜地供你选择,试确定一个最佳地点。
AHP法的基本原理
AHP(Analytic Hierarchy Process)是一种层次分析法,它是由分析
研究人员T.L. Saaty教授在1970年末提出的新型概念,该方法以人们的
思维方式来构造决策层次结构。
它将复杂的问题分解成若干个可以用数学
模型来描述的小问题,使得整个解决问题的过程更加简单、更加实用。
AHP的基本原理是建立决策者的涉及多个目标的结构分析系统,以量
化的方式决策者的思维,以决策者的经验和认知来决定最优结果,它大大
减少了决策时的不确定性和复杂性。
AHP分析法是一种多层次决策分析的有效方法,基本的步骤是:
-首先,在各层次上把问题分解成子问题,其次,在各层次定义比较
矩阵,使用量化方法,计算各子问题的权重,更高层次的子问题的权重可
以由权重最大的子问题来确定,再结合各层次的权重,最终确定最优选项;
-最后,针对一些子问题,分析其中的决策因素,构建一个信息网络,分析信息网络各节点的权重关系,形成子矩阵,以确定最优化方案。
AHP分析法的核心在于计算决策因素的权重,以及评价不同决策项之
间的比较,通过权重和比较的结果,综合评价各种决策项,最终确定最优
的决策方案。
AHP层次分析法计算原理AHP(Analytic Hierarchy Process)层次分析法是由Thomas L. Saaty于1970年提出的一种多准则决策方法,用于解决复杂的决策问题。
该方法将决策问题分解为多层次的结构,通过对不同层次的准则和方案进行比较和权重赋值,最终得出最优方案。
AHP方法的计算原理可以分为以下几个步骤:1.层次分解:将决策问题分解为多个层次的结构,包括目标层、准则层和方案层。
目标层是最高层,准则层是对实现目标的准则进行评估的层次,方案层是各个可选方案。
2.构建判断矩阵:在准则层中,通过两两比较准则的相对重要性,构建一个判断矩阵。
判断矩阵的元素表示两个准则之间的相对重要性比较,它是一个正互反矩阵,即对角线元素为1,其他元素表示两个准则之间的相对重要性比较的权重。
3.计算权重向量:通过计算判断矩阵的特征向量,可以得到一个权重向量,表示各个准则的相对重要性。
特征向量是判断矩阵对应于最大特征值的单位特征向量。
4. 一致性检验:为了确保判断矩阵的可靠性,需要进行一致性检验。
一致性指标CI(Consistency Index)表示判断矩阵中的一致性程度,RI (Random Index)是一个根据判断矩阵的维度大小预先计算得到的随机一致性指标。
通过计算CI和RI的比值CR(Consistency Ratio),可以判断判断矩阵的一致性程度。
如果CR小于0.1,则认为判断矩阵具有可接受的一致性。
5.构建权重矩阵:将权重向量进行归一化处理,构建一个权重矩阵。
权重矩阵的每一行表示一个准则的权重,每一列表示一个方案的权重。
6.计算综合评估值:在方案层中,通过两两比较方案的相对重要性,构建一个判断矩阵,并进行一致性检验。
然后,将方案的权重矩阵与方案的评分矩阵相乘,得到一个综合评估值向量。
综合评估值向量表示各个方案的综合评估结果。
7.敏感性分析:根据综合评估值向量,可以对决策结果进行敏感性分析。
AHP 层次分析法计算原理一般地,可以选用三层结构对发展战略作出整体评价。
第一层为目标层,它是企业要实现的战略目标,第二层是评价因素层,它包括战略目标实现进行评价的所考虑的各种因素以及各因素之间的相对比值,并求出各要素实现总体目标所占的权重。
第三层是指标层,即个评价因素需考虑的具体指标。
首先,根据总目标确定各要素之间的相对重要关系,构建两两比其中,ij a 表示对于C 来说,A i 对A j 相对重要性的数值体现,通常ij a 可取1、2、3……、9以及它们的倒数作为标度。
其中,1——表示两个元素相比,具有同样的重要性;3——表示两个元素相比,一个元素比另一个元素稍微重要; 5——表示两个元素相比,一个元素比另一个元素明显重要; 7——表示两个元素相比,一个元素比另一个元素强烈重要; 9——表示两个元素相比,一个元素比另一个元素极端重要。
2、4、6、8为上述相邻判断的中值。
矩阵中的元素具有以下特征:①ij a >0,② jiij a a 1=,③ ii a =1。
然后,根据判断矩阵计算相对于战略目标各评价元素的相对重要性次序的权重,首先计算判断矩阵A 的最大特征根λmax 和其对应的经归一化后的特征向量W =[w 1,w 2,w 3,……,w n ]T ,计算的公式为:WAW max λ=(8-1)归一化后的特征向量W =[w 1,w 2,w 3,……,w n ]T 即为各评价因素对于总目标的权重。
∑==ni iii ww w 1(8-2)其中,nnj iji aw 1==(8-3)λmax 为判断矩阵A 的最大特征根,计算公式为:max 1()ni i iAW nw λ==∑(8-4)其中,()i AW 表示AW 的第i 个元素。
最后,对矩阵A 进行一致性检验。
当jkikij a a a =时,称判断矩阵为一致性矩阵。
判断一致性的指标为C.R.的取值。
......I R I C R C =(8-5)其中,1..max --=n nI C λ;(8-6)R.I.为随机一致性指标,其值是通过多次重复进行随机判断矩阵特征值的计算后得到的。
AHP层次分析法计算原理
一般地,可以选用三层结构对发展战略作出整体评价。
第一层为目标层,它是企业要实现的战略目标,第二层是评价因素层,它包括战略目标实现进行评价的所考虑的各种因素以及各因素之间的相对比值,并求出各要素实现总体目标所占的权重。
第三层是指标层,即个评价因素需考虑的具体指标。
首先,根据总目标确定各要素之间的相对重要关系,构建两两比较判断矩阵,其基本形式为:
其中,a j表示对于C来说,A对A相对重要性的数值体现,通常a j可取1、2、3……、9以及它们的倒数作为标度。
其中,
1――表示两个元素相比,具有同样的重要性;
3――表示两个元素相比,一个元素比另一个元素稍微重要;
5――表示两个元素相比,一个元素比另一个元素明显重要;
7――表示两个元素相比,一个元素比另一个元素强烈重要;
9――表示两个元素相比,一个元素比另一个元素极端重要。
2、4、6、8为上述相邻判断的中值。
矩阵中的元素具有以下特征:①a j >0,②a j二丄,③a H=1o
a ji
然后,根据判断矩阵计算相对于战略目标各评价元素的相对重要
性次序的权重,首先计算判断矩阵A的最大特征根入max和其对应的经归一化后的特征向量W=[W i, W2 , W3, , W n ]T,计算的公式为:(8 - 1)
归一化后的特征向量W=[W i, W2, W3, , W n]T即为各评价因素对于总目标的权重。
(8 - 2)W
i - n
W i
i J
其 1 n
中,W = a j (8 - 3)
入max为判断矩阵A的最大特征根,计算公式为:
(8 - 4)
其中,(AW)i表示AW的第i个元素。
最后,对矩阵A进行一致性检验。
当a q二空时,称判断矩阵为a jk 致性矩阵。
判断一致性的指标为C.R.的取值。
C.R.嚅
(8 - 5)
(8 - 6)
R丄为随机一致性指标,其值是通过多次重复进行随机判断矩阵特征值的计算后得到的。
随机一致性指标R丄的取值见表8-2。
表8-2随机一致性指标R.I•的取值表
维数12
345
6
7
8
9
10 J (AW)i
i吕nw
当C.R.vO.1时,一般认为判断矩阵的一致性是可以接受的,否则应修改矩阵使之符合要求。
接下来对分别就各具体指标对每个评价因素的相对重要性构建评价矩阵,得到各具体指标指标对改善每个评价因素的相对重要度权重和判断矩阵的最大特征根,并对判断矩阵的一致性进行检验,方法同上。
最后,计算各层次上元素的组合权重,即层次总排序。
层次总排序从上到下逐层进行。
评价因素层的所有元素A l、A……、A m的权重分别为Q、a2 、a m。
指标层的所有元素B l、B2 、B n的单排序结果为b l、
b2、……、b (i=1, 2,……n)。
若B j与A i无联系时,b j =0。
各具体指标的组合权重的计算方法见表8 —3。
n
其中,b j =1
表8—3各具体指标的组合权重的计算方法
根据表8—3得到指标层的组合权重后,我们还将对评价层次总排序结果的一致性进行检验,其计算公式为:
m
C.l •二' a j C.I.j
i 4
(8 - 7)
C.I.i 为评价因素A i 相对应的指标层中判断矩阵的一致性指标。
m
R.I. - ' a i R.I .i
i
丄
(8 - 8)
R.I.i 为评价因素 厲相对应的指标层中判断矩阵的随机一致性指 标。
由此,可以得到一致性的检验值:
(8 - 9)
当总排序结果的一致性 C.R.vO.1时,我们认为总排序结果具有满 意的一致性,若不满足一致性条件,需要对判断矩阵进行调整。
C.R.
C.I . R.I.。