精华内容
下载资源
问答
  • 2022-04-01 09:47:05

    AHP是最基础的评价类算法:

    解决评价类问题,大家首先要想到以下三个问题:
    (1) 我们评价的目标是什么?答:为小明同学选择最佳的旅游景点。
    (2) 我们为了达到这个目标有哪几种可选的方案?答:三种,分别是去苏杭、去北戴河和去桂林。
    (3) 评价的准则或者说指标是什么?(我们根据什么东西来评价好坏)答:景色、花费、居住、饮食、交通。

    下面简述其算法步骤:

    第一步:分析系统中各因素之间的关系,建立系统的递阶层次结构。

    注意:如果你用到了层次分析法,那么这个层次结构图要放在你的建模论文中哦。

    第二步:对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)

    ⭐⭐⭐判断矩阵怎么自己填

    第三步:由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能用)三种方法计算权重:(1)算术平均法(2)几何平均法(3)特征值法,一般三种方法都去计算,保证结果的稳健性。

    ⭐⭐⭐一致性检验步骤
    第一步:计算一致性指标CI

    第二步:查找对应的平均随机一致性指标RI

    注:在实际运用中,n很少超过10,如果指标的个数大于10,则可考虑建立二级指标体系,或使用我们以后要学习的模糊综合评价模型。

    第三步:计算一致性比例CR

    如果CR<0.1,则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。

    ⭐⭐⭐Python算法实现:

    import numpy as np
    class 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
            # 矩阵的一致性指标CI
            self.CI_val = (self.max_eig_val - self.n) / (self.n - 1)
            # 矩阵的一致性比例CR
            self.CR_val = self.CI_val / (self.RI_list[self.n - 1])
    
        """
        一致性判断
        """
    
        def test_consist(self):
            # 打印矩阵的一致性指标CI和一致性比例CR
            print("判断矩阵的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 True
                else:  # 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=1)
            # 将得到的积向量的每个分量进行开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_weight
    
    
    if __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()
    

    作业:

    1. 写作手重点理解算法步骤、对照优秀论文写出到时候建模用到AHP的内容。
    2. 建模手重点理解算法步骤,调试代码。
    3. 编程手继续冲击神经网络和优化算法的结合。
    更多相关内容
  • 用人话讲明白AHP层次分析法(非常详细原理+简单工具实现)

    用人话讲明白AHP层次分析法(非常详细原理+简单工具实现)

    文章目录

    目录

    1、前言与算法简述

    2、AHP层次分析法过程

    2.1 构建层次评价模型

    2.2 构造判断矩阵

    2.3 层次单排序与一致性检验

    2.3.1 层次单排序

    2.3.2 求解最大特征根与CI值

    2.3.3 根据CI、RI值求解CR值,判断其一致性是否通过。

    2.4 层次总排序与一致性检验

    3、案例以及工具实现

    3.1 外出旅游最重视的因素

    3.1.1 使用工具

    3.1.2 案例操作

    3.1.3 分析结果解读

    3.1.4 小结

    3.2 选择最佳外出旅游地

    3.2.1 使用工具

    3.2.2 案例操作

    3.1.3 分析结果解读

    3.2.4 小结


    1、前言与算法简述

    今天应粉丝要求,梳理一下层次分析法。

    层 次 分 析 法, 即Analytic Hierarchy Process(AHP) , 是美国运筹学家 Saaty 于 20 世纪 70 年代初 期提出的一种主观赋值评价方法。 层次分析法将与决策有关的元素分解成目标、 准则、方案等多个层次, 并在此基础上进行定性和定量分析, 是一种系统、简便、灵活有效的决策方法。

    这个算法是一个多指标综合评价算法,由于这个算法简单、实用,因此在经管类或者实际生活中应用的非常多,其一般有两个用途:

    • 指标定权

    给指标制定权重,打个比方,例如选择旅游地这个决策,可能一般我们由以下5个因素组成,但是每个人(主观)对因素的重视程度不一,ahp可以实现在无需搜集数据的情况下,给这些指标制定权重。

    • 量化方案选择

    同样是选择旅游地这个决策,可能我们有一些方案,例如苏杭、北戴河、桂林这三个方案,层次分析法可以综合以上5个因素,给这些方案计算得出一个量化得分,例如苏杭0.3分、北戴河0.35分、桂林0.45分,这样根据分值大小,我们就可以选择得到内心或者经验上最心怡的方案了。

    通过上面讲解层次分析法的作用,在生活、工作中其实我们可以应用这个模型的渠道是非常广的,特别是那些需要主观决策的、或者需要用经验判断的决策方案,例如:

    • 买房子(主观决策)

    • 选择旅游地(主观决策)

    • 给员工进行绩效评估(经验判断)

    • 选择开店地址(经验判断)

    2、AHP层次分析法过程

    层次分析法的原理,是在分析一个现象或问题之前,首先将现象或问题根据它们的性质分解为有关因素,并根据它们之间的关系分类而形成一个多层次的结构模型。然后通过经验或专家,来判断和衡量低层因素对高层因素的相对重要性,并根据重要性的程度得出权重排序,进而可以量化分析比较。层次分 析法的核心是将影响因素层次化和数据化,它把一个抽象的现象或问题由难到 易地予以分解,易于对复杂问题进行直观地判断,并作出决策。层次分析法具有将复杂问题简单化且计算简单等优点,应用十分广泛,诸如在人员素质评估、 多方案比较、科技成果评比和工作成效评价等多领域多方面都有运用。

    简单地说,层次分析法就是将一个决策事件分解为目标层(例如选择旅游地),准则层(影响决策的因素,例如景色、交通、费用等)以及方案层(指的是方案,例如去广州、桂林等地旅游)。

    层次分析法应用过程中,大体步骤主要包括四个。第一步是层次结构模型的构建。第二步构造判断矩阵,第三步为层次单排序及其一致性检验,这步即为对指标定权,第四步为层次总排序及其一致性检验,这布如果没有决策层的话,通常可以省略。

    PS:一致性检验的含义用于确定构建的判断矩阵是否存在逻辑问题,例如以A、B、C构建判断矩阵,若判定A相当于B为3(A比B稍微重要),A相当于C为1/3(C比A稍微重要),在判断B相当于C时,根据上述的逻辑,理应C比B重要,若我们在构建判断矩阵时,错误填写为B相当于C为3(B比C稍微重要),那么就犯了逻辑错误。

    2.1 构建层次评价模型

    顾名思义,在这个层次评价模型里面,我们需要确认整个决策事件的目标层、准则层、方案层

    其中,

    目标层:最优旅游地选择

    准则层:景色、费用、居住、饮食、旅途

    方案层:西安、云南、西藏、青海

    需要注意的时,准则层如果有多层,例如下图所示,依次类推就行了。

    2.2 构造判断矩阵

    构造判断矩阵就是通过各要素之间相互两两比较,并确定各准则层对目标层的权重。

    简单地说,就是把准则层的指标进行两两判断,通常我们使用Santy的1-9标度方法给出。

    对于准则层A,我们可以构建一个

    其中A 中的元素满足:

    简单说,例如对于准则层:景色、费用、居住、饮食、旅途,我们可以构建这样一个5*5的判断矩阵:

    其中对角线为各个指标自己的判断,例如对于【景色】与【景色】,其重要性为1,因为肯定是指标自身对比自身肯定是1:1。对于第二行第一列,也就是【费用】与【景色】对比,可能我认为【费用】比【景色】明显重要,那么就可以标值为5

    那么判断矩阵就会变为:

    以此类推,直到构建完成一个完整的判断矩阵。

    2.3 层次单排序与一致性检验

    这里列出一般在文献中的说明:

    step1:层次单排序

    层次单排序是指针对上一层某元素将本层中所有元素两两评比,并开展层次排序, 进行重要顺序的排列,具体计算可依据判断矩阵 A 进行,计算中确保其能够符合 AW=𝜆𝑚𝑎𝑥𝑊的特征根和特征向量条件。在此,A 的最大特征根为λmax,对应λmax的正规化的特征向量为 W,𝑤𝑖为 W 的分量,其指的是权值,与其相应元素单排序对应。 利用判断矩阵计算各因素𝑎𝑖𝑗对目标层的权重(权系数)。

    权重向量(W)与最大特征(λmax)的计算步骤(方根法或者和法)如下表所示:

    step2:求解最大特征根与CI值

    设 n 阶判断矩阵为 B,则可用以下方法求出其最大的特征根𝜆𝑚𝑎𝑥:

    BW=λW

    其中,W 是 B 的特征向量。 在层次分析法中, 我们用以下的一致性指标 CI 来检验判断的一致性指标 (Consistency Index):

    C.I.=0 表示判断矩阵完全一致,C.I.越大,判断矩阵的不一致性程度越严重。

    step3:根据CI、RI值求解CR值,判断其一致性是否通过

    Satty 模拟 1000 次得到的随机一致性指标 R.I.取值表(如下表 所示):

    当 C.R.<0.1 时,表明判断矩阵 A 的一致性程度被认为在容许的范围内,此时可 用 A 的特征向量开展权向量计算;若 C.R.≥0.1, 则应考虑对判断矩阵 A 进行修正。

    下面我用人话说一下:

    2.3.1 层次单排序

    简单地说,层次单排序就是根据我们构成的判断矩阵,求解各个指标的权重。

    例如我们现在在2.2构建完成了准则层的判断矩阵A如下:

    那么我们可以计算其权重(权重向量),有两种方式,一种是方根法,一种是和法。

    其中方根法计算权重如下:

    1. 计算每行乘积的m次方,得到一个m维向量

    即:

    (2)将将向量标准化即为权重向量,即得到权重

    即:

    而和法计算权重如下:

    step1:先将矩阵的每列进行标准化

    step2:将标准化后的各元素按行求和

    step3:将求和结果进行标准化

    例如这张图所示:

    2.3.2 求解最大特征根与CI值

    以上,求得权重矩阵后,可以计算最大特征根,其公式为:

    其中n为维度数,例如构建的判断矩阵为:景色、费用、居住、饮食、旅途时,n=5;

    AW为:判断矩阵*标准化后的权重,然后按按行的累加值。

    即判断矩阵A为:

    指标

    景色

    费用

    居住

    饮食

    旅途

    景色

    1

    5

    5

    0.3333

    8

    费用

    0.2

    1

    0.25

    0.1667

    2

    居住

    0.2

    4

    1

    0.2

    3

    饮食

    3

    6

    5

    1

    6

    旅途

    0.125

    0.5

    0.3333

    0.1667

    1

    标准化后权重W为:

    景色

    费用

    居住

    饮食

    旅途

    0.3104

    0.0591

    0.1157

    0.4716

    0.0432

    其中A*W为:

    指标

    景色

    费用

    居住

    饮食

    旅途

    景色

    0.3104

    0.2955

    0.5785

    0.15718428

    0.3456

    费用

    0.06208

    0.0591

    0.028925

    0.07861572

    0.0864

    居住

    0.06208

    0.2364

    0.1157

    0.09432

    0.1296

    饮食

    0.9312

    0.3546

    0.5785

    0.4716

    0.2592

    旅途

    0.0388

    0.02955

    0.03856281

    0.07861572

    0.0432

    AW:

    λmax:

    AW1/W1+AW2/W2+AW3/W3+···+AWn/Wn=x

    最大特征值λmax=x/矩阵阶数=5.416

    最大特征值λmax求解出来后,C.I值就好算多了,

    根据C.I值公式,λmax=5.416,n=5,代入可得C.I值=0.1042

    2.3.3 根据CI、RI值求解CR值,判断其一致性是否通过。

    一致性检验的含义用于确定构建的判断矩阵是否存在逻辑问题,例如以A、B、C构建判断矩阵,若判定A相当于B为3(A比B稍微重要),A相当于C为1/3(C比A稍微重要),在判断B相当于C时,根据上述的逻辑,理应C比B重要,若我们在构建判断矩阵时,错误填写为B相当于C为3(B比C稍微重要),那么就犯了逻辑错误;

    RI值通过查表可以得知,这个是Satty 模拟 1000 次得到的随机一致性指标 R.I.取值表(如下表 所示):

    而我们的矩阵是5阶(准则层因子个数),矩阵阶数为5时对应的RI值为1.12,代入公式:

    可以得到C.R.值为0.1042/1.12=0.093。

    所以 C.R.=0.093<0.1 时,表明判断矩阵 A 的一致性程度被认为在容许的范围内,此时可 用 A 的特征向量开展权向量计算;若 C.R.≥0.1, 说明我们在构建判断矩阵时出现了逻辑错误,

    例如B矩阵,我们假设在两两对比第三行第二列时,填入了1/5,这个时候就无法通过一致性检验,因为其犯了逻辑错误,我们根据第二行第一列,可以知道上海的地位比广州稍微重要,根据第三行第一列,可以知道北京的地位比广州强烈重要,所以根据逻辑:上海>广州,北京》广州,那么北京应该是>上海,但是我们填入了1/5,也就是北京比上海相当不重要,所以就出现了逻辑错误,这个时候,我们需要对判断矩阵 A 进行修正,修正为北京>上海。

    至此,我们便完成了层次单排序与一致性检验,通过我们在使用层次分析法只使用到这里,用于对指标进行定权,假如我们有方案层,便需要做层次总排序与其一致性检验。

    2.4 层次总排序与一致性检验

    这里列出一般在文献中的说明:

    计算某一层次所有因素对于最高层(目标层)相对重要性的权值,称为层次总排 序。该过程是从最高层次向最低层次依次进行:

    设 B 层𝐵1 ,𝐵2 ⋯ ,𝐵𝑛对上层(A 层)中因素𝐴𝑗(𝑗 = 1,2, ⋯ ,𝑚)的层次排序 一致性指标为𝐶𝐼𝑗,随机一致性指标为𝑅𝐼𝑗 ,则层次总排序的一致性比率为:

    当𝐶𝑅 < 0.1时,认为层次总排序通过一致性检验,否则就需要重新调整判断矩阵 的元素取值。到此,根据最下层(决策层)的层次总排序做出最后的决策。

    下面我用人话说一下:

    层次总排序,其实就是通过类型层次单排序的方法来给方案打分。

    打个比方,我们根据2.3的层次单排序,现在确定A1~A5的权重为

    景色

    费用

    居住

    饮食

    旅途

    0.3104

    0.0591

    0.1157

    0.4716

    0.0432

    现在我想要计算方案B1:苏杭的得分,但是我们并不知道苏杭的景色得分为多少,那该怎么办呢?

    类似2.3的层次单排序,对于景色这个因素,我们可以构建一个3*3的矩阵,如下所示:

    通过层次单排序两两对比各个方案在景色的比较,我们可以得到苏杭、北戴河、桂林的权重,那么这个权重就可以作为苏杭、北戴河、桂林在景色上的得分。

    依次类推,我们构造得到苏杭、北戴河、桂林在景色上的得分矩阵A1,在费用上的得分矩阵A2,在居住上的得分矩阵A3,在饮食上的得分矩阵A4,在旅途上的得分矩阵A5:

    计算得到其得分为:

    PS:以上全部的判断矩阵都需要做一致性检验。

    那么对于方案B1(苏杭),它的总得分为:

    苏杭在景色上的得分*景色的权重+苏杭在费用上的得分*费用的权重+苏杭在居住上的得分*居住的权重+苏杭在饮食上的得分*饮食的权重+苏杭在旅途上的得分*旅途的权重=0.5954*0.3104+0.819*0.0591+0.4286*0.1157+0.6337*0.4716+0.1667*0.0432=0.5889

    以此类推,可以计算得到方案B2(北戴河)为

    0.2764*0.3104+0.2363*0.0591+0.4286*0.1157+0.1919*0.4716+0.1667*0.0432=0.2471

    方案B3(桂林):

    0.1283*0.3104+0.6817*0.0591+0.1429*0.1157+0.1744*0.4716+0.6667*0.0432=0.2077

    因此苏杭得分最高,选择去苏杭。

    3、案例以及工具实现

    3.1 外出旅游最重视的因素

    这里的作用其实就是求因子权重,因此只计算到层次单排序,没有方案层,即无需层次总排序。

    3.1.1 使用工具

    SPSSPRO—>【层次分析法(AHP简化版)】

    3.1.2 案例操作

    step1:选择【层次分析法(AHP简化版)】;

    step2:选择判断矩阵阶层

    step3:设置判断矩阵(判断矩阵是对称矩阵)

    step4:点击【开始分析】,完成全部操作。

    3.1.3 分析结果解读

    以下生成的结果来源于SPSSPRO软件的分析结果导出,计算方式我在第二章有说过,下面直接就列分析结果了。

    输出结果1:构建判断矩阵结果

    这个就是前面操作页面所填写的判断矩阵

    输出结果2:AHP层次分析结果

    基于方根法的权重计算结果显示,景色的权重得分为0.2657,费用的权重得分为0.4212,居住的权重得分为0.0657,饮食的权重得分为0.1067,旅途的权重得分为0.1407,最大特征根为5.1352,CI为0.0338。

    输出结果3:一致性检验结果

    计算结果显示,最大特征根为5.1352,根据RI表查到对应的RI值为1.11,因此CR=CI/RI=

    0.0305<0.1,通过一次性检验,说明该权重确定方法的合理性,无需要对判断矩阵进行修改。

    需要注意的是,这里的RI值采用近年来更受认可的Franek and Kresta (2014)的方式,不再使用satty的方法。

    3.1.4 小结

    由3.1.3可以知道,外出旅游最重视的因素是费用,其权重得分为0.4212,这个结果是很主观的,因为本身选择旅游地这个决策就是一个非常主观的决策,就像推广到买房,本身影响买房的决策因子也是非常主观的,每个人都有自己的一杆秤,但是如果是店铺,例如奶茶店选址,那么我们可以找有经验的人来两两判断,或者多收集一些专家的判断,求平均值,对于主观的事情,当想法一致的人多了,那么也便了一个客观的事实。

    3.2 选择最佳外出旅游地

    这里的作用其实就是求方案的量化得分,因此需要对准则层计算层次单排序,对方案层进行层次总排序。

    3.2.1 使用工具

    SPSSPRO—>【层次分析法(AHP专业版)】

    3.2.2 案例操作

    Step1:选择层次分析法(AHP专业版);

    Step2:选择构建决策模型;

    Step3:输入构建的评价指标;

    Step4:输入最终的方案;

    Step5:确认以进入下一步指标评分;

    Step6:输入指标之间两两比对的重要程度值;

    Step7:输入不同方案的对应评价值的重要程度评价;

    3.1.3 分析结果解读

    以下生成的结果来源于SPSSPRO软件的分析结果导出,计算方式我在第二章有说过,下面直接就列分析结果了。

    输出结果1:方案得分

    基于指标层次单排序与方案层次总排序后,对于旅游地选择最好的方案为北戴河、其次为桂林。北戴河的量化得分为1.435,高过第二桂林近一倍。

    输出结果2:层次决策模型

    由图可见,其中最重要的两个决定因素是旅游地的景色和费用,而饮食、居住情况则属于低权重。

    输出结果3:判断矩阵汇总结果

    这里列出来了特征向量和权重,CR值小于0.1,一致性检验通过,层次分析法结果有效。

    输出结果4:方案层判断矩阵汇总结果

    上表展示了层次分析法的方案层的权重计算结果(即层次总排序),构建了个数为叶子节点指标的数目的判断矩阵对各个指标的权重进行分析,通过展示了一致性检验结果,用于判断方案层权重矩阵是否存在构建判断矩阵的逻辑问题。由于上一级节点的得分可以根据其子节点得分*权重计算得到,因此构建方案层判断矩阵时,只对叶子节点进行构建,即N个叶子节点就构建N个判断矩阵,用于综合两两对比情况,得到方案层对于某个叶子节点的得分;

    可以看到,方案的得分都满足了一致性检验。

    3.2.4 小结

    由3.2.3可以知道,对于旅游地选择最好的方案为北戴河,其量化得分为1.435,层次总排序的方案层判断矩阵,是在没有数据的情况下才做的,现实情况下,我们如果面临选择旅游地、选择租房、选择买房这类偏主观的决策,那么是可以采用层次总排序的,如果推广到店铺选址、快递柜选择、活动方案选择等需要客观决策的事情,我们其实可以通过两种方式来优化:

    • 基于大多数有经验的人,采用层次总排序,求均值,把主观转为客观(这里通常结合一种方法叫德尔菲法,也叫专家调查法)

    • 基于真实数据做层次总排序,例如店铺选择,假设有人流量这个指标,可以采用真实指标来量化求解。

    展开全文
  • 层次分析法AHP基本原理+综合评价体系案例

    目录

    1 基本介绍

    2 建立步骤

    2.1 建立递阶式层次结构模型

    2.2 构造比较判断矩阵 

    2.3  层次单排序及一致性检验

    2.4 层次总排序及其一致性检验

    2.5 数据加权

    3 案例:某学科创新能力评价指标体系

    3.1 构建评价指标体系

    3.2 构造判断矩阵及一致性检验

    3.3 计算综合评价得分


    1 基本介绍

    层次分析法(analytic hierarchy process,简称AHP)是解决多因素综合评价问题的常用方法,该方法是美国运筹学家,匹茨堡大学教授T.L. Saaty于20世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。

    该方法的特点是:

    (1)把整个综合评价问题看作一个系统,用系统工程的方法进行决策和判断;

    (2)合理解和定性与定量决策,把决策过程层次化、数量化;

    (3)把决策者个人偏好引入比较评判过程,符合实际决策过程中的个人习惯思维和心理变化规律;

    (4)引入指标重要性比较尺度,通过建立比较矩阵和权重向量解决决策方案的排序问题。

    2 建立步骤

    2.1 建立递阶式层次结构模型

    可分为:目标层、准则层、方案层

    2.2 构造比较判断矩阵

    为每一层每一级的评价体系构造比较判断矩阵。采用1~9及其倒数的标度方法定义,当两两比较完成后,得到比较判断矩阵A=(a_i_j)_{n\sqcap n},其中a_i_j=\frac{1}{a_j_i},a_i_i=1,因此判断矩阵又称为正互反矩阵

    表1 1-9标度值及其含义
    标度a_i_j含义
    1C_iC_j一样重要
    3C_iC_j重要性稍强
    5

     C_iC_j重要性强

    7

     C_iC_j重要性明显强

    9

     C_iC_j重要性绝对强

    2,4,6,8

     C_iC_j重要性介于相邻数之间

    \frac{1}{2},...,\frac{1}{9}

     C_iC_j重要性之比为上面a_i_j的相反数,其含义与之相反

    2.3  层次单排序及一致性检验

    (1)确定相对权重向量

    为了对指标排序,需要确定每个指标的相对权重向量。确定相对权重向量的常见方法有和法、根法、特征根法等。

    ①和法:将比较判断矩阵A按列归一化,得到归一化的标准矩阵,然后将标准化矩阵按行求算术平均值即得到权重向量,计算公式如下:

    \omega _{i}=\frac{1}{n}\sum_{j=1}^{n}\frac{a_i_j}{\sum_{k=1}^{n}a_k_i},i=1,2,...,n

    eg:设判断矩阵为A,经列归一化后得到矩阵A_{std},求A_{std}的行算术平均值得到 权重向量\omega

    A=\begin{bmatrix} 1 & 1/2 & 1/2\\ 2& 1 & 1/2\\2 & 2 & 1 \end{bmatrix}\rightarrow A_{std}=\begin{bmatrix} 0.2000 & 0.1429 & 0.2500\\ 0.4000& 0.2857 & 0.2500\\0.4000 & 0.5714 & 0.5000 \end{bmatrix}\rightarrow\omega=\begin{bmatrix}0.1976 \\ 0.3119 \\ 0.4905 \end{bmatrix}

    ②根法:将比较判断矩阵A按列归一化,得到归一化的标准矩阵,然后将标准化矩阵按行求几何平均后归一化即得到权重向量,计算公式如下:

     \omega _{i}=\frac{\prod_{j=1}^{n}a_{ij}^{1/n}}{\sum_{n}^{k=1}(\prod_{j=1}^{n}a_{kj})^{1/n}}

     eg:设判断矩阵为A,经列归一化后得到矩阵A_{std},求A_{std}的行几何平均值得到初步权重向量\omega_{f},再归一化后得到最终权重向量\omega

    A=\begin{bmatrix} 1 & 1/2 & 1/2\\ 2& 1 & 1/2\\2 & 2 & 1 \end{bmatrix}\rightarrow A_{std}=\begin{bmatrix} 0.2000 & 0.1429 & 0.2500\\ 0.4000& 0.2857 & 0.2500\\0.4000 & 0.5714 & 0.5000 \end{bmatrix}

    \rightarrow\omega_{f}=\begin{bmatrix}0.1926 \\ 0.3057 \\ 0.4853 \end{bmatrix}\rightarrow\omega=\begin{bmatrix}0.1958 \\ 0.3108 \\ 0.4934\end{bmatrix}

    (2)计算特征根和特征向量

    排序问题最终归结为计算判断矩阵的特征根特征向量问题,可运用相关软件计算得到任意精度的最大特征根及其对应的特征向量。假设判断矩阵A=(a_{ij})_{n\times n},i,j=1,2,...,n,通过归一化处理等系列变化过程,可以得到特征向量\omega =(\omega_{1},\omega_{2},...,\omega_{n})^{T}及其最大特征根(可用计算机实现)

    \lambda _{max}=\frac{1}{n}\sum_{i=1}^{n}\frac{(A\omega)_{i}}{\omega_{i}}

    (3)一致性检验

    由于系统的复杂性、 认识的多样性以及主观片面性和不稳定性, 要达到完全一致性判断是非常困难的。为了确保层次排序的有效性,必须对给出的判断矩阵进行一致性检验。

    其中,一致性检验通常使用一致性比率CR作为检验标准,CR<0.1时,认为判断矩阵的一致性是可以接受的;当CR\geqslant 0.1时,应考虑对判断矩阵进行调整,再重新计算权重向量并进行一致性检验,直至检验通过。这里有:

    CR=\frac{CI}{RI}

    其中,CI为一致性指标CI=\frac{\lambda _{max}-n}{n-1}CI越大,说明不一致越严重;

    RI平均随机一致性指标,与判断矩阵的阶数n有关,可查表得到。它是利用计算机模拟得到大量的比较判断矩阵,计算相应的CI,并把多次模拟结果取平均得到的。

    表2 平均随机一致性指标
    矩阵阶数n1234567891011...
    RI000.580.901.121.241.321.411.451.491.51...

     

    2.4 层次总排序及其一致性检验

    上面只计算了每一小层的排序和一致性检验。将各层次的权重逐一相乘得到最终方案层各指标目标层的最终权重后,还要对大层和全部指标总体进行排序和一致性检验。

    总体一致性检验的CR值为:

    CR^{(k)}=CR^{(k-1)}+\frac{CI^{(k)}}{RI^{(k)}},k\geq 3

    其中,CR^{k}为第k层对总目标层的一致性指标,RI^{k}为第k层的平均随机一致性指标。

    CR^{k}<0.1时,认为第k层的判断矩阵通过一致性检验。

    2.5 数据加权

    权重矩阵与处理完的规范化数据加权,即可得到最终的综合评分。

    需要注意的是,多属性决策或综合评价的主要困难时属性间的不可公度性,在实际评价时需要消除量纲和计量单位不同对评价结果的影响。在对指标进行无量纲化处理时,要注意区分效益型指标、成本型指标、固定型指标和区间型指标,具体处理方法可看本栏目的第一节:

    [评价体系] 1、数据规范化/无量纲化方法_禾木页-CSDN博客

    3 案例:某学科创新能力评价指标体系

    层次分析法在综合评价中一个重要作用是用于确定评价体系的指标权重。

    案例来自于:谭春辉.高校哲学社会科学创新能力评价模型与机制[M].北京:科学出版社,2016.5:85-89,引用时有所删改。

    3.1 构建评价指标体系

    设某高校某学科的创新能力评价指标体系由3个准则层、9个分准则层、18个方案层指标构成,详情如下。

    表2  某学科创新能力综合评价体系
    目标层

    准则层

    (一级指标)

    分层指标

    (二级指标)

    方案层

    (三级指标)

    某学科创新能力

    创新投入

    U1

    科研队伍

    U11

    ...U111
    ...U112

    科研经费

    U12

    ...U121
    ...U122

    科研设施

    U13

    ...U131
    ...U132

    创新运行

    U2

    社会支持

    U21

    ...U211
    ...U212

    管理机制

    U22

    ...U221
    ...U222

    组织文化

    U23

    ...U231
    ...U232

    创新产出

    U3

    科研产出
    U31
    ...U311
    ...U312
    学科建设
    U32
    ...U321
    ...U322
    社会贡献
    U33
    ...U331
    ...U332

     

    3.2 构造判断矩阵及一致性检验

    (1)目标层下的判断矩阵及一致性检验

    表3 目标层下判断矩阵
    项目

    创新投入

    U1

    创新运行

    U2

    创新产出

    U3

    相对权重向量wi

    (根法)

    创新投入

    U1

    11/21/20.1958

    创新运行

    U2

    211/20.3108

    创新产出

    U3

    2210.4934

    计算该判断矩阵的特征根和特征向量分别为:

    \lambda_{max} =3,0536

    W_{0}=[0.5053,0.8021,0.3183]^{T}

    一致性指标:CI=\frac{\lambda _{max}-n}{n-1}=\frac{3.0536-3}{3-1}=0.0268

    查表得:当n=3时,对应的平均一致性指标RI=0.58

    所以一致性比率CR=\frac{CI}{RI}=\frac{0.0268}{0.58}=0.0462<0.1认为判断矩阵的一致性是可以接受的。

    (2)求准则层和分准则层下的判断矩阵及一致性检验

    按照上述方法,分别对各层级建立判断矩阵分别进行一致性检验,还需检验12次。

    创新投入U1、科研队伍U11、科研经费U12、科研设施U13(4个)

    创新运行U2、社会支持U21、管理机制U22、组织文化U23(4个)

     创新产出U3、科研产出U21、学科建设U32、社会贡献U33(4个)

    (3)经一致性检验后的判断矩阵,可以得到各层指标的最终权重

    表4  某学科创新能力综合评价体系
    目标层

    准则层

    (一级指标)

    分层指标

    (二级指标)

    方案层

    (三级指标)(略)

    某学科创新能力

    创新投入

    U1/ 0.1958

    科研队伍

    U11/ 0.6917

    ...U111/ 0.6319
    ...U112/ 0.3681

    科研经费

    U12/ 0.2364

    ...U121/ 0.3456
    ...U122/ 0.6544

    科研设施

    U13/ 0.0819

    ...U131/ 0.2364
    ...U132/ 0.7636

    创新运行

    U2/ 0.3108

    社会支持

    U21/ 0.0974

    ...U211/ ...
    ...U212/ ...

    管理机制

    U22/ 0.5695

    ...U221/ ...
    ...U222/ ...

    组织文化

    U23/ 0.3331

    ...U231/ ...
    ...U232/ ...

    创新产出

    U3/ 0.4934

    科研产出
    U31/ 0.7838
    ...U311/ ...
    ...U312/ ...
    学科建设
    U32/ 0.1349
    ...U321/ ...
    ...U322/ ...
    社会贡献
    U33/ 0.0813
    ...U331/ ...
    ...U332/ ...

    3.3 计算综合评价得分

    获取方案层各指标数据,对其进行规范化处理后,按照权重逐级相乘,可得到最终某学科创新能力的综合得分,以及在各分层(如U1、U2、U3;U11、U12...)的细项得分。

    指标规范化方法:[评价体系] 1、数据规范化/无量纲化方法_禾木页-CSDN博客

    参考:

    [1] 刘保东、宿洁、陈建良.数学建模基础教程[M].北京:高等教育出版社,2015.9:404-407

    [2] 谭春辉.高校哲学社会科学创新能力评价模型与机制[M].北京:科学出版社,2016.5:85-89

    展开全文
  • AHP层次分析法)学习笔记及多层权重Python实践

    万次阅读 多人点赞 2020-09-07 13:22:40
    层次分析法(The analytic hierarchy process)简称AHP,它是将与决策有关的因素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。 本文为简明AHP学习笔记,并通过Python实践构建多层权重...

    层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(TLsaaty)正式提出。它是将与决策有关的因素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

    1. 层次分析法

    1.1. AHP模型构建

    在深入分析问题的基础上,将决策的目标、考虑的因素和决策对象按相关关系分为最高层、中间层和最低层。

    最高层:决策的目的、要解决的问题
    中间层:主因素,考虑的因素、决策的准则
    最低层:决策时的备选方案,也可为中间层的子因素

    在这里插入图片描述

    1.2. 构造判断矩阵

    构造判断矩阵的方法是一致矩阵法,即:不把所有因素放在一起比较,而是两两相互比较;对此时采用相对尺度,以尽可能减少性质不同因素相互比较的困难,以提高准确度。

    标度 A i j A_{ij} Aij含义
    1i 指标比 j 指标同样重要
    3i 指标比 j 指标略微重要
    5i 指标比 j 指标明显重要
    7i 指标比 j 指标重要的多
    9i 指标比 j 指标重要很多
    2,4,6,8介于上述两个判断的中值
    倒数i 指标与 j 指标比较得 A i j A_{ij} Aij, j 指标与 i指标比较判断得 A j i = 1 A i j A_{ji}=\frac{1}{A_{ij}} Aji=Aij1

    按照前面建立的层次递阶结构模型,每一层因素以相邻上一层因素为基准,按照表 1 标度取值方法两两比较构造判断矩阵。指标的标度值由专家取定,构造判断矩阵 A = [ a i j ] m × n A=\left [ a_{ij}\right ]_{m\times n} A=[aij]m×n

    因素两两比较,比较次数为: n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n1)

    判断思想:整体判断,n个因素两两比较;定性判断,定量标识(标量);
    构造判断矩阵规则:填补右上三角为有规则;
    判断矩阵元素有如下特征: a i j > 0 a_{ij}>0 aij>0 a i j = 1 a i j a_{ij}=\frac{1}{a_{ij}} aij=aij1 a i i = 1 a_{ii}=1 aii=1

    1.2.1. 构造准则层判断矩阵

    按专家投票打分等方式,构造准则层判断矩阵。在这里插入图片描述

    1.2.2. 构造因素层判断矩阵

    以“合规管理”为例,专家投票打分等人为方式构造因素层判断矩阵。
    在这里插入图片描述

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

    对应于判断矩阵最大特征根 λ m a x λ_{max} λmax的特征向量,经归一化(使向量中各元素之和为1)后记为 W W W W W W的元素为同一层次元素对于上一层因素某因素相对重要性的排序权值,这一过程称为层次单排序。

    1.3.1. 规范化

    将判断矩阵按列规范化,即对判断矩阵 A 每一列归一化: a ˉ i j = a i j ∑ i = 1 n a i j \bar{a}_{ij} = \frac{a_{ij}}{\sum_{i=1}^{n}a_{ij}} aˉij=i=1naijaij

    按行相加得和向量: W i = ∑ i = 1 n a ˉ i j W_{i} ={\sum_{i=1}^{n}\bar{a}_{ij}} Wi=i=1naˉij

    1.3.2. 特征向量(权重)

    将得到的和向量正规化,可得权重向量: W ˉ i = W i ∑ i = 1 n W i \bar{W}_{i}=\frac{W_{i}}{\sum_{i=1}^{n}W_{i}} Wˉi=i=1nWiWi,近似为特征向量。

    1.3.3. 最大特征根

    计算最大特征根 λ m a x λ_{max} λmax,采用“和积法”: λ m a x = 1 n ∑ i = 1 n ( A W ˉ ) i W ˉ i λ_{max}=\frac{1}{n} \sum_{i=1}^{n} \frac{(A \bar{W})_{i}}{\bar{W}_{i}} λmax=n1i=1nWˉi(AWˉ)i

    这里 ( A W ˉ ) i (A \bar{W})_{i} (AWˉ)i是指矩阵乘法,原始矩阵 A A A与特征矩阵 W ˉ \bar{W} Wˉ相乘。

    1.3.4. 一致性检验

    一致性检验是指对判断矩阵 A A A确定不一致的允许范围。 n n n阶一致阵的唯一非零特征根为 n n n n n n阶正互反阵 A A A的最大特征根 λ m a x ⩾ n λ_{max}\geqslant n λmaxn 时, A A A为非一致矩阵,比 n n n 大的越多, A A A的不一致性越严重; 当且仅当 λ m a x = n λ_{max}=n λmax=n 时, A A A为一致矩阵。因此可由 λ m a x λ_{max} λmax 是否等于 n 来检验判断矩阵 A A A是否为一致矩阵。

    从理论上分析得到:如果A是完全一致的成对比较矩阵,应该有

    a i j a j k = a i k , 1 ≤ i , j , k ≤ n . a_{ij}a_{jk}=a_{ik},1\le i,j,k\le n. aijajk=aik,1i,j,kn.

    但实际上在构造成对比较矩阵时要求满足上述众多等式是不可能的。因此退而要求成对比较矩阵有一定的一致性,即可以允许成对比较矩阵存在一定程度的不一致性。

    由分析可知,对完全一致的成对比较矩阵,其绝对值最大的特征值等于该矩阵的维数。对成对比较矩阵的一致性要求,转化为要求: 的绝对值最大的特征值和该矩阵的维数相差不大。

    检验成对比较矩阵A一致性的步骤如下:
    定义一致性指标 C I = λ m a x − n n − 1 CI=\frac{λ_{max}−n}{n−1} CI=n1λmaxn
    C I = 0 CI=0 CI=0,有完全的一致性;
    C I CI CI接近于0,有满意的一致性;
    C I CI CI越大,不一致越严重。

    为了衡量 C I CI CI的大小,引入随机一致性指标 R I RI RI,按照 Saaty 给出的关于平均随机一致性指标:

    n1234567891011
    RI000.580.901.121.241.321.411.451.491.51

    注解:从有关资料查出检验成对比较矩阵A 一致性的标准RI:RI称为平均随机一致性指标,它只与矩阵阶数n 有关(一般不超过9个)。

    定义一致性比率: C R = C I R I CR=\frac{CI}{RI} CR=RICI,一般认为一致性比率$CR<0.1 1 时 , 认 为 1时,认为 1A 的 不 一 致 程 度 在 容 许 范 围 之 内 , 有 满 意 的 一 致 性 , 通 过 一 致 性 检 验 。 可 用 其 归 一 化 特 征 向 量 作 为 权 向 量 , 否 则 要 重 新 构 造 成 对 比 较 矩 阵 的不一致程度在容许范围之内,有满意的一致性,通过一致性检验。可用其归一化特征向量作为权向量,否则要重新构造成对比较矩阵 A , 对 ,对 a_{ij} 加以调整。

    1.4. 层次总排序及其一致性检验

    计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。这一过程是从最高层次到最低层次依次进行的。

    2. Python代码实现

    2.1. 准则层与因素层权重实现代码

    代码中到判断矩阵,为上文中举例内容,但是因素层内容只在文中列出“合规管理”部分,其他以代码为准。

    import numpy as np
    import pandas as pd
    import warnings
    
    class AHP:
        def __init__(self, criteria, factors):
            self.RI = (0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49)
            self.criteria = criteria               #准则
            self.factors = factors                 #因素
            self.num_criteria = criteria.shape[0]
            self.num_factors = factors[0].shape[0]
    
        def cal_weights(self, input_matrix):
            input_matrix = np.array(input_matrix)
            n, n1 = input_matrix.shape
            assert n == n1, '不是一个方阵'
            for i in range(n):
                for j in range(n):
                    if np.abs(input_matrix[i, j] * input_matrix[j, i] - 1) > 1e-7:
                        raise ValueError('不是反互对称矩阵')
    
            eigenvalues, eigenvectors = np.linalg.eig(input_matrix)
    
            max_idx = np.argmax(eigenvalues)
            max_eigen = eigenvalues[max_idx].real
            eigen = eigenvectors[:, max_idx].real
            eigen = eigen / eigen.sum()
    
            if n > 9:
                CR = None
                warnings.warn('无法判断一致性')
            else:
                CI = (max_eigen - n) / (n - 1)
                CR = CI / self.RI[n]
            return max_eigen, CR, eigen
    
        def run(self):
            max_eigen, CR, criteria_eigen = self.cal_weights(self.criteria)
            print('准则层:最大特征值{:<5f},CR={:<5f},检验{}通过'.format(max_eigen, CR, '' if CR < 0.1 else '不'))
            print('准则层权重={}\n'.format(criteria_eigen))
    
            max_eigen_list, CR_list, eigen_list = [], [], []
            k = 1
            for i in self.factors:
                max_eigen, CR, eigen = self.cal_weights(i)
                max_eigen_list.append(max_eigen)
                CR_list.append(CR)
                eigen_list.append(eigen)
                print('准则 {} 因素层:最大特征值{:<5f},CR={:<5f},检验{}通过'.format(k,max_eigen, CR, '' if CR < 0.1 else '不'))
                print('因素层权重={}\n'.format(eigen))
    
                k = k + 1
                
            return criteria_eigen ,eigen_list
    
    def main():
        # 准则重要性矩阵
        criteria = np.array([[1, 7, 5, 7, 5],
                             [1 / 7, 1, 2, 3, 3],
                             [1 / 5, 1 / 2, 1,  2,  3],
                             [1 / 7, 1 / 3, 1 / 2, 1, 3],
                             [1 / 5, 1 / 3, 1 / 3, 1 / 3, 1]])
    
        # 对每个准则,方案优劣排序
        b1 = np.array([[1, 5], [1 / 5, 1]])
        b2 = np.array([[1, 2, 5], [1 / 2, 1, 2], [1 / 5, 1 / 2, 1]])
        b3 = np.array([[1, 5, 6, 8], [1 / 5, 1 ,2, 7], [1 / 6, 1 / 2, 1 ,4],[1 / 8, 1 / 7, 1 / 4, 1]])
        b4 = np.array([[1, 3, 4], [1 / 3, 1, 1], [1 / 4, 1, 1]])
        b5 = np.array([[1, 4, 5, 5], [1 / 4, 1, 2, 4], [1 /5 , 1 / 2, 1, 2], [1 / 5,1 /4,1 / 2, 1]])
    
        b = [b1, b2, b3, b4, b5]
        a,c = AHP(criteria, b).run()
        #下一段将用到此函数
        #fuzzy_eval(a,c)
        
    if __name__ == '__main__':
    
        main()
    

    2.2. 运行结果

    准则层:最大特征值5.418198,CR=0.084314,检验通过
    准则层权重=[0.58293141 0.16396029 0.11819176 0.08112143 0.05379511]
    
    准则 1 因素层:最大特征值2.000000,CR=0.000000,检验通过
    因素层权重=[0.83333333 0.16666667]
    
    准则 2 因素层:最大特征值3.005535,CR=0.003075,检验通过
    因素层权重=[0.59537902 0.27635046 0.12827052]
    
    准则 3 因素层:最大特征值4.236855,CR=0.070493,检验通过
    因素层权重=[0.63674151 0.20373312 0.11691427 0.04261111]
    
    准则 4 因素层:最大特征值3.009203,CR=0.005113,检验通过
    因素层权重=[0.63370792 0.19192062 0.17437146]
    
    准则 5 因素层:最大特征值4.131108,CR=0.039020,检验通过
    因素层权重=[0.58810136 0.21808417 0.11971903 0.07409544]
    

    2.3. 关于权重的使用

    一是用用模糊层次综合分析,给出综合评价(在上文获取权重的基础上,人为或者客观数据等方式给出各个因素评价,构成因素评价矩阵,因素评价矩阵与权重矩阵做矩阵积,这个结果将是综合评价,后续文章将逐步展开写);
    二是配合神经网络使用,作为模型训练提供数据。

    由于编制水平有限,欢迎反馈指点。

    参考:

    [1]《AHP | 层次分析法原理及Python实现》 简书 PurePlayer 2020年2月
    [2]《层次分析法(AHP)详细步骤》 CSDN博客 我的她像朵花 2019年1月
    [3]《【AHP】层次分析法原理与Python实现》 CSDN博客 ,guofei9987 ,2020年1月

    展开全文
  • 层次分析法AHP法)

    千次阅读 2022-02-02 13:11:50
    层次分析法AHP法)
  • 机器学习 | AHP层次分析法

    千次阅读 多人点赞 2019-05-15 20:39:47
    聊聊AHP层次分析法1 什么是AHP层次分析法?2 这个方法是干吗呢?在什么场景使用?3 AHP层次分析法的实现3.1 步骤3.2 实际的例子3.2.1 背景3.2.2 Step1 构建层次结构模型3.2.3 Step2 构造成对比较矩阵3.2.4 Step3 ...
  • 数学建模方法——层次分析法AHP

    万次阅读 多人点赞 2019-12-04 17:10:33
    层次分析法(Analytic Hierarchy Process,简称AHP)主要是对于定性的决策问题进行定量化分析的方法。举个例子,在日常生活中,我们经常需要进行感性的判断,比如报高考志愿,感觉清华北大都很好,到底要报哪个;再...
  • 层次分析法AHP

    千次阅读 2021-11-12 11:50:18
    AHP是AnalyticHierarchyProcess的简称,中文名为:层次分析法,是美国运筹学家、匹兹堡大学T. L. Saaty教授在20世纪70年代初期提出的。AHP是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。它的...
  • AHP层次分析法

    万次阅读 多人点赞 2014-02-21 01:07:12
    在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于...
  • 清风数学建模学习笔记——层次分析法AHP

    万次阅读 多人点赞 2021-01-06 18:42:26
      层次分析法(analytic hierarchy process),简称AHP。是建模比赛中比较基础的模型之一,其主要解决评价类的问题。如选择哪种方案最好,哪位员工表现最好等)。   它是一个较为 主观 的评价方法,其在赋权得到...
  • 层次分析法AHP)原理_例题应用及代码

    万次阅读 多人点赞 2020-09-27 16:09:47
    层次分析法AHP)原理应用及代码AHP算法步骤算法举例第一步:建立递阶层次图第步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致...
  • 数学建模常用算法—层次分析法(AHP)

    千次阅读 2020-07-12 16:08:33
    层次分析法是建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀),用于确定每个目标及其指标所占权重。
  • 小话层次分析法AHP

    千次阅读 2020-12-11 22:08:06
    在目标决策领域,有的决策数据信息是量化的,如一个项目的未来收益、消耗成本等,通过对各种信息进行计算可以做出较...一、首先对层次分析法有个大概的了解:层次分析法是什么?能做什么? 层次分析法(Analytic Hiera
  • 建模方法(九)-层次分析法AHP)算法和应用

    万次阅读 多人点赞 2018-08-26 20:49:25
    问题提出 1.买钢笔,一般要依据质量、颜色、实用性、价格等方面的因素来选择某一只钢笔。...层次分析算法的思想 他依靠目标与影响目标的因素的联系紧密程度给各个指标或者候选方案赋予一个权值。 算法步骤 ...
  • Python实现AHP层次分析法

    万次阅读 多人点赞 2018-05-22 14:59:20
    import csv import numpy as np import tensorflow as tf from sklearn.preprocessing import MinMaxScaler from numpy import * ...class AHP: def __init__(self, array): self.row = len(array) ...
  • 层次分析法层次分析法主要用于解决评价类问题(例如:选择哪种方案更好、哪位员工、运动员等表现得更优秀) 评价类问题: 分析问题得出评判问题的子标,分别给不同子标赋予权重(权重和要为1) ...
  • AHP层次分析法matlab实现

    千次阅读 2020-11-16 21:01:41
    AHP的实现方法(matlab)
  • MATLAB数学建模必备算法--层次分析法AHP

    千次阅读 多人点赞 2020-04-19 13:19:27
    数学建模层次分析法,看不懂你来打我
  • 该文章讲述了多层次分析法代码讲解,以及如何应用到楼盘综合水平分析当中
  • 数学建模 评价类问题, 层次分析法AHP

    千次阅读 多人点赞 2019-09-11 15:53:58
    找评价指标 知网找相关文献 小组头脑风暴 层次分析法的判断矩阵(正互反矩阵) 一致矩阵
  • 层次分析法的缺点和改进

    万次阅读 2019-07-04 09:00:43
    一、层次分析法的缺点 和一般的评价过程, 特别是模糊综合评价相比, AHP客观性提高, 但当因素多 (超过9个) 时, 标度工作量太大, 宜引起标度专家反感和判断混乱. 对标度可能取负值的情况考虑不够.标度确实需要负数...
  • 萨迪(T.L.Saaty)提出了层次分析法(Analysis Hierarchy Process,简称 AHP)。它将人的思维过程分成目标层、准则层和方案层,并借助数学模型进行分析,是一种将决策者定性判断和定量计算有效结合起来的实用的决策...
  • .评价类问题可用打分解决,各项指标权重和为1 (1)确定指标用图: (2)确定图中数据方法:分而治之的思想(两个两个指标进行比较,最终根据比较结果来推算出权重) 三.关键词:确定评价指标;形成评价...
  • 层次分析法

    千次阅读 2021-01-22 18:06:33
    层次分析法AHP层次分析法(The analytic hierarchy process),主要用于解决数学建模中评价类问题。 评价类问题是数学建模中较为常见的一类问题,解决这一类问题的途径有很多,但我认为最简单而又高效的方式是...
  • 各个院校为了鼓励品学兼优的学生和支助家境贫困的学生,纷纷设置了院奖学金,数额也不薄;还有来自社会上关心教育人士的赞助等等。如何评出奖学金获得者?学校往往是依靠“民主加集中”的原则,即学校先按人数比例...
  • 构建目标层、准则层、一级指标、二级指标的四级三层评价体系,利用层次分析法确定二级指标对目标的权重,通过可拓关联分析把专家的评分转化成综合评价结果。应用实践表明,上述模型与方法实现了定性评价与定量评价的...
  • 层析分析法AHP)

    千次阅读 2021-12-25 12:17:01
    层析分析法AHP) 建模比赛中最基础的建模之一,其主要运用与解决评价类问题(例如选择哪种方案最好、运用那位员工表现最优秀等等)

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 249
精华内容 99
关键字:

ahp层次分析法二级指标